PageSourceSearch

https://northerncaliforniaroofing.com/assets/index-B6OuTdWd.js

js northerncaliforniaroofing.com collected 2026-10-08 18:32:45 UTC 979,998 bytes, 57 lines download raw bytes

vendor: 4,933 bytes, line 1
1function eT(e,a){for(var i=0;i<a.length;i++){const s=a[i];if(typeof s!="string"&&!Array.isArray(s)){for(const c in s)if(c!=="default"&&!(c in e)){const d=Object.getOwnPropertyDescriptor(s,c);d&&Object.defineProperty(e,c,d.get?d:{enumerable:!0,get:()=>s[c]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))s(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const f of d.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&s(f)}).observe(document,{childList:!0,subtree:!0});function i(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function s(c){if(c.ep)return;c.ep=!0;const d=i(c);fetch(c.href,d)}})();function ps(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var bf={exports:{}},qo={};var bv;function tT(){if(bv)return qo;bv=1;var e=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function i(s,c,d){var f=null;if(d!==void 0&&(f=""+d),c.key!==void 0&&(f=""+c.key),"key"in c){d={};for(var h in c)h!=="key"&&(d[h]=c[h])}else d=c;return c=d.ref,{$$typeof:e,type:s,key:f,ref:c!==void 0?c:null,props:d}}return qo.Fragment=a,qo.jsx=i,qo.jsxs=i,qo}var wv;function aT(){return wv||(wv=1,bf.exports=tT()),bf.exports}var r=aT(),wf={exports:{}},Wo={},Cf={exports:{}},Sf={};var Cv;function nT(){return Cv||(Cv=1,(function(e){function a(V,B){var W=V.length;V.push(B);e:for(;0<W;){var Q=W-1>>>1,T=V[Q];if(0<c(T,B))V[Q]=B,V[W]=T,W=Q;else break e}}function i(V){return V.length===0?null:V[0]}function s(V){if(V.length===0)return null;var B=V[0],W=V.pop();if(W!==B){V[0]=W;e:for(var Q=0,T=V.length,U=T>>>1;Q<U;){var ee=2*(Q+1)-1,J=V[ee],re=ee+1,me=V[re];if(0>c(J,W))re<T&&0>c(me,J)?(V[Q]=me,V[re]=W,Q=re):(V[Q]=J,V[ee]=W,Q=ee);else if(re<T&&0>c(me,W))V[Q]=me,V[re]=W,Q=re;else break e}}return B}function c(V,B){var W=V.sortIndex-B.sortIndex;return W!==0?W:V.id-B.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;e.unstable_now=function(){return d.now()}}else{var f=Date,h=f.now();e.unstable_now=function(){return f.now()-h}}var g=[],p=[],y=1,x=null,b=3,j=!1,N=!1,C=!1,A=!1,E=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function O(V){for(var B=i(p);B!==null;){if(B.callback===null)s(p);else if(B.startTime<=V)s(p),B.sortIndex=B.expirationTime,a(g,B);else break;B=i(p)}}function P(V){if(C=!1,O(V),!N)if(i(g)!==null)N=!0,G||(G=!0,ie());else{var B=i(p);B!==null&&se(P,B.startTime-V)}}var G=!1,I=-1,H=5,X=-1;function ae(){return A?!0:!(e.unstable_now()-X<H)}function fe(){if(A=!1,G){var V=e.unstable_now();X=V;var B=!0;try{e:{N=!1,C&&(C=!1,R(I),I=-1),j=!0;var W=b;try{t:{for(O(V),x=i(g);x!==null&&!(x.expirationTime>V&&ae());){var Q=x.callback;if(typeof Q=="function"){x.callback=null,b=x.priorityLevel;var T=Q(x.expirationTime<=V);if(V=e.unstable_now(),typeof T=="function"){x.callback=T,O(V),B=!0;break t}x===i(g)&&s(g),O(V)}else s(g);x=i(g)}if(x!==null)B=!0;else{var U=i(p);U!==null&&se(P,U.startTime-V),B=!1}}break e}finally{x=null,b=W,j=!1}B=void 0}}finally{B?ie():G=!1}}}var ie;if(typeof k=="function")ie=function(){k(fe)};else if(typeof MessageChannel<"u"){var xe=new MessageChannel,te=xe.port2;xe.port1.onmessage=fe,ie=function(){te.postMessage(null)}}else ie=function(){E(fe,0)};function se(V,B){I=E(function(){V(e.unstable_now())},B)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(V){V.callback=null},e.unstable_forceFrameRate=function(V){0>V||125<V?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):H=0<V?Math.floor(1e3/V):5},e.unstable_getCurrentPriorityLevel=function(){return b},e.unstable_next=function(V){switch(b){case 1:case 2:case 3:var B=3;break;default:B=b}var W=b;b=B;try{return V()}finally{b=W}},e.unstable_requestPaint=function(){A=!0},e.unstable_runWithPriority=function(V,B){switch(V){case 1:case 2:case 3:case 4:case 5:break;default:V=3}var W=b;b=V;try{return B()}finally{b=W}},e.unstable_scheduleCallback=function(V,B,W){var Q=e.unstable_now();switch(typeof W=="object"&&W!==null?(W=W.delay,W=typeof W=="number"&&0<W?Q+W:Q):W=Q,V){case 1:var T=-1;break;case 2:T=250;break;case 5:T=1073741823;break;case 4:T=1e4;break;default:T=5e3}return T=W+T,V={id:y++,callback:B,priorityLevel:V,startTime:W,expirationTime:T,s
vendor: 5,587 bytes, line 1
1ortIndex:-1},W>Q?(V.sortIndex=W,a(p,V),i(g)===null&&V===i(p)&&(C?(R(I),I=-1):C=!0,se(P,W-Q))):(V.sortIndex=T,a(g,V),N||j||(N=!0,G||(G=!0,ie()))),V},e.unstable_shouldYield=ae,e.unstable_wrapCallback=function(V){var B=b;return function(){var W=b;b=B;try{return V.apply(this,arguments)}finally{b=W}}}})(Sf)),Sf}var Sv;function rT(){return Sv||(Sv=1,Cf.exports=nT()),Cf.exports}var jf={exports:{}},Se={};var jv;function iT(){if(jv)return Se;jv=1;var e=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),f=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),x=Symbol.iterator;function b(T){return T===null||typeof T!="object"?null:(T=x&&T[x]||T["@@iterator"],typeof T=="function"?T:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},N=Object.assign,C={};function A(T,U,ee){this.props=T,this.context=U,this.refs=C,this.updater=ee||j}A.prototype.isReactComponent={},A.prototype.setState=function(T,U){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,U,"setState")},A.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function E(){}E.prototype=A.prototype;function R(T,U,ee){this.props=T,this.context=U,this.refs=C,this.updater=ee||j}var k=R.prototype=new E;k.constructor=R,N(k,A.prototype),k.isPureReactComponent=!0;var O=Array.isArray,P={H:null,A:null,T:null,S:null,V:null},G=Object.prototype.hasOwnProperty;function I(T,U,ee,J,re,me){return ee=me.ref,{$$typeof:e,type:T,key:U,ref:ee!==void 0?ee:null,props:me}}function H(T,U){return I(T.type,U,void 0,void 0,void 0,T.props)}function X(T){return typeof T=="object"&&T!==null&&T.$$typeof===e}function ae(T){var U={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(ee){return U[ee]})}var fe=/\/+/g;function ie(T,U){return typeof T=="object"&&T!==null&&T.key!=null?ae(""+T.key):U.toString(36)}function xe(){}function te(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(xe,xe):(T.status="pending",T.then(function(U){T.status==="pending"&&(T.status="fulfilled",T.value=U)},function(U){T.status==="pending"&&(T.status="rejected",T.reason=U)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function se(T,U,ee,J,re){var me=typeof T;(me==="undefined"||me==="boolean")&&(T=null);var ne=!1;if(T===null)ne=!0;else switch(me){case"bigint":case"string":case"number":ne=!0;break;case"object":switch(T.$$typeof){case e:case a:ne=!0;break;case y:return ne=T._init,se(ne(T._payload),U,ee,J,re)}}if(ne)return re=re(T),ne=J===""?"."+ie(T,0):J,O(re)?(ee="",ne!=null&&(ee=ne.replace(fe,"$&/")+"/"),se(re,U,ee,"",function(Ce){return Ce})):re!=null&&(X(re)&&(re=H(re,ee+(re.key==null||T&&T.key===re.key?"":(""+re.key).replace(fe,"$&/")+"/")+ne)),U.push(re)),1;ne=0;var oe=J===""?".":J+":";if(O(T))for(var ge=0;ge<T.length;ge++)J=T[ge],me=oe+ie(J,ge),ne+=se(J,U,ee,me,re);else if(ge=b(T),typeof ge=="function")for(T=ge.call(T),ge=0;!(J=T.next()).done;)J=J.value,me=oe+ie(J,ge++),ne+=se(J,U,ee,me,re);else if(me==="object"){if(typeof T.then=="function")return se(te(T),U,ee,J,re);throw U=String(T),Error("Objects are not valid as a React child (found: "+(U==="[object Object]"?"object with keys {"+Object.keys(T).join(", ")+"}":U)+"). If you meant to render a collection of children, use an array instead.")}return ne}function V(T,U,ee){if(T==null)return T;var J=[],re=0;return se(T,J,"","",function(me){return U.call(ee,me,re++)}),J}function B(T){if(T._status===-1){var U=T._result;U=U(),U.then(function(ee){(T._status===0||T._status===-1)&&(T._status=1,T._result=ee)},function(ee){(T._status===0||T._status===-1)&&(T._status=2,T._result=ee)}),T._status===-1&&(T._status=0,T._result=U)}if(T._status===1)return T._result.default;throw T._result}var W=typeof reportError=="function"?reportError:function(T){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var U=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof T=="object"&&T!==null&&typeof T.message=="string"?String(T.message):String(T),error:T});if(!window.dispatchEvent(U))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",T);return}console.error(T)};function Q(){}return Se.Children={map:V,forEach:function(T,U,ee){V(T,function(){U.apply(this,arguments)},ee)},count:function(T){var U=0;return V(T,function(){U++}),U},toArray:function(T){return V(T,function(U){return U})||[]},only:function(T){if(!X(T))throw Error("React.Children.only expected to receive a single React element child.");return T}},Se.Component=A,Se.Fragment=i,Se.Profiler=c,Se.PureComponent=R,Se.StrictMode=s,Se.Suspense=g,Se.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=P,Se.__COMPILER_RUNTIME={__proto__:null,c:function(T){return P.H.useMemoCache(T)}},Se.cache=function(T){return function(){return T.apply(null,arguments)}},Se.cloneElement=function(T,U,ee){if(T==null)throw Error("The argument must be a React element, but you passed "+T+".");var J=N({},T.props),re=T.key,me=void 0;if(U!=null)for(ne in U.ref!==void 0&&(me=void 0),U.key!==void 0&&(re=""+U.key),U)!G.call(U,ne)||ne==="
1key"||ne==="__self"||ne==="__source"||ne==="ref"&&U.ref===void 0||(J[ne]=U[ne]);var ne=arguments.length-2;if(ne===1)J.children=ee;else if(1<ne){for(var oe=Array(ne),ge=0;ge<ne;ge++)oe[ge]=arguments[ge+2];J.children=oe}return I(T.type,re,void 0,void 0,me,J)},Se.createContext=function(T){return T={$$typeof:f,_currentValue:T,_currentValue2:T,_threadCount:0,Provider:null,Consumer:null},T.Provider=T,T.Consumer={$$typeof:d,_context:T},T},Se.createElement=function(T,U,ee){var J,re={},me=null;if(U!=null)for(J in U.key!==void 0&&(me=""+U.key),U)G.call(U,J)&&J!=="key"&&J!=="__self"&&J!=="__source"&&(re[J]=U[J]);var ne=arguments.length-2;if(ne===1)re.children=ee;else if(1<ne){for(var oe=Array(ne),ge=0;ge<ne;ge++)oe[ge]=arguments[ge+2];re.children=oe}if(T&&T.defaultProps)for(J in ne=T.defaultProps,ne)re[J]===void 0&&(re[J]=ne[J]);return I(T,me,void 0,void 0,null,re)},Se.createRef=function(){return{current:null}},Se.forwardRef=function(T){return{$$typeof:h,render:T}},Se.isValidElement=X,Se.lazy=function(T){return{$$typeof:y,_payload:{_status:-1,_result:T},_init:B}},Se.memo=function(T,U){return{$$typeof:p,type:T,compare:U===void 0?null:U}},Se.startTransition=function(T){var U=P.T,ee={};P.T=ee;try{var J=T(),re=P.S;re!==null&&re(ee,J),typeof J=="object"&&J!==null&&typeof J.then=="function"&&J.then(Q,W)}catch(me){W(me)}finally{P.T=U}},Se.unstable_useCacheRefresh=function(){return P.H.useCacheRefresh()},Se.use=function(T){return P.H.use(T)},Se.useActionState=function(T,U,ee){return P.H.useActionState(T,U,ee)},Se.useCallback=function(T,U){return P.H.useCallback(T,U)},Se.useContext=function(T){return P.H.useContext(T)},Se.useDebugValue=function(){},Se.useDeferredValue=function(T,U){return P.H.useDeferredValue(T,U)},Se.useEffect=function(T,U,ee){var J=P.H;if(typeof ee=="function")throw Error("useEffect CRUD overload is not enabled in this build of React.");return J.useEffect(T,U)},Se.useId=function(){return P.H.useId()},Se.useImperativeHandle=function(T,U,ee){return P.H.useImperativeHandle(T,U,ee)},Se.useInsertionEffect=function(T,U){return P.H.useInsertionEffect(T,U)},Se.useLayoutEffect=function(T,U){return P.H.useLayoutEffect(T,U)},Se.useMemo=function(T,U){return P.H.useMemo(T,U)},Se.useOptimistic=function(T,U){return P.H.useOptimistic(T,U)},Se.useReducer=function(T,U,ee){return P.H.useReducer(T,U,ee)},Se.useRef=function(T){return P.H.useRef(T)},Se.useState=function(T){return P.H.useState(T)},Se.useSyncExternalStore=function(T,U,ee){return P.H.useSyncExternalStore(T,U,ee)},Se.useTransition=function(){return P.H.useTransition()},Se.version="19.1.0",Se}var Nv;function Lc(){return Nv||(Nv=1,jf.exports=iT()),jf.exports}var Nf={exports:{}},jt={};var Av;function oT(){if(Av)return jt;Av=1;var e=Lc();function a(g){var p="https://react.dev/errors/"+g;if(1<arguments.length){p+="?args[]="+encodeURIComponent(arguments[1]);for(var y=2;y<arguments.length;y++)p+="&args[]="+encodeURIComponent(arguments[y])}return"Minified React error #"+g+"; visit "+p+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(){}var s={d:{f:i,r:function(){throw Error(a(522))},D:i,C:i,L:i,m:i,X:i,S:i,M:i},p:0,findDOMNode:null},c=Symbol.for("react.portal");function d(g,p,y){var x=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:c,key:x==null?null:""+x,children:g,containerInfo:p,implementation:y}}var f=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function h(g,p){if(g==="font")return"";if(typeof p=="string")return p==="use-credentials"?p:""}return jt.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=s,jt.createPortal=function(g,p){var y=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!p||p.nodeType!==1&&p.nodeType!==9&&p.nodeType!==11)throw Error(a(299));return d(g,p,null,y)},jt.flushSync=function(g){var p=f.T,y=s.p;try{if(f.T=null,s.p=2,g)return g()}finally{f.T=p,s.p=y,s.d.f()}},jt.preconnect=function(g,p){typeof g=="string"&&(p?(p=p.crossOrigin,p=typeof p=="string"?p==="use-credentials"?p:"":void 0):p=null,s.d.C(g,p))},jt.prefetchDNS=function(g){typeof g=="string"&&s.d.D(g)},jt.preinit=function(g,p){if(typeof g=="string"&&p&&typeof p.as=="string"){var y=p.as,x=h(y,p.crossOrigin),b=typeof p.integrity=="string"?p.integrity:void 0,j=typeof p.fetchPriority=="string"?p.fetchPriority:void 0;y==="style"?s.d.S(g,typeof p.precedence=="string"?p.precedence:void 0,{crossOrigin:x,integrity:b,fetchPriority:j}):y==="script"&&s.d.X(g,{crossOrigin:x,integrity:b,fetchPriority:j,nonce:typeof p.nonce=="string"?p.nonce:void 0})}},jt.preinitModule=function(g,p){if(typeof g=="string")if(typeof p=="object"&&p!==null){if(p.as==null||p.as==="script"){var y=h(p.as,p.crossOrigin);s.d.M(g,{crossOrigin:y,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0})}}else p==null&&s.d.M(g)},jt.preload=function(g,p){if(typeof g=="string"&&typeof p=="object"&&p!==null&&typeof p.as=="string"){var y=p.as,x=h(y,p.crossOrigin);s.d.L(g,y,{crossOrigin:x,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0,type:typeof p.t
vendor: 10,069 bytes, line 1
1ype=="string"?p.type:void 0,fetchPriority:typeof p.fetchPriority=="string"?p.fetchPriority:void 0,referrerPolicy:typeof p.referrerPolicy=="string"?p.referrerPolicy:void 0,imageSrcSet:typeof p.imageSrcSet=="string"?p.imageSrcSet:void 0,imageSizes:typeof p.imageSizes=="string"?p.imageSizes:void 0,media:typeof p.media=="string"?p.media:void 0})}},jt.preloadModule=function(g,p){if(typeof g=="string")if(p){var y=h(p.as,p.crossOrigin);s.d.m(g,{as:typeof p.as=="string"&&p.as!=="script"?p.as:void 0,crossOrigin:y,integrity:typeof p.integrity=="string"?p.integrity:void 0})}else s.d.m(g)},jt.requestFormReset=function(g){s.d.r(g)},jt.unstable_batchedUpdates=function(g,p){return g(p)},jt.useFormState=function(g,p,y){return f.H.useFormState(g,p,y)},jt.useFormStatus=function(){return f.H.useHostTransitionStatus()},jt.version="19.1.0",jt}var Tv;function _w(){if(Tv)return Nf.exports;Tv=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(a){console.error(a)}}return e(),Nf.exports=oT(),Nf.exports}var Ev;function sT(){if(Ev)return Wo;Ev=1;var e=rT(),a=Lc(),i=_w();function s(t){var n="https://react.dev/errors/"+t;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var o=2;o<arguments.length;o++)n+="&args[]="+encodeURIComponent(arguments[o])}return"Minified React error #"+t+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function c(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function d(t){var n=t,o=t;if(t.alternate)for(;n.return;)n=n.return;else{t=n;do n=t,(n.flags&4098)!==0&&(o=n.return),t=n.return;while(t)}return n.tag===3?o:null}function f(t){if(t.tag===13){var n=t.memoizedState;if(n===null&&(t=t.alternate,t!==null&&(n=t.memoizedState)),n!==null)return n.dehydrated}return null}function h(t){if(d(t)!==t)throw Error(s(188))}function g(t){var n=t.alternate;if(!n){if(n=d(t),n===null)throw Error(s(188));return n!==t?null:t}for(var o=t,l=n;;){var u=o.return;if(u===null)break;var m=u.alternate;if(m===null){if(l=u.return,l!==null){o=l;continue}break}if(u.child===m.child){for(m=u.child;m;){if(m===o)return h(u),t;if(m===l)return h(u),n;m=m.sibling}throw Error(s(188))}if(o.return!==l.return)o=u,l=m;else{for(var v=!1,S=u.child;S;){if(S===o){v=!0,o=u,l=m;break}if(S===l){v=!0,l=u,o=m;break}S=S.sibling}if(!v){for(S=m.child;S;){if(S===o){v=!0,o=m,l=u;break}if(S===l){v=!0,l=m,o=u;break}S=S.sibling}if(!v)throw Error(s(189))}}if(o.alternate!==l)throw Error(s(190))}if(o.tag!==3)throw Error(s(188));return o.stateNode.current===o?t:n}function p(t){var n=t.tag;if(n===5||n===26||n===27||n===6)return t;for(t=t.child;t!==null;){if(n=p(t),n!==null)return n;t=t.sibling}return null}var y=Object.assign,x=Symbol.for("react.element"),b=Symbol.for("react.transitional.element"),j=Symbol.for("react.portal"),N=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),A=Symbol.for("react.profiler"),E=Symbol.for("react.provider"),R=Symbol.for("react.consumer"),k=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),G=Symbol.for("react.suspense_list"),I=Symbol.for("react.memo"),H=Symbol.for("react.lazy"),X=Symbol.for("react.activity"),ae=Symbol.for("react.memo_cache_sentinel"),fe=Symbol.iterator;function ie(t){return t===null||typeof t!="object"?null:(t=fe&&t[fe]||t["@@iterator"],typeof t=="function"?t:null)}var xe=Symbol.for("react.client.reference");function te(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===xe?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case N:return"Fragment";case A:return"Profiler";case C:return"StrictMode";case P:return"Suspense";case G:return"SuspenseList";case X:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case j:return"Portal";case k:return(t.displayName||"Context")+".Provider";case R:return(t._context.displayName||"Context")+".Consumer";case O:var n=t.render;return t=t.displayName,t||(t=n.displayName||n.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case I:return n=t.displayName||null,n!==null?n:te(t.type)||"Memo";case H:n=t._payload,t=t._init;try{return te(t(n))}catch{}}return null}var se=Array.isArray,V=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,W={pending:!1,data:null,method:null,action:null},Q=[],T=-1;function U(t){return{current:t}}function ee(t){0>T||(t.current=Q[T],Q[T]=null,T--)}function J(t,n){T++,Q[T]=t.current,t.current=n}var re=U(null),me=U(null),ne=U(null),oe=U(null);function ge(t,n){switch(J(ne,n),J(me,t),J(re,null),n.nodeType){case 9:case 11:t=(t=n.documentElement)&&(t=t.namespaceURI)?$x(t):0;break;default:if(t=n.tagName,n=n.namespaceURI)n=$x(n),t=Kx(n,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}ee(re),J(re,t)}function Ce(){ee(re),ee(me),ee(ne)}function Me(t){t.memoizedState!==null&&J(oe,t);var n=re.current,o=Kx(n,t.type);n!==o&&(J(me,t),J(re,o))}function ke(t){me.current===t&&(ee(re),ee(me)),oe.current===t&&(ee(oe),Lo._currentValue=W)}var Ve=Object.prototype.hasOwnProperty,rt=e.unstable_scheduleCallback,wt=e.unstable_cancelCallback,qi=e.unstable_shouldYield,Wi=e.unstable_requestPaint,Lt=e.unstable_now,PN=e.unstable_getCurrentPriorityLevel,Ep=e.unstable_ImmediatePriority,Rp=e.unstable_UserBlockingPriority,js=e.unstable_NormalPriority,VN=e.unstable_LowPriority,kp=e.unstable_IdlePriority,LN=e.log,FN=e.unstable_setDisableYieldValue,_i=null,_t=null;function un(t){if(typeof LN=="function"&&FN(t),_t&&typeof _t.setStrictMode=="function")try{_t.setStrictMode(_i,t)}catch{}}var Gt=Math.clz32?Math.clz32:BN,zN=Math.log,HN=Math.LN2;function BN(t){return t>>>=0,t===0?32:31-(zN(t)/HN|0)|0}var Ns=256,As=4194304;function Jn(t){var n=t&42;if(n!==0)return n;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Ts(t,n,o){var l=t.pendingLanes;if(l===0)return 0;var u=0,m=t.suspendedLanes,v=t.pingedLanes;t=t.warmLanes;var S=l&134217727;return S!==0?(l=S&~m,l!==0?u=Jn(l):(v&=S,v!==0?u=Jn(v):o||(o=S&~t,o!==0&&(u=Jn(o))))):(S=l&~m,S!==0?u=Jn(S):v!==0?u=Jn(v):o||(o=l&~t,o!==0&&(u=Jn(o)))),u===0?0:n!==0&&n!==u&&(n&m)===0&&(m=u&-u,o=n&-n,m>=o||m===32&&(o&4194048)!==0)?n:u}function Gi(t,n){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&n)===0}function qN(t,n){switch(t){case 1:case 2:case 4:case 8:case 64:return n+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Dp(){var t=Ns;return Ns<<=1,(Ns&4194048)===0&&(Ns=256),t}function Mp(){var t=As;return As<<=1,(As&62914560)===0&&(As=4194304),t}function ld(t){for(var n=[],o=0;31>o;o++)n.push(t);return n}function Ui(t,n){t.pendingLanes|=n,n!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function WN(t,n,o,l,u,m){var v=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var S=t.entanglements,D=t.expirationTimes,z=t.hiddenUpdates;for(o=v&~o;0<o;){var Y=31-Gt(o),K=1<<Y;S[Y]=0,D[Y]=-1;var q=z[Y];if(q!==null)for(z[Y]=null,Y=0;Y<q.length;Y++){var _=q[Y];_!==null&&(_.lane&=-536870913)}o&=~K}l!==0&&Op(t,l,0),m!==0&&u===0&&t.tag!==0&&(t.suspendedLanes|=m&~(v&~n))}function Op(t,n,o){t.pendingLanes|=n,t.suspendedLanes&=~n;var l=31-Gt(n);t.entangledLanes|=n,t.entanglements[l]=t.entanglements[l]|1073741824|o&4194090}function Pp(t,n){var o=t.entangledLanes|=n;for(t=t.entanglements;o;){var l=31-Gt(o),u=1<<l;u&n|t[l]&n&&(t[l]|=n),o&=~u}}function cd(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function dd(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function Vp(){var t=B.p;return t!==0?t:(t=window.event,t===void 0?32:mv(t.type))}function _N(t,n){var o=B.p;try{return B.p=t,n()}finally{B.p=o}}var fn=Math.random().toString(36).slice(2),Ct="__reactFiber$"+fn,Ft="__reactProps$"+fn,Rr="__reactContainer$"+fn,ud="__reactEvents$"+fn,GN="__reactListeners$"+fn,UN="__reactHandles$"+fn,Lp="__reactResources$"+fn,Ii="__reactMarker$"+fn;function fd(t){delete t[Ct],delete t[Ft],delete t[ud],delete t[GN],delete t[UN]}function kr(t){var n=t[Ct];if(n)return n;for(var o=t.parentNode;o;){if(n=o[Rr]||o[Ct]){if(o=n.alternate,n.child!==null||o!==null&&o.child!==null)for(t=Jx(t);t!==null;){if(o=t[Ct])return o;t=Jx(t)}return n}t=o,o=t.parentNode}return null}function Dr(t){if(t=t[Ct]||t[Rr]){var n=t.tag;if(n===5||n===6||n===13||n===26||n===27||n===3)return t}return null}function Yi(t){var n=t.tag;if(n===5||n===26||n===27||n===6)return t.stateNode;throw Error(s(33))}function Mr(t){var n=t[Lp];return n||(n=t[Lp]={hoistableStyles:new Map,hoistableScripts:new Map}),n}function ft(t){t[Ii]=!0}var Fp=new Set,zp={};function er(t,n){Or(t,n),Or(t+"Capture",n)}function Or(t,n){for(zp[t]=n,t=0;t<n.length;t++)Fp.add(n[t])}var IN=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u
1037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Hp={},Bp={};function YN(t){return Ve.call(Bp,t)?!0:Ve.call(Hp,t)?!1:IN.test(t)?Bp[t]=!0:(Hp[t]=!0,!1)}function Es(t,n,o){if(YN(n))if(o===null)t.removeAttribute(n);else{switch(typeof o){case"undefined":case"function":case"symbol":t.removeAttribute(n);return;case"boolean":var l=n.toLowerCase().slice(0,5);if(l!=="data-"&&l!=="aria-"){t.removeAttribute(n);return}}t.setAttribute(n,""+o)}}function Rs(t,n,o){if(o===null)t.removeAttribute(n);else{switch(typeof o){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(n);return}t.setAttribute(n,""+o)}}function qa(t,n,o,l){if(l===null)t.removeAttribute(o);else{switch(typeof l){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(o);return}t.setAttributeNS(n,o,""+l)}}var hd,qp;function Pr(t){if(hd===void 0)try{throw Error()}catch(o){var n=o.stack.trim().match(/\n( *(at )?)/);hd=n&&n[1]||"",qp=-1<o.stack.indexOf(`
2    at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return`
3`+hd+t+qp}var md=!1;function pd(t,n){if(!t||md)return"";md=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(n){var K=function(){throw Error()};if(Object.defineProperty(K.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(K,[])}catch(_){var q=_}Reflect.construct(t,[],K)}else{try{K.call()}catch(_){q=_}t.call(K.prototype)}}else{try{throw Error()}catch(_){q=_}(K=t())&&typeof K.catch=="function"&&K.catch(function(){})}}catch(_){if(_&&q&&typeof _.stack=="string")return[_.stack,q.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var u=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");u&&u.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var m=l.DetermineComponentFrameRoot(),v=m[0],S=m[1];if(v&&S){var D=v.split(`
4`),z=S.split(`
5`);for(u=l=0;l<D.length&&!D[l].includes("DetermineComponentFrameRoot");)l++;for(;u<z.length&&!z[u].includes("DetermineComponentFrameRoot");)u++;if(l===D.length||u===z.length)for(l=D.length-1,u=z.length-1;1<=l&&0<=u&&D[l]!==z[u];)u--;for(;1<=l&&0<=u;l--,u--)if(D[l]!==z[u]){if(l!==1||u!==1)do if(l--,u--,0>u||D[l]!==z[u]){var Y=`
6`+D[l].replace(" at new "," at ");return t.displayName&&Y.includes("<anonymous>")&&(Y=Y.replace("<anonymous>",t.displayName)),Y}while(1<=l&&0<=u);break}}}finally{md=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?Pr(o):""}function $N(t){switch(t.tag){case 26:case 27:case 5:return Pr(t.type);case 16:return Pr("Lazy");case 13:return Pr("Suspense");case 19:return Pr("SuspenseList");case 0:case 15:return pd(t.type,!1);case 11:return pd(t.type.render,!1);case 1:return pd(t.type,!0);case 31:return Pr("Activity");default:return""}}function Wp(t){try{var n="";do n+=$N(t),t=t.return;while(t);return n}catch(o){return`
7Error generating stack: `+o.message+`
8`+o.stack}}function ta(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function _p(t){var n=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function KN(t){var n=_p(t)?"checked":"value",o=Object.getOwnPropertyDescriptor(t.constructor.prototype,n),l=""+t[n];if(!t.hasOwnProperty(n)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var u=o.get,m=o.set;return Object.defineProperty(t,n,{configurable:!0,get:function(){return u.call(this)},set:function(v){l=""+v,m.call(this,v)}}),Object.defineProperty(t,n,{enumerable:o.enumerable}),{getValue:function(){return l},setValue:function(v){l=""+v},stopTracking:function(){t._valueTracker=null,delete t[n]}}}}function ks(t){t._valueTracker||(t._valueTracker=KN(t))}function Gp(t){if(!t)return!1;var n=t._valueTracker;if(!n)return!0;var o=n.getValue(),l="";return t&&(l=_p(t)?t.checked?"true":"false":t.value),t=l,t!==o?(n.setValue(t),!0):!1}function Ds(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var ZN=/[\n"\\]/g;function aa(t){return t.replace(ZN,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function gd(t,n,o,l,u,m,v,S){t.name="",v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"?t.type=v:t.removeAttribute("type"),n!=null?v==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+ta(n)):t.value!==""+ta(n)&&(t.value=""+ta(n)):v!=="submit"&&v!=="reset"||t.removeAttribute("value"),n!=null?yd(t,v,ta(n)):o!=null?yd(t,v,ta(o)):l!=null&&t.removeAttribute("value"),u==null&&m!=null&&(t.defaultChecked=!!m),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"?t.name=""+ta(S):t.removeAttribute("name")}function Up(t,n,o,l,u,m,v,S){if(m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(t.type=m),n!=null||o!=null){if(!(m!=="submit"&&m!=="reset"||n!=null))return;o=o!=null?""+ta(o):"",n=n!=null?""+ta(n):o,S||n===t.value||(t.value=n),t.defaultValue=n}l=l??u,l=typeof l!="function"&&typeof l!="symbol"&&!!l,t.checked=S?t.checked:!!l,t.defaultChecked=!!l,v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"&&(t.name=v)}function yd(t,n,o){n==="number"&&Ds(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function Vr(t,n,o,l){if(t=t.options,n){n={};for(var u=0;u<o.length;u++)n["$"+o[u]]=!0;for(o=0;o<t.length;o++)u=n.hasOwnProperty("$"+t[o].value),t[o].selected!==u&&(t[o].selected=u),u&&l&&(t[o].defaultSelected=!0)}else{for(o=""+ta(o),n=null,u=0;u<t.length;u++){if(t[u].value===o){t[u].selected=!0,l&&(t[u].defaultSelected=!0);return}n!==null||t[u].disabled||(n=t[u])}n!==null&&(n.selected=!0)}}function Ip(t,n,o){if(n!=null&&(n=""+ta(n),n!==t.value&&(t.value=n),o==null)){t.defaultValue!==n&&(t.defaultValue=n);return}t.defaultValue=o!=null?""+ta(o):""}function Yp(t,n,o,l){if(n==null){if(l!=null){if(o!=null)throw Error(s(92));if(se(l)){if(1<l.length)throw Error(s(93));l=l[0]}o=l}o==null&&(o=""),n=o}o=ta(n),t.defaultValue=o,l=t.textContent,l===o&&l!==""&&l!==null&&(t.value=l)}function Lr(t,n){if(n){var o=t.firstChild;if(o&&o===t.lastChild&&o.nodeType===3){o.nodeValue=n;return}}t.textContent=n}var XN=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function $p(t,n,o){var l=n.indexOf("--")===0;o==null||typeof o=="boolean"||o===""?l?t.setProperty(n,""):n==="float"?t.cssFloat="":t[n]="":l?t.setProperty(n,o):typeof o!="number"||o===0||XN.has(n)?n==="float"?t.cssFloat=o:t[n]=(""+o).trim():t[n]=o+"px"}function Kp(t,n,o){if(n!=null&&typeof n!="object")throw Error(s(62));if(t=t.style,o!=null){for(var l in o)!o.hasOwnProperty(l)||n!=null&&n.hasOwnProperty(l)||(l.indexOf("--")===0?t.setProperty(l,""):l==="float"?t.cssFloat="":t[l]="");for(var u in n)l=n[u],n.hasOwnProperty(u)&&o[u]!==l&&$p(t,u,l)}else for(var m in n)n.hasOwnProperty(m)&&$p(t,m,n[m])}function xd(t){if(t.indexOf("-")===-1)return!1;switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var QN=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRen
8dering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),JN=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Ms(t){return JN.test(""+t)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":t}var vd=null;function bd(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Fr=null,zr=null;function Zp(t){var n=Dr(t);if(n&&(t=n.stateNode)){var o=t[Ft]||null;e:switch(t=n.stateNode,n.type){case"input":if(gd(t,o.value,o.defaultValue,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name),n=o.name,o.type==="radio"&&n!=null){for(o=t;o.parentNode;)o=o.parentNode;for(o=o.querySelectorAll('input[name="'+aa(""+n)+'"][type="radio"]'),n=0;n<o.length;n++){var l=o[n];if(l!==t&&l.form===t.form){var u=l[Ft]||null;if(!u)throw Error(s(90));gd(l,u.value,u.defaultValue,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name)}}for(n=0;n<o.length;n++)l=o[n],l.form===t.form&&Gp(l)}break e;case"textarea":Ip(t,o.value,o.defaultValue);break e;case"select":n=o.value,n!=null&&Vr(t,!!o.multiple,n,!1)}}}var wd=!1;function Xp(t,n,o){if(wd)return t(n,o);wd=!0;try{var l=t(n);return l}finally{if(wd=!1,(Fr!==null||zr!==null)&&(yl(),Fr&&(n=Fr,t=zr,zr=Fr=null,Zp(n),t)))for(n=0;n<t.length;n++)Zp(t[n])}}function $i(t,n){var o=t.stateNode;if(o===null)return null;var l=o[Ft]||null;if(l===null)return null;o=l[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(l=!l.disabled)||(t=t.type,l=!(t==="button"||t==="input"||t==="select"||t==="textarea")),t=!l;break e;default:t=!1}if(t)return null;if(o&&typeof o!="function")throw Error(s(231,n,typeof o));return o}var Wa=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Cd=!1;if(Wa)try{var Ki={};Object.defineProperty(Ki,"passive",{get:function(){Cd=!0}}),window.addEventListener("test",Ki,Ki),window.removeEventListener("test",Ki,Ki)}catch{Cd=!1}var hn=null,Sd=null,Os=null;function Qp(){if(Os)return Os;var t,n=Sd,o=n.length,l,u="value"in hn?hn.value:hn.textContent,m=u.length;for(t=0;t<o&&n[t]===u[t];t++);var v=o-t;for(l=1;l<=v&&n[o-l]===u[m-l];l++);return Os=u.slice(t,1<l?1-l:void 0)}function Ps(t){var n=t.keyCode;
vendor: 4,127 bytes, line 8
8return"charCode"in t?(t=t.charCode,t===0&&n===13&&(t=13)):t=n,t===10&&(t=13),32<=t||t===13?t:0}function Vs(){return!0}function Jp(){return!1}function zt(t){function n(o,l,u,m,v){this._reactName=o,this._targetInst=u,this.type=l,this.nativeEvent=m,this.target=v,this.currentTarget=null;for(var S in t)t.hasOwnProperty(S)&&(o=t[S],this[S]=o?o(m):m[S]);return this.isDefaultPrevented=(m.defaultPrevented!=null?m.defaultPrevented:m.returnValue===!1)?Vs:Jp,this.isPropagationStopped=Jp,this}return y(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var o=this.nativeEvent;o&&(o.preventDefault?o.preventDefault():typeof o.returnValue!="unknown"&&(o.returnValue=!1),this.isDefaultPrevented=Vs)},stopPropagation:function(){var o=this.nativeEvent;o&&(o.stopPropagation?o.stopPropagation():typeof o.cancelBubble!="unknown"&&(o.cancelBubble=!0),this.isPropagationStopped=Vs)},persist:function(){},isPersistent:Vs}),n}var tr={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ls=zt(tr),Zi=y({},tr,{view:0,detail:0}),eA=zt(Zi),jd,Nd,Xi,Fs=y({},Zi,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Td,button:0,buttons:0,relatedTarget:function(t){return t.relatedTarget===void 0?t.fromElement===t.srcElement?t.toElement:t.fromElement:t.relatedTarget},movementX:function(t){return"movementX"in t?t.movementX:(t!==Xi&&(Xi&&t.type==="mousemove"?(jd=t.screenX-Xi.screenX,Nd=t.screenY-Xi.screenY):Nd=jd=0,Xi=t),jd)},movementY:function(t){return"movementY"in t?t.movementY:Nd}}),eg=zt(Fs),tA=y({},Fs,{dataTransfer:0}),aA=zt(tA),nA=y({},Zi,{relatedTarget:0}),Ad=zt(nA),rA=y({},tr,{animationName:0,elapsedTime:0,pseudoElement:0}),iA=zt(rA),oA=y({},tr,{clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}}),sA=zt(oA),lA=y({},tr,{data:0}),tg=zt(lA),cA={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},dA={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},uA={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function fA(t){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(t):(t=uA[t])?!!n[t]:!1}function Td(){return fA}var hA=y({},Zi,{key:function(t){if(t.key){var n=cA[t.key]||t.key;if(n!=="Unidentified")return n}return t.type==="keypress"?(t=Ps(t),t===13?"Enter":String.fromCharCode(t)):t.type==="keydown"||t.type==="keyup"?dA[t.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Td,charCode:function(t){return t.type==="keypress"?Ps(t):0},keyCode:function(t){return t.type==="keydown"||t.type==="keyup"?t.keyCode:0},which:function(t){return t.type==="keypress"?Ps(t):t.type==="keydown"||t.type==="keyup"?t.keyCode:0}}),mA=zt(hA),pA=y({},Fs,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),ag=zt(pA),gA=y({},Zi,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Td}),yA=zt(gA),xA=y({},tr,{propertyName:0,elapsedTime:0,pseudoElement:0}),vA=zt(xA),bA=y({},Fs,{deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:0,deltaMode:0}),wA=zt(bA),CA=y({},tr,{newState:0,oldState:0}),SA=zt(CA),jA=[9,13,27,32],Ed=Wa&&"CompositionEvent"in window,Qi=null;Wa&&"documentMode"in document&&(Qi=document.documentMode);var NA=Wa&&"TextEvent"in window&&!Qi,ng=Wa&&(!Ed||Qi&&8<Qi&&11>=Qi),rg=" ",ig=!1;
vendor: 101,644 bytes, line 8
8function og(t,n){switch(t){case"keyup":return jA.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function sg(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Hr=!1;function AA(t,n){switch(t){case"compositionend":return sg(n);case"keypress":return n.which!==32?null:(ig=!0,rg);case"textInput":return t=n.data,t===rg&&ig?null:t;default:return null}}function TA(t,n){if(Hr)return t==="compositionend"||!Ed&&og(t,n)?(t=Qp(),Os=Sd=hn=null,Hr=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return ng&&n.locale!=="ko"?null:n.data;default:return null}}var EA={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function lg(t){var n=t&&t.nodeName&&t.nodeName.toLowerCase();return n==="input"?!!EA[t.type]:n==="textarea"}function cg(t,n,o,l){Fr?zr?zr.push(l):zr=[l]:Fr=l,n=Sl(n,"onChange"),0<n.length&&(o=new Ls("onChange","change",null,o,l),t.push({event:o,listeners:n}))}var Ji=null,eo=null;function RA(t){_x(t,0)}function zs(t){var n=Yi(t);if(Gp(n))return t}function dg(t,n){if(t==="change")return n}var ug=!1;if(Wa){var Rd;if(Wa){var kd="oninput"in document;if(!kd){var fg=document.createElement("div");fg.setAttribute("oninput","return;"),kd=typeof fg.oninput=="function"}Rd=kd}else Rd=!1;ug=Rd&&(!document.documentMode||9<document.documentMode)}function hg(){Ji&&(Ji.detachEvent("onpropertychange",mg),eo=Ji=null)}function mg(t){if(t.propertyName==="value"&&zs(eo)){var n=[];cg(n,eo,t,bd(t)),Xp(RA,n)}}function kA(t,n,o){t==="focusin"?(hg(),Ji=n,eo=o,Ji.attachEvent("onpropertychange",mg)):t==="focusout"&&hg()}function DA(t){if(t==="selectionchange"||t==="keyup"||t==="keydown")return zs(eo)}function MA(t,n){if(t==="click")return zs(n)}function OA(t,n){if(t==="input"||t==="change")return zs(n)}function PA(t,n){return t===n&&(t!==0||1/t===1/n)||t!==t&&n!==n}var Ut=typeof Object.is=="function"?Object.is:PA;function to(t,n){if(Ut(t,n))return!0;if(typeof t!="object"||t===null||typeof n!="object"||n===null)return!1;var o=Object.keys(t),l=Object.keys(n);if(o.length!==l.length)return!1;for(l=0;l<o.length;l++){var u=o[l];if(!Ve.call(n,u)||!Ut(t[u],n[u]))return!1}return!0}function pg(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function gg(t,n){var o=pg(t);t=0;for(var l;o;){if(o.nodeType===3){if(l=t+o.textContent.length,t<=n&&l>=n)return{node:o,offset:n-t};t=l}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=pg(o)}}function yg(t,n){return t&&n?t===n?!0:t&&t.nodeType===3?!1:n&&n.nodeType===3?yg(t,n.parentNode):"contains"in t?t.contains(n):t.compareDocumentPosition?!!(t.compareDocumentPosition(n)&16):!1:!1}function xg(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var n=Ds(t.document);n instanceof t.HTMLIFrameElement;){try{var o=typeof n.contentWindow.location.href=="string"}catch{o=!1}if(o)t=n.contentWindow;else break;n=Ds(t.document)}return n}function Dd(t){var n=t&&t.nodeName&&t.nodeName.toLowerCase();return n&&(n==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||n==="textarea"||t.contentEditable==="true")}var VA=Wa&&"documentMode"in document&&11>=document.documentMode,Br=null,Md=null,ao=null,Od=!1;function vg(t,n,o){var l=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Od||Br==null||Br!==Ds(l)||(l=Br,"selectionStart"in l&&Dd(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),ao&&to(ao,l)||(ao=l,l=Sl(Md,"onSelect"),0<l.length&&(n=new Ls("onSelect","select",null,n,o),t.push({event:n,listeners:l}),n.target=Br)))}function ar(t,n){var o={};return o[t.toLowerCase()]=n.toLowerCase(),o["Webkit"+t]="webkit"+n,o["Moz"+t]="moz"+n,o}var qr={animationend:ar("Animation","AnimationEnd"),animationiteration:ar("Animation","AnimationIteration"),animationstart:ar("Animation","AnimationStart"),transitionrun:ar("Transition","TransitionRun"),transitionstart:ar("Transition","TransitionStart"),transitioncancel:ar("Transition","TransitionCancel"),transitionend:ar("Transition","TransitionEnd")},Pd={},bg={};Wa&&(bg=document.createElement("div").style,"AnimationEvent"in window||(delete qr.animationend.animation,delete qr.animationiteration.animation,delete qr.animationstart.animation),"TransitionEvent"in window||delete qr.transitionend.transition);function nr(t){if(Pd[t])return Pd[t];if(!qr[t])return t;var n=qr[t],o;for(o in n)if(n.hasOwnProperty(o)&&o in bg)return Pd[t]=n[o];return t}var wg=nr("animationend"),Cg=nr("animationiteration"),Sg=nr("animationstart"),LA=nr("transitionrun"),FA=nr("transitionstart"),zA=nr("transitioncancel"),jg=nr("transitionend"),Ng=new Map,Vd="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Vd.push("scrollEnd");function ma(t,n){Ng.set(t,n),er(n,[t])}var Ag=new WeakMap;function na(t,n){if(typeof t=="object"&&t!==null){var o=Ag.get(t);return o!==void 0?o:(n={value:t,source:n,stack:Wp(n)},Ag.set(t,n),n)}return{value:t,source:n,stack:Wp(n)}}var ra=[],Wr=0,Ld=0;function Hs(){for(var t=Wr,n=Ld=Wr=0;n<t;){var o=ra[n];ra[n++]=null;var l=ra[n];ra[n++]=null;var u=ra[n];ra[n++]=null;var m=ra[n];if(ra[n++]=null,l!==null&&u!==null){var v=l.pending;v===null?u.next=u:(u.next=v.next,v.next=u),l.pending=u}m!==0&&Tg(o,u,m)}}function Bs(t,n,o,l){ra[Wr++]=t,ra[Wr++]=n,ra[Wr++]=o,ra[Wr++]=l,Ld|=l,t.lanes|=l,t=t.alternate,t!==null&&(t.lanes|=l)}function Fd(t,n,o,l){return Bs(t,n,o,l),qs(t)}function _r(t,n){return Bs(t,null,null,n),qs(t)}function Tg(t,n,o){t.lanes|=o;var l=t.alternate;l!==null&&(l.lanes|=o);for(var u=!1,m=t.return;m!==null;)m.childLanes|=o,l=m.alternate,l!==null&&(l.childLanes|=o),m.tag===22&&(t=m.stateNode,t===null||t._visibility&1||(u=!0)),t=m,m=m.return;return t.tag===3?(m=t.stateNode,u&&n!==null&&(u=31-Gt(o),t=m.hiddenUpdates,l=t[u],l===null?t[u]=[n]:l.push(n),n.lane=o|536870912),m):null}function qs(t){if(50<Eo)throw Eo=0,_u=null,Error(s(185));for(var n=t.return;n!==null;)t=n,n=t.return;return t.tag===3?t.stateNode:null}var Gr={};function HA(t,n,o,l){this.tag=t,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function It(t,n,o,l){return new HA(t,n,o,l)}function zd(t){return t=t.prototype,!(!t||!t.isReactComponent)}function _a(t,n){var o=t.alternate;return o===null?(o=It(t.tag,n,t.key,t.mode),o.elementType=t.elementType,o.type=t.type,o.stateNode=t.stateNode,o.alternate=t,t.alternate=o):(o.pendingProps=n,o.type=t.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=t.flags&65011712,o.childLanes=t.childLanes,o.lanes=t.lanes,o.child=t.child,o.memoizedProps=t.memoizedProps,o.memoizedState=t.memoizedState,o.updateQueue=t.updateQueue,n=t.dependencies,o.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},o.sibling=t.sibling,o.index=t.index,o.ref=t.ref,o.refCleanup=t.refCleanup,o}function Eg(t,n){t.flags&=65011714;var o=t.alternate;return o===null?(t.childLanes=0,t.lanes=n,t.child=null,t.subtreeFlags=0,t.memoizedProps=null,t.memoizedState=null,t.updateQueue=null,t.dependencies=null,t.stateNode=null):(t.childLanes=o.childLanes,t.lanes=o.lanes,t.child=o.child,t.subtreeFlags=0,t.deletions=null,t.memoizedProps=o.memoizedProps,t.memoizedState=o.memoizedState,t.updateQueue=o.updateQueue,t.type=o.type,n=o.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext}),t}function Ws(t,n,o,l,u,m){var v=0;if(l=t,typeof t=="function")zd(t)&&(v=1);else if(typeof t=="string")v=q2(t,o,re.current)?26:t==="html"||t==="head"||t==="body"?27:5;else e:switch(t){case X:return t=It(31,o,n,u),t.elementType=X,t.lanes=m,t;case N:return rr(o.children,u,m,n);case C:v=8,u|=24;break;case A:return t=It(12,o,n,u|2),t.elementType=A,t.lanes=m,t;case P:return t=It(13,o,n,u),t.elementType=P,t.lanes=m,t;case G:return t=It(19,o,n,u),t.elementType=G,t.lanes=m,t;default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case E:case k:v=10;break e;case R:v=9;break e;case O:v=11;break e;case I:v=14;break e;case H:v=16,l=null;break e}v=29,o=Error(s(130,t===null?"null":typeof t,"")),l=null}return n=It(v,o,n,u),n.elementType=t,n.type=l,n.lanes=m,n}function rr(t,n,o,l){return t=It(7,t,l,n),t.lanes=o,t}function Hd(t,n,o){return t=It(6,t,null,n),t.lanes=o,t}function Bd(t,n,o){return n=It(4,t.children!==null?t.children:[],t.key,n),n.lanes=o,n.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},n}var Ur=[],Ir=0,_s=null,Gs=0,ia=[],oa=0,ir=null,Ga=1,Ua="";function or(t,n){Ur[Ir++]=Gs,Ur[Ir++]=_s,_s=t,Gs=n}function Rg(t,n,o){ia[oa++]=Ga,ia[oa++]=Ua,ia[oa++]=ir,ir=t;var l=Ga;t=Ua;var u=32-Gt(l)-1;l&=~(1<<u),o+=1;var m=32-Gt(n)+u;if(30<m){var v=u-u%5;m=(l&(1<<v)-1).toString(32),l>>=v,u-=v,Ga=1<<32-Gt(n)+u|o<<u|l,Ua=m+t}else Ga=1<<m|o<<u|l,Ua=t}function qd(t){t.return!==null&&(or(t,1),Rg(t,1,0))}function Wd(t){for(;t===_s;)_s=Ur[--Ir],Ur[Ir]=null,Gs=Ur[--Ir],Ur[Ir]=null;for(;t===ir;)ir=ia[--oa],ia[oa]=null,Ua=ia[--oa],ia[oa]=null,Ga=ia[--oa],ia[oa]=null}var Et=null,Xe=null,Pe=!1,sr=null,Ea=!1,_d=Error(s(519));function lr(t){var n=Error(s(418,""));throw io(na(n,t)),_d}function kg(t){var n=t.stateNode,o=t.type,l=t.memoizedProps;switch(n[Ct]=t,n[Ft]=l,o){case"dialog":Ee("cancel",n),Ee("close",n);break;case"iframe":case"object":case"embed":Ee("load",n);break;case"video":case"audio":for(o=0;o<ko.length;o++)Ee(ko[o],n);break;case"source":Ee("error",n);break;case"img":case"image":case"link":Ee("error",n),Ee("load",n);break;case"details":Ee("toggle",n);break;case"input":Ee("invalid",n),Up(n,l.value,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name,!0),ks(n);break;case"select":Ee("invalid",n);break;case"textarea":Ee("invalid",n),Yp(n,l.value,l.defaultValue,l.children),ks(n)}o=l.children,typeof o!="string"&&typeof o!="number"&&typeof o!="bigint"||n.textContent===""+o||l.suppressHydrationWarning===!0||Yx(n.textContent,o)?(l.popover!=null&&(Ee("beforetoggle",n),Ee("toggle",n)),l.onScroll!=null&&Ee("scroll",n),l.onScrollEnd!=null&&Ee("scrollend",n),l.onClick!=null&&(n.onclick=jl),n=!0):n=!1,n||lr(t)}function Dg(t){for(Et=t.return;Et;)switch(Et.tag){case 5:case 13:Ea=!1;return;case 27:case 3:Ea=!0;return;default:Et=Et.return}}function no(t){if(t!==Et)return!1;if(!Pe)return Dg(t),Pe=!0,!1;var n=t.tag,o;if((o=n!==3&&n!==27)&&((o=n===5)&&(o=t.type,o=!(o!=="form"&&o!=="button")||of(t.type,t.memoizedProps)),o=!o),o&&Xe&&lr(t),Dg(t),n===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(s(317));e:{for(t=t.nextSibling,n=0;t;){if(t.nodeType===8)if(o=t.data,o==="/$"){if(n===0){Xe=ga(t.nextSibling);break e}n--}else o!=="$"&&o!=="$!"&&o!=="$?"||n++;t=t.nextSibling}Xe=null}}else n===27?(n=Xe,Rn(t.type)?(t=df,df=null,Xe=t):Xe=n):Xe=Et?ga(t.stateNode.nextSibling):null;return!0}function ro(){Xe=Et=null,Pe=!1}function Mg(){var t=sr;return t!==null&&(qt===null?qt=t:qt.push.apply(qt,t),sr=null),t}function io(t){sr===null?sr=[t]:sr.push(t)}var Gd=U(null),cr=null,Ia=null;function mn(t,n,o){J(Gd,n._currentValue),n._currentValue=o}function Ya(t){t._currentValue=Gd.current,ee(Gd)}function Ud(t,n,o){for(;t!==null;){var l=t.alternate;if((t.childLanes&n)!==n?(t.childLanes|=n,l!==null&&(l.childLanes|=n)):l!==null&&(l.childLanes&n)!==n&&(l.childLanes|=n),t===o)break;t=t.return}}function Id(t,n,o,l){var u=t.child;for(u!==null&&(u.return=t);u!==null;){var m=u.dependencies;if(m!==null){var v=u.child;m=m.firstContext;e:for(;m!==null;){var S=m;m=u;for(var D=0;D<n.length;D++)if(S.context===n[D]){m.lanes|=o,S=m.alternate,S!==null&&(S.lanes|=o),Ud(m.return,o,t),l||(v=null);break e}m=S.next}}else if(u.tag===18){if(v=u.return,v===null)throw Error(s(341));v.lanes|=o,m=v.alternate,m!==null&&(m.lanes|=o),Ud(v,o,t),v=null}else v=u.child;if(v!==null)v.return=u;else for(v=u;v!==null;){if(v===t){v=null;break}if(u=v.sibling,u!==null){u.return=v.return,v=u;break}v=v.return}u=v}}function oo(t,n,o,l){t=null;for(var u=n,m=!1;u!==null;){if(!m){if((u.flags&524288)!==0)m=!0;else if((u.flags&262144)!==0)break}if(u.tag===10){var v=u.alternate;if(v===null)throw Error(s(387));if(v=v.memoizedProps,v!==null){var S=u.type;Ut(u.pendingProps.value,v.value)||(t!==null?t.push(S):t=[S])}}else if(u===oe.current){if(v=u.alternate,v===null)throw Error(s(387));v.memoizedState.memoizedState!==u.memoizedState.memoizedState&&(t!==null?t.push(Lo):t=[Lo])}u=u.return}t!==null&&Id(n,t,o,l),n.flags|=262144}function Us(t){for(t=t.firstContext;t!==null;){if(!Ut(t.context._currentValue,t.memoizedValue))return!0;t=t.next}return!1}function dr(t){cr=t,Ia=null,t=t.dependencies,t!==null&&(t.firstContext=null)}function St(t){return Og(cr,t)}function Is(t,n){return cr===null&&dr(t),Og(t,n)}function Og(t,n){var o=n._currentValue;if(n={context:n,memoizedValue:o,next:null},Ia===null){if(t===null)throw Error(s(308));Ia=n,t.dependencies={lanes:0,firstContext:n},t.flags|=524288}else Ia=Ia.next=n;return o}var BA=typeof AbortController<"u"?AbortController:function(){var t=[],n=this.signal={aborted:!1,addEventListener:function(o,l){t.push(l)}};this.abort=function(){n.aborted=!0,t.forEach(function(o){return o()})}},qA=e.unstable_scheduleCallback,WA=e.unstable_NormalPriority,lt={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Yd(){return{controller:new BA,data:new Map,refCount:0}}function so(t){t.refCount--,t.refCount===0&&qA(WA,function(){t.controller.abort()})}var lo=null,$d=0,Yr=0,$r=null;function _A(t,n){if(lo===null){var o=lo=[];$d=0,Yr=Zu(),$r={status:"pending",value:void 0,then:function(l){o.push(l)}}}return $d++,n.then(Pg,Pg),n}function Pg(){if(--$d===0&&lo!==null){$r!==null&&($r.status="fulfilled");var t=lo;lo=null,Yr=0,$r=null;for(var n=0;n<t.length;n++)(0,t[n])()}}function GA(t,n){var o=[],l={status:"pending",value:null,reason:null,then:function(u){o.push(u)}};return t.then(function(){l.status="fulfilled",l.value=n;for(var u=0;u<o.length;u++)(0,o[u])(n)},function(u){for(l.status="rejected",l.reason=u,u=0;u<o.length;u++)(0,o[u])(void 0)}),l}var Vg=V.S;V.S=function(t,n){typeof n=="object"&&n!==null&&typeof n.then=="function"&&_A(t,n),Vg!==null&&Vg(t,n)};var ur=U(null);function Kd(){var t=ur.current;return t!==null?t:Ge.pooledCache}function Ys(t,n){n===null?J(ur,ur.current):J(ur,n.pool)}function Lg(){var t=Kd();return t===null?null:{parent:lt._currentValue,pool:t}}var co=Error(s(460)),Fg=Error(s(474)),$s=Error(s(542)),Zd={then:function(){}};function zg(t){return t=t.status,t==="fulfilled"||t==="rejected"}function Ks(){}function Hg(t,n,o){switch(o=t[o],o===void 0?t.push(n):o!==n&&(n.then(Ks,Ks),n=o),n.status){case"fulfilled":return n.value;case"rejected":throw t=n.reason,qg(t),t;default:if(typeof n.status=="string")n.then(Ks,Ks);else{if(t=Ge,t!==null&&100<t.shellSuspendCounter)throw Error(s(482));t=n,t.status="pending",t.then(function(l){if(n.status==="pending"){var u=n;u.status="fulfilled",u.value=l}},function(l){if(n.status==="pending"){var u=n;u.status="rejected",u.reason=l}})}switch(n.status){case"fulfilled":return n.value;case"rejected":throw t=n.reason,qg(t),t}throw uo=n,co}}var uo=null;function Bg(){if(uo===null)throw Error(s(459));var t=uo;return uo=null,t}function qg(t){if(t===co||t===$s)throw Error(s(483))}var pn=!1;function Xd(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Qd(t,n){t=t.updateQueue,n.updateQueue===t&&(n.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function gn(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function yn(t,n,o){var l=t.updateQueue;if(l===null)return null;if(l=l.shared,(Le&2)!==0){var u=l.pending;return u===null?n.next=n:(n.next=u.next,u.next=n),l.pending=n,n=qs(t),Tg(t,null,o),n}return Bs(t,l,n,o),qs(t)}function fo(t,n,o){if(n=n.updateQueue,n!==null&&(n=n.shared,(o&4194048)!==0)){var l=n.lanes;l&=t.pendingLanes,o|=l,n.lanes=o,Pp(t,o)}}function Jd(t,n){var o=t.updateQueue,l=t.alternate;if(l!==null&&(l=l.updateQueue,o===l)){var u=null,m=null;if(o=o.firstBaseUpdate,o!==null){do{var v={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};m===null?u=m=v:m=m.next=v,o=o.next}while(o!==null);m===null?u=m=n:m=m.next=n}else u=m=n;o={baseState:l.baseState,firstBaseUpdate:u,lastBaseUpdate:m,shared:l.shared,callbacks:l.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=n:t.next=n,o.lastBaseUpdate=n}var eu=!1;function ho(){if(eu){var t=$r;if(t!==null)throw t}}function mo(t,n,o,l){eu=!1;var u=t.updateQueue;pn=!1;var m=u.firstBaseUpdate,v=u.lastBaseUpdate,S=u.shared.pending;if(S!==null){u.shared.pending=null;var D=S,z=D.next;D.next=null,v===null?m=z:v.next=z,v=D;var Y=t.alternate;Y!==null&&(Y=Y.updateQueue,S=Y.lastBaseUpdate,S!==v&&(S===null?Y.firstBaseUpdate=z:S.next=z,Y.lastBaseUpdate=D))}if(m!==null){var K=u.baseState;v=0,Y=z=D=null,S=m;do{var q=S.lane&-536870913,_=q!==S.lane;if(_?(De&q)===q:(l&q)===q){q!==0&&q===Yr&&(eu=!0),Y!==null&&(Y=Y.next={lane:0,tag:S.tag,payload:S.payload,callback:null,next:null});e:{var ve=t,pe=S;q=n;var qe=o;switch(pe.tag){case 1:if(ve=pe.payload,typeof ve=="function"){K=ve.call(qe,K,q);break e}K=ve;break e;case 3:ve.flags=ve.flags&-65537|128;case 0:if(ve=pe.payload,q=typeof ve=="function"?ve.call(qe,K,q):ve,q==null)break e;K=y({},K,q);break e;case 2:pn=!0}}q=S.callback,q!==null&&(t.flags|=64,_&&(t.flags|=8192),_=u.callbacks,_===null?u.callbacks=[q]:_.push(q))}else _={lane:q,tag:S.tag,payload:S.payload,callback:S.callback,next:null},Y===null?(z=Y=_,D=K):Y=Y.next=_,v|=q;if(S=S.next,S===null){if(S=u.shared.pending,S===null)break;_=S,S=_.next,_.next=null,u.lastBaseUpdate=_,u.shared.pending=null}}while(!0);Y===null&&(D=K),u.baseState=D,u.firstBaseUpdate=z,u.lastBaseUpdate=Y,m===null&&(u.shared.lanes=0),Nn|=v,t.lanes=v,t.memoizedState=K}}function Wg(t,n){if(typeof t!="function")throw Error(s(191,t));t.call(n)}function _g(t,n){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;t<o.length;t++)Wg(o[t],n)}var Kr=U(null),Zs=U(0);function Gg(t,n){t=en,J(Zs,t),J(Kr,n),en=t|n.baseLanes}function tu(){J(Zs,en),J(Kr,Kr.current)}function au(){en=Zs.current,ee(Kr),ee(Zs)}var xn=0,je=null,He=null,it=null,Xs=!1,Zr=!1,fr=!1,Qs=0,po=0,Xr=null,UA=0;function tt(){throw Error(s(321))}function nu(t,n){if(n===null)return!1;for(var o=0;o<n.length&&o<t.length;o++)if(!Ut(t[o],n[o]))return!1;return!0}function ru(t,n,o,l,u,m){return xn=m,je=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,V.H=t===null||t.memoizedState===null?Ty:Ey,fr=!1,m=o(l,u),fr=!1,Zr&&(m=Ig(n,o,l,u)),Ug(t),m}function Ug(t){V.H=rl;var n=He!==null&&He.next!==null;if(xn=0,it=He=je=null,Xs=!1,po=0,Xr=null,n)throw Error(s(300));t===null||ht||(t=t.dependencies,t!==null&&Us(t)&&(ht=!0))}function Ig(t,n,o,l){je=t;var u=0;do{if(Zr&&(Xr=null),po=0,Zr=!1,25<=u)throw Error(s(301));if(u+=1,it=He=null,t.updateQueue!=null){var m=t.updateQueue;m.lastEffect=null,m.events=null,m.stores=null,m.memoCache!=null&&(m.memoCache.index=0)}V.H=QA,m=n(o,l)}while(Zr);return m}function IA(){var t=V.H,n=t.useState()[0];return n=typeof n.then=="function"?go(n):n,t=t.useState()[0],(He!==null?He.memoizedState:null)!==t&&(je.flags|=1024),n}function iu(){var t=Qs!==0;return Qs=0,t}function ou(t,n,o){n.updateQueue=t.updateQueue,n.flags&=-2053,t.lanes&=~o}function su(t){if(Xs){for(t=t.memoizedState;t!==null;){var n=t.queue;n!==null&&(n.pending=null),t=t.next}Xs=!1}xn=0,it=He=je=null,Zr=!1,po=Qs=0,Xr=null}function Ht(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return it===null?je.memoizedState=it=t:it=it.next=t,it}function ot(){if(He===null){var t=je.alternate;t=t!==null?t.memoizedState:null}else t=He.next;var n=it===null?je.memoizedState:it.next;if(n!==null)it=n,He=t;else{if(t===null)throw je.alternate===null?Error(s(467)):Error(s(310));He=t,t={memoizedState:He.memoizedState,baseState:He.baseState,baseQueue:He.baseQueue,queue:He.queue,next:null},it===null?je.memoizedState=it=t:it=it.next=t}return it}function lu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function go(t){var n=po;return po+=1,Xr===null&&(Xr=[]),t=Hg(Xr,t,n),n=je,(it===null?n.memoizedState:it.next)===null&&(n=n.alternate,V.H=n===null||n.memoizedState===null?Ty:Ey),t}function Js(t){if(t!==null&&typeof t=="object"){if(typeof t.then=="function")return go(t);if(t.$$typeof===k)return St(t)}throw Error(s(438,String(t)))}function cu(t){var n=null,o=je.updateQueue;if(o!==null&&(n=o.memoCache),n==null){var l=je.alternate;l!==null&&(l=l.updateQueue,l!==null&&(l=l.memoCache,l!=null&&(n={data:l.data.map(function(u){return u.slice()}),index:0})))}if(n==null&&(n={data:[],index:0}),o===null&&(o=lu(),je.updateQueue=o),o.memoCache=n,o=n.data[n.index],o===void 0)for(o=n.data[n.index]=Array(t),l=0;l<t;l++)o[l]=ae;return n.index++,o}function $a(t,n){return typeof n=="function"?n(t):n}function el(t){var n=ot();return du(n,He,t)}function du(t,n,o){var l=t.queue;if(l===null)throw Error(s(311));l.lastRenderedReducer=o;var u=t.baseQueue,m=l.pending;if(m!==null){if(u!==null){var v=u.next;u.next=m.next,m.next=v}n.baseQueue=u=m,l.pending=null}if(m=t.baseState,u===null)t.memoizedState=m;else{n=u.next;var S=v=null,D=null,z=n,Y=!1;do{var K=z.lane&-536870913;if(K!==z.lane?(De&K)===K:(xn&K)===K){var q=z.revertLane;if(q===0)D!==null&&(D=D.next={lane:0,revertLane:0,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null}),K===Yr&&(Y=!0);else if((xn&q)===q){z=z.next,q===Yr&&(Y=!0);continue}else K={lane:0,revertLane:z.revertLane,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null},D===null?(S=D=K,v=m):D=D.next=K,je.lanes|=q,Nn|=q;K=z.action,fr&&o(m,K),m=z.hasEagerState?z.eagerState:o(m,K)}else q={lane:K,revertLane:z.revertLane,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null},D===null?(S=D=q,v=m):D=D.next=q,je.lanes|=K,Nn|=K;z=z.next}while(z!==null&&z!==n);if(D===null?v=m:D.next=S,!Ut(m,t.memoizedState)&&(ht=!0,Y&&(o=$r,o!==null)))throw o;t.memoizedState=m,t.baseState=v,t.baseQueue=D,l.lastRenderedState=m}return u===null&&(l.lanes=0),[t.memoizedState,l.dispatch]}function uu(t){var n=ot(),o=n.queue;if(o===null)throw Error(s(311));o.lastRenderedReducer=t;var l=o.dispatch,u=o.pending,m=n.memoizedState;if(u!==null){o.pending=null;var v=u=u.next;do m=t(m,v.action),v=v.next;while(v!==u);Ut(m,n.memoizedState)||(ht=!0),n.memoizedState=m,n.baseQueue===null&&(n.baseState=m),o.lastRenderedState=m}return[m,l]}function Yg(t,n,o){var l=je,u=ot(),m=Pe;if(m){if(o===void 0)throw Error(s(407));o=o()}else o=n();var v=!Ut((He||u).memoizedState,o);v&&(u.memoizedState=o,ht=!0),u=u.queue;var S=Zg.bind(null,l,u,t);if(yo(2048,8,S,[t]),u.getSnapshot!==n||v||it!==null&&it.memoizedState.tag&1){if(l.flags|=2048,Qr(9,tl(),Kg.bind(null,l,u,o,n),null),Ge===null)throw Error(s(349));m||(xn&124)!==0||$g(l,n,o)}return o}function $g(t,n,o){t.flags|=16384,t={getSnapshot:n,value:o},n=je.updateQueue,n===null?(n=lu(),je.updateQueue=n,n.stores=[t]):(o=n.stores,o===null?n.stores=[t]:o.push(t))}function Kg(t,n,o,l){n.value=o,n.getSnapshot=l,Xg(n)&&Qg(t)}function Zg(t,n,o){return o(function(){Xg(n)&&Qg(t)})}function Xg(t){var n=t.getSnapshot;t=t.value;try{var o=n();return!Ut(t,o)}catch{return!0}}function Qg(t){var n=_r(t,2);n!==null&&Xt(n,t,2)}function fu(t){var n=Ht();if(typeof t=="function"){var o=t;if(t=o(),fr){un(!0);try{o()}finally{un(!1)}}}return n.memoizedState=n.baseState=t,n.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:$a,lastRenderedState:t},n}function Jg(t,n,o,l){return t.baseState=o,du(t,He,typeof l=="function"?l:$a)}function YA(t,n,o,l,u){if(nl(t))throw Error(s(485));if(t=n.action,t!==null){var m={payload:u,action:t,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(v){m.listeners.push(v)}};V.T!==null?o(!0):m.isTransition=!1,l(m),o=n.pending,o===null?(m.next=n.pending=m,ey(n,m)):(m.next=o.next,n.pending=o.next=m)}}function ey(t,n){var o=n.action,l=n.payload,u=t.state;if(n.isTransition){var m=V.T,v={};V.T=v;try{var S=o(u,l),D=V.S;D!==null&&D(v,S),ty(t,n,S)}catch(z){hu(t,n,z)}finally{V.T=m}}else try{m=o(u,l),ty(t,n,m)}catch(z){hu(t,n,z)}}function ty(t,n,o){o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(function(l){ay(t,n,l)},function(l){return hu(t,n,l)}):ay(t,n,o)}function ay(t,n,o){n.status="fulfilled",n.value=o,ny(n),t.state=o,n=t.pending,n!==null&&(o=n.next,o===n?t.pending=null:(o=o.next,n.next=o,ey(t,o)))}function hu(t,n,o){var l=t.pending;if(t.pending=null,l!==null){l=l.next;do n.status="rejected",n.reason=o,ny(n),n=n.next;while(n!==l)}t.action=null}function ny(t){t=t.listeners;for(var n=0;n<t.length;n++)(0,t[n])()}function ry(t,n){return n}function iy(t,n){if(Pe){var o=Ge.formState;if(o!==null){e:{var l=je;if(Pe){if(Xe){t:{for(var u=Xe,m=Ea;u.nodeType!==8;){if(!m){u=null;break t}if(u=ga(u.nextSibling),u===null){u=null;break t}}m=u.data,u=m==="F!"||m==="F"?u:null}if(u){Xe=ga(u.nextSibling),l=u.data==="F!";break e}}lr(l)}l=!1}l&&(n=o[0])}}return o=Ht(),o.memoizedState=o.baseState=n,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ry,lastRenderedState:n},o.queue=l,o=jy.bind(null,je,l),l.dispatch=o,l=fu(!1),m=xu.bind(null,je,!1,l.queue),l=Ht(),u={state:n,dispatch:null,action:t,pending:null},l.queue=u,o=YA.bind(null,je,u,m,o),u.dispatch=o,l.memoizedState=t,[n,o,!1]}function oy(t){var n=ot();return sy(n,He,t)}function sy(t,n,o){if(n=du(t,n,ry)[0],t=el($a)[0],typeof n=="object"&&n!==null&&typeof n.then=="function")try{var l=go(n)}catch(v){throw v===co?$s:v}else l=n;n=ot();var u=n.queue,m=u.dispatch;return o!==n.memoizedState&&(je.flags|=2048,Qr(9,tl(),$A.bind(null,u,o),null)),[l,m,t]}function $A(t,n){t.action=n}function ly(t){var n=ot(),o=He;if(o!==null)return sy(n,o,t);ot(),n=n.memoizedState,o=ot();var l=o.queue.dispatch;return o.memoizedState=t,[n,l,!1]}function Qr(t,n,o,l){return t={tag:t,create:o,deps:l,inst:n,next:null},n=je.updateQueue,n===null&&(n=lu(),je.updateQueue=n),o=n.lastEffect,o===null?n.lastEffect=t.next=t:(l=o.next,o.next=t,t.next=l,n.lastEffect=t),t}function tl(){return{destroy:void 0,resource:void 0}}function cy(){return ot().memoizedState}function al(t,n,o,l){var u=Ht();l=l===void 0?null:l,je.flags|=t,u.memoizedState=Qr(1|n,tl(),o,l)}function yo(t,n,o,l){var u=ot();l=l===void 0?null:l;var m=u.memoizedState.inst;He!==null&&l!==null&&nu(l,He.memoizedState.deps)?u.memoizedState=Qr(n,m,o,l):(je.flags|=t,u.memoizedState=Qr(1|n,m,o,l))}function dy(t,n){al(8390656,8,t,n)}function uy(t,n){yo(2048,8,t,n)}function fy(t,n){return yo(4,2,t,n)}function hy(t,n){return yo(4,4,t,n)}function my(t,n){if(typeof n=="function"){t=t();var o=n(t);return function(){typeof o=="function"?o():n(null)}}if(n!=null)return t=t(),n.current=t,function(){n.current=null}}function py(t,n,o){o=o!=null?o.concat([t]):null,yo(4,4,my.bind(null,n,t),o)}function mu(){}function gy(t,n){var o=ot();n=n===void 0?null:n;var l=o.memoizedState;return n!==null&&nu(n,l[1])?l[0]:(o.memoizedState=[t,n],t)}function yy(t,n){var o=ot();n=n===void 0?null:n;var l=o.memoizedState;if(n!==null&&nu(n,l[1]))return l[0];if(l=t(),fr){un(!0);try{t()}finally{un(!1)}}return o.memoizedState=[l,n],l}function pu(t,n,o){return o===void 0||(xn&1073741824)!==0?t.memoizedState=n:(t.memoizedState=o,t=bx(),je.lanes|=t,Nn|=t,o)}function xy(t,n,o,l){return Ut(o,n)?o:Kr.current!==null?(t=pu(t,o,l),Ut(t,n)||(ht=!0),t):(xn&42)===0?(ht=!0,t.memoizedState=o):(t=bx(),je.lanes|=t,Nn|=t,n)}function vy(t,n,o,l,u){var m=B.p;B.p=m!==0&&8>m?m:8;var v=V.T,S={};V.T=S,xu(t,!1,n,o);try{var D=u(),z=V.S;if(z!==null&&z(S,D),D!==null&&typeof D=="object"&&typeof D.then=="function"){var Y=GA(D,l);xo(t,n,Y,Zt(t))}else xo(t,n,l,Zt(t))}catch(K){xo(t,n,{then:function(){},status:"rejected",reason:K},Zt())}finally{B.p=m,V.T=v}}function KA(){}function gu(t,n,o,l){if(t.tag!==5)throw Error(s(476));var u=by(t).queue;vy(t,u,n,W,o===null?KA:function(){return wy(t),o(l)})}function by(t){var n=t.memoizedState;if(n!==null)return n;n={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$a,lastRenderedState:W},next:null};var o={};return n.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$a,lastRenderedState:o},next:null},t.memoizedState=n,t=t.alternate,t!==null&&(t.memoizedState=n),n}function wy(t){var n=by(t).next.queue;xo(t,n,{},Zt())}function yu(){return St(Lo)}function Cy(){return ot().memoizedState}function Sy(){return ot().memoizedState}function ZA(t){for(var n=t.return;n!==null;){switch(n.tag){case 24:case 3:var o=Zt();t=gn(o);var l=yn(n,t,o);l!==null&&(Xt(l,n,o),fo(l,n,o)),n={cache:Yd()},t.payload=n;return}n=n.return}}function XA(t,n,o){var l=Zt();o={lane:l,revertLane:0,action:o,hasEagerState:!1,eagerState:null,next:null},nl(t)?Ny(n,o):(o=Fd(t,n,o,l),o!==null&&(Xt(o,t,l),Ay(o,n,l)))}function jy(t,n,o){var l=Zt();xo(t,n,o,l)}function xo(t,n,o,l){var u={lane:l,revertLane:0,action:o,hasEagerState:!1,eagerState:null,next:null};if(nl(t))Ny(n,u);else{var m=t.alternate;if(t.lanes===0&&(m===null||m.lanes===0)&&(m=n.lastRenderedReducer,m!==null))try{var v=n.lastRenderedState,S=m(v,o);if(u.hasEagerState=!0,u.eagerState=S,Ut(S,v))return Bs(t,n,u,0),Ge===null&&Hs(),!1}catch{}if(o=Fd(t,n,u,l),o!==null)return Xt(o,t,l),Ay(o,n,l),!0}return!1}function xu(t,n,o,l){if(l={lane:2,revertLane:Zu(),action:l,hasEagerState:!1,eagerState:null,next:null},nl(t)){if(n)throw Error(s(479))}else n=Fd(t,o,l,2),n!==null&&Xt(n,t,2)}function nl(t){var n=t.alternate;return t===je||n!==null&&n===je}function Ny(t,n){Zr=Xs=!0;var o=t.pending;o===null?n.next=n:(n.next=o.next,o.next=n),t.pending=n}function Ay(t,n,o){if((o&4194048)!==0){var l=n.lanes;l&=t.pendingLanes,o|=l,n.lanes=o,Pp(t,o)}}var rl={readContext:St,use:Js,useCallback:tt,useContext:tt,useEffect:tt,useImperativeHandle:tt,useLayoutEffect:tt,useInsertionEffect:tt,useMemo:tt,useReducer:tt,useRef:tt,useState:tt,useDebugValue:tt,useDeferredValue:tt,useTransition:tt,useSyncExternalStore:tt,useId:tt,useHostTransitionStatus:tt,useFormState:tt,useActionState:tt,useOptimistic:tt,useMemoCache:tt,useCacheRefresh:tt},Ty={readContext:St,use:Js,useCallback:function(t,n){return Ht().memoizedState=[t,n===void 0?null:n],t},useContext:St,useEffect:dy,useImperativeHandle:function(t,n,o){o=o!=null?o.concat([t]):null,al(4194308,4,my.bind(null,n,t),o)},useLayoutEffect:function(t,n){return al(4194308,4,t,n)},useInsertionEffect:function(t,n){al(4,2,t,n)},useMemo:function(t,n){var o=Ht();n=n===void 0?null:n;var l=t();if(fr){un(!0);try{t()}finally{un(!1)}}return o.memoizedState=[l,n],l},useReducer:function(t,n,o){var l=Ht();if(o!==void 0){var u=o(n);if(fr){un(!0);try{o(n)}finally{un(!1)}}}else u=n;return l.memoizedState=l.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},l.queue=t,t=t.dispatch=XA.bind(null,je,t),[l.memoizedState,t]},useRef:function(t){var n=Ht();return t={current:t},n.memoizedState=t},useState:function(t){t=fu(t);var n=t.queue,o=jy.bind(null,je,n);return n.dispatch=o,[t.memoizedState,o]},useDebugValue:mu,useDeferredValue:function(t,n){var o=Ht();return pu(o,t,n)},useTransition:function(){var t=fu(!1);return t=vy.bind(null,je,t.queue,!0,!1),Ht().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,n,o){var l=je,u=Ht();if(Pe){if(o===void 0)throw Error(s(407));o=o()}else{if(o=n(),Ge===null)throw Error(s(349));(De&124)!==0||$g(l,n,o)}u.memoizedState=o;var m={value:o,getSnapshot:n};return u.queue=m,dy(Zg.bind(null,l,m,t),[t]),l.flags|=2048,Qr(9,tl(),Kg.bind(null,l,m,o,n),null),o},useId:function(){var t=Ht(),n=Ge.identifierPrefix;if(Pe){var o=Ua,l=Ga;o=(l&~(1<<32-Gt(l)-1)).toString(32)+o,n="«"+n+"R"+o,o=Qs++,0<o&&(n+="H"+o.toString(32)),n+="»"}else o=UA++,n="«"+n+"r"+o.toString(32)+"»";return t.memoizedState=n},useHostTransitionStatus:yu,useFormState:iy,useActionState:iy,useOptimistic:function(t){var n=Ht();n.memoizedState=n.baseState=t;var o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return n.queue=o,n=xu.bind(null,je,!0,o),o.dispatch=n,[t,n]},useMemoCache:cu,useCacheRefresh:function(){return Ht().memoizedState=ZA.bind(null,je)}},Ey={readContext:St,use:Js,useCallback:gy,useContext:St,useEffect:uy,useImperativeHandle:py,useInsertionEffect:fy,useLayoutEffect:hy,useMemo:yy,useReducer:el,useRef:cy,useState:function(){return el($a)},useDebugValue:mu,useDeferredValue:function(t,n){var o=ot();return xy(o,He.memoizedState,t,n)},useTransition:function(){var t=el($a)[0],n=ot().memoizedState;return[typeof t=="boolean"?t:go(t),n]},useSyncExternalStore:Yg,useId:Cy,useHostTransitionStatus:yu,useFormState:oy,useActionState:oy,useOptimistic:function(t,n){var o=ot();return Jg(o,He,t,n)},useMemoCache:cu,useCacheRefresh:Sy},QA={readContext:St,use:Js,useCallback:gy,useContext:St,useEffect:uy,useImperativeHandle:py,useInsertionEffect:fy,useLayoutEffect:hy,useMemo:yy,useReducer:uu,useRef:cy,useState:function(){return uu($a)},useDebugValue:mu,useDeferredValue:function(t,n){var o=ot();return He===null?pu(o,t,n):xy(o,He.memoizedState,t,n)},useTransition:function(){var t=uu($a)[0],n=ot().memoizedState;return[typeof t=="boolean"?t:go(t),n]},useSyncExternalStore:Yg,useId:Cy,useHostTransitionStatus:yu,useFormState:ly,useActionState:ly,useOptimistic:function(t,n){var o=ot();return He!==null?Jg(o,He,t,n):(o.baseState=t,[t,o.queue.dispatch])},useMemoCache:cu,useCacheRefresh:Sy},Jr=null,vo=0;function il(t){var n=vo;return vo+=1,Jr===null&&(Jr=[]),Hg(Jr,t,n)}function bo(t,n){n=n.props.ref,t.ref=n!==void 0?n:null}function ol(t,n){throw n.$$typeof===x?Error(s(525)):(t=Object.prototype.toString.call(n),Error(s(31,t==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":t)))}function Ry(t){var n=t._init;return n(t._payload)}function ky(t){function n(L,M){if(t){var F=L.deletions;F===null?(L.deletions=[M],L.flags|=16):F.push(M)}}function o(L,M){if(!t)return null;for(;M!==null;)n(L,M),M=M.sibling;return null}function l(L){for(var M=new Map;L!==null;)L.key!==null?M.set(L.key,L):M.set(L.index,L),L=L.sibling;return M}function u(L,M){return L=_a(L,M),L.index=0,L.sibling=null,L}function m(L,M,F){return L.index=F,t?(F=L.alternate,F!==null?(F=F.index,F<M?(L.flags|=67108866,M):F):(L.flags|=67108866,M)):(L.flags|=1048576,M)}function v(L){return t&&L.alternate===null&&(L.flags|=67108866),L}function S(L,M,F,$){return M===null||M.tag!==6?(M=Hd(F,L.mode,$),M.return=L,M):(M=u(M,F),M.return=L,M)}function D(L,M,F,$){var le=F.type;return le===N?Y(L,M,F.props.children,$,F.key):M!==null&&(M.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===H&&Ry(le)===M.type)?(M=u(M,F.props),bo(M,F),M.return=L,M):(M=Ws(F.type,F.key,F.props,null,L.mode,$),bo(M,F),M.return=L,M)}function z(L,M,F,$){return M===null||M.tag!==4||M.stateNode.containerInfo!==F.containerInfo||M.stateNode.implementation!==F.implementation?(M=Bd(F,L.mode,$),M.return=L,M):(M=u(M,F.children||[]),M.return=L,M)}function Y(L,M,F,$,le){return M===null||M.tag!==7?(M=rr(F,L.mode,$,le),M.return=L,M):(M=u(M,F),M.return=L,M)}function K(L,M,F){if(typeof M=="string"&&M!==""||typeof M=="number"||typeof M=="bigint")return M=Hd(""+M,L.mode,F),M.return=L,M;if(typeof M=="object"&&M!==null){switch(M.$$typeof){case b:return F=Ws(M.type,M.key,M.props,null,L.mode,F),bo(F,M),F.return=L,F;case j:return M=Bd(M,L.mode,F),M.return=L,M;case H:var $=M._init;return M=$(M._payload),K(L,M,F)}if(se(M)||ie(M))return M=rr(M,L.mode,F,null),M.return=L,M;if(typeof M.then=="function")return K(L,il(M),F);if(M.$$typeof===k)return K(L,Is(L,M),F);ol(L,M)}return null}function q(L,M,F,$){var le=M!==null?M.key:null;if(typeof F=="string"&&F!==""||typeof F=="number"||typeof F=="bigint")return le!==null?null:S(L,M,""+F,$);if(typeof F=="object"&&F!==null){switch(F.$$typeof){case b:return F.key===le?D(L,M,F,$):null;case j:return F.key===le?z(L,M,F,$):null;case H:return le=F._init,F=le(F._payload),q(L,M,F,$)}if(se(F)||ie(F))return le!==null?null:Y(L,M,F,$,null);if(typeof F.then=="function")return q(L,M,il(F),$);if(F.$$typeof===k)return q(L,M,Is(L,F),$);ol(L,F)}return null}function _(L,M,F,$,le){if(typeof $=="string"&&$!==""||typeof $=="number"||typeof $=="bigint")return L=L.get(F)||null,S(M,L,""+$,le);if(typeof $=="object"&&$!==null){switch($.$$typeof){case b:return L=L.get($.key===null?F:$.key)||null,D(M,L,$,le);case j:return L=L.get($.key===null?F:$.key)||null,z(M,L,$,le);case H:var Ae=$._init;return $=Ae($._payload),_(L,M,F,$,le)}if(se($)||ie($))return L=L.get(F)||null,Y(M,L,$,le,null);if(typeof $.then=="function")return _(L,M,F,il($),le);if($.$$typeof===k)return _(L,M,F,Is(M,$),le);ol(M,$)}return null}function ve(L,M,F,$){for(var le=null,Ae=null,he=M,ye=M=0,pt=null;he!==null&&ye<F.length;ye++){he.index>ye?(pt=he,he=null):pt=he.sibling;var Oe=q(L,he,F[ye],$);if(Oe===null){he===null&&(he=pt);break}t&&he&&Oe.alternate===null&&n(L,he),M=m(Oe,M,ye),Ae===null?le=Oe:Ae.sibling=Oe,Ae=Oe,he=pt}if(ye===F.length)return o(L,he),Pe&&or(L,ye),le;if(he===null){for(;ye<F.length;ye++)he=K(L,F[ye],$),he!==null&&(M=m(he,M,ye),Ae===null?le=he:Ae.sibling=he,Ae=he);return Pe&&or(L,ye),le}for(he=l(he);ye<F.length;ye++)pt=_(he,L,ye,F[ye],$),pt!==null&&(t&&pt.alternate!==null&&he.delete(pt.key===null?ye:pt.key),M=m(pt,M,ye),Ae===null?le=pt:Ae.sibling=pt,Ae=pt);return t&&he.forEach(function(Pn){return n(L,Pn)}),Pe&&or(L,ye),le}function pe(L,M,F,$){if(F==null)throw Error(s(151));for(var le=null,Ae=null,he=M,ye=M=0,pt=null,Oe=F.next();he!==null&&!Oe.done;ye++,Oe=F.next()){he.index>ye?(pt=he,he=null):pt=he.sibling;var Pn=q(L,he,Oe.value,$);if(Pn===null){he===null&&(he=pt);break}t&&he&&Pn.alternate===null&&n(L,he),M=m(Pn,M,ye),Ae===null?le=Pn:Ae.sibling=Pn,Ae=Pn,he=pt}if(Oe.done)return o(L,he),Pe&&or(L,ye),le;if(he===null){for(;!Oe.done;ye++,Oe=F.next())Oe=K(L,Oe.value,$),Oe!==null&&(M=m(Oe,M,ye),Ae===null?le=Oe:Ae.sibling=Oe,Ae=Oe);return Pe&&or(L,ye),le}for(he=l(he);!Oe.done;ye++,Oe=F.next())Oe=_(he,L,ye,Oe.value,$),Oe!==null&&(t&&Oe.alternate!==null&&he.delete(Oe.key===null?ye:Oe.key),M=m(Oe,M,ye),Ae===null?le=Oe:Ae.sibling=Oe,Ae=Oe);return t&&he.forEach(function(J2){return n(L,J2)}),Pe&&or(L,ye),le}function qe(L,M,F,$){if(typeof F=="object"&&F!==null&&F.type===N&&F.key===null&&(F=F.props.children),typeof F=="object"&&F!==null){switch(F.$$typeof){case b:e:{for(var le=F.key;M!==null;){if(M.key===le){if(le=F.type,le===N){if(M.tag===7){o(L,M.sibling),$=u(M,F.props.children),$.return=L,L=$;break e}}else if(M.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===H&&Ry(le)===M.type){o(L,M.sibling),$=u(M,F.props),bo($,F),$.return=L,L=$;break e}o(L,M);break}else n(L,M);M=M.sibling}F.type===N?($=rr(F.props.children,L.mode,$,F.key),$.return=L,L=$):($=Ws(F.type,F.key,F.props,null,L.mode,$),bo($,F),$.return=L,L=$)}return v(L);case j:e:{for(le=F.key;M!==null;){if(M.key===le)if(M.tag===4&&M.stateNode.containerInfo===F.containerInfo&&M.stateNode.implementation===F.implementation){o(L,M.sibling),$=u(M,F.children||[]),$.return=L,L=$;break e}else{o(L,M);break}else n(L,M);M=M.sibling}$=Bd(F,L.mode,$),$.return=L,L=$}return v(L);case H:return le=F._init,F=le(F._payload),qe(L,M,F,$)}if(se(F))return ve(L,M,F,$);if(ie(F)){if(le=ie(F),typeof le!="function")throw Error(s(150));return F=le.call(F),pe(L,M,F,$)}if(typeof F.then=="function")return qe(L,M,il(F),$);if(F.$$typeof===k)return qe(L,M,Is(L,F),$);ol(L,F)}return typeof F=="string"&&F!==""||typeof F=="number"||typeof F=="bigint"?(F=""+F,M!==null&&M.tag===6?(o(L,M.sibling),$=u(M,F),$.return=L,L=$):(o(L,M),$=Hd(F,L.mode,$),$.return=L,L=$),v(L)):o(L,M)}return function(L,M,F,$){try{vo=0;var le=qe(L,M,F,$);return Jr=null,le}catch(he){if(he===co||he===$s)throw he;var Ae=It(29,he,null,L.mode);return Ae.lanes=$,Ae.return=L,Ae}}}var ei=ky(!0),Dy=ky(!1),sa=U(null),Ra=null;function vn(t){var n=t.alternate;J(ct,ct.current&1),J(sa,t),Ra===null&&(n===null||Kr.current!==null||n.memoizedState!==null)&&(Ra=t)}function My(t){if(t.tag===22){if(J(ct,ct.current),J(sa,t),Ra===null){var n=t.alternate;n!==null&&n.memoizedState!==null&&(Ra=t)}}else bn()}function bn(){J(ct,ct.current),J(sa,sa.current)}function Ka(t){ee(sa),Ra===t&&(Ra=null),ee(ct)}var ct=U(0);function sl(t){for(var n=t;n!==null;){if(n.tag===13){var o=n.memoizedState;if(o!==null&&(o=o.dehydrated,o===null||o.data==="$?"||cf(o)))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if((n.flags&128)!==0)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}function vu(t,n,o,l){n=t.memoizedState,o=o(l,n),o=o==null?n:y({},n,o),t.memoizedState=o,t.lanes===0&&(t.updateQueue.baseState=o)}var bu={enqueueSetState:function(t,n,o){t=t._reactInternals;var l=Zt(),u=gn(l);u.payload=n,o!=null&&(u.callback=o),n=yn(t,u,l),n!==null&&(Xt(n,t,l),fo(n,t,l))},enqueueReplaceState:function(t,n,o){t=t._reactInternals;var l=Zt(),u=gn(l);u.tag=1,u.payload=n,o!=null&&(u.callback=o),n=yn(t,u,l),n!==null&&(Xt(n,t,l),fo(n,t,l))},enqueueForceUpdate:function(t,n){t=t._reactInternals;var o=Zt(),l=gn(o);l.tag=2,n!=null&&(l.callback=n),n=yn(t,l,o),n!==null&&(Xt(n,t,o),fo(n,t,o))}};function Oy(t,n,o,l,u,m,v){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(l,m,v):n.prototype&&n.prototype.isPureReactComponent?!to(o,l)||!to(u,m):!0}function Py(t,n,o,l){t=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(o,l),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(o,l),n.state!==t&&bu.enqueueReplaceState(n,n.state,null)}function hr(t,n){var o=n;if("ref"in n){o={};for(var l in n)l!=="ref"&&(o[l]=n[l])}if(t=t.defaultProps){o===n&&(o=y({},o));for(var u in t)o[u]===void 0&&(o[u]=t[u])}return o}var ll=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(n))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)};function Vy(t){ll(t)}function Ly(t){console.error(t)}function Fy(t){ll(t)}function cl(t,n){try{var o=t.onUncaughtError;o(n.value,{componentStack:n.stack})}catch(l){setTimeout(function(){throw l})}}function zy(t,n,o){try{var l=t.onCaughtError;l(o.value,{componentStack:o.stack,errorBoundary:n.tag===1?n.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function wu(t,n,o){return o=gn(o),o.tag=3,o.payload={element:null},o.callback=function(){cl(t,n)},o}function Hy(t){return t=gn(t),t.tag=3,t}function By(t,n,o,l){var u=o.type.getDerivedStateFromError;if(typeof u=="function"){var m=l.value;t.payload=function(){return u(m)},t.callback=function(){zy(n,o,l)}}var v=o.stateNode;v!==null&&typeof v.componentDidCatch=="function"&&(t.callback=function(){zy(n,o,l),typeof u!="function"&&(An===null?An=new Set([this]):An.add(this));var S=l.stack;this.componentDidCatch(l.value,{componentStack:S!==null?S:""})})}function JA(t,n,o,l,u){if(o.flags|=32768,l!==null&&typeof l=="object"&&typeof l.then=="function"){if(n=o.alternate,n!==null&&oo(n,o,u,!0),o=sa.current,o!==null){switch(o.tag){case 13:return Ra===null?Uu():o.alternate===null&&Qe===0&&(Qe=3),o.flags&=-257,o.flags|=65536,o.lanes=u,l===Zd?o.flags|=16384:(n=o.updateQueue,n===null?o.updateQueue=new Set([l]):n.add(l),Yu(t,l,u)),!1;case 22:return o.flags|=65536,l===Zd?o.flags|=16384:(n=o.updateQueue,n===null?(n={transitions:null,markerInstances:null,retryQueue:new Set([l])},o.updateQueue=n):(o=n.retryQueue,o===null?n.retryQueue=new Set([l]):o.add(l)),Yu(t,l,u)),!1}throw Error(s(435,o.tag))}return Yu(t,l,u),Uu(),!1}if(Pe)return n=sa.current,n!==null?((n.flags&65536)===0&&(n.flags|=256),n.flags|=65536,n.lanes=u,l!==_d&&(t=Error(s(422),{cause:l}),io(na(t,o)))):(l!==_d&&(n=Error(s(423),{cause:l}),io(na(n,o))),t=t.current.alternate,t.flags|=65536,u&=-u,t.lanes|=u,l=na(l,o),u=wu(t.stateNode,l,u),Jd(t,u),Qe!==4&&(Qe=2)),!1;var m=Error(s(520),{cause:l});if(m=na(m,o),To===null?To=[m]:To.push(m),Qe!==4&&(Qe=2),n===null)return!0;l=na(l,o),o=n;do{switch(o.tag){case 3:return o.flags|=65536,t=u&-u,o.lanes|=t,t=wu(o.stateNode,l,t),Jd(o,t),!1;case 1:if(n=o.type,m=o.stateNode,(o.flags&128)===0&&(typeof n.getDerivedStateFromError=="function"||m!==null&&typeof m.componentDidCatch=="function"&&(An===null||!An.has(m))))return o.flags|=65536,u&=-u,o.lanes|=u,u=Hy(u),By(u,t,o,l),Jd(o,u),!1}o=o.return}while(o!==null);return!1}var qy=Error(s(461)),ht=!1;function gt(t,n,o,l){n.child=t===null?Dy(n,null,o,l):ei(n,t.child,o,l)}function Wy(t,n,o,l,u){o=o.render;var m=n.ref;if("ref"in l){var v={};for(var S in l)S!=="ref"&&(v[S]=l[S])}else v=l;return dr(n),l=ru(t,n,o,v,m,u),S=iu(),t!==null&&!ht?(ou(t,n,u),Za(t,n,u)):(Pe&&S&&qd(n),n.flags|=1,gt(t,n,l,u),n.child)}function _y(t,n,o,l,u){if(t===null){var m=o.type;return typeof m=="function"&&!zd(m)&&m.defaultProps===void 0&&o.compare===null?(n.tag=15,n.type=m,Gy(t,n,m,l,u)):(t=Ws(o.type,null,l,n,n.mode,u),t.ref=n.ref,t.return=n,n.child=t)}if(m=t.child,!Ru(t,u)){var v=m.memoizedProps;if(o=o.compare,o=o!==null?o:to,o(v,l)&&t.ref===n.ref)return Za(t,n,u)}return n.flags|=1,t=_a(m,l),t.ref=n.ref,t.return=n,n.child=t}function Gy(t,n,o,l,u){if(t!==null){var m=t.memoizedProps;if(to(m,l)&&t.ref===n.ref)if(ht=!1,n.pendingProps=l=m,Ru(t,u))(t.flags&131072)!==0&&(ht=!0);else return n.lanes=t.lanes,Za(t,n,u)}return Cu(t,n,o,l,u)}function Uy(t,n,o){var l=n.pendingProps,u=l.children,m=t!==null?t.memoizedState:null;if(l.mode==="hidden"){if((n.flags&128)!==0){if(l=m!==null?m.baseLanes|o:o,t!==null){for(u=n.child=t.child,m=0;u!==null;)m=m|u.lanes|u.childLanes,u=u.sibling;n.childLanes=m&~l}else n.childLanes=0,n.child=null;return Iy(t,n,l,o)}if((o&536870912)!==0)n.memoizedState={baseLanes:0,cachePool:null},t!==null&&Ys(n,m!==null?m.cachePool:null),m!==null?Gg(n,m):tu(),My(n);else return n.lanes=n.childLanes=536870912,Iy(t,n,m!==null?m.baseLanes|o:o,o)}else m!==null?(Ys(n,m.cachePool),Gg(n,m),bn(),n.memoizedState=null):(t!==null&&Ys(n,null),tu(),bn());return gt(t,n,u,o),n.child}function Iy(t,n,o,l){var u=Kd();return u=u===null?null:{parent:lt._currentValue,pool:u},n.memoizedState={baseLanes:o,cachePool:u},t!==null&&Ys(n,null),tu(),My(n),t!==null&&oo(t,n,l,!0),null}function dl(t,n){var o=n.ref;if(o===null)t!==null&&t.ref!==null&&(n.flags|=4194816);else{if(typeof o!="function"&&typeof o!="object")throw Error(s(284));(t===null||t.ref!==o)&&(n.flags|=4194816)}}function Cu(t,n,o,l,u){return dr(n),o=ru(t,n,o,l,void 0,u),l=iu(),t!==null&&!ht?(ou(t,n,u),Za(t,n,u)):(Pe&&l&&qd(n),n.flags|=1,gt(t,n,o,u),n.child)}function Yy(t,n,o,l,u,m){return dr(n),n.updateQueue=null,o=Ig(n,l,o,u),Ug(t),l=iu(),t!==null&&!ht?(ou(t,n,m),Za(t,n,m)):(Pe&&l&&qd(n),n.flags|=1,gt(t,n,o,m),n.child)}function $y(t,n,o,l,u){if(dr(n),n.stateNode===null){var m=Gr,v=o.contextType;typeof v=="object"&&v!==null&&(m=St(v)),m=new o(l,m),n.memoizedState=m.state!==null&&m.state!==void 0?m.state:null,m.updater=bu,n.stateNode=m,m._reactInternals=n,m=n.stateNode,m.props=l,m.state=n.memoizedState,m.refs={},Xd(n),v=o.contextType,m.context=typeof v=="object"&&v!==null?St(v):Gr,m.state=n.memoizedState,v=o.getDerivedStateFromProps,typeof v=="function"&&(vu(n,o,v,l),m.state=n.memoizedState),typeof o.getDerivedStateFromProps=="function"||typeof m.getSnapshotBeforeUpdate=="function"||typeof m.UNSAFE_componentWillMount!="function"&&typeof m.componentWillMount!="function"||(v=m.state,typeof m.componentWillMount=="function"&&m.componentWillMount(),typeof m.UNSAFE_componentWillMount=="function"&&m.UNSAFE_componentWillMount(),v!==m.state&&bu.enqueueReplaceState(m,m.state,null),mo(n,l,m,u),ho(),m.state=n.memoizedState),typeof m.componentDidMount=="function"&&(n.flags|=4194308),l=!0}else if(t===null){m=n.stateNode;var S=n.memoizedProps,D=hr(o,S);m.props=D;var z=m.context,Y=o.contextType;v=Gr,typeof Y=="object"&&Y!==null&&(v=St(Y));var K=o.getDerivedStateFromProps;Y=typeof K=="function"||typeof m.getSnapshotBeforeUpdate=="function",S=n.pendingProps!==S,Y||typeof m.UNSAFE_componentWillReceiveProps!="function"&&typeof m.componentWillReceiveProps!="function"||(S||z!==v)&&Py(n,m,l,v),pn=!1;var q=n.memoizedState;m.state=q,mo(n,l,m,u),ho(),z=n.memoizedState,S||q!==z||pn?(typeof K=="function"&&(vu(n,o,K,l),z=n.memoizedState),(D=pn||Oy(n,o,D,l,q,z,v))?(Y||typeof m.UNSAFE_componentWillMount!="function"&&typeof m.componentWillMount!="function"||(typeof m.componentWillMount=="function"&&m.componentWillMount(),typeof m.UNSAFE_componentWillMount=="function"&&m.UNSAFE_componentWillMount()),typeof m.componentDidMount=="function"&&(n.flags|=4194308)):(typeof m.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=l,n.memoizedState=z),m.props=l,m.state=z,m.context=v,l=D):(typeof m.componentDidMount=="function"&&(n.flags|=4194308),l=!1)}else{m=n.stateNode,Qd(t,n),v=n.memoizedProps,Y=hr(o,v),m.props=Y,K=n.pendingProps,q=m.context,z=o.contextType,D=Gr,typeof z=="object"&&z!==null&&(D=St(z)),S=o.getDerivedStateFromProps,(z=typeof S=="function"||typeof m.getSnapshotBeforeUpdate=="function")||typeof m.UNSAFE_componentWillReceiveProps!="function"&&typeof m.componentWillReceiveProps!="function"||(v!==K||q!==D)&&Py(n,m,l,D),pn=!1,q=n.memoizedState,m.state=q,mo(n,l,m,u),ho();var _=n.memoizedState;v!==K||q!==_||pn||t!==null&&t.dependencies!==null&&Us(t.dependencies)?(typeof S=="function"&&(vu(n,o,S,l),_=n.memoizedState),(Y=pn||Oy(n,o,Y,l,q,_,D)||t!==null&&t.dependencies!==null&&Us(t.dependencies))?(z||typeof m.UNSAFE_componentWillUpdate!="function"&&typeof m.componentWillUpdate!="function"||(typeof m.componentWillUpdate=="function"&&m.componentWillUpdate(l,_,D),typeof m.UNSAFE_componentWillUpdate=="function"&&m.UNSAFE_componentWillUpdate(l,_,D)),typeof m.componentDidUpdate=="function"&&(n.flags|=4),typeof m.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof m.componentDidUpdate!="function"||v===t.memoizedProps&&q===t.memoizedState||(n.flags|=4),typeof m.getSnapshotBeforeUpdate!="function"||v===t.memoizedProps&&q===t.memoizedState||(n.flags|=1024),n.memoizedProps=l,n.memoizedState=_),m.props=l,m.state=_,m.context=D,l=Y):(typeof m.componentDidUpdate!="function"||v===t.memoizedProps&&q===t.memoizedState||(n.flags|=4),typeof m.getSnapshotBeforeUpdate!="function"||v===t.memoizedProps&&q===t.memoizedState||(n.flags|=1024),l=!1)}return m=l,dl(t,n),l=(n.flags&128)!==0,m||l?(m=n.stateNode,o=l&&typeof o.getDerivedStateFromError!="function"?null:m.render(),n.flags|=1,t!==null&&l?(n.child=ei(n,t.child,null,u),n.child=ei(n,null,o,u)):gt(t,n,o,u),n.memoizedState=m.state,t=n.child):t=Za(t,n,u),t}function Ky(t,n,o,l){return ro(),n.flags|=256,gt(t,n,o,l),n.child}var Su={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ju(t){return{baseLanes:t,cachePool:Lg()}}function Nu(t,n,o){return t=t!==null?t.childLanes&~o:0,n&&(t|=la),t}function Zy(t,n,o){var l=n.pendingProps,u=!1,m=(n.flags&128)!==0,v;if((v=m)||(v=t!==null&&t.memoizedState===null?!1:(ct.current&2)!==0),v&&(u=!0,n.flags&=-129),v=(n.flags&32)!==0,n.flags&=-33,t===null){if(Pe){if(u?vn(n):bn(),Pe){var S=Xe,D;if(D=S){e:{for(D=S,S=Ea;D.nodeType!==8;){if(!S){S=null;break e}if(D=ga(D.nextSibling),D===null){S=null;break e}}S=D}S!==null?(n.memoizedState={dehydrated:S,treeContext:ir!==null?{id:Ga,overflow:Ua}:null,retryLane:536870912,hydrationErrors:null},D=It(18,null,null,0),D.stateNode=S,D.return=n,n.child=D,Et=n,Xe=null,D=!0):D=!1}D||lr(n)}if(S=n.memoizedState,S!==null&&(S=S.dehydrated,S!==null))return cf(S)?n.lanes=32:n.lanes=536870912,null;Ka(n)}return S=l.children,l=l.fallback,u?(bn(),u=n.mode,S=ul({mode:"hidden",children:S},u),l=rr(l,u,o,null),S.return=n,l.return=n,S.sibling=l,n.child=S,u=n.child,u.memoizedState=ju(o),u.childLanes=Nu(t,v,o),n.memoizedState=Su,l):(vn(n),Au(n,S))}if(D=t.memoizedState,D!==null&&(S=D.dehydrated,S!==null)){if(m)n.flags&256?(vn(n),n.flags&=-257,n=Tu(t,n,o)):n.memoizedState!==null?(bn(),n.child=t.child,n.flags|=128,n=null):(bn(),u=l.fallback,S=n.mode,l=ul({mode:"visible",children:l.children},S),u=rr(u,S,o,null),u.flags|=2,l.return=n,u.return=n,l.sibling=u,n.child=l,ei(n,t.child,null,o),l=n.child,l.memoizedState=ju(o),l.childLanes=Nu(t,v,o),n.memoizedState=Su,n=u);else if(vn(n),cf(S)){if(v=S.nextSibling&&S.nextSibling.dataset,v)var z=v.dgst;v=z,l=Error(s(419)),l.stack="",l.digest=v,io({value:l,source:null,stack:null}),n=Tu(t,n,o)}else if(ht||oo(t,n,o,!1),v=(o&t.childLanes)!==0,ht||v){if(v=Ge,v!==null&&(l=o&-o,l=(l&42)!==0?1:cd(l),l=(l&(v.suspendedLanes|o))!==0?0:l,l!==0&&l!==D.retryLane))throw D.retryLane=l,_r(t,l),Xt(v,t,l),qy;S.data==="$?"||Uu(),n=Tu(t,n,o)}else S.data==="$?"?(n.flags|=192,n.child=t.child,n=null):(t=D.treeContext,Xe=ga(S.nextSibling),Et=n,Pe=!0,sr=null,Ea=!1,t!==null&&(ia[oa++]=Ga,ia[oa++]=Ua,ia[oa++]=ir,Ga=t.id,Ua=t.overflow,ir=n),n=Au(n,l.children),n.flags|=4096);return n}return u?(bn(),u=l.fallback,S=n.mode,D=t.child,z=D.sibling,l=_a(D,{mode:"hidden",children:l.children}),l.subtreeFlags=D.subtreeFlags&65011712,z!==null?u=_a(z,u):(u=rr(u,S,o,null),u.flags|=2),u.return=n,l.return=n,l.sibling=u,n.child=l,l=u,u=n.child,S=t.child.memoizedState,S===null?S=ju(o):(D=S.cachePool,D!==null?(z=lt._currentValue,D=D.parent!==z?{parent:z,pool:z}:D):D=Lg(),S={baseLanes:S.baseLanes|o,cachePool:D}),u.memoizedState=S,u.childLanes=Nu(t,v,o),n.memoizedState=Su,l):(vn(n),o=t.child,t=o.sibling,o=_a(o,{mode:"visible",children:l.children}),o.return=n,o.sibling=null,t!==null&&(v=n.deletions,v===null?(n.deletions=[t],n.flags|=16):v.push(t)),n.child=o,n.memoizedState=null,o)}function Au(t,n){return n=ul({mode:"visible",children:n},t.mode),n.return=t,t.child=n}function ul(t,n){return t=It(22,t,null,n),t.lanes=0,t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},t}function Tu(t,n,o){return ei(n,t.child,null,o),t=Au(n,n.pendingProps.children),t.flags|=2,n.memoizedState=null,t}function Xy(t,n,o){t.lanes|=n;var l=t.alternate;l!==null&&(l.lanes|=n),Ud(t.return,n,o)}function Eu(t,n,o,l,u){var m=t.memoizedState;m===null?t.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:l,tail:o,tailMode:u}:(m.isBackwards=n,m.rendering=null,m.renderingStartTime=0,m.last=l,m.tail=o,m.tailMode=u)}function Qy(t,n,o){var l=n.pendingProps,u=l.revealOrder,m=l.tail;if(gt(t,n,l.children,o),l=ct.current,(l&2)!==0)l=l&1|2,n.flags|=128;else{if(t!==null&&(t.flags&128)!==0)e:for(t=n.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&Xy(t,o,n);else if(t.tag===19)Xy(t,o,n);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===n)break e;for(;t.sibling===null;){if(t.return===null||t.return===n)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}l&=1}switch(J(ct,l),u){case"forwards":for(o=n.child,u=null;o!==null;)t=o.alternate,t!==null&&sl(t)===null&&(u=o),o=o.sibling;o=u,o===null?(u=n.child,n.child=null):(u=o.sibling,o.sibling=null),Eu(n,!1,u,o,m);break;case"backwards":for(o=null,u=n.child,n.child=null;u!==null;){if(t=u.alternate,t!==null&&sl(t)===null){n.child=u;break}t=u.sibling,u.sibling=o,o=u,u=t}Eu(n,!0,o,null,m);break;case"together":Eu(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function Za(t,n,o){if(t!==null&&(n.dependencies=t.dependencies),Nn|=n.lanes,(o&n.childLanes)===0)if(t!==null){if(oo(t,n,o,!1),(o&n.childLanes)===0)return null}else return null;if(t!==null&&n.child!==t.child)throw Error(s(153));if(n.child!==null){for(t=n.child,o=_a(t,t.pendingProps),n.child=o,o.return=n;t.sibling!==null;)t=t.sibling,o=o.sibling=_a(t,t.pendingProps),o.return=n;o.sibling=null}return n.child}function Ru(t,n){return(t.lanes&n)!==0?!0:(t=t.dependencies,!!(t!==null&&Us(t)))}function e2(t,n,o){switch(n.tag){case 3:ge(n,n.stateNode.containerInfo),mn(n,lt,t.memoizedState.cache),ro();break;case 27:case 5:Me(n);break;case 4:ge(n,n.stateNode.containerInfo);break;case 10:mn(n,n.type,n.memoizedProps.value);break;case 13:var l=n.memoizedState;if(l!==null)return l.dehydrated!==null?(vn(n),n.flags|=128,null):(o&n.child.childLanes)!==0?Zy(t,n,o):(vn(n),t=Za(t,n,o),t!==null?t.sibling:null);vn(n);break;case 19:var u=(t.flags&128)!==0;if(l=(o&n.childLanes)!==0,l||(oo(t,n,o,!1),l=(o&n.childLanes)!==0),u){if(l)return Qy(t,n,o);n.flags|=128}if(u=n.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),J(ct,ct.current),l)break;return null;case 22:case 23:return n.lanes=0,Uy(t,n,o);case 24:mn(n,lt,t.memoizedState.cache)}return Za(t,n,o)}function Jy(t,n,o){if(t!==null)if(t.memoizedProps!==n.pendingProps)ht=!0;else{if(!Ru(t,o)&&(n.flags&128)===0)return ht=!1,e2(t,n,o);ht=(t.flags&131072)!==0}else ht=!1,Pe&&(n.flags&1048576)!==0&&Rg(n,Gs,n.index);switch(n.lanes=0,n.tag){case 16:e:{t=n.pendingProps;var l=n.elementType,u=l._init;if(l=u(l._payload),n.type=l,typeof l=="function")zd(l)?(t=hr(l,t),n.tag=1,n=$y(null,n,l,t,o)):(n.tag=0,n=Cu(null,n,l,t,o));else{if(l!=null){if(u=l.$$typeof,u===O){n.tag=11,n=Wy(null,n,l,t,o);break e}else if(u===I){n.tag=14,n=_y(null,n,l,t,o);break e}}throw n=te(l)||l,Error(s(306,n,""))}}return n;case 0:return Cu(t,n,n.type,n.pendingProps,o);case 1:return l=n.type,u=hr(l,n.pendingProps),$y(t,n,l,u,o);case 3:e:{if(ge(n,n.stateNode.containerInfo),t===null)throw Error(s(387));l=n.pendingProps;var m=n.memoizedState;u=m.element,Qd(t,n),mo(n,l,null,o);var v=n.memoizedState;if(l=v.cache,mn(n,lt,l),l!==m.cache&&Id(n,[lt],o,!0),ho(),l=v.element,m.isDehydrated)if(m={element:l,isDehydrated:!1,cache:v.cache},n.updateQueue.baseState=m,n.memoizedState=m,n.flags&256){n=Ky(t,n,l,o);break e}else if(l!==u){u=na(Error(s(424)),n),io(u),n=Ky(t,n,l,o);break e}else for(t=n.stateNode.containerInfo,t.nodeType===9?t=t.body:t=t.nodeName==="HTML"?t.ownerDocument.body:t,Xe=ga(t.firstChild),Et=n,Pe=!0,sr=null,Ea=!0,o=Dy(n,null,l,o),n.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling;else{if(ro(),l===u){n=Za(t,n,o);break e}gt(t,n,l,o)}n=n.child}return n;case 26:return dl(t,n),t===null?(o=nv(n.type,null,n.pendingProps,null))?n.memoizedState=o:Pe||(o=n.type,t=n.pendingProps,l=Nl(ne.current).createElement(o),l[Ct]=n,l[Ft]=t,xt(l,o,t),ft(l),n.stateNode=l):n.memoizedState=nv(n.type,t.memoizedProps,n.pendingProps,t.memoizedState),null;case 27:return Me(n),t===null&&Pe&&(l=n.stateNode=ev(n.type,n.pendingProps,ne.current),Et=n,Ea=!0,u=Xe,Rn(n.type)?(df=u,Xe=ga(l.firstChild)):Xe=u),gt(t,n,n.pendingProps.children,o),dl(t,n),t===null&&(n.flags|=4194304),n.child;case 5:return t===null&&Pe&&((u=l=Xe)&&(l=E2(l,n.type,n.pendingProps,Ea),l!==null?(n.stateNode=l,Et=n,Xe=ga(l.firstChild),Ea=!1,u=!0):u=!1),u||lr(n)),Me(n),u=n.type,m=n.pendingProps,v=t!==null?t.memoizedProps:null,l=m.children,of(u,m)?l=null:v!==null&&of(u,v)&&(n.flags|=32),n.memoizedState!==null&&(u=ru(t,n,IA,null,null,o),Lo._currentValue=u),dl(t,n),gt(t,n,l,o),n.child;case 6:return t===null&&Pe&&((t=o=Xe)&&(o=R2(o,n.pendingProps,Ea),o!==null?(n.stateNode=o,Et=n,Xe=null,t=!0):t=!1),t||lr(n)),null;case 13:return Zy(t,n,o);case 4:return ge(n,n.stateNode.containerInfo),l=n.pendingProps,t===null?n.child=ei(n,null,l,o):gt(t,n,l,o),n.child;case 11:return Wy(t,n,n.type,n.pendingProps,o);case 7:return gt(t,n,n.pendingProps,o),n.child;case 8:return gt(t,n,n.pendingProps.children,o),n.child;case 12:return gt(t,n,n.pendingProps.children,o),n.child;case 10:return l=n.pendingProps,mn(n,n.type,l.value),gt(t,n,l.children,o),n.child;case 9:return u=n.type._context,l=n.pendingProps.children,dr(n),u=St(u),l=l(u),n.flags|=1,gt(t,n,l,o),n.child;case 14:return _y(t,n,n.type,n.pendingProps,o);case 15:return Gy(t,n,n.type,n.pendingProps,o);case 19:return Qy(t,n,o);case 31:return l=n.pendingProps,o=n.mode,l={mode:l.mode,children:l.children},t===null?(o=ul(l,o),o.ref=n.ref,n.child=o,o.return=n,n=o):(o=_a(t.child,l),o.ref=n.ref,n.child=o,o.return=n,n=o),n;case 22:return Uy(t,n,o);case 24:return dr(n),l=St(lt),t===null?(u=Kd(),u===null&&(u=Ge,m=Yd(),u.pooledCache=m,m.refCount++,m!==null&&(u.pooledCacheLanes|=o),u=m),n.memoizedState={parent:l,cache:u},Xd(n),mn(n,lt,u)):((t.lanes&o)!==0&&(Qd(t,n),mo(n,null,null,o),ho()),u=t.memoizedState,m=n.memoizedState,u.parent!==l?(u={parent:l,cache:l},n.memoizedState=u,n.lanes===0&&(n.memoizedState=n.updateQueue.baseState=u),mn(n,lt,l)):(l=m.cache,mn(n,lt,l),l!==u.cache&&Id(n,[lt],o,!0))),gt(t,n,n.pendingProps.children,o),n.child;case 29:throw n.pendingProps}throw Error(s(156,n.tag))}function Xa(t){t.flags|=4}function ex(t,n){if(n.type!=="stylesheet"||(n.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!lv(n)){if(n=sa.current,n!==null&&((De&4194048)===De?Ra!==null:(De&62914560)!==De&&(De&536870912)===0||n!==Ra))throw uo=Zd,Fg;t.flags|=8192}}function fl(t,n){n!==null&&(t.flags|=4),t.flags&16384&&(n=t.tag!==22?Mp():536870912,t.lanes|=n,ri|=n)}function wo(t,n){if(!Pe)switch(t.tailMode){case"hidden":n=t.tail;for(var o=null;n!==null;)n.alternate!==null&&(o=n),n=n.sibling;o===null?t.tail=null:o.sibling=null;break;case"collapsed":o=t.tail;for(var l=null;o!==null;)o.alternate!==null&&(l=o),o=o.sibling;l===null?n||t.tail===null?t.tail=null:t.tail.sibling=null:l.sibling=null}}function Ke(t){var n=t.alternate!==null&&t.alternate.child===t.child,o=0,l=0;if(n)for(var u=t.child;u!==null;)o|=u.lanes|u.childLanes,l|=u.subtreeFlags&65011712,l|=u.flags&65011712,u.return=t,u=u.sibling;else for(u=t.child;u!==null;)o|=u.lanes|u.childLanes,l|=u.subtreeFlags,l|=u.flags,u.return=t,u=u.sibling;return t.subtreeFlags|=l,t.childLanes=o,n}function t2(t,n,o){var l=n.pendingProps;switch(Wd(n),n.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ke(n),null;case 1:return Ke(n),null;case 3:return o=n.stateNode,l=null,t!==null&&(l=t.memoizedState.cache),n.memoizedState.cache!==l&&(n.flags|=2048),Ya(lt),Ce(),o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(t===null||t.child===null)&&(no(n)?Xa(n):t===null||t.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,Mg())),Ke(n),null;case 26:return o=n.memoizedState,t===null?(Xa(n),o!==null?(Ke(n),ex(n,o)):(Ke(n),n.flags&=-16777217)):o?o!==t.memoizedState?(Xa(n),Ke(n),ex(n,o)):(Ke(n),n.flags&=-16777217):(t.memoizedProps!==l&&Xa(n),Ke(n),n.flags&=-16777217),null;case 27:ke(n),o=ne.current;var u=n.type;if(t!==null&&n.stateNode!=null)t.memoizedProps!==l&&Xa(n);else{if(!l){if(n.stateNode===null)throw Error(s(166));return Ke(n),null}t=re.current,no(n)?kg(n):(t=ev(u,l,o),n.stateNode=t,Xa(n))}return Ke(n),null;case 5:if(ke(n),o=n.type,t!==null&&n.stateNode!=null)t.memoizedProps!==l&&Xa(n);else{if(!l){if(n.stateNode===null)throw Error(s(166));return Ke(n),null}if(t=re.current,no(n))kg(n);else{switch(u=Nl(ne.current),t){case 1:t=u.createElementNS("http://www.w3.org/2000/svg",o);break;case 2:t=u.createElementNS("http://www.w3.org/1998/Math/MathML",o);break;default:switch(o){case"svg":t=u.createElementNS("http://www.w3.org/2000/svg",o);break;case"math":t=u.createElementNS("http://www.w3.org/1998/Math/MathML",o);break;case"script":t=u.createElement("div"),t.innerHTML="<script><\/script>",t=t.removeChild(t.firstChild);break;case"select":t=typeof l.is=="string"?u.createElement("select",{is:l.is}):u.createElement("select"),l.multiple?t.multiple=!0:l.size&&(t.size=l.size);break;default:t=typeof l.is=="string"?u.createElement(o,{is:l.is}):u.createElement(o)}}t[Ct]=n,t[Ft]=l;e:for(u=n.child;u!==null;){if(u.tag===5||u.tag===6)t.appendChild(u.stateNode);else if(u.tag!==4&&u.tag!==27&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===n)break e;for(;u.sibling===null;){if(u.return===null||u.return===n)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}n.stateNode=t;e:switch(xt(t,o,l),o){case"button":case"input":case"select":case"textarea":t=!!l.autoFocus;break e;case"img":t=!0;break e;default:t=!1}t&&Xa(n)}}return Ke(n),n.flags&=-16777217,null;case 6:if(t&&n.stateNode!=null)t.memoizedProps!==l&&Xa(n);else{if(typeof l!="string"&&n.stateNode===null)throw Error(s(166));if(t=ne.current,no(n)){if(t=n.stateNode,o=n.memoizedProps,l=null,u=Et,u!==null)switch(u.tag){case 27:case 5:l=u.memoizedProps}t[Ct]=n,t=!!(t.nodeValue===o||l!==null&&l.suppressHydrationWarning===!0||Yx(t.nodeValue,o)),t||lr(n)}else t=Nl(t).createTextNode(l),t[Ct]=n,n.stateNode=t}return Ke(n),null;case 13:if(l=n.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(u=no(n),l!==null&&l.dehydrated!==null){if(t===null){if(!u)throw Error(s(318));if(u=n.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(s(317));u[Ct]=n}else ro(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;Ke(n),u=!1}else u=Mg(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=u),u=!0;if(!u)return n.flags&256?(Ka(n),n):(Ka(n),null)}if(Ka(n),(n.flags&128)!==0)return n.lanes=o,n;if(o=l!==null,t=t!==null&&t.memoizedState!==null,o){l=n.child,u=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(u=l.alternate.memoizedState.cachePool.pool);var m=null;l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(m=l.memoizedState.cachePool.pool),m!==u&&(l.flags|=2048)}return o!==t&&o&&(n.child.flags|=8192),fl(n,n.updateQueue),Ke(n),null;case 4:return Ce(),t===null&&ef(n.stateNode.containerInfo),Ke(n),null;case 10:return Ya(n.type),Ke(n),null;case 19:if(ee(ct),u=n.memoizedState,u===null)return Ke(n),null;if(l=(n.flags&128)!==0,m=u.rendering,m===null)if(l)wo(u,!1);else{if(Qe!==0||t!==null&&(t.flags&128)!==0)for(t=n.child;t!==null;){if(m=sl(t),m!==null){for(n.flags|=128,wo(u,!1),t=m.updateQueue,n.updateQueue=t,fl(n,t),n.subtreeFlags=0,t=o,o=n.child;o!==null;)Eg(o,t),o=o.sibling;return J(ct,ct.current&1|2),n.child}t=t.sibling}u.tail!==null&&Lt()>pl&&(n.flags|=128,l=!0,wo(u,!1),n.lanes=4194304)}else{if(!l)if(t=sl(m),t!==null){if(n.flags|=128,l=!0,t=t.updateQueue,n.updateQueue=t,fl(n,t),wo(u,!0),u.tail===null&&u.tailMode==="hidden"&&!m.alternate&&!Pe)return Ke(n),null}else 2*Lt()-u.renderingStartTime>pl&&o!==536870912&&(n.flags|=128,l=!0,wo(u,!1),n.lanes=4194304);u.isBackwards?(m.sibling=n.child,n.child=m):(t=u.last,t!==null?t.sibling=m:n.child=m,u.last=m)}return u.tail!==null?(n=u.tail,u.rendering=n,u.tail=n.sibling,u.renderingStartTime=Lt(),n.sibling=null,t=ct.current,J(ct,l?t&1|2:t&1),n):(Ke(n),null);case 22:case 23:return Ka(n),au(),l=n.memoizedState!==null,t!==null?t.memoizedState!==null!==l&&(n.flags|=8192):l&&(n.flags|=8192),l?(o&536870912)!==0&&(n.flags&128)===0&&(Ke(n),n.subtreeFlags&6&&(n.flags|=8192)):Ke(n),o=n.updateQueue,o!==null&&fl(n,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),l=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(l=n.memoizedState.cachePool.pool),l!==o&&(n.flags|=2048),t!==null&&ee(ur),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),n.memoizedState.cache!==o&&(n.flags|=2048),Ya(lt),Ke(n),null;case 25:return null;case 30:return null}throw Error(s(156,n.tag))}function a2(t,n){switch(Wd(n),n.tag){case 1:return t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 3:return Ya(lt),Ce(),t=n.flags,(t&65536)!==0&&(t&128)===0?(n.flags=t&-65537|128,n):null;case 26:case 27:case 5:return ke(n),null;case 13:if(Ka(n),t=n.memoizedState,t!==null&&t.dehydrated!==null){if(n.alternate===null)throw Error(s(340));ro()}return t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 19:return ee(ct),null;case 4:return Ce(),null;case 10:return Ya(n.type),null;case 22:case 23:return Ka(n),au(),t!==null&&ee(ur),t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 24:return Ya(lt),null;case 25:return null;default:return null}}function tx(t,n){switch(Wd(n),n.tag){case 3:Ya(lt),Ce();break;case 26:case 27:case 5:ke(n);break;case 4:Ce();break;case 13:Ka(n);break;case 19:ee(ct);break;case 10:Ya(n.type);break;case 22:case 23:Ka(n),au(),t!==null&&ee(ur);break;case 24:Ya(lt)}}function Co(t,n){try{var o=n.updateQueue,l=o!==null?o.lastEffect:null;if(l!==null){var u=l.next;o=u;do{if((o.tag&t)===t){l=void 0;var m=o.create,v=o.inst;l=m(),v.destroy=l}o=o.next}while(o!==u)}}catch(S){_e(n,n.return,S)}}function wn(t,n,o){try{var l=n.updateQueue,u=l!==null?l.lastEffect:null;if(u!==null){var m=u.next;l=m;do{if((l.tag&t)===t){var v=l.inst,S=v.destroy;if(S!==void 0){v.destroy=void 0,u=n;var D=o,z=S;try{z()}catch(Y){_e(u,D,Y)}}}l=l.next}while(l!==m)}}catch(Y){_e(n,n.return,Y)}}function ax(t){var n=t.updateQueue;if(n!==null){var o=t.stateNode;try{_g(n,o)}catch(l){_e(t,t.return,l)}}}function nx(t,n,o){o.props=hr(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(l){_e(t,n,l)}}function So(t,n){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var l=t.stateNode;break;case 30:l=t.stateNode;break;default:l=t.stateNode}typeof o=="function"?t.refCleanup=o(l):o.current=l}}catch(u){_e(t,n,u)}}function ka(t,n){var o=t.ref,l=t.refCleanup;if(o!==null)if(typeof l=="function")try{l()}catch(u){_e(t,n,u)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(u){_e(t,n,u)}else o.current=null}function rx(t){var n=t.type,o=t.memoizedProps,l=t.stateNode;try{e:switch(n){case"button":case"input":case"select":case"textarea":o.autoFocus&&l.focus();break e;case"img":o.src?l.src=o.src:o.srcSet&&(l.srcset=o.srcSet)}}catch(u){_e(t,t.return,u)}}function ku(t,n,o){try{var l=t.stateNode;S2(l,t.type,o,n),l[Ft]=n}catch(u){_e(t,t.return,u)}}function ix(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Rn(t.type)||t.tag===4}function Du(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||ix(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Rn(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Mu(t,n,o){var l=t.tag;if(l===5||l===6)t=t.stateNode,n?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,n):(n=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,n.appendChild(t),o=o._reactRootContainer,o!=null||n.onclick!==null||(n.onclick=jl));else if(l!==4&&(l===27&&Rn(t.type)&&(o=t.stateNode,n=null),t=t.child,t!==null))for(Mu(t,n,o),t=t.sibling;t!==null;)Mu(t,n,o),t=t.sibling}function hl(t,n,o){var l=t.tag;if(l===5||l===6)t=t.stateNode,n?o.insertBefore(t,n):o.appendChild(t);else if(l!==4&&(l===27&&Rn(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(hl(t,n,o),t=t.sibling;t!==null;)hl(t,n,o),t=t.sibling}function ox(t){var n=t.stateNode,o=t.memoizedProps;try{for(var l=t.type,u=n.attributes;u.length;)n.removeAttributeNode(u[0]);xt(n,l,o),n[Ct]=t,n[Ft]=o}catch(m){_e(t,t.return,m)}}var Qa=!1,at=!1,Ou=!1,sx=typeof WeakSet=="function"?WeakSet:Set,mt=null;function n2(t,n){if(t=t.containerInfo,nf=Dl,t=xg(t),Dd(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var l=o.getSelection&&o.getSelection();if(l&&l.rangeCount!==0){o=l.anchorNode;var u=l.anchorOffset,m=l.focusNode;l=l.focusOffset;try{o.nodeType,m.nodeType}catch{o=null;break e}var v=0,S=-1,D=-1,z=0,Y=0,K=t,q=null;t:for(;;){for(var _;K!==o||u!==0&&K.nodeType!==3||(S=v+u),K!==m||l!==0&&K.nodeType!==3||(D=v+l),K.nodeType===3&&(v+=K.nodeValue.length),(_=K.firstChild)!==null;)q=K,K=_;for(;;){if(K===t)break t;if(q===o&&++z===u&&(S=v),q===m&&++Y===l&&(D=v),(_=K.nextSibling)!==null)break;K=q,q=K.parentNode}K=_}o=S===-1||D===-1?null:{start:S,end:D}}else o=null}o=o||{start:0,end:0}}else o=null;for(rf={focusedElem:t,selectionRange:o},Dl=!1,mt=n;mt!==null;)if(n=mt,t=n.child,(n.subtreeFlags&1024)!==0&&t!==null)t.return=n,mt=t;else for(;mt!==null;){switch(n=mt,m=n.alternate,t=n.flags,n.tag){case 0:break;case 11:case 15:break;case 1:if((t&1024)!==0&&m!==null){t=void 0,o=n,u=m.memoizedProps,m=m.memoizedState,l=o.stateNode;try{var ve=hr(o.type,u,o.elementType===o.type);t=l.getSnapshotBeforeUpdate(ve,m),l.__reactInternalSnapshotBeforeUpdate=t}catch(pe){_e(o,o.return,pe)}}break;case 3:if((t&1024)!==0){if(t=n.stateNode.containerInfo,o=t.nodeType,o===9)lf(t);else if(o===1)switch(t.nodeName){case"HEAD":case"HTML":case"BODY":lf(t);break;default:t.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((t&1024)!==0)throw Error(s(163))}if(t=n.sibling,t!==null){t.return=n.return,mt=t;break}mt=n.return}}function lx(t,n,o){var l=o.flags;switch(o.tag){case 0:case 11:case 15:Cn(t,o),l&4&&Co(5,o);break;case 1:if(Cn(t,o),l&4)if(t=o.stateNode,n===null)try{t.componentDidMount()}catch(v){_e(o,o.return,v)}else{var u=hr(o.type,n.memoizedProps);n=n.memoizedState;try{t.componentDidUpdate(u,n,t.__reactInternalSnapshotBeforeUpdate)}catch(v){_e(o,o.return,v)}}l&64&&ax(o),l&512&&So(o,o.return);break;case 3:if(Cn(t,o),l&64&&(t=o.updateQueue,t!==null)){if(n=null,o.child!==null)switch(o.child.tag){case 27:case 5:n=o.child.stateNode;break;case 1:n=o.child.stateNode}try{_g(t,n)}catch(v){_e(o,o.return,v)}}break;case 27:n===null&&l&4&&ox(o);case 26:case 5:Cn(t,o),n===null&&l&4&&rx(o),l&512&&So(o,o.return);break;case 12:Cn(t,o);break;case 13:Cn(t,o),l&4&&ux(t,o),l&64&&(t=o.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&(o=f2.bind(null,o),k2(t,o))));break;case 22:if(l=o.memoizedState!==null||Qa,!l){n=n!==null&&n.memoizedState!==null||at,u=Qa;var m=at;Qa=l,(at=n)&&!m?Sn(t,o,(o.subtreeFlags&8772)!==0):Cn(t,o),Qa=u,at=m}break;case 30:break;default:Cn(t,o)}}function cx(t){var n=t.alternate;n!==null&&(t.alternate=null,cx(n)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(n=t.stateNode,n!==null&&fd(n)),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}var Ie=null,Bt=!1;function Ja(t,n,o){for(o=o.child;o!==null;)dx(t,n,o),o=o.sibling}function dx(t,n,o){if(_t&&typeof _t.onCommitFiberUnmount=="function")try{_t.onCommitFiberUnmount(_i,o)}catch{}switch(o.tag){case 26:at||ka(o,n),Ja(t,n,o),o.memoizedState?o.memoizedState.count--:o.stateNode&&(o=o.stateNode,o.parentNode.removeChild(o));break;case 27:at||ka(o,n);var l=Ie,u=Bt;Rn(o.type)&&(Ie=o.stateNode,Bt=!1),Ja(t,n,o),Mo(o.stateNode),Ie=l,Bt=u;break;case 5:at||ka(o,n);case 6:if(l=Ie,u=Bt,Ie=null,Ja(t,n,o),Ie=l,Bt=u,Ie!==null)if(Bt)try{(Ie.nodeType===9?Ie.body:Ie.nodeName==="HTML"?Ie.ownerDocument.body:Ie).removeChild(o.stateNode)}catch(m){_e(o,n,m)}else try{Ie.removeChild(o.stateNode)}catch(m){_e(o,n,m)}break;case 18:Ie!==null&&(Bt?(t=Ie,Qx(t.nodeType===9?t.body:t.nodeName==="HTML"?t.ownerDocument.body:t,o.stateNode),Bo(t)):Qx(Ie,o.stateNode));break;case 4:l=Ie,u=Bt,Ie=o.stateNode.containerInfo,Bt=!0,Ja(t,n,o),Ie=l,Bt=u;break;case 0:case 11:case 14:case 15:at||wn(2,o,n),at||wn(4,o,n),Ja(t,n,o);break;case 1:at||(ka(o,n),l=o.stateNode,typeof l.componentWillUnmount=="function"&&nx(o,n,l)),Ja(t,n,o);break;case 21:Ja(t,n,o);break;case 22:at=(l=at)||o.memoizedState!==null,Ja(t,n,o),at=l;break;default:Ja(t,n,o)}}function ux(t,n){if(n.memoizedState===null&&(t=n.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null))))try{Bo(t)}catch(o){_e(n,n.return,o)}}function r2(t){switch(t.tag){case 13:case 19:var n=t.stateNode;return n===null&&(n=t.stateNode=new sx),n;case 22:return t=t.stateNode,n=t._retryCache,n===null&&(n=t._retryCache=new sx),n;default:throw Error(s(435,t.tag))}}function Pu(t,n){var o=r2(t);n.forEach(function(l){var u=h2.bind(null,t,l);o.has(l)||(o.add(l),l.then(u,u))})}function Yt(t,n){var o=n.deletions;if(o!==null)for(var l=0;l<o.length;l++){var u=o[l],m=t,v=n,S=v;e:for(;S!==null;){switch(S.tag){case 27:if(Rn(S.type)){Ie=S.stateNode,Bt=!1;break e}break;case 5:Ie=S.stateNode,Bt=!1;break e;case 3:case 4:Ie=S.stateNode.containerInfo,Bt=!0;break e}S=S.return}if(Ie===null)throw Error(s(160));dx(m,v,u),Ie=null,Bt=!1,m=u.alternate,m!==null&&(m.return=null),u.return=null}if(n.subtreeFlags&13878)for(n=n.child;n!==null;)fx(n,t),n=n.sibling}var pa=null;function fx(t,n){var o=t.alternate,l=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:Yt(n,t),$t(t),l&4&&(wn(3,t,t.return),Co(3,t),wn(5,t,t.return));break;case 1:Yt(n,t),$t(t),l&512&&(at||o===null||ka(o,o.return)),l&64&&Qa&&(t=t.updateQueue,t!==null&&(l=t.callbacks,l!==null&&(o=t.shared.hiddenCallbacks,t.shared.hiddenCallbacks=o===null?l:o.concat(l))));break;case 26:var u=pa;if(Yt(n,t),$t(t),l&512&&(at||o===null||ka(o,o.return)),l&4){var m=o!==null?o.memoizedState:null;if(l=t.memoizedState,o===null)if(l===null)if(t.stateNode===null){e:{l=t.type,o=t.memoizedProps,u=u.ownerDocument||u;t:switch(l){case"title":m=u.getElementsByTagName("title")[0],(!m||m[Ii]||m[Ct]||m.namespaceURI==="http://www.w3.org/2000/svg"||m.hasAttribute("itemprop"))&&(m=u.createElement(l),u.head.insertBefore(m,u.querySelector("head > title"))),xt(m,l,o),m[Ct]=t,ft(m),l=m;break e;case"link":var v=ov("link","href",u).get(l+(o.href||""));if(v){for(var S=0;S<v.length;S++)if(m=v[S],m.getAttribute("href")===(o.href==null||o.href===""?null:o.href)&&m.getAttribute("rel")===(o.rel==null?null:o.rel)&&m.getAttribute("title")===(o.title==null?null:o.title)&&m.getAttribute("crossorigin")===(o.crossOrigin==null?null:o.crossOrigin)){v.splice(S,1);break t}}m=u.createElement(l),xt(m,l,o),u.head.appendChild(m);break;case"meta":if(v=ov("meta","content",u).get(l+(o.content||""))){for(S=0;S<v.length;S++)if(m=v[S],m.getAttribute("content")===(o.content==null?null:""+o.content)&&m.getAttribute("name")===(o.name==null?null:o.name)&&m.getAttribute("property")===(o.property==null?null:o.property)&&m.getAttribute("http-equiv")===(o.httpEquiv==null?null:o.httpEquiv)&&m.getAttribute("charset")===(o.charSet==null?null:o.charSet)){v.splice(S,1);break t}}m=u.createElement(l),xt(m,l,o),u.head.appendChild(m);break;default:throw Error(s(468,l))}m[Ct]=t,ft(m),l=m}t.stateNode=l}else sv(u,t.type,t.stateNode);else t.stateNode=iv(u,l,t.memoizedProps);else m!==l?(m===null?o.stateNode!==null&&(o=o.stateNode,o.parentNode.removeChild(o)):m.count--,l===null?sv(u,t.type,t.stateNode):iv(u,l,t.memoizedProps)):l===null&&t.stateNode!==null&&ku(t,t.memoizedProps,o.memoizedProps)}break;case 27:Yt(n,t),$t(t),l&512&&(at||o===null||ka(o,o.return)),o!==null&&l&4&&ku(t,t.memoizedProps,o.memoizedProps);break;case 5:if(Yt(n,t),$t(t),l&512&&(at||o===null||ka(o,o.return)),t.flags&32){u=t.stateNode;try{Lr(u,"")}catch(_){_e(t,t.return,_)}}l&4&&t.stateNode!=null&&(u=t.memoizedProps,ku(t,u,o!==null?o.memoizedProps:u)),l&1024&&(Ou=!0);break;case 6:if(Yt(n,t),$t(t),l&4){if(t.stateNode===null)throw Error(s(162));l=t.memoizedProps,o=t.stateNode;try{o.nodeValue=l}catch(_){_e(t,t.return,_)}}break;case 3:if(El=null,u=pa,pa=Al(n.containerInfo),Yt(n,t),pa=u,$t(t),l&4&&o!==null&&o.memoizedState.isDehydrated)try{Bo(n.containerInfo)}catch(_){_e(t,t.return,_)}Ou&&(Ou=!1,hx(t));break;case 4:l=pa,pa=Al(t.stateNode.containerInfo),Yt(n,t),$t(t),pa=l;break;case 12:Yt(n,t),$t(t);break;case 13:Yt(n,t),$t(t),t.child.flags&8192&&t.memoizedState!==null!=(o!==null&&o.memoizedState!==null)&&(Bu=Lt()),l&4&&(l=t.updateQueue,l!==null&&(t.updateQueue=null,Pu(t,l)));break;case 22:u=t.memoizedState!==null;var D=o!==null&&o.memoizedState!==null,z=Qa,Y=at;if(Qa=z||u,at=Y||D,Yt(n,t),at=Y,Qa=z,$t(t),l&8192)e:for(n=t.stateNode,n._visibility=u?n._visibility&-2:n._visibility|1,u&&(o===null||D||Qa||at||mr(t)),o=null,n=t;;){if(n.tag===5||n.tag===26){if(o===null){D=o=n;try{if(m=D.stateNode,u)v=m.style,typeof v.setProperty=="function"?v.setProperty("display","none","important"):v.display="none";else{S=D.stateNode;var K=D.memoizedProps.style,q=K!=null&&K.hasOwnProperty("display")?K.display:null;S.style.display=q==null||typeof q=="boolean"?"":(""+q).trim()}}catch(_){_e(D,D.return,_)}}}else if(n.tag===6){if(o===null){D=n;try{D.stateNode.nodeValue=u?"":D.memoizedProps}catch(_){_e(D,D.return,_)}}}else if((n.tag!==22&&n.tag!==23||n.memoizedState===null||n===t)&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break e;for(;n.sibling===null;){if(n.return===null||n.return===t)break e;o===n&&(o=null),n=n.return}o===n&&(o=null),n.sibling.return=n.return,n=n.sibling}l&4&&(l=t.updateQueue,l!==null&&(o=l.retryQueue,o!==null&&(l.retryQueue=null,Pu(t,o))));break;case 19:Yt(n,t),$t(t),l&4&&(l=t.updateQueue,l!==null&&(t.updateQueue=null,Pu(t,l)));break;case 30:break;case 21:break;default:Yt(n,t),$t(t)}}function $t(t){var n=t.flags;if(n&2){try{for(var o,l=t.return;l!==null;){if(ix(l)){o=l;break}l=l.return}if(o==null)throw Error(s(160));switch(o.tag){case 27:var u=o.stateNode,m=Du(t);hl(t,m,u);break;case 5:var v=o.stateNode;o.flags&32&&(Lr(v,""),o.flags&=-33);var S=Du(t);hl(t,S,v);break;case 3:case 4:var D=o.stateNode.containerInfo,z=Du(t);Mu(t,z,D);break;default:throw Error(s(161))}}catch(Y){_e(t,t.return,Y)}t.flags&=-3}n&4096&&(t.flags&=-4097)}function hx(t){if(t.subtreeFlags&1024)for(t=t.child;t!==null;){var n=t;hx(n),n.tag===5&&n.flags&1024&&n.stateNode.reset(),t=t.sibling}}function Cn(t,n){if(n.subtreeFlags&8772)for(n=n.child;n!==null;)lx(t,n.alternate,n),n=n.sibling}function mr(t){for(t=t.child;t!==null;){var n=t;switch(n.tag){case 0:case 11:case 14:case 15:wn(4,n,n.return),mr(n);break;case 1:ka(n,n.return);var o=n.stateNode;typeof o.componentWillUnmount=="function"&&nx(n,n.return,o),mr(n);break;case 27:Mo(n.stateNode);case 26:case 5:ka(n,n.return),mr(n);break;case 22:n.memoizedState===null&&mr(n);break;case 30:mr(n);break;default:mr(n)}t=t.sibling}}function Sn(t,n,o){for(o=o&&(n.subtreeFlags&8772)!==0,n=n.child;n!==null;){var l=n.alternate,u=t,m=n,v=m.flags;switch(m.tag){case 0:case 11:case 15:Sn(u,m,o),Co(4,m);break;case 1:if(Sn(u,m,o),l=m,u=l.stateNode,typeof u.componentDidMount=="function")try{u.componentDidMount()}catch(z){_e(l,l.return,z)}if(l=m,u=l.updateQueue,u!==null){var S=l.stateNode;try{var D=u.shared.hiddenCallbacks;if(D!==null)for(u.shared.hiddenCallbacks=null,u=0;u<D.length;u++)Wg(D[u],S)}catch(z){_e(l,l.return,z)}}o&&v&64&&ax(m),So(m,m.return);break;case 27:ox(m);case 26:case 5:Sn(u,m,o),o&&l===null&&v&4&&rx(m),So(m,m.return);break;case 12:Sn(u,m,o);break;case 13:Sn(u,m,o),o&&v&4&&ux(u,m);break;case 22:m.memoizedState===null&&Sn(u,m,o),So(m,m.return);break;case 30:break;default:Sn(u,m,o)}n=n.sibling}}function Vu(t,n){var o=null;t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),t=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(t=n.memoizedState.cachePool.pool),t!==o&&(t!=null&&t.refCount++,o!=null&&so(o))}function Lu(t,n){t=null,n.alternate!==null&&(t=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==t&&(n.refCount++,t!=null&&so(t))}function Da(t,n,o,l){if(n.subtreeFlags&10256)for(n=n.child;n!==null;)mx(t,n,o,l),n=n.sibling}function mx(t,n,o,l){var u=n.flags;switch(n.tag){case 0:case 11:case 15:Da(t,n,o,l),u&2048&&Co(9,n);break;case 1:Da(t,n,o,l);break;case 3:Da(t,n,o,l),u&2048&&(t=null,n.alternate!==null&&(t=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==t&&(n.refCount++,t!=null&&so(t)));break;case 12:if(u&2048){Da(t,n,o,l),t=n.stateNode;try{var m=n.memoizedProps,v=m.id,S=m.onPostCommit;typeof S=="function"&&S(v,n.alternate===null?"mount":"update",t.passiveEffectDuration,-0)}catch(D){_e(n,n.return,D)}}else Da(t,n,o,l);break;case 13:Da(t,n,o,l);break;case 23:break;case 22:m=n.stateNode,v=n.alternate,n.memoizedState!==null?m._visibility&2?Da(t,n,o,l):jo(t,n):m._visibility&2?Da(t,n,o,l):(m._visibility|=2,ti(t,n,o,l,(n.subtreeFlags&10256)!==0)),u&2048&&Vu(v,n);break;case 24:Da(t,n,o,l),u&2048&&Lu(n.alternate,n);break;default:Da(t,n,o,l)}}function ti(t,n,o,l,u){for(u=u&&(n.subtreeFlags&10256)!==0,n=n.child;n!==null;){var m=t,v=n,S=o,D=l,z=v.flags;switch(v.tag){case 0:case 11:case 15:ti(m,v,S,D,u),Co(8,v);break;case 23:break;case 22:var Y=v.stateNode;v.memoizedState!==null?Y._visibility&2?ti(m,v,S,D,u):jo(m,v):(Y._visibility|=2,ti(m,v,S,D,u)),u&&z&2048&&Vu(v.alternate,v);break;case 24:ti(m,v,S,D,u),u&&z&2048&&Lu(v.alternate,v);break;default:ti(m,v,S,D,u)}n=n.sibling}}function jo(t,n){if(n.subtreeFlags&10256)for(n=n.child;n!==null;){var o=t,l=n,u=l.flags;switch(l.tag){case 22:jo(o,l),u&2048&&Vu(l.alternate,l);break;case 24:jo(o,l),u&2048&&Lu(l.alternate,l);break;default:jo(o,l)}n=n.sibling}}var No=8192;function ai(t){if(t.subtreeFlags&No)for(t=t.child;t!==null;)px(t),t=t.sibling}function px(t){switch(t.tag){case 26:ai(t),t.flags&No&&t.memoizedState!==null&&_2(pa,t.memoizedState,t.memoizedProps);break;case 5:ai(t);break;case 3:case 4:var n=pa;pa=Al(t.stateNode.containerInfo),ai(t),pa=n;break;case 22:t.memoizedState===null&&(n=t.alternate,n!==null&&n.memoizedState!==null?(n=No,No=16777216,ai(t),No=n):ai(t));break;default:ai(t)}}function gx(t){var n=t.alternate;if(n!==null&&(t=n.child,t!==null)){n.child=null;do n=t.sibling,t.sibling=null,t=n;while(t!==null)}}function Ao(t){var n=t.deletions;if((t.flags&16)!==0){if(n!==null)for(var o=0;o<n.length;o++){var l=n[o];mt=l,xx(l,t)}gx(t)}if(t.subtreeFlags&10256)for(t=t.child;t!==null;)yx(t),t=t.sibling}function yx(t){switch(t.tag){case 0:case 11:case 15:Ao(t),t.flags&2048&&wn(9,t,t.return);break;case 3:Ao(t);break;case 12:Ao(t);break;case 22:var n=t.stateNode;t.memoizedState!==null&&n._visibility&2&&(t.return===null||t.return.tag!==13)?(n._visibility&=-3,ml(t)):Ao(t);break;default:Ao(t)}}function ml(t){var n=t.deletions;if((t.flags&16)!==0){if(n!==null)for(var o=0;o<n.length;o++){var l=n[o];mt=l,xx(l,t)}gx(t)}for(t=t.child;t!==null;){switch(n=t,n.tag){case 0:case 11:case 15:wn(8,n,n.return),ml(n);break;case 22:o=n.stateNode,o._visibility&2&&(o._visibility&=-3,ml(n));break;default:ml(n)}t=t.sibling}}function xx(t,n){for(;mt!==null;){var o=mt;switch(o.tag){case 0:case 11:case 15:wn(8,o,n);break;case 23:case 22:if(o.memoizedState!==null&&o.memoizedState.cachePool!==null){var l=o.memoizedState.cachePool.pool;l!=null&&l.refCount++}break;case 24:so(o.memoizedState.cache)}if(l=o.child,l!==null)l.return=o,mt=l;else e:for(o=t;mt!==null;){l=mt;var u=l.sibling,m=l.return;if(cx(l),l===o){mt=null;break e}if(u!==null){u.return=m,mt=u;break e}mt=m}}}var i2={getCacheForType:function(t){var n=St(lt),o=n.data.get(t);return o===void 0&&(o=t(),n.data.set(t,o)),o}},o2=typeof WeakMap=="function"?WeakMap:Map,Le=0,Ge=null,Te=null,De=0,Fe=0,Kt=null,jn=!1,ni=!1,Fu=!1,en=0,Qe=0,Nn=0,pr=0,zu=0,la=0,ri=0,To=null,qt=null,Hu=!1,Bu=0,pl=1/0,gl=null,An=null,yt=0,Tn=null,ii=null,oi=0,qu=0,Wu=null,vx=null,Eo=0,_u=null;function Zt(){if((Le&2)!==0&&De!==0)return De&-De;if(V.T!==null){var t=Yr;return t!==0?t:Zu()}return Vp()}function bx(){la===0&&(la=(De&536870912)===0||Pe?Dp():536870912);var t=sa.current;return t!==null&&(t.flags|=32),la}function Xt(t,n,o){(t===Ge&&(Fe===2||Fe===9)||t.cancelPendingCommit!==null)&&(si(t,0),En(t,De,la,!1)),Ui(t,o),((Le&2)===0||t!==Ge)&&(t===Ge&&((Le&2)===0&&(pr|=o),Qe===4&&En(t,De,la,!1)),Ma(t))}function wx(t,n,o){if((Le&6)!==0)throw Error(s(327));var l=!o&&(n&124)===0&&(n&t.expiredLanes)===0||Gi(t,n),u=l?c2(t,n):Iu(t,n,!0),m=l;do{if(u===0){ni&&!l&&En(t,n,0,!1);break}else{if(o=t.current.alternate,m&&!s2(o)){u=Iu(t,n,!1),m=!1;continue}if(u===2){if(m=n,t.errorRecoveryDisabledLanes&m)var v=0;else v=t.pendingLanes&-536870913,v=v!==0?v:v&536870912?536870912:0;if(v!==0){n=v;e:{var S=t;u=To;var D=S.current.memoizedState.isDehydrated;if(D&&(si(S,v).flags|=256),v=Iu(S,v,!1),v!==2){if(Fu&&!D){S.errorRecoveryDisabledLanes|=m,pr|=m,u=4;break e}m=qt,qt=u,m!==null&&(qt===null?qt=m:qt.push.apply(qt,m))}u=v}if(m=!1,u!==2)continue}}if(u===1){si(t,0),En(t,n,0,!0);break}e:{switch(l=t,m=u,m){case 0:case 1:throw Error(s(345));case 4:if((n&4194048)!==n)break;case 6:En(l,n,la,!jn);break e;case 2:qt=null;break;case 3:case 5:break;default:throw Error(s(329))}if((n&62914560)===n&&(u=Bu+300-Lt(),10<u)){if(En(l,n,la,!jn),Ts(l,0,!0)!==0)break e;l.timeoutHandle=Zx(Cx.bind(null,l,o,qt,gl,Hu,n,la,pr,ri,jn,m,2,-0,0),u);break e}Cx(l,o,qt,gl,Hu,n,la,pr,ri,jn,m,0,-0,0)}}break}while(!0);Ma(t)}function Cx(t,n,o,l,u,m,v,S,D,z,Y,K,q,_){if(t.timeoutHandle=-1,K=n.subtreeFlags,(K&8192||(K&16785408)===16785408)&&(Vo={stylesheets:null,count:0,unsuspend:W2},px(n),K=G2(),K!==null)){t.cancelPendingCommit=K(Rx.bind(null,t,n,m,o,l,u,v,S,D,Y,1,q,_)),En(t,m,v,!z);return}Rx(t,n,m,o,l,u,v,S,D)}function s2(t){for(var n=t;;){var o=n.tag;if((o===0||o===11||o===15)&&n.flags&16384&&(o=n.updateQueue,o!==null&&(o=o.stores,o!==null)))for(var l=0;l<o.length;l++){var u=o[l],m=u.getSnapshot;u=u.value;try{if(!Ut(m(),u))return!1}catch{return!1}}if(o=n.child,n.subtreeFlags&16384&&o!==null)o.return=n,n=o;else{if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function En(t,n,o,l){n&=~zu,n&=~pr,t.suspendedLanes|=n,t.pingedLanes&=~n,l&&(t.warmLanes|=n),l=t.expirationTimes;for(var u=n;0<u;){var m=31-Gt(u),v=1<<m;l[m]=-1,u&=~v}o!==0&&Op(t,o,n)}function yl(){return(Le&6)===0?(Ro(0),!1):!0}function Gu(){if(Te!==null){if(Fe===0)var t=Te.return;else t=Te,Ia=cr=null,su(t),Jr=null,vo=0,t=Te;for(;t!==null;)tx(t.alternate,t),t=t.return;Te=null}}function si(t,n){var o=t.timeoutHandle;o!==-1&&(t.timeoutHandle=-1,N2(o)),o=t.cancelPendingCommit,o!==null&&(t.cancelPendingCommit=null,o()),Gu(),Ge=t,Te=o=_a(t.current,null),De=n,Fe=0,Kt=null,jn=!1,ni=Gi(t,n),Fu=!1,ri=la=zu=pr=Nn=Qe=0,qt=To=null,Hu=!1,(n&8)!==0&&(n|=n&32);var l=t.entangledLanes;if(l!==0)for(t=t.entanglements,l&=n;0<l;){var u=31-Gt(l),m=1<<u;n|=t[u],l&=~m}return en=n,Hs(),o}function Sx(t,n){je=null,V.H=rl,n===co||n===$s?(n=Bg(),Fe=3):n===Fg?(n=Bg(),Fe=4):Fe=n===qy?8:n!==null&&typeof n=="object"&&typeof n.then=="function"?6:1,Kt=n,Te===null&&(Qe=1,cl(t,na(n,t.current)))}function jx(){var t=V.H;return V.H=rl,t===null?rl:t}function Nx(){var t=V.A;return V.A=i2,t}function Uu(){Qe=4,jn||(De&4194048)!==De&&sa.current!==null||(ni=!0),(Nn&134217727)===0&&(pr&134217727)===0||Ge===null||En(Ge,De,la,!1)}function Iu(t,n,o){var l=Le;Le|=2;var u=jx(),m=Nx();(Ge!==t||De!==n)&&(gl=null,si(t,n)),n=!1;var v=Qe;e:do try{if(Fe!==0&&Te!==null){var S=Te,D=Kt;switch(Fe){case 8:Gu(),v=6;break e;case 3:case 2:case 9:case 6:sa.current===null&&(n=!0);var z=Fe;if(Fe=0,Kt=null,li(t,S,D,z),o&&ni){v=0;break e}break;default:z=Fe,Fe=0,Kt=null,li(t,S,D,z)}}l2(),v=Qe;break}catch(Y){Sx(t,Y)}while(!0);return n&&t.shellSuspendCounter++,Ia=cr=null,Le=l,V.H=u,V.A=m,Te===null&&(Ge=null,De=0,Hs()),v}function l2(){for(;Te!==null;)Ax(Te)}function c2(t,n){var o=Le;Le|=2;var l=jx(),u=Nx();Ge!==t||De!==n?(gl=null,pl=Lt()+500,si(t,n)):ni=Gi(t,n);e:do try{if(Fe!==0&&Te!==null){n=Te;var m=Kt;t:switch(Fe){case 1:Fe=0,Kt=null,li(t,n,m,1);break;case 2:case 9:if(zg(m)){Fe=0,Kt=null,Tx(n);break}n=function(){Fe!==2&&Fe!==9||Ge!==t||(Fe=7),Ma(t)},m.then(n,n);break e;case 3:Fe=7;break e;case 4:Fe=5;break e;case 7:zg(m)?(Fe=0,Kt=null,Tx(n)):(Fe=0,Kt=null,li(t,n,m,7));break;case 5:var v=null;switch(Te.tag){case 26:v=Te.memoizedState;case 5:case 27:var S=Te;if(!v||lv(v)){Fe=0,Kt=null;var D=S.sibling;if(D!==null)Te=D;else{var z=S.return;z!==null?(Te=z,xl(z)):Te=null}break t}}Fe=0,Kt=null,li(t,n,m,5);break;case 6:Fe=0,Kt=null,li(t,n,m,6);break;case 8:Gu(),Qe=6;break e;default:throw Error(s(462))}}d2();break}catch(Y){Sx(t,Y)}while(!0);return Ia=cr=null,V.H=l,V.A=u,Le=o,Te!==null?0:(Ge=null,De=0,Hs(),Qe)}function d2(){for(;Te!==null&&!qi();)Ax(Te)}function Ax(t){var n=Jy(t.alternate,t,en);t.memoizedProps=t.pendingProps,n===null?xl(t):Te=n}function Tx(t){var n=t,o=n.alternate;switch(n.tag){case 15:case 0:n=Yy(o,n,n.pendingProps,n.type,void 0,De);break;case 11:n=Yy(o,n,n.pendingProps,n.type.render,n.ref,De);break;case 5:su(n);default:tx(o,n),n=Te=Eg(n,en),n=Jy(o,n,en)}t.memoizedProps=t.pendingProps,n===null?xl(t):Te=n}function li(t,n,o,l){Ia=cr=null,su(n),Jr=null,vo=0;var u=n.return;try{if(JA(t,u,n,o,De)){Qe=1,cl(t,na(o,t.current)),Te=null;return}}catch(m){if(u!==null)throw Te=u,m;Qe=1,cl(t,na(o,t.current)),Te=null;return}n.flags&32768?(Pe||l===1?t=!0:ni||(De&536870912)!==0?t=!1:(jn=t=!0,(l===2||l===9||l===3||l===6)&&(l=sa.current,l!==null&&l.tag===13&&(l.flags|=16384))),Ex(n,t)):xl(n)}function xl(t){var n=t;do{if((n.flags&32768)!==0){Ex(n,jn);return}t=n.return;var o=t2(n.alternate,n,en);if(o!==null){Te=o;return}if(n=n.sibling,n!==null){Te=n;return}Te=n=t}while(n!==null);Qe===0&&(Qe=5)}function Ex(t,n){do{var o=a2(t.alternate,t);if(o!==null){o.flags&=32767,Te=o;return}if(o=t.return,o!==null&&(o.flags|=32768,o.subtreeFlags=0,o.deletions=null),!n&&(t=t.sibling,t!==null)){Te=t;return}Te=t=o}while(t!==null);Qe=6,Te=null}function Rx(t,n,o,l,u,m,v,S,D){t.cancelPendingCommit=null;do vl();while(yt!==0);if((Le&6)!==0)throw Error(s(327));if(n!==null){if(n===t.current)throw Error(s(177));if(m=n.lanes|n.childLanes,m|=Ld,WN(t,o,m,v,S,D),t===Ge&&(Te=Ge=null,De=0),ii=n,Tn=t,oi=o,qu=m,Wu=u,vx=l,(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?(t.callbackNode=null,t.callbackPriority=0,m2(js,function(){return Px(),null})):(t.callbackNode=null,t.callbackPriority=0),l=(n.flags&13878)!==0,(n.subtreeFlags&13878)!==0||l){l=V.T,V.T=null,u=B.p,B.p=2,v=Le,Le|=4;try{n2(t,n,o)}finally{Le=v,B.p=u,V.T=l}}yt=1,kx(),Dx(),Mx()}}function kx(){if(yt===1){yt=0;var t=Tn,n=ii,o=(n.flags&13878)!==0;if((n.subtreeFlags&13878)!==0||o){o=V.T,V.T=null;var l=B.p;B.p=2;var u=Le;Le|=4;try{fx(n,t);var m=rf,v=xg(t.containerInfo),S=m.focusedElem,D=m.selectionRange;if(v!==S&&S&&S.ownerDocument&&yg(S.ownerDocument.documentElement,S)){if(D!==null&&Dd(S)){var z=D.start,Y=D.end;if(Y===void 0&&(Y=z),"selectionStart"in S)S.selectionStart=z,S.selectionEnd=Math.min(Y,S.value.length);else{var K=S.ownerDocument||document,q=K&&K.defaultView||window;if(q.getSelection){var _=q.getSelection(),ve=S.textContent.length,pe=Math.min(D.start,ve),qe=D.end===void 0?pe:Math.min(D.end,ve);!_.extend&&pe>qe&&(v=qe,qe=pe,pe=v);var L=gg(S,pe),M=gg(S,qe);if(L&&M&&(_.rangeCount!==1||_.anchorNode!==L.node||_.anchorOffset!==L.offset||_.focusNode!==M.node||_.focusOffset!==M.offset)){var F=K.createRange();F.setStart(L.node,L.offset),_.removeAllRanges(),pe>qe?(_.addRange(F),_.extend(M.node,M.offset)):(F.setEnd(M.node,M.offset),_.addRange(F))}}}}for(K=[],_=S;_=_.parentNode;)_.nodeType===1&&K.push({element:_,left:_.scrollLeft,top:_.scrollTop});for(typeof S.focus=="function"&&S.focus(),S=0;S<K.length;S++){var $=K[S];$.element.scrollLeft=$.left,$.element.scrollTop=$.top}}Dl=!!nf,rf=nf=null}finally{Le=u,B.p=l,V.T=o}}t.current=n,yt=2}}function Dx(){if(yt===2){yt=0;var t=Tn,n=ii,o=(n.flags&8772)!==0;if((n.subtreeFlags&8772)!==0||o){o=V.T,V.T=null;var l=B.p;B.p=2;var u=Le;Le|=4;try{lx(t,n.alternate,n)}finally{Le=u,B.p=l,V.T=o}}yt=3}}function Mx(){if(yt===4||yt===3){yt=0,Wi();var t=Tn,n=ii,o=oi,l=vx;(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?yt=5:(yt=0,ii=Tn=null,Ox(t,t.pendingLanes));var u=t.pendingLanes;if(u===0&&(An=null),dd(o),n=n.stateNode,_t&&typeof _t.onCommitFiberRoot=="function")try{_t.onCommitFiberRoot(_i,n,void 0,(n.current.flags&128)===128)}catch{}if(l!==null){n=V.T,u=B.p,B.p=2,V.T=null;try{for(var m=t.onRecoverableError,v=0;v<l.length;v++){var S=l[v];m(S.value,{componentStack:S.stack})}}finally{V.T=n,B.p=u}}(oi&3)!==0&&vl(),Ma(t),u=t.pendingLanes,(o&4194090)!==0&&(u&42)!==0?t===_u?Eo++:(Eo=0,_u=t):Eo=0,Ro(0)}}function Ox(t,n){(t.pooledCacheLanes&=n)===0&&(n=t.pooledCache,n!=null&&(t.pooledCache=null,so(n)))}function vl(t){return kx(),Dx(),Mx(),Px()}function Px(){if(yt!==5)return!1;var t=Tn,n=qu;qu=0;var o=dd(oi),l=V.T,u=B.p;try{B.p=32>o?32:o,V.T=null,o=Wu,Wu=null;var m=Tn,v=oi;if(yt=0,ii=Tn=null,oi=0,(Le&6)!==0)throw Error(s(331));var S=Le;if(Le|=4,yx(m.current),mx(m,m.current,v,o),Le=S,Ro(0,!1),_t&&typeof _t.onPostCommitFiberRoot=="function")try{_t.onPostCommitFiberRoot(_i,m)}catch{}return!0}finally{B.p=u,V.T=l,Ox(t,n)}}function Vx(t,n,o){n=na(o,n),n=wu(t.stateNode,n,2),t=yn(t,n,2),t!==null&&(Ui(t,2),Ma(t))}function _e(t,n,o){if(t.tag===3)Vx(t,t,o);else for(;n!==null;){if(n.tag===3){Vx(n,t,o);break}else if(n.tag===1){var l=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(An===null||!An.has(l))){t=na(o,t),o=Hy(2),l=yn(n,o,2),l!==null&&(By(o,l,n,t),Ui(l,2),Ma(l));break}}n=n.return}}function Yu(t,n,o){var l=t.pingCache;if(l===null){l=t.pingCache=new o2;var u=new Set;l.set(n,u)}else u=l.get(n),u===void 0&&(u=new Set,l.set(n,u));u.has(o)||(Fu=!0,u.add(o),t=u2.bind(null,t,n,o),n.then(t,t))}function u2(t,n,o){var l=t.pingCache;l!==null&&l.delete(n),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,Ge===t&&(De&o)===o&&(Qe===4||Qe===3&&(De&62914560)===De&&300>Lt()-Bu?(Le&2)===0&&si(t,0):zu|=o,ri===De&&(ri=0)),Ma(t)}function Lx(t,n){n===0&&(n=Mp()),t=_r(t,n),t!==null&&(Ui(t,n),Ma(t))}function f2(t){var n=t.memoizedState,o=0;n!==null&&(o=n.retryLane),Lx(t,o)}function h2(t,n){var o=0;switch(t.tag){case 13:var l=t.stateNode,u=t.memoizedState;u!==null&&(o=u.retryLane);break;case 19:l=t.stateNode;break;case 22:l=t.stateNode._retryCache;break;default:throw Error(s(314))}l!==null&&l.delete(n),Lx(t,o)}function m2(t,n){return rt(t,n)}var bl=null,ci=null,$u=!1,wl=!1,Ku=!1,gr=0;function Ma(t){t!==ci&&t.next===null&&(ci===null?bl=ci=t:ci=ci.next=t),wl=!0,$u||($u=!0,g2())}function Ro(t,n){if(!Ku&&wl){Ku=!0;do for(var o=!1,l=bl;l!==null;){if(t!==0){var u=l.pendingLanes;if(u===0)var m=0;else{var v=l.suspendedLanes,S=l.pingedLanes;m=(1<<31-Gt(42|t)+1)-1,m&=u&~(v&~S),m=m&201326741?m&201326741|1:m?m|2:0}m!==0&&(o=!0,Bx(l,m))}else m=De,m=Ts(l,l===Ge?m:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(m&3)===0||Gi(l,m)||(o=!0,Bx(l,m));l=l.next}while(o);Ku=!1}}function p2(){Fx()}function Fx(){wl=$u=!1;var t=0;gr!==0&&(j2()&&(t=gr),gr=0);for(var n=Lt(),o=null,l=bl;l!==null;){var u=l.next,m=zx(l,n);m===0?(l.next=null,o===null?bl=u:o.next=u,u===null&&(ci=o)):(o=l,(t!==0||(m&3)!==0)&&(wl=!0)),l=u}Ro(t)}function zx(t,n){for(var o=t.suspendedLanes,l=t.pingedLanes,u=t.expirationTimes,m=t.pendingLanes&-62914561;0<m;){var v=31-Gt(m),S=1<<v,D=u[v];D===-1?((S&o)===0||(S&l)!==0)&&(u[v]=qN(S,n)):D<=n&&(t.expiredLanes|=S),m&=~S}if(n=Ge,o=De,o=Ts(t,t===n?o:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),l=t.callbackNode,o===0||t===n&&(Fe===2||Fe===9)||t.cancelPendingCommit!==null)return l!==null&&l!==null&&wt(l),t.callbackNode=null,t.callbackPriority=0;if((o&3)===0||Gi(t,o)){if(n=o&-o,n===t.callbackPriority)return n;switch(l!==null&&wt(l),dd(o)){case 2:case 8:o=Rp;break;case 32:o=js;break;case 268435456:o=kp;break;default:o=js}return l=Hx.bind(null,t),o=rt(o,l),t.callbackPriority=n,t.callbackNode=o,n}return l!==null&&l!==null&&wt(l),t.callbackPriority=2,t.callbackNode=null,2}function Hx(t,n){if(yt!==0&&yt!==5)return t.callbackNode=null,t.callbackPriority=0,null;var o=t.callbackNode;if(vl()&&t.callbackNode!==o)return null;var l=De;return l=Ts(t,t===Ge?l:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),l===0?null:(wx(t,l,n),zx(t,Lt()),t.callbackNode!=null&&t.callbackNode===o?Hx.bind(null,t):null)}function Bx(t,n){if(vl())return null;wx(t,n,!0)}function g2(){A2(function(){(Le&6)!==0?rt(Ep,p2):Fx()})}function Zu(){return gr===0&&(gr=Dp()),gr}function qx(t){return t==null||typeof t=="symbol"||typeof t=="boolean"?null:typeof t=="function"?t:Ms(""+t)}function Wx(t,n){var o=n.ownerDocument.createElement("input");return o.name=n.name,o.value=n.value,t.id&&o.setAttribute("form",t.id),n.parentNode.insertBefore(o,n),t=new FormData(t),o.parentNode.removeChild(o),t}function y2(t,n,o,l,u){if(n==="submit"&&o&&o.stateNode===u){var m=qx((u[Ft]||null).action),v=l.submitter;v&&(n=(n=v[Ft]||null)?qx(n.formAction):v.getAttribute("formAction"),n!==null&&(m=n,v=null));var S=new Ls("action","action",null,l,u);t.push({event:S,listeners:[{instance:null,listener:function(){if(l.defaultPrevented){if(gr!==0){var D=v?Wx(u,v):new FormData(u);gu(o,{pending:!0,data:D,method:u.method,action:m},null,D)}}else typeof m=="function"&&(S.preventDefault(),D=v?Wx(u,v):new FormData(u),gu(o,{pending:!0,data:D,method:u.method,action:m},m,D))},currentTarget:u}]})}}for(var Xu=0;Xu<Vd.length;Xu++){var Qu=Vd[Xu],x2=Qu.toLowerCase(),v2=Qu[0].toUpperCase()+Qu.slice(1);ma(x2,"on"+v2)}ma(wg,"onAnimationEnd"),ma(Cg,"onAnimationIteration"),ma(Sg,"onAnimationStart"),ma("dblclick","onDoubleClick"),ma("focusin","onFocus"),ma("focusout","onBlur"),ma(LA,"onTransitionRun"),ma(FA,"onTransitionStart"),ma(zA,"onTransitionCancel"),ma(jg,"onTransitionEnd"),Or("onMouseEnter",["mouseout","mouseover"]),Or("onMouseLeave",["mouseout","mouseover"]),Or("onPointerEnter",["pointerout","pointerover"]),Or("onPointerLeave",["pointerout","pointerover"]),er("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),er("onSelect","focusout contextmenu dragend focu
8sin keydown keyup mousedown mouseup selectionchange".split(" ")),er("onBeforeInput",["compositionend","keypress","textInput","paste"]),er("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),er("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),er("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var ko="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),b2=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(ko));function _x(t,n){n=(n&4)!==0;for(var o=0;o<t.length;o++){var l=t[o],u=l.event;l=l.listeners;e:{var m=void 0;if(n)for(var v=l.length-1;0<=v;v--){var S=l[v],D=S.instance,z=S.currentTarget;if(S=S.listener,D!==m&&u.isPropagationStopped())break e;m=S,u.currentTarget=z;try{m(u)}catch(Y){ll(Y)}u.currentTarget=null,m=D}else for(v=0;v<l.length;v++){if(S=l[v],D=S.instance,z=S.currentTarget,S=S.listener,D!==m&&u.isPropagationStopped())break e;m=S,u.currentTarget=z;try{m(u)}catch(Y){ll(Y)}u.currentTarget=null,m=D}}}}function Ee(t,n){var o=n[ud];o===void 0&&(o=n[ud]=new Set);var l=t+"__bubble";o.has(l)||(Gx(n,t,2,!1),o.add(l))}function Ju(t,n,o){var l=0;n&&(l|=4),Gx(o,t,l,n)}var Cl="_reactListening"+Math.random().toString(36).slice(2);function ef(t){if(!t[Cl]){t[Cl]=!0,Fp.forEach(function(o){o!=="selectionchange"&&(b2.has(o)||Ju(o,!1,t),Ju(o,!0,t))});var n=t.nodeType===9?t:t.ownerDocument;n===null||n[Cl]||(n[Cl]=!0,Ju("selectionchange",!1,n))}}function Gx(t,n,o,l){switch(mv(n)){case 2:var u=Y2;break;case 8:u=$2;break;default:u=pf}o=u.bind(null,n,o,t),u=void 0,!Cd||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(u=!0),l?u!==void 0?t.addEventListener(n,o,{capture:!0,passive:u}):t.addEventListener(n,o,!0):u!==void 0?t.addEventListener(n,o,{passive:u}):t.addEventListener(n,o,!1)}function tf(t,n,o,l,u){var m=l;if((n&1)===0&&(n&2)===0&&l!==null)e:for(;;){if(l===null)return;var v=l.tag;if(v===3||v===4){var S=l.stateNode.containerInfo;if(S===u)break;if(v===4)for(v=l.return;v!==null;){var D=v.tag;if((D===3||D===4)&&v.stateNode.containerInfo===u)return;v=v.return}for(;S!==null;){if(v=kr(S),v===null)return;if(D=v.tag,D===5||D===6||D===26||D===27){l=m=v;continue e}S=S.parentNode}}l=l.return}Xp(function(){var z=m,Y=bd(o),K=[];e:{var q=Ng.get(t);if(q!==void 0){var _=Ls,ve=t;switch(t){case"keypress":if(Ps(o)===0)break e;case"keydown":case"keyup":_=mA;break;case"focusin":ve="focus",_=Ad;break;case"focusout":ve="blur",_=Ad;break;case"beforeblur":case"afterblur":_=Ad;break;case"click":if(o.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":_=eg;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":_=aA;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":_=yA;break;case wg:case Cg:case Sg:_=iA;break;case jg:_=vA;break;case"scroll":case"scrollend":_=eA;break;case"wheel":_=wA;break;case"copy":case"cut":case"paste":_=sA;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":_=ag;break;case"toggle":case"beforetoggle":_=SA}var pe=(n&4)!==0,qe=!pe&&(t==="scroll"||t==="scrollend"),L=pe?q!==null?q+"Capture":null:q;pe=[];for(var M=z,F;M!==null;){var $=M;if(F=$.stateNode,$=$.tag,$!==5&&$!==26&&$!==27||F===null||L===null||($=$i(M,L),$!=null&&pe.push(Do(M,$,F))),qe)break;M=M.return}0<pe.length&&(q=new _(q,ve,null,o,Y),K.push({event:q,listeners:pe}))}}if((n&7)===0){e:{if(q=t==="mouseover"||t==="pointerover",_=t==="mouseout"||t==="pointerout",q&&o!==vd&&(ve=o.relatedTarget||o.fromElement)&&(kr(ve)||ve[Rr]))break e;if((_||q)&&(q=Y.window===Y?Y:(q=Y.ownerDocument)?q.defaultView||q.parentWindow:window,_?(ve=o.relatedTarget||o.toElement,_=z,ve=ve?kr(ve):null,ve!==null&&(qe=d(ve),pe=ve.tag,ve!==qe||pe!==5&&pe!==27&&pe!==6)&&(ve=null)):(_=null,ve=z),_!==ve)){if(pe=eg,$="onMouseLeave",L="onMouseEnter",M="mouse",(t==="pointerout"||t==="pointerover")&&(pe=ag,$="onPointerLeave",L="onPointerEnter",M="pointer"),qe=_==null?q:Yi(_),F=ve==null?q:Yi(ve),q=ne
vendor: 4,107 bytes, lines 8-9
8w pe($,M+"leave",_,o,Y),q.target=qe,q.relatedTarget=F,$=null,kr(Y)===z&&(pe=new pe(L,M+"enter",ve,o,Y),pe.target=F,pe.relatedTarget=qe,$=pe),qe=$,_&&ve)t:{for(pe=_,L=ve,M=0,F=pe;F;F=di(F))M++;for(F=0,$=L;$;$=di($))F++;for(;0<M-F;)pe=di(pe),M--;for(;0<F-M;)L=di(L),F--;for(;M--;){if(pe===L||L!==null&&pe===L.alternate)break t;pe=di(pe),L=di(L)}pe=null}else pe=null;_!==null&&Ux(K,q,_,pe,!1),ve!==null&&qe!==null&&Ux(K,qe,ve,pe,!0)}}e:{if(q=z?Yi(z):window,_=q.nodeName&&q.nodeName.toLowerCase(),_==="select"||_==="input"&&q.type==="file")var le=dg;else if(lg(q))if(ug)le=OA;else{le=DA;var Ae=kA}else _=q.nodeName,!_||_.toLowerCase()!=="input"||q.type!=="checkbox"&&q.type!=="radio"?z&&xd(z.elementType)&&(le=dg):le=MA;if(le&&(le=le(t,z))){cg(K,le,o,Y);break e}Ae&&Ae(t,q,z),t==="focusout"&&z&&q.type==="number"&&z.memoizedProps.value!=null&&yd(q,"number",q.value)}switch(Ae=z?Yi(z):window,t){case"focusin":(lg(Ae)||Ae.contentEditable==="true")&&(Br=Ae,Md=z,ao=null);break;case"focusout":ao=Md=Br=null;break;case"mousedown":Od=!0;break;case"contextmenu":case"mouseup":case"dragend":Od=!1,vg(K,o,Y);break;case"selectionchange":if(VA)break;case"keydown":case"keyup":vg(K,o,Y)}var he;if(Ed)e:{switch(t){case"compositionstart":var ye="onCompositionStart";break e;case"compositionend":ye="onCompositionEnd";break e;case"compositionupdate":ye="onCompositionUpdate";break e}ye=void 0}else Hr?og(t,o)&&(ye="onCompositionEnd"):t==="keydown"&&o.keyCode===229&&(ye="onCompositionStart");ye&&(ng&&o.locale!=="ko"&&(Hr||ye!=="onCompositionStart"?ye==="onCompositionEnd"&&Hr&&(he=Qp()):(hn=Y,Sd="value"in hn?hn.value:hn.textContent,Hr=!0)),Ae=Sl(z,ye),0<Ae.length&&(ye=new tg(ye,t,null,o,Y),K.push({event:ye,listeners:Ae}),he?ye.data=he:(he=sg(o),he!==null&&(ye.data=he)))),(he=NA?AA(t,o):TA(t,o))&&(ye=Sl(z,"onBeforeInput"),0<ye.length&&(Ae=new tg("onBeforeInput","beforeinput",null,o,Y),K.push({event:Ae,listeners:ye}),Ae.data=he)),y2(K,t,z,o,Y)}_x(K,n)})}function Do(t,n,o){return{instance:t,listener:n,currentTarget:o}}function Sl(t,n){for(var o=n+"Capture",l=[];t!==null;){var u=t,m=u.stateNode;if(u=u.tag,u!==5&&u!==26&&u!==27||m===null||(u=$i(t,o),u!=null&&l.unshift(Do(t,u,m)),u=$i(t,n),u!=null&&l.push(Do(t,u,m))),t.tag===3)return l;t=t.return}return[]}function di(t){if(t===null)return null;do t=t.return;while(t&&t.tag!==5&&t.tag!==27);return t||null}function Ux(t,n,o,l,u){for(var m=n._reactName,v=[];o!==null&&o!==l;){var S=o,D=S.alternate,z=S.stateNode;if(S=S.tag,D!==null&&D===l)break;S!==5&&S!==26&&S!==27||z===null||(D=z,u?(z=$i(o,m),z!=null&&v.unshift(Do(o,z,D))):u||(z=$i(o,m),z!=null&&v.push(Do(o,z,D)))),o=o.return}v.length!==0&&t.push({event:n,listeners:v})}var w2=/\r\n?/g,C2=/\u0000|\uFFFD/g;function Ix(t){return(typeof t=="string"?t:""+t).replace(w2,`
9`).replace(C2,"")}function Yx(t,n){return n=Ix(n),Ix(t)===n}function jl(){}function Be(t,n,o,l,u,m){switch(o){case"children":typeof l=="string"?n==="body"||n==="textarea"&&l===""||Lr(t,l):(typeof l=="number"||typeof l=="bigint")&&n!=="body"&&Lr(t,""+l);break;case"className":Rs(t,"class",l);break;case"tabIndex":Rs(t,"tabindex",l);break;case"dir":case"role":case"viewBox":case"width":case"height":Rs(t,o,l);break;case"style":Kp(t,l,m);break;case"data":if(n!=="object"){Rs(t,"data",l);break}case"src":case"href":if(l===""&&(n!=="a"||o!=="href")){t.removeAttribute(o);break}if(l==null||typeof l=="function"||typeof l=="symbol"||typeof l=="boolean"){t.removeAttribute(o);break}l=Ms(""+l),t.setAttribute(o,l);break;case"action":case"formAction":if(typeof l=="function"){t.setAttribute(o,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof m=="function"&&(o==="formAction"?(n!=="input"&&Be(t,n,"name",u.name,u,null),Be(t,n,"formEncType",u.formEncType,u,null),Be(t,n,"formMethod",u.formMethod,u,null),Be(t,n,"formTarget",u.formTarget,u,null)):(Be(t,n,"encType",u.encType,u,null),Be(t,n,"method",u.method,u,
vendor: 4,302 bytes, line 9
9null),Be(t,n,"target",u.target,u,null)));if(l==null||typeof l=="symbol"||typeof l=="boolean"){t.removeAttribute(o);break}l=Ms(""+l),t.setAttribute(o,l);break;case"onClick":l!=null&&(t.onclick=jl);break;case"onScroll":l!=null&&Ee("scroll",t);break;case"onScrollEnd":l!=null&&Ee("scrollend",t);break;case"dangerouslySetInnerHTML":if(l!=null){if(typeof l!="object"||!("__html"in l))throw Error(s(61));if(o=l.__html,o!=null){if(u.children!=null)throw Error(s(60));t.innerHTML=o}}break;case"multiple":t.multiple=l&&typeof l!="function"&&typeof l!="symbol";break;case"muted":t.muted=l&&typeof l!="function"&&typeof l!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(l==null||typeof l=="function"||typeof l=="boolean"||typeof l=="symbol"){t.removeAttribute("xlink:href");break}o=Ms(""+l),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":l!=null&&typeof l!="function"&&typeof l!="symbol"?t.setAttribute(o,""+l):t.removeAttribute(o);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":l&&typeof l!="function"&&typeof l!="symbol"?t.setAttribute(o,""):t.removeAttribute(o);break;case"capture":case"download":l===!0?t.setAttribute(o,""):l!==!1&&l!=null&&typeof l!="function"&&typeof l!="symbol"?t.setAttribute(o,l):t.removeAttribute(o);break;case"cols":case"rows":case"size":case"span":l!=null&&typeof l!="function"&&typeof l!="symbol"&&!isNaN(l)&&1<=l?t.setAttribute(o,l):t.removeAttribute(o);break;case"rowSpan":case"start":l==null||typeof l=="function"||typeof l=="symbol"||isNaN(l)?t.removeAttribute(o):t.setAttribute(o,l);break;case"popover":Ee("beforetoggle",t),Ee("toggle",t),Es(t,"popover",l);break;case"xlinkActuate":qa(t,"http://www.w3.org/1999/xlink","xlink:actuate",l);break;case"xlinkArcrole":qa(t,"http://www.w3.org/1999/xlink","xlink:arcrole",l);break;case"xlinkRole":qa(t,"http://www.w3.org/1999/xlink","xlink:role",l);break;case"xlinkShow":qa(t,"http://www.w3.org/1999/xlink","xlink:show",l);break;case"xlinkTitle":qa(t,"http://www.w3.org/1999/xlink","xlink:title",l);break;case"xlinkType":qa(t,"http://www.w3.org/1999/xlink","xlink:type",l);break;case"xmlBase":qa(t,"http://www.w3.org/XML/1998/namespace","xml:base",l);break;case"xmlLang":qa(t,"http://www.w3.org/XML/1998/namespace","xml:lang",l);break;case"xmlSpace":qa(t,"http://www.w3.org/XML/1998/namespace","xml:space",l);break;case"is":Es(t,"is",l);break;case"innerText":case"textContent":break;default:(!(2<o.length)||o[0]!=="o"&&o[0]!=="O"||o[1]!=="n"&&o[1]!=="N")&&(o=QN.get(o)||o,Es(t,o,l))}}function af(t,n,o,l,u,m){switch(o){case"style":Kp(t,l,m);break;case"dangerouslySetInnerHTML":if(l!=null){if(typeof l!="object"||!("__html"in l))throw Error(s(61));if(o=l.__html,o!=null){if(u.children!=null)throw Error(s(60));t.innerHTML=o}}break;case"children":typeof l=="string"?Lr(t,l):(typeof l=="number"||typeof l=="bigint")&&Lr(t,""+l);break;case"onScroll":l!=null&&Ee("scroll",t);break;case"onScrollEnd":l!=null&&Ee("scrollend",t);break;case"onClick":l!=null&&(t.onclick=jl);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!zp.hasOwnProperty(o))e:{if(o[0]==="o"&&o[1]==="n"&&(u=o.endsWith("Capture"),n=o.slice(2,u?o.length-7:void 0),m=t[Ft]||null,m=m!=null?m[o]:null,typeof m=="function"&&t.removeEventListener(n,m,u),typeof l=="function")){typeof m!="function"&&m!==null&&(o in t?t[o]=null:t.hasAttribute(o)&&t.removeAttribute(o)),t.addEventListener(n,l,u);break e}o in t?t[o]=l:l===!0?t.setAttribute(o,""):Es(t,o,l)}}}function xt(t,n,o){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Ee("error",t),Ee("load",t);var l=!1,u=!1,m;
vendor: 4,420 bytes, line 9
9for(m in o)if(o.hasOwnProperty(m)){var v=o[m];if(v!=null)switch(m){case"src":l=!0;break;case"srcSet":u=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(s(137,n));default:Be(t,n,m,v,o,null)}}u&&Be(t,n,"srcSet",o.srcSet,o,null),l&&Be(t,n,"src",o.src,o,null);return;case"input":Ee("invalid",t);var S=m=v=u=null,D=null,z=null;for(l in o)if(o.hasOwnProperty(l)){var Y=o[l];if(Y!=null)switch(l){case"name":u=Y;break;case"type":v=Y;break;case"checked":D=Y;break;case"defaultChecked":z=Y;break;case"value":m=Y;break;case"defaultValue":S=Y;break;case"children":case"dangerouslySetInnerHTML":if(Y!=null)throw Error(s(137,n));break;default:Be(t,n,l,Y,o,null)}}Up(t,m,S,D,z,v,u,!1),ks(t);return;case"select":Ee("invalid",t),l=v=m=null;for(u in o)if(o.hasOwnProperty(u)&&(S=o[u],S!=null))switch(u){case"value":m=S;break;case"defaultValue":v=S;break;case"multiple":l=S;default:Be(t,n,u,S,o,null)}n=m,o=v,t.multiple=!!l,n!=null?Vr(t,!!l,n,!1):o!=null&&Vr(t,!!l,o,!0);return;case"textarea":Ee("invalid",t),m=u=l=null;for(v in o)if(o.hasOwnProperty(v)&&(S=o[v],S!=null))switch(v){case"value":l=S;break;case"defaultValue":u=S;break;case"children":m=S;break;case"dangerouslySetInnerHTML":if(S!=null)throw Error(s(91));break;default:Be(t,n,v,S,o,null)}Yp(t,l,u,m),ks(t);return;case"option":for(D in o)o.hasOwnProperty(D)&&(l=o[D],l!=null)&&(D==="selected"?t.selected=l&&typeof l!="function"&&typeof l!="symbol":Be(t,n,D,l,o,null));return;case"dialog":Ee("beforetoggle",t),Ee("toggle",t),Ee("cancel",t),Ee("close",t);break;case"iframe":case"object":Ee("load",t);break;case"video":case"audio":for(l=0;l<ko.length;l++)Ee(ko[l],t);break;case"image":Ee("error",t),Ee("load",t);break;case"details":Ee("toggle",t);break;case"embed":case"source":case"link":Ee("error",t),Ee("load",t);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(z in o)if(o.hasOwnProperty(z)&&(l=o[z],l!=null))switch(z){case"children":case"dangerouslySetInnerHTML":throw Error(s(137,n));default:Be(t,n,z,l,o,null)}return;default:if(xd(n)){for(Y in o)o.hasOwnProperty(Y)&&(l=o[Y],l!==void 0&&af(t,n,Y,l,o,void 0));return}}for(S in o)o.hasOwnProperty(S)&&(l=o[S],l!=null&&Be(t,n,S,l,o,null))}function S2(t,n,o,l){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var u=null,m=null,v=null,S=null,D=null,z=null,Y=null;for(_ in o){var K=o[_];if(o.hasOwnProperty(_)&&K!=null)switch(_){case"checked":break;case"value":break;case"defaultValue":D=K;default:l.hasOwnProperty(_)||Be(t,n,_,null,l,K)}}for(var q in l){var _=l[q];if(K=o[q],l.hasOwnProperty(q)&&(_!=null||K!=null))switch(q){case"type":m=_;break;case"name":u=_;break;case"checked":z=_;break;case"defaultChecked":Y=_;break;case"value":v=_;break;case"defaultValue":S=_;break;case"children":case"dangerouslySetInnerHTML":if(_!=null)throw Error(s(137,n));break;default:_!==K&&Be(t,n,q,_,l,K)}}gd(t,v,S,D,z,Y,m,u);return;case"select":_=v=S=q=null;for(m in o)if(D=o[m],o.hasOwnProperty(m)&&D!=null)switch(m){case"value":break;case"multiple":_=D;default:l.hasOwnProperty(m)||Be(t,n,m,null,l,D)}for(u in l)if(m=l[u],D=o[u],l.hasOwnProperty(u)&&(m!=null||D!=null))switch(u){case"value":q=m;break;case"defaultValue":S=m;break;case"multiple":v=m;default:m!==D&&Be(t,n,u,m,l,D)}n=S,o=v,l=_,q!=null?Vr(t,!!o,q,!1):!!l!=!!o&&(n!=null?Vr(t,!!o,n,!0):Vr(t,!!o,o?[]:"",!1));return;case"textarea":_=q=null;for(S in o)if(u=o[S],o.hasOwnProperty(S)&&u!=null&&!l.hasOwnProperty(S))switch(S){case"value":break;case"children":break;default:Be(t,n,S,null,l,u)}for(v in l)if(u=l[v],m=o[v],l.hasOwnProperty(v)&&(u!=null||m!=null))switch(v){case"value":q=u;break;case"defaultValue":_=u;break;case"children":break;case"dangerouslySetInnerHTML":if(u!=null)throw Error(s(91));break;default:u!==m&&Be(t,n,v,u,l,m)}Ip(t,q,_);return;case"option":for(var ve in o)q=o[ve],o.hasOwnProperty(ve)&&q!=null&&!l.hasOwnProperty(ve)&&(ve==="selected"?t.selected=!1:Be(t,n,ve,null,l,q));for(D in l)q=l[D],_=o[D],l.hasOwnProperty(D)&&q!==_&&(q!=null||_!=null)&&(D==="selected"?t.selected=q&&typeof q!="function"&&typeof q!="symbol":Be(t,n,D,q,l,_));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var pe in o)q=o[pe],o.hasOwnProperty(pe)&&q!=null&&!l.hasOwnProperty(pe)&&Be(t,n,pe,null,l,q);
vendor: 6,851 bytes, line 9
9for(z in l)if(q=l[z],_=o[z],l.hasOwnProperty(z)&&q!==_&&(q!=null||_!=null))switch(z){case"children":case"dangerouslySetInnerHTML":if(q!=null)throw Error(s(137,n));break;default:Be(t,n,z,q,l,_)}return;default:if(xd(n)){for(var qe in o)q=o[qe],o.hasOwnProperty(qe)&&q!==void 0&&!l.hasOwnProperty(qe)&&af(t,n,qe,void 0,l,q);for(Y in l)q=l[Y],_=o[Y],!l.hasOwnProperty(Y)||q===_||q===void 0&&_===void 0||af(t,n,Y,q,l,_);return}}for(var L in o)q=o[L],o.hasOwnProperty(L)&&q!=null&&!l.hasOwnProperty(L)&&Be(t,n,L,null,l,q);for(K in l)q=l[K],_=o[K],!l.hasOwnProperty(K)||q===_||q==null&&_==null||Be(t,n,K,q,l,_)}var nf=null,rf=null;function Nl(t){return t.nodeType===9?t:t.ownerDocument}function $x(t){switch(t){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Kx(t,n){if(t===0)switch(n){case"svg":return 1;case"math":return 2;default:return 0}return t===1&&n==="foreignObject"?0:t}function of(t,n){return t==="textarea"||t==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.children=="bigint"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var sf=null;function j2(){var t=window.event;return t&&t.type==="popstate"?t===sf?!1:(sf=t,!0):(sf=null,!1)}var Zx=typeof setTimeout=="function"?setTimeout:void 0,N2=typeof clearTimeout=="function"?clearTimeout:void 0,Xx=typeof Promise=="function"?Promise:void 0,A2=typeof queueMicrotask=="function"?queueMicrotask:typeof Xx<"u"?function(t){return Xx.resolve(null).then(t).catch(T2)}:Zx;function T2(t){setTimeout(function(){throw t})}function Rn(t){return t==="head"}function Qx(t,n){var o=n,l=0,u=0;do{var m=o.nextSibling;if(t.removeChild(o),m&&m.nodeType===8)if(o=m.data,o==="/$"){if(0<l&&8>l){o=l;var v=t.ownerDocument;if(o&1&&Mo(v.documentElement),o&2&&Mo(v.body),o&4)for(o=v.head,Mo(o),v=o.firstChild;v;){var S=v.nextSibling,D=v.nodeName;v[Ii]||D==="SCRIPT"||D==="STYLE"||D==="LINK"&&v.rel.toLowerCase()==="stylesheet"||o.removeChild(v),v=S}}if(u===0){t.removeChild(m),Bo(n);return}u--}else o==="$"||o==="$?"||o==="$!"?u++:l=o.charCodeAt(0)-48;else l=0;o=m}while(o);Bo(n)}function lf(t){var n=t.firstChild;for(n&&n.nodeType===10&&(n=n.nextSibling);n;){var o=n;switch(n=n.nextSibling,o.nodeName){case"HTML":case"HEAD":case"BODY":lf(o),fd(o);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(o.rel.toLowerCase()==="stylesheet")continue}t.removeChild(o)}}function E2(t,n,o,l){for(;t.nodeType===1;){var u=o;if(t.nodeName.toLowerCase()!==n.toLowerCase()){if(!l&&(t.nodeName!=="INPUT"||t.type!=="hidden"))break}else if(l){if(!t[Ii])switch(n){case"meta":if(!t.hasAttribute("itemprop"))break;return t;case"link":if(m=t.getAttribute("rel"),m==="stylesheet"&&t.hasAttribute("data-precedence"))break;if(m!==u.rel||t.getAttribute("href")!==(u.href==null||u.href===""?null:u.href)||t.getAttribute("crossorigin")!==(u.crossOrigin==null?null:u.crossOrigin)||t.getAttribute("title")!==(u.title==null?null:u.title))break;return t;case"style":if(t.hasAttribute("data-precedence"))break;return t;case"script":if(m=t.getAttribute("src"),(m!==(u.src==null?null:u.src)||t.getAttribute("type")!==(u.type==null?null:u.type)||t.getAttribute("crossorigin")!==(u.crossOrigin==null?null:u.crossOrigin))&&m&&t.hasAttribute("async")&&!t.hasAttribute("itemprop"))break;return t;default:return t}}else if(n==="input"&&t.type==="hidden"){var m=u.name==null?null:""+u.name;if(u.type==="hidden"&&t.getAttribute("name")===m)return t}else return t;if(t=ga(t.nextSibling),t===null)break}return null}function R2(t,n,o){if(n==="")return null;for(;t.nodeType!==3;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!o||(t=ga(t.nextSibling),t===null))return null;return t}function cf(t){return t.data==="$!"||t.data==="$?"&&t.ownerDocument.readyState==="complete"}function k2(t,n){var o=t.ownerDocument;if(t.data!=="$?"||o.readyState==="complete")n();else{var l=function(){n(),o.removeEventListener("DOMContentLoaded",l)};o.addEventListener("DOMContentLoaded",l),t._reactRetry=l}}function ga(t){for(;t!=null;t=t.nextSibling){var n=t.nodeType;if(n===1||n===3)break;if(n===8){if(n=t.data,n==="$"||n==="$!"||n==="$?"||n==="F!"||n==="F")break;if(n==="/$")return null}}return t}var df=null;function Jx(t){t=t.previousSibling;for(var n=0;t;){if(t.nodeType===8){var o=t.data;if(o==="$"||o==="$!"||o==="$?"){if(n===0)return t;n--}else o==="/$"&&n++}t=t.previousSibling}return null}function ev(t,n,o){switch(n=Nl(o),t){case"html":if(t=n.documentElement,!t)throw Error(s(452));return t;case"head":if(t=n.head,!t)throw Error(s(453));return t;case"body":if(t=n.body,!t)throw Error(s(454));return t;default:throw Error(s(451))}}function Mo(t){for(var n=t.attributes;n.length;)t.removeAttributeNode(n[0]);fd(t)}var ca=new Map,tv=new Set;function Al(t){return typeof t.getRootNode=="function"?t.getRootNode():t.nodeType===9?t:t.ownerDocument}var tn=B.d;B.d={f:D2,r:M2,D:O2,C:P2,L:V2,m:L2,X:z2,S:F2,M:H2};function D2(){var t=tn.f(),n=yl();return t||n}function M2(t){var n=Dr(t);n!==null&&n.tag===5&&n.type==="form"?wy(n):tn.r(t)}var ui=typeof document>"u"?null:document;function av(t,n,o){var l=ui;if(l&&typeof n=="string"&&n){var u=aa(n);u='link[rel="'+t+'"][href="'+u+'"]',typeof o=="string"&&(u+='[crossorigin="'+o+'"]'),tv.has(u)||(tv.add(u),t={rel:t,crossOrigin:o,href:n},l.querySelector(u)===null&&(n=l.createElement("link"),xt(n,"link",t),ft(n),l.head.appendChild(n)))}}function O2(t){tn.D(t),av("dns-prefetch",t,null)}function P2(t,n){tn.C(t,n),av("preconnect",t,n)}function V2(t,n,o){tn.L(t,n,o);var l=ui;if(l&&t&&n){var u='link[rel="preload"][as="'+aa(n)+'"]';n==="image"&&o&&o.imageSrcSet?(u+='[imagesrcset="'+aa(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(u+='[imagesizes="'+aa(o.imageSizes)+'"]')):u+='[href="'+aa(t)+'"]';var m=u;switch(n){case"style":m=fi(t);break;case"script":m=hi(t)}ca.has(m)||(t=y({rel:"preload",href:n==="image"&&o&&o.imageSrcSet?void 0:t,as:n},o),ca.set(m,t),l.querySelector(u)!==null||n==="style"&&l.querySelector(Oo(m))||n==="script"&&l.querySelector(Po(m))||(n=l.createElement("link"),xt(n,"link",t),ft(n),l.head.appendChild(n)))}}function L2(t,n){tn.m(t,n);var o=ui;if(o&&t){var l=n&&typeof n.as=="string"?n.as:"script",u='link[rel="modulepreload"][as="'+aa(l)+'"][href="'+aa(t)+'"]',m=u;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":m=hi(t)}if(!ca.has(m)&&(t=y({rel:"modulepreload",href:t},n),ca.set(m,t),o.querySelector(u)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Po(m)))return}l=o.createElement("link"),xt(l,"link",t),ft(l),o.head.appendChild(l)}}}function F2(t,n,o){tn.S(t,n,o);var l=ui;if(l&&t){var u=Mr(l).hoistableStyles,m=fi(t);n=n||"default";var v=u.get(m);
vendor: 4,203 bytes, line 9
9if(!v){var S={loading:0,preload:null};if(v=l.querySelector(Oo(m)))S.loading=5;else{t=y({rel:"stylesheet",href:t,"data-precedence":n},o),(o=ca.get(m))&&uf(t,o);var D=v=l.createElement("link");ft(D),xt(D,"link",t),D._p=new Promise(function(z,Y){D.onload=z,D.onerror=Y}),D.addEventListener("load",function(){S.loading|=1}),D.addEventListener("error",function(){S.loading|=2}),S.loading|=4,Tl(v,n,l)}v={type:"stylesheet",instance:v,count:1,state:S},u.set(m,v)}}}function z2(t,n){tn.X(t,n);var o=ui;if(o&&t){var l=Mr(o).hoistableScripts,u=hi(t),m=l.get(u);m||(m=o.querySelector(Po(u)),m||(t=y({src:t,async:!0},n),(n=ca.get(u))&&ff(t,n),m=o.createElement("script"),ft(m),xt(m,"link",t),o.head.appendChild(m)),m={type:"script",instance:m,count:1,state:null},l.set(u,m))}}function H2(t,n){tn.M(t,n);var o=ui;if(o&&t){var l=Mr(o).hoistableScripts,u=hi(t),m=l.get(u);m||(m=o.querySelector(Po(u)),m||(t=y({src:t,async:!0,type:"module"},n),(n=ca.get(u))&&ff(t,n),m=o.createElement("script"),ft(m),xt(m,"link",t),o.head.appendChild(m)),m={type:"script",instance:m,count:1,state:null},l.set(u,m))}}function nv(t,n,o,l){var u=(u=ne.current)?Al(u):null;if(!u)throw Error(s(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(n=fi(o.href),o=Mr(u).hoistableStyles,l=o.get(n),l||(l={type:"style",instance:null,count:0,state:null},o.set(n,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=fi(o.href);var m=Mr(u).hoistableStyles,v=m.get(t);if(v||(u=u.ownerDocument||u,v={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},m.set(t,v),(m=u.querySelector(Oo(t)))&&!m._p&&(v.instance=m,v.state.loading=5),ca.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},ca.set(t,o),m||B2(u,t,o,v.state))),n&&l===null)throw Error(s(528,""));return v}if(n&&l!==null)throw Error(s(529,""));return null;case"script":return n=o.async,o=o.src,typeof o=="string"&&n&&typeof n!="function"&&typeof n!="symbol"?(n=hi(o),o=Mr(u).hoistableScripts,l=o.get(n),l||(l={type:"script",instance:null,count:0,state:null},o.set(n,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,t))}}function fi(t){return'href="'+aa(t)+'"'}function Oo(t){return'link[rel="stylesheet"]['+t+"]"}function rv(t){return y({},t,{"data-precedence":t.precedence,precedence:null})}function B2(t,n,o,l){t.querySelector('link[rel="preload"][as="style"]['+n+"]")?l.loading=1:(n=t.createElement("link"),l.preload=n,n.addEventListener("load",function(){return l.loading|=1}),n.addEventListener("error",function(){return l.loading|=2}),xt(n,"link",o),ft(n),t.head.appendChild(n))}function hi(t){return'[src="'+aa(t)+'"]'}function Po(t){return"script[async]"+t}function iv(t,n,o){if(n.count++,n.instance===null)switch(n.type){case"style":var l=t.querySelector('style[data-href~="'+aa(o.href)+'"]');if(l)return n.instance=l,ft(l),l;var u=y({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return l=(t.ownerDocument||t).createElement("style"),ft(l),xt(l,"style",u),Tl(l,o.precedence,t),n.instance=l;case"stylesheet":u=fi(o.href);var m=t.querySelector(Oo(u));if(m)return n.state.loading|=4,n.instance=m,ft(m),m;l=rv(o),(u=ca.get(u))&&uf(l,u),m=(t.ownerDocument||t).createElement("link"),ft(m);var v=m;return v._p=new Promise(function(S,D){v.onload=S,v.onerror=D}),xt(m,"link",l),n.state.loading|=4,Tl(m,o.precedence,t),n.instance=m;case"script":return m=hi(o.src),(u=t.querySelector(Po(m)))?(n.instance=u,ft(u),u):(l=o,(u=ca.get(m))&&(l=y({},o),ff(l,u)),t=t.ownerDocument||t,u=t.createElement("script"),ft(u),xt(u,"link",l),t.head.appendChild(u),n.instance=u);case"void":return null;default:throw Error(s(443,n.type))}else n.type==="stylesheet"&&(n.state.loading&4)===0&&(l=n.instance,n.state.loading|=4,Tl(l,o.precedence,t));return n.instance}function Tl(t,n,o){for(var l=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=l.length?l[l.length-1]:null,m=u,v=0;v<l.length;v++){var S=l[v];
vendor: 7,714 bytes, line 9
9if(S.dataset.precedence===n)m=S;else if(m!==u)break}m?m.parentNode.insertBefore(t,m.nextSibling):(n=o.nodeType===9?o.head:o,n.insertBefore(t,n.firstChild))}function uf(t,n){t.crossOrigin==null&&(t.crossOrigin=n.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=n.referrerPolicy),t.title==null&&(t.title=n.title)}function ff(t,n){t.crossOrigin==null&&(t.crossOrigin=n.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=n.referrerPolicy),t.integrity==null&&(t.integrity=n.integrity)}var El=null;function ov(t,n,o){if(El===null){var l=new Map,u=El=new Map;u.set(o,l)}else u=El,l=u.get(o),l||(l=new Map,u.set(o,l));if(l.has(t))return l;for(l.set(t,null),o=o.getElementsByTagName(t),u=0;u<o.length;u++){var m=o[u];if(!(m[Ii]||m[Ct]||t==="link"&&m.getAttribute("rel")==="stylesheet")&&m.namespaceURI!=="http://www.w3.org/2000/svg"){var v=m.getAttribute(n)||"";v=t+v;var S=l.get(v);S?S.push(m):l.set(v,[m])}}return l}function sv(t,n,o){t=t.ownerDocument||t,t.head.insertBefore(o,n==="title"?t.querySelector("head > title"):null)}function q2(t,n,o){if(o===1||n.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof n.precedence!="string"||typeof n.href!="string"||n.href==="")break;return!0;case"link":if(typeof n.rel!="string"||typeof n.href!="string"||n.href===""||n.onLoad||n.onError)break;return n.rel==="stylesheet"?(t=n.disabled,typeof n.precedence=="string"&&t==null):!0;case"script":if(n.async&&typeof n.async!="function"&&typeof n.async!="symbol"&&!n.onLoad&&!n.onError&&n.src&&typeof n.src=="string")return!0}return!1}function lv(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}var Vo=null;function W2(){}function _2(t,n,o){if(Vo===null)throw Error(s(475));var l=Vo;if(n.type==="stylesheet"&&(typeof o.media!="string"||matchMedia(o.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var u=fi(o.href),m=t.querySelector(Oo(u));if(m){t=m._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=Rl.bind(l),t.then(l,l)),n.state.loading|=4,n.instance=m,ft(m);return}m=t.ownerDocument||t,o=rv(o),(u=ca.get(u))&&uf(o,u),m=m.createElement("link"),ft(m);var v=m;v._p=new Promise(function(S,D){v.onload=S,v.onerror=D}),xt(m,"link",o),n.instance=m}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(l.count++,n=Rl.bind(l),t.addEventListener("load",n),t.addEventListener("error",n))}}function G2(){if(Vo===null)throw Error(s(475));var t=Vo;return t.stylesheets&&t.count===0&&hf(t,t.stylesheets),0<t.count?function(n){var o=setTimeout(function(){if(t.stylesheets&&hf(t,t.stylesheets),t.unsuspend){var l=t.unsuspend;t.unsuspend=null,l()}},6e4);return t.unsuspend=n,function(){t.unsuspend=null,clearTimeout(o)}}:null}function Rl(){if(this.count--,this.count===0){if(this.stylesheets)hf(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var kl=null;function hf(t,n){t.stylesheets=null,t.unsuspend!==null&&(t.count++,kl=new Map,n.forEach(U2,t),kl=null,Rl.call(t))}function U2(t,n){if(!(n.state.loading&4)){var o=kl.get(t);if(o)var l=o.get(null);else{o=new Map,kl.set(t,o);for(var u=t.querySelectorAll("link[data-precedence],style[data-precedence]"),m=0;m<u.length;m++){var v=u[m];(v.nodeName==="LINK"||v.getAttribute("media")!=="not all")&&(o.set(v.dataset.precedence,v),l=v)}l&&o.set(null,l)}u=n.instance,v=u.getAttribute("data-precedence"),m=o.get(v)||l,m===l&&o.set(null,u),o.set(v,u),this.count++,l=Rl.bind(this),u.addEventListener("load",l),u.addEventListener("error",l),m?m.parentNode.insertBefore(u,m.nextSibling):(t=t.nodeType===9?t.head:t,t.insertBefore(u,t.firstChild)),n.state.loading|=4}}var Lo={$$typeof:k,Provider:null,Consumer:null,_currentValue:W,_currentValue2:W,_threadCount:0};function I2(t,n,o,l,u,m,v,S){this.tag=1,this.containerInfo=t,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=ld(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ld(0),this.hiddenUpdates=ld(null),this.identifierPrefix=l,this.onUncaughtError=u,this.onCaughtError=m,this.onRecoverableError=v,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=S,this.incompleteTransitions=new Map}function cv(t,n,o,l,u,m,v,S,D,z,Y,K){return t=new I2(t,n,o,v,S,D,z,K),n=1,m===!0&&(n|=24),m=It(3,null,null,n),t.current=m,m.stateNode=t,n=Yd(),n.refCount++,t.pooledCache=n,n.refCount++,m.memoizedState={element:l,isDehydrated:o,cache:n},Xd(m),t}function dv(t){return t?(t=Gr,t):Gr}function uv(t,n,o,l,u,m){u=dv(u),l.context===null?l.context=u:l.pendingContext=u,l=gn(n),l.payload={element:o},m=m===void 0?null:m,m!==null&&(l.callback=m),o=yn(t,l,n),o!==null&&(Xt(o,t,n),fo(o,t,n))}function fv(t,n){if(t=t.memoizedState,t!==null&&t.dehydrated!==null){var o=t.retryLane;t.retryLane=o!==0&&o<n?o:n}}function mf(t,n){fv(t,n),(t=t.alternate)&&fv(t,n)}function hv(t){if(t.tag===13){var n=_r(t,67108864);n!==null&&Xt(n,t,67108864),mf(t,67108864)}}var Dl=!0;function Y2(t,n,o,l){var u=V.T;V.T=null;var m=B.p;try{B.p=2,pf(t,n,o,l)}finally{B.p=m,V.T=u}}function $2(t,n,o,l){var u=V.T;V.T=null;var m=B.p;try{B.p=8,pf(t,n,o,l)}finally{B.p=m,V.T=u}}function pf(t,n,o,l){if(Dl){var u=gf(l);if(u===null)tf(t,n,l,Ml,o),pv(t,l);else if(Z2(u,t,n,o,l))l.stopPropagation();else if(pv(t,l),n&4&&-1<K2.indexOf(t)){for(;u!==null;){var m=Dr(u);if(m!==null)switch(m.tag){case 3:if(m=m.stateNode,m.current.memoizedState.isDehydrated){var v=Jn(m.pendingLanes);if(v!==0){var S=m;for(S.pendingLanes|=2,S.entangledLanes|=2;v;){var D=1<<31-Gt(v);S.entanglements[1]|=D,v&=~D}Ma(m),(Le&6)===0&&(pl=Lt()+500,Ro(0))}}break;case 13:S=_r(m,2),S!==null&&Xt(S,m,2),yl(),mf(m,2)}if(m=gf(l),m===null&&tf(t,n,l,Ml,o),m===u)break;u=m}u!==null&&l.stopPropagation()}else tf(t,n,l,null,o)}}function gf(t){return t=bd(t),yf(t)}var Ml=null;function yf(t){if(Ml=null,t=kr(t),t!==null){var n=d(t);if(n===null)t=null;else{var o=n.tag;if(o===13){if(t=f(n),t!==null)return t;t=null}else if(o===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;t=null}else n!==t&&(t=null)}}return Ml=t,null}function mv(t){switch(t){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(PN()){case Ep:return 2;case Rp:return 8;case js:case VN:return 32;case kp:return 268435456;default:return 32}default:return 32}}var xf=!1,kn=null,Dn=null,Mn=null,Fo=new Map,zo=new Map,On=[],K2="mou
9sedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function pv(t,n){switch(t){case"focusin":case"focusout":kn=null;break;case"dragenter":case"dragleave":Dn=null;break;case"mouseover":case"mouseout":Mn=null;break;case"pointerover":case"pointerout":Fo.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":zo.delete(n.pointerId)}}function Ho(t,n,o,l,u,m){return t===null||t.nativeEvent!==m?(t={blockedOn:n,domEventName:o,eventSystemFlags:l,nativeEvent:m,targetContainers:[u]},n!==null&&(n=Dr(n),n!==null&&hv(n)),t):(t.eventSystemFlags|=l,n=t.targetContainers,u!==null&&n.indexOf(u)===-1&&n.push(u),t)}function Z2(t,n,o,l,u){switch(n){case"focusin":return kn=Ho(kn,t,n,o,l,u),!0;case"dragenter":return Dn=Ho(Dn,t,n,o,l,u),!0;case"mouseover":return Mn=Ho(Mn,t,n,o,l,u),!0;case"pointerover":var m=u.pointerId;return Fo.set(m,Ho(Fo.get(m)||null,t,n,o,l,u)),!0;case"gotpointercapture":return m=u.pointerId,zo.set(m,Ho(zo.get(m)||null,t,n,o,l,u)),!0}return!1}function gv(t){var n=kr(t.target);if(n!==null){var o=d(n);if(o!==null){if(n=o.tag,n===13){if(n=f(o),n!==null){t.blockedOn=n,_N(t.priority,function(){if(o.tag===13){var l=Zt();l=cd(l);var u=_r(o,l);u!==null&&Xt(u,o,l),mf(o,l)}});return}}else if(n===3&&o.stateNode.current.memoizedState.isDehydrated){t.blockedOn=o.tag===3?o.stateNode.containerInfo:null;return}}}t.blockedOn=null}function Ol(t){if(t.blockedOn!==null)return!1;for(var n=t.targetContainers;0<n.length;){var o=gf(t.nativeEvent);if(o===null){o=t.nativeEvent;var l=new o.constructor(o.type,o);vd=l,o.target.dispatchEvent(l),vd=null}else return n=Dr(o),n!==null&&hv(n),t.blockedOn=o,!1;n.shift()}return!0}function yv(t,n,o){Ol(t)&&o.delete(n)}function X2(){xf=!1,kn!==null&&Ol(kn)&&(kn=null),Dn!==null&&Ol(Dn)&&(Dn=null),Mn!==null&&Ol(Mn)&&(Mn=null),Fo.forEach(yv),zo.forEach(yv)}function Pl(t,n){t.blockedOn===n&&(t.blockedOn=null,xf||(xf=!0,e.unstable_scheduleCallback(e.unstable_NormalPriority,X2)))}var Vl=null;function xv(t){Vl!==t&&(Vl=t,e.unstable_scheduleCallback(e.unstable_NormalPriority,function(){Vl===t&&(Vl=null);for(var n=0;n<t.length;n+=3){var o=t[n],l=t[n+1],u=t[n+2];if(typeof l!="function"){if(yf(l||o)===null)continue;break}var m=Dr(o);m!==null&&(t.splice(n,3),n-=3,gu(m,{pending:!0,data:u,method:o.method,action:l},l,u))}}))}function Bo(t){function n(D){return Pl(D,t)}kn!==null&&Pl(kn,t),Dn!==null&&Pl(Dn,t),Mn!==null&&Pl(Mn,t),Fo.forEach(n),zo.forEach(n);for(var o=0;o<On.length;o++){var l=On[o];l.blockedOn===t&&(l.blockedOn=null)}for(;0<On.length&&(o=On[0],o.blockedOn===null);)gv(o),o.blockedOn===null&&On.shift();if(o=(t.ownerDocument||t).$$reactFormReplay,o!=null)for(l=0;l<o.length;l+=3){var u=o[l],m=o[l+1],v=u[Ft]||null;if(typeof m=="function")v||xv(o);else if(v){var S=null;if(m&&m.hasAttribute("formAction")){if(u=m,v=m[Ft]||null)S=v.formAction;else if(yf(u)!==null)continue}else S=v.action;typeof S=="function"?o[l+1]=S:(o.splice(l,3),l-=3),xv(o)}}}function vf(t){this._internalRoot=t}Ll.prototype.render=vf.prototype.render=function(t){var n=this._internalRoot;if(n===null)throw Error(s(409));var o=n.current,l=Zt();uv(o,l,t,n,null,null)},Ll.prototype.unmount=vf.prototype.unmount=function(){var t=this._internalRoot;if(t!==null){this._internalRoot=null;var n=t.containerInfo;uv(t.current,2,null,t,null,null),yl(),n[Rr]=null}};function Ll(t){this._internalRoot=t}Ll.prototype.unstable_scheduleHydration=function(t){if(t){var n=Vp();t={blockedOn:null,target:t,priority:n};for(var o=0;o<On.length&&n!==0&&n<On[o].priority;o++);On.splice(o,0,t),o===0&&gv(t)}};var vv=a.version;if(vv!=="19.1.0")throw Error(s(527,vv,"19.1.0"));B.findDOMNode=function(t){var n=t._reactInternals;if(n===void 0)throw typeof t.render=="function"?Error(s(188)):(t=Object.keys(t).join(","),Error(s(268,t)));return t=g(n),t=t!==null?p(t):null,t=t===null?null:t.stateNode,t};var Q2={bundleType:0,version:"19.1.0",rendererPackageName:"react-dom",currentDispatcherRef:V,reconcilerVersion:"19.1.0"};
9if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Fl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Fl.isDisabled&&Fl.supportsFiber)try{_i=Fl.inject(Q2),_t=Fl}catch{}}return Wo.createRoot=function(t,n){if(!c(t))throw Error(s(299));var o=!1,l="",u=Vy,m=Ly,v=Fy,S=null;return n!=null&&(n.unstable_strictMode===!0&&(o=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onUncaughtError!==void 0&&(u=n.onUncaughtError),n.onCaughtError!==void 0&&(m=n.onCaughtError),n.onRecoverableError!==void 0&&(v=n.onRecoverableError),n.unstable_transitionCallbacks!==void 0&&(S=n.unstable_transitionCallbacks)),n=cv(t,1,!1,null,null,o,l,u,m,v,S,null),t[Rr]=n.current,ef(t),new vf(n)},Wo.hydrateRoot=function(t,n,o){if(!c(t))throw Error(s(299));var l=!1,u="",m=Vy,v=Ly,S=Fy,D=null,z=null;return o!=null&&(o.unstable_strictMode===!0&&(l=!0),o.identifierPrefix!==void 0&&(u=o.identifierPrefix),o.onUncaughtError!==void 0&&(m=o.onUncaughtError),o.onCaughtError!==void 0&&(v=o.onCaughtError),o.onRecoverableError!==void 0&&(S=o.onRecoverableError),o.unstable_transitionCallbacks!==void 0&&(D=o.unstable_transitionCallbacks),o.formState!==void 0&&(z=o.formState)),n=cv(t,1,!0,n,o??null,l,u,m,v,S,D,z),n.context=dv(null),o=n.current,l=Zt(),l=cd(l),u=gn(l),u.callback=null,yn(o,u,l),o=l,n.current.lanes=o,Ui(n,o),Ma(n),t[Rr]=n.current,ef(t),new Ll(n)},Wo.version="19.1.0",Wo}var Rv;function lT(){if(Rv)return wf.exports;Rv=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(a){console.error(a)}}return e(),wf.exports=sT(),wf.exports}var cT=lT(),w=Lc();const ze=ps(w),Fc=eT({__proto__:null,default:ze},[w]);var Af,kv;function dT(){if(kv)return Af;kv=1;var e=typeof Element<"u",a=typeof Map=="function",i=typeof Set=="function",s=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function c(d,f){if(d===f)return!0;if(d&&f&&typeof d=="object"&&typeof f=="object"){if(d.constructor!==f.constructor)return!1;var h,g,p;if(Array.isArray(d)){if(h=d.length,h!=f.length)return!1;for(g=h;g--!==0;)if(!c(d[g],f[g]))return!1;return!0}var y;if(a&&d instanceof Map&&f instanceof Map){if(d.size!==f.size)return!1;for(y=d.entries();!(g=y.next()).done;)if(!f.has(g.value[0]))return!1;for(y=d.entries();!(g=y.next()).done;)if(!c(g.value[1],f.get(g.value[0])))return!1;return!0}if(i&&d instanceof Set&&f instanceof Set){if(d.size!==f.size)return!1;for(y=d.entries();!(g=y.next()).done;)if(!f.has(g.value[0]))return!1;return!0}if(s&&ArrayBuffer.isView(d)&&ArrayBuffer.isView(f)){if(h=d.length,h!=f.length)return!1;for(g=h;g--!==0;)if(d[g]!==f[g])return!1;return!0}if(d.constructor===RegExp)return d.source===f.source&&d.flags===f.flags;if(d.valueOf!==Object.prototype.valueOf&&typeof d.valueOf=="function"&&typeof f.valueOf=="function")return d.valueOf()===f.valueOf();if(d.toString!==Object.prototype.toString&&typeof d.toString=="function"&&typeof f.toString=="function")return d.toString()===f.toString();if(p=Object.keys(d),h=p.length,h!==Object.keys(f).length)return!1;for(g=h;g--!==0;)if(!Object.prototype.hasOwnProperty.call(f,p[g]))return!1;if(e&&d instanceof Element)return!1;for(g=h;g--!==0;)if(!((p[g]==="_owner"||p[g]==="__v"||p[g]==="__o")&&d.$$typeof)&&!c(d[p[g]],f[p[g]]))return!1;return!0}return d!==d&&f!==f}return Af=function(f,h){try{return c(f,h)}catch(g){if((g.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw g}},Af}var uT=dT();const fT=ps(uT);var Tf,Dv;function hT(){if(Dv)return Tf;Dv=1;var e=function(a,i,s,c,d,f,h,g){if(!a){var p;if(i===void 0)p=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var y=[s,c,d,f,h,g],x=0;p=new Error(i.replace(/%s/g,function(){return y[x++]})),p.name="Invariant Violation"}throw p.framesToPop=1,p}};return Tf=e,Tf}var mT=hT();const Mv=ps(mT);var Ef,Ov;function pT(){return Ov||(Ov=1,Ef=function(a,i,s,c){var d=s?s.call(c,a,i):void 0;if(d!==void 0)return!!d;if(a===i)return!0;if(typeof a!="object"||!a||typeof i!="object"||!i)return!1;var f=Object.keys(a),h=Object.keys(i);if(f.length!==h.length)return!1;for(var g=Object.prototype.hasOwnProperty.bind(i),p=0;p<f.length;p++){var y=f[p];if(!g(y))return!1;var x=a[y],b=i[y];if(d=s?s.call(c,x,b,y):void 0,d===!1||d===void 0&&x!==b)return!1}return!0}),Ef}var gT=pT();const yT=ps(gT);var Gw=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(Gw||{}),Rf={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]}
9,meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},Pv=Object.values(Gw),zc={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},Uw=Object.entries(zc).reduce((e,[a,i])=>(e[i]=a,e),{}),Ca="data-rh",ji={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},Ni=(e,a)=>{for(let i=e.length-1;i>=0;i-=1){const s=e[i];if(Object.prototype.hasOwnProperty.call(s,a))return s[a]}return null},xT=e=>{let a=Ni(e,"title");const i=Ni(e,ji.TITLE_TEMPLATE);if(Array.isArray(a)&&(a=a.join("")),i&&a)return i.replace(/%s/g,()=>a);const s=Ni(e,ji.DEFAULT_TITLE);return a||s||void 0},vT=e=>Ni(e,ji.ON_CHANGE_CLIENT_STATE)||(()=>{}),kf=(e,a)=>a.filter(i=>typeof i[e]<"u").map(i=>i[e]).reduce((i,s)=>({...i,...s}),{}),bT=(e,a)=>a.filter(i=>typeof i.base<"u").map(i=>i.base).reverse().reduce((i,s)=>{if(!i.length){const c=Object.keys(s);for(let d=0;d<c.length;d+=1){const h=c[d].toLowerCase();if(e.indexOf(h)!==-1&&s[h])return i.concat(s)}}return i},[]),wT=e=>console&&typeof console.warn=="function"&&console.warn(e),_o=(e,a,i)=>{const s={};return i.filter(c=>Array.isArray(c[e])?!0:(typeof c[e]<"u"&&wT(`Helmet: ${e} should be of type "Array". Instead found type "${typeof c[e]}"`),!1)).map(c=>c[e]).reverse().reduce((c,d)=>{const f={};d.filter(g=>{let p;const y=Object.keys(g);for(let b=0;b<y.length;b+=1){const j=y[b],N=j.toLowerCase();a.indexOf(N)!==-1&&!(p==="rel"&&g[p].toLowerCase()==="canonical")&&!(N==="rel"&&g[N].toLowerCase()==="stylesheet")&&(p=N),a.indexOf(j)!==-1&&(j==="innerHTML"||j==="cssText"||j==="itemprop")&&(p=j)}if(!p||!g[p])return!1;const x=g[p].toLowerCase();return s[p]||(s[p]={}),f[p]||(f[p]={}),s[p][x]?!1:(f[p][x]=!0,!0)}).reverse().forEach(g=>c.push(g));const h=Object.keys(f);for(let g=0;g<h.length;g+=1){const p=h[g],y={...s[p],...f[p]};s[p]=y}return c},[]).reverse()},CT=(e,a)=>{if(Array.isArray(e)&&e.length){for(let i=0;i<e.length;i+=1)if(e[i][a])return!0}return!1},ST=e=>({baseTag:bT(["href"],e),bodyAttributes:kf("bodyAttributes",e),defer:Ni(e,ji.DEFER),encode:Ni(e,ji.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:kf("htmlAttributes",e),linkTags:_o("link",["rel","href"],e),metaTags:_o("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:_o("noscript",["innerHTML"],e),onChangeClientState:vT(e),scriptTags:_o("script",["src","innerHTML"],e),styleTags:_o("style",["cssText"],e),title:xT(e),titleAttributes:kf("titleAttributes",e),prioritizeSeoTags:CT(e,ji.PRIORITIZE_SEO_TAGS)}),Iw=e=>Array.isArray(e)?e.join(""):e,jT=(e,a)=>{const i=Object.keys(e);for(let s=0;s<i.length;s+=1)if(a[i[s]]&&a[i[s]].includes(e[i[s]]))return!0;return!1},Df=(e,a)=>Array.isArray(e)?e.reduce((i,s)=>(jT(s,a)?i.priority.push(s):i.default.push(s),i),{priority:[],default:[]}):{default:e,priority:[]},Vv=(e,a)=>({...e,[a]:void 0}),NT=["noscript","script","style"],Th=(e,a=!0)=>a===!1?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),Yw=e=>Object.keys(e).reduce((a,i)=>{const s=typeof e[i]<"u"?`${i}="${e[i]}"`:`${i}`;return a?`${a} ${s}`:s},""),AT=(e,a,i,s)=>{const c=Yw(i),d=Iw(a);return c?`<${e} ${Ca}="true" ${c}>${Th(d,s)}</${e}>`:`<${e} ${Ca}="true">${Th(d,s)}</${e}>`},TT=(e,a,i=!0)=>a.reduce((s,c)=>{const d=c,f=Object.keys(d).filter(p=>!(p==="innerHTML"||p==="cssText")).reduce((p,y)=>{const x=typeof d[y]>"u"?y:`${y}="${Th(d[y],i)}"`;return p?`${p} ${x}`:x},""),h=d.innerHTML||d.cssText||"",g=NT.indexOf(e)===-1;return`${s}<${e} ${Ca}="true" ${f}${g?"/>":`>${h}</${e}>`}`},""),$w=(e,a={})=>Object.keys(e).reduce((i,s)=>{const c=zc[s];return i[c||s]=e[s],i},a),ET=(e,a,i)=>{const s={key:a,[Ca]:!0},c=$w(i,s);return[ze.createElement("title",c,a)]},ec=(e,a)=>a.map((i,s)=>{const c={key:s,[Ca]:!0};
9return Object.keys(i).forEach(d=>{const h=zc[d]||d;if(h==="innerHTML"||h==="cssText"){const g=i.innerHTML||i.cssText;c.dangerouslySetInnerHTML={__html:g}}else c[h]=i[d]}),ze.createElement(e,c)}),da=(e,a,i=!0)=>{switch(e){case"title":return{toComponent:()=>ET(e,a.title,a.titleAttributes),toString:()=>AT(e,a.title,a.titleAttributes,i)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>$w(a),toString:()=>Yw(a)};default:return{toComponent:()=>ec(e,a),toString:()=>TT(e,a,i)}}},RT=({metaTags:e,linkTags:a,scriptTags:i,encode:s})=>{const c=Df(e,Rf.meta),d=Df(a,Rf.link),f=Df(i,Rf.script);return{priorityMethods:{toComponent:()=>[...ec("meta",c.priority),...ec("link",d.priority),...ec("script",f.priority)],toString:()=>`${da("meta",c.priority,s)} ${da("link",d.priority,s)} ${da("script",f.priority,s)}`},metaTags:c.default,linkTags:d.default,scriptTags:f.default}},kT=e=>{const{baseTag:a,bodyAttributes:i,encode:s=!0,htmlAttributes:c,noscriptTags:d,styleTags:f,title:h="",titleAttributes:g,prioritizeSeoTags:p}=e;let{linkTags:y,metaTags:x,scriptTags:b}=e,j={toComponent:()=>[],toString:()=>""};return p&&({priorityMethods:j,linkTags:y,metaTags:x,scriptTags:b}=RT(e)),{priority:j,base:da("base",a,s),bodyAttributes:da("bodyAttributes",i,s),htmlAttributes:da("htmlAttributes",c,s),link:da("link",y,s),meta:da("meta",x,s),noscript:da("noscript",d,s),script:da("script",b,s),style:da("style",f,s),title:da("title",{title:h,titleAttributes:g},s)}},Eh=kT,zl=[],jm=!!(typeof window<"u"&&window.document&&window.document.createElement),Rh=class{instances=[];canUseDOM=jm;context;value={setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?zl:this.instances,add:e=>{(this.canUseDOM?zl:this.instances).push(e)},remove:e=>{const a=(this.canUseDOM?zl:this.instances).indexOf(e);(this.canUseDOM?zl:this.instances).splice(a,1)}}};constructor(e,a){this.context=e,this.canUseDOM=a||!1,a||(e.helmet=Eh({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},DT=parseInt(ze.version.split(".")[0],10),kh=DT>=19,MT={},Kw=ze.createContext(MT),Zw=class Xw extends w.Component{static canUseDOM=jm;helmetData;constructor(a){super(a),kh?this.helmetData=null:this.helmetData=new Rh(this.props.context||{},Xw.canUseDOM)}render(){return kh?ze.createElement(ze.Fragment,null,this.props.children):ze.createElement(Kw.Provider,{value:this.helmetData.value},this.props.children)}},mi=(e,a)=>{const i=document.head||document.querySelector("head"),s=i.querySelectorAll(`${e}[${Ca}]`),c=[].slice.call(s),d=[];let f;return a&&a.length&&a.forEach(h=>{const g=document.createElement(e);for(const p in h)if(Object.prototype.hasOwnProperty.call(h,p))if(p==="innerHTML")g.innerHTML=h.innerHTML;else if(p==="cssText"){const y=h.cssText;g.appendChild(document.createTextNode(y))}else{const y=p,x=typeof h[y]>"u"?"":h[y];g.setAttribute(p,x)}g.setAttribute(Ca,"true"),c.some((p,y)=>(f=y,g.isEqualNode(p)))?c.splice(f,1):d.push(g)}),c.forEach(h=>h.parentNode?.removeChild(h)),d.forEach(h=>i.appendChild(h)),{oldTags:c,newTags:d}},Dh=(e,a)=>{const i=document.getElementsByTagName(e)[0];if(!i)return;const s=i.getAttribute(Ca),c=s?s.split(","):[],d=[...c],f=Object.keys(a);for(const h of f){const g=a[h]||"";i.getAttribute(h)!==g&&i.setAttribute(h,g),c.indexOf(h)===-1&&c.push(h);const p=d.indexOf(h);p!==-1&&d.splice(p,1)}for(let h=d.length-1;h>=0;
9h-=1)i.removeAttribute(d[h]);c.length===d.length?i.removeAttribute(Ca):i.getAttribute(Ca)!==f.join(",")&&i.setAttribute(Ca,f.join(","))},OT=(e,a)=>{typeof e<"u"&&document.title!==e&&(document.title=Iw(e)),Dh("title",a)},Lv=(e,a)=>{const{baseTag:i,bodyAttributes:s,htmlAttributes:c,linkTags:d,metaTags:f,noscriptTags:h,onChangeClientState:g,scriptTags:p,styleTags:y,title:x,titleAttributes:b}=e;Dh("body",s),Dh("html",c),OT(x,b);const j={baseTag:mi("base",i),linkTags:mi("link",d),metaTags:mi("meta",f),noscriptTags:mi("noscript",h),scriptTags:mi("script",p),styleTags:mi("style",y)},N={},C={};Object.keys(j).forEach(A=>{const{newTags:E,oldTags:R}=j[A];E.length&&(N[A]=E),R.length&&(C[A]=j[A].oldTags)}),a&&a(),g(e,N,C)},Go=null,PT=e=>{Go&&cancelAnimationFrame(Go),e.defer?Go=requestAnimationFrame(()=>{Lv(e,()=>{Go=null})}):(Lv(e),Go=null)},VT=PT,Fv=class extends w.Component{rendered=!1;shouldComponentUpdate(e){return!yT(e,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:e}=this.props.context;e.remove(this),this.emitChange()}emitChange(){const{helmetInstances:e,setHelmet:a}=this.props.context;let i=null;const s=ST(e.get().map(c=>{const{context:d,...f}=c.props;return f}));Zw.canUseDOM?VT(s):Eh&&(i=Eh(s)),a(i)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:e}=this.props.context;e.add(this),this.emitChange()}render(){return this.init(),null}},tc=[],zv=e=>{const a={};for(const i of Object.keys(e))a[Uw[i]||i]=e[i];return a},yr=e=>{const a={};for(const i of Object.keys(e)){const s=zc[i];a[s||i]=e[i]}return a},Hv=(e,a)=>{if(!jm)return;const i=document.getElementsByTagName(e)[0];if(!i)return;const s="data-rh-managed",c=i.getAttribute(s),d=c?c.split(","):[],f=Object.keys(a);for(const h of d)f.includes(h)||i.removeAttribute(h);for(const h of f){const g=a[h];g==null||g===!1?i.removeAttribute(h):g===!0?i.setAttribute(h,""):i.setAttribute(h,String(g))}f.length>0?i.setAttribute(s,f.join(",")):i.removeAttribute(s)},Mf=()=>{const e={},a={};for(const i of tc){const{htmlAttributes:s,bodyAttributes:c}=i.props;s&&Object.assign(e,zv(s)),c&&Object.assign(a,zv(c))}Hv("html",e),Hv("body",a)},LT=class extends w.Component{componentDidMount(){tc.push(this),Mf()}componentDidUpdate(){Mf()}componentWillUnmount(){const e=tc.indexOf(this);e!==-1&&tc.splice(e,1),Mf()}resolveTitle(){const{title:e,titleTemplate:a,defaultTitle:i}=this.props;return e&&a?a.replace(/%s/g,()=>Array.isArray(e)?e.join(""):e):e||i||void 0}renderTitle(){const e=this.resolveTitle();if(e===void 0)return null;const a=this.props.titleAttributes||{};return ze.createElement("title",yr(a),e)}renderBase(){const{base:e}=this.props;return e?ze.createElement("base",yr(e)):null}renderMeta(){const{meta:e}=this.props;return!e||!Array.isArray(e)?null:e.map((a,i)=>ze.createElement("meta",{key:i,...yr(a)}))}renderLink(){const{link:e}=this.props;return!e||!Array.isArray(e)?null:e.map((a,i)=>ze.createElement("link",{key:i,...yr(a)}))}renderScript(){const{script:e}=this.props;return!e||!Array.isArray(e)?null:e.map((a,i)=>{const{innerHTML:s,...c}=a,d=yr(c);return s&&(d.dangerouslySetInnerHTML={__html:s}),ze.createElement("script",{key:i,...d})})}renderStyle(){const{style:e}=this.props;return!e||!Array.isArray(e)?null:e.map((a,i)=>{const{cssText:s,...c}=a,d=yr(c);return s&&(d.dangerouslySetInnerHTML={__html:s}),ze.createElement("style",{key:i,...d})})}renderNoscript(){const{noscript:e}=this.props;return!e||!Array.isArray(e)?null:e.map((a,i)=>{const{innerHTML:s,...c}=a,d=yr(c);return s&&(d.dangerouslySetInnerHTML={__html:s}),ze.createElement("noscript",{key:i,...d})})}render(){return ze.createElement(ze.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},Qw=class extends w.Component{static defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1};shouldComponentUpdate(e){return!fT(Vv(this.props,"helmetData"),Vv(e,"helmetData"))}mapNestedChildrenToProps(e,a){if(!a)return null;switch(e.type){case"script":case"noscript":return{innerHTML:a};case"style":return{cssText:a};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,a,i,s){return{...a,[e.type]:[...a[e.type]||[],{...i,...this.mapNestedChildrenToProps(e,s)}]}}mapObjectTypeChildren(e,a,i,s){switch(e.type){case"title":return{...a,[e.type]:s,titleAttributes:{...i}};case"body":return{...a,bodyAttributes:{...i}};case"html":return{...a,htmlAttributes:{...i}};default:return{...a,[e.type]:{...i}}}}mapArrayTypeChildrenToProps(e,a){let i={...a};return Object.keys(e).forEach(s=>{i={...i,[s]:e[s]}}),i}
9warnOnInvalidChildren(e,a){return Mv(Pv.some(i=>e.type===i),typeof e.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${Pv.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),Mv(!a||typeof a=="string"||Array.isArray(a)&&!a.some(i=>typeof i!="string"),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,a){let i={};return ze.Children.forEach(e,s=>{if(!s||!s.props)return;const{children:c,...d}=s.props,f=Object.keys(d).reduce((g,p)=>(g[Uw[p]||p]=d[p],g),{});let{type:h}=s;switch(typeof h=="symbol"?h=h.toString():this.warnOnInvalidChildren(s,c),h){case"Symbol(react.fragment)":a=this.mapChildrenToProps(c,a);break;case"link":case"meta":case"noscript":case"script":case"style":i=this.flattenArrayTypeChildren(s,i,f,c);break;default:a=this.mapObjectTypeChildren(s,a,f,c);break}}),this.mapArrayTypeChildrenToProps(i,a)}render(){const{children:e,...a}=this.props;let i={...a},{helmetData:s}=a;if(e&&(i=this.mapChildrenToProps(e,i)),s&&!(s instanceof Rh)){const c=s;s=new Rh(c.context,!0),delete i.helmetData}return kh?ze.createElement(LT,{...i}):s?ze.createElement(Fv,{...i,context:s.value}):ze.createElement(Kw.Consumer,null,c=>ze.createElement(Fv,{...i,context:c}))}};function FT(e,a){if(e instanceof RegExp)return{keys:!1,pattern:e};var i,s,c,d,f=[],h="",g=e.split("/");for(g[0]||g.shift();c=g.shift();)i=c[0],i==="*"?(f.push(i),h+=c[1]==="?"?"(?:/(.*))?":"/(.*)"):i===":"?(s=c.indexOf("?",1),d=c.indexOf(".",1),f.push(c.substring(1,~s?s:~d?d:c.length)),h+=~s&&!~d?"(?:/([^/]+?))?":"/([^/]+?)",~d&&(h+=(~s?"?":"")+"\\"+c.substring(d))):h+="/"+c;return{keys:f,pattern:new RegExp("^"+h+(a?"(?=$|/)":"/?$"),"i")}}var Of={exports:{}},Pf={};var Bv;function zT(){if(Bv)return Pf;Bv=1;var e=Lc();function a(x,b){return x===b&&(x!==0||1/x===1/b)||x!==x&&b!==b}var i=typeof Object.is=="function"?Object.is:a,s=e.useState,c=e.useEffect,d=e.useLayoutEffect,f=e.useDebugValue;function h(x,b){var j=b(),N=s({inst:{value:j,getSnapshot:b}}),C=N[0].inst,A=N[1];return d(function(){C.value=j,C.getSnapshot=b,g(C)&&A({inst:C})},[x,j,b]),c(function(){return g(C)&&A({inst:C}),x(function(){g(C)&&A({inst:C})})},[x]),f(j),j}function g(x){var b=x.getSnapshot;x=x.value;try{var j=b();return!i(x,j)}catch{return!0}}function p(x,b){return b()}var y=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?p:h;return Pf.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:y,Pf}var qv;function HT(){return qv||(qv=1,Of.exports=zT()),Of.exports}var BT=HT();const qT=Fc.useInsertionEffect,WT=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",_T=WT?w.useLayoutEffect:w.useEffect,GT=qT||_T,Jw=e=>{const a=w.useRef([e,(...i)=>a[0](...i)]).current;return GT(()=>{a[0]=e}),a[1]},UT="popstate",Nm="pushState",Am="replaceState",IT="hashchange",Wv=[UT,Nm,Am,IT],YT=e=>{for(const a of Wv)addEventListener(a,e);return()=>{for(const a of Wv)removeEventListener(a,e)}},eC=(e,a)=>BT.useSyncExternalStore(YT,e,a),_v=()=>location.search,$T=({ssrSearch:e}={})=>eC(_v,e!=null?()=>e:_v),Gv=()=>location.pathname,KT=({ssrPath:e}={})=>eC(Gv,e!=null?()=>e:Gv),ZT=(e,{replace:a=!1,state:i=null}={})=>history[a?Am:Nm](i,"",e),XT=(e={})=>[KT(e),ZT],Uv=Symbol.for("wouter_v3");if(typeof history<"u"&&typeof window[Uv]>"u"){for(const e of[Nm,Am]){const a=history[e];history[e]=function(){const i=a.apply(this,arguments),s=new Event(e);return s.arguments=arguments,dispatchEvent(s),i}}Object.defineProperty(window,Uv,{value:!0})}const QT=(e,a)=>a.toLowerCase().indexOf(e.toLowerCase())?"~"+a:a.slice(e.length)||"/",tC=(e="")=>e==="/"?"":e,JT=(e,a)=>e[0]==="~"?e.slice(1):tC(a)+e,eE=(e="",a)=>QT(Iv(tC(e)),Iv(a)),Iv=e=>{try{return decodeURI(e)}catch{return e}},aC={hook:XT,searchHook:$T,parser:FT,base:"",ssrPath:void 0,ssrSearch:void 0,ssrContext:void 0,hrefs:e=>e,aroundNav:(e,a,i)=>e(a,i)},nC=w.createContext(aC),Hc=()=>w.useContext(nC),rC={},iC=w.createContext(rC),tE=()=>w.useContext(iC),Tm=e=>{const[a,i]=e.hook(e);return[eE(e.base,a),Jw((s,c)=>e.aroundNav(i,JT(s,e.base),c))]},oC=(e,a,i,s)=>{const{pattern:c,keys:d}=a instanceof RegExp?{keys:!1,pattern:a}:e(a||"*",s),f=c.exec(i)||[],[h,...g]=f;return h!==void 0?[!0,(()=>{const p=d!==!1?Object.fromEntries(d.map((x,b)=>[x,g[b]])):f.groups;let y={...g};return p&&Object.assign(y,p),y})(),...s?[h]:[]]:[!1,null]},sC=({children:e,...a})=>{const i=Hc(),s=a.hook?aC:i;let c=s;const[d,f=a.ssrSearch??""]=a.ssrPath?.split("?")??[];d&&(a.ssrSearch=f,a.ssrPath=d),a.hrefs=a.hrefs??a.hook?.hrefs,a.searchHook=a.searchHook??a.hook?.searchHook;let h=w.useRef({}),g=h.current,p=g;
9for(let y in s){const x=y==="base"?s[y]+(a[y]??""):a[y]??s[y];g===p&&x!==p[y]&&(h.current=p={...p}),p[y]=x,(x!==s[y]||x!==c[y])&&(c=p)}return w.createElement(nC.Provider,{value:c,children:e})},Yv=({children:e,component:a},i)=>a?w.createElement(a,{params:i}):typeof e=="function"?e(i):e,aE=e=>{let a=w.useRef(rC);const i=a.current;return a.current=Object.keys(e).length!==Object.keys(i).length||Object.entries(e).some(([s,c])=>c!==i[s])?e:i},be=({path:e,nest:a,match:i,...s})=>{const c=Hc(),[d]=Tm(c),[f,h,g]=i??oC(c.parser,e,d,a),p=aE({...tE(),...h});if(!f)return null;const y=g?w.createElement(sC,{base:g},Yv(s,p)):Yv(s,p);return w.createElement(iC.Provider,{value:p,children:y})},Z=w.forwardRef((e,a)=>{const i=Hc(),[s,c]=Tm(i),{to:d="",href:f=d,onClick:h,asChild:g,children:p,className:y,replace:x,state:b,transition:j,...N}=e,C=Jw(E=>{E.ctrlKey||E.metaKey||E.altKey||E.shiftKey||E.button!==0||(h?.(E),E.defaultPrevented||(E.preventDefault(),c(f,e)))}),A=i.hrefs(f[0]==="~"?f.slice(1):i.base+f,i);return g&&w.isValidElement(p)?w.cloneElement(p,{onClick:C,href:A}):w.createElement("a",{...N,onClick:C,href:A,className:y?.call?y(s===f):y,children:p,ref:a})}),lC=e=>Array.isArray(e)?e.flatMap(a=>lC(a&&a.type===w.Fragment?a.props.children:a)):[e],nE=({children:e,location:a})=>{const i=Hc(),[s]=Tm(i);for(const c of lC(e)){let d=0;if(w.isValidElement(c)&&(d=oC(i.parser,c.props.path,a||s,c.props.nest))[0])return w.cloneElement(c,{match:d})}return null};var Bc=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},rE={setTimeout:(e,a)=>setTimeout(e,a),clearTimeout:e=>clearTimeout(e),setInterval:(e,a)=>setInterval(e,a),clearInterval:e=>clearInterval(e)},iE=class{#e=rE;#a=!1;setTimeoutProvider(e){this.#e=e}setTimeout(e,a){return this.#e.setTimeout(e,a)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,a){return this.#e.setInterval(e,a)}clearInterval(e){this.#e.clearInterval(e)}},Mh=new iE;function oE(e){setTimeout(e,0)}var qc=typeof window>"u"||"Deno"in globalThis;function wa(){}function sE(e,a){return typeof e=="function"?e(a):e}function lE(e){return typeof e=="number"&&e>=0&&e!==1/0}function cE(e,a){return Math.max(e+(a||0)-Date.now(),0)}function Oh(e,a){return typeof e=="function"?e(a):e}function dE(e,a){return typeof e=="function"?e(a):e}function $v(e,a){const{type:i="all",exact:s,fetchStatus:c,predicate:d,queryKey:f,stale:h}=e;if(f){if(s){if(a.queryHash!==Em(f,a.options))return!1}else if(!os(a.queryKey,f))return!1}if(i!=="all"){const g=a.isActive();if(i==="active"&&!g||i==="inactive"&&g)return!1}return!(typeof h=="boolean"&&a.isStale()!==h||c&&c!==a.state.fetchStatus||d&&!d(a))}function Kv(e,a){const{exact:i,status:s,predicate:c,mutationKey:d}=e;if(d){if(!a.options.mutationKey)return!1;if(i){if(is(a.options.mutationKey)!==is(d))return!1}else if(!os(a.options.mutationKey,d))return!1}return!(s&&a.state.status!==s||c&&!c(a))}function Em(e,a){return(a?.queryKeyHashFn||is)(e)}function is(e){return JSON.stringify(e,(a,i)=>Ph(i)?Object.keys(i).sort().reduce((s,c)=>(s[c]=i[c],s),{}):i)}function os(e,a){return e===a?!0:typeof e!=typeof a?!1:e&&a&&typeof e=="object"&&typeof a=="object"?Object.keys(a).every(i=>os(e[i],a[i])):!1}var uE=Object.prototype.hasOwnProperty;function cC(e,a,i=0){if(e===a)return e;if(i>500)return a;const s=Zv(e)&&Zv(a);if(!s&&!(Ph(e)&&Ph(a)))return a;const d=(s?e:Object.keys(e)).length,f=s?a:Object.keys(a),h=f.length,g=s?new Array(h):{};let p=0;for(let y=0;y<h;y++){const x=s?y:f[y],b=e[x],j=a[x];if(b===j){g[x]=b,(s?y<d:uE.call(e,x))&&p++;continue}if(b===null||j===null||typeof b!="object"||typeof j!="object"){g[x]=j;continue}const N=cC(b,j,i+1);g[x]=N,N===b&&p++}return d===h&&p===d?e:g}function Zv(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function Ph(e){if(!Xv(e))return!1;const a=e.constructor;if(a===void 0)return!0;const i=a.prototype;return!(!Xv(i)||!i.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function Xv(e){return Object.prototype.toString.call(e)==="[object Object]"}function fE(e){return new Promise(a=>{Mh.setTimeout(a,e)})}function hE(e,a,i){return typeof i.structuralSharing=="function"?i.structuralSharing(e,a):i.structuralSharing!==!1?cC(e,a):a}function mE(e,a,i=0){const s=[...e,a];return i&&s.length>i?s.slice(1):s}function pE(e,a,i=0){const s=[a,...e];return i&&s.length>i?s.slice(0,-1):s}var Rm=Symbol();function dC(e,a){return!e.queryFn&&a?.initialPromise?()=>a.initialPromise:!e.queryFn||e.queryFn===Rm?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function gE(e,a,i){let s=!1,c;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(c??=a(),s||(s=!0,c.aborted?i():c.addEventListener("abort",i,{once:!0})),c)}),e}var yE=class extends Bc{#e;#a;#t;constructor(){super(),this.#t=e=>{if(!qc&&window.addEventListener){const a=()=>e();return window.addEventListener("visibilitychange",a,!1),()=>{window.removeEventListener("visibilitychange",a)}}}}onSubscribe(){this.#a||this.setEventListener(this.#t)}onUnsubscribe(){this.hasListeners()||(this.#a?.(),this.#a=void 0)}setEventListener(e){this.#t=e,this.#a?.(),this.#a=e(a=>{typeof a=="boolean"?this.setFocused(a):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){const e=this.isFocused();
vendor: 17,558 bytes, line 9
9this.listeners.forEach(a=>{a(e)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},uC=new yE;function xE(){let e,a;const i=new Promise((c,d)=>{e=c,a=d});i.status="pending",i.catch(()=>{});function s(c){Object.assign(i,c),delete i.resolve,delete i.reject}return i.resolve=c=>{s({status:"fulfilled",value:c}),e(c)},i.reject=c=>{s({status:"rejected",reason:c}),a(c)},i}var vE=oE;function bE(){let e=[],a=0,i=h=>{h()},s=h=>{h()},c=vE;const d=h=>{a?e.push(h):c(()=>{i(h)})},f=()=>{const h=e;e=[],h.length&&c(()=>{s(()=>{h.forEach(g=>{i(g)})})})};return{batch:h=>{let g;a++;try{g=h()}finally{a--,a||f()}return g},batchCalls:h=>(...g)=>{d(()=>{h(...g)})},schedule:d,setNotifyFunction:h=>{i=h},setBatchNotifyFunction:h=>{s=h},setScheduler:h=>{c=h}}}var kt=bE(),wE=class extends Bc{#e=!0;#a;#t;constructor(){super(),this.#t=e=>{if(!qc&&window.addEventListener){const a=()=>e(!0),i=()=>e(!1);return window.addEventListener("online",a,!1),window.addEventListener("offline",i,!1),()=>{window.removeEventListener("online",a),window.removeEventListener("offline",i)}}}}onSubscribe(){this.#a||this.setEventListener(this.#t)}onUnsubscribe(){this.hasListeners()||(this.#a?.(),this.#a=void 0)}setEventListener(e){this.#t=e,this.#a?.(),this.#a=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(i=>{i(e)}))}isOnline(){return this.#e}},pc=new wE;function CE(e){return Math.min(1e3*2**e,3e4)}function fC(e){return(e??"online")==="online"?pc.isOnline():!0}var Vh=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function hC(e){let a=!1,i=0,s;const c=xE(),d=()=>c.status!=="pending",f=C=>{if(!d()){const A=new Vh(C);b(A),e.onCancel?.(A)}},h=()=>{a=!0},g=()=>{a=!1},p=()=>uC.isFocused()&&(e.networkMode==="always"||pc.isOnline())&&e.canRun(),y=()=>fC(e.networkMode)&&e.canRun(),x=C=>{d()||(s?.(),c.resolve(C))},b=C=>{d()||(s?.(),c.reject(C))},j=()=>new Promise(C=>{s=A=>{(d()||p())&&C(A)},e.onPause?.()}).then(()=>{s=void 0,d()||e.onContinue?.()}),N=()=>{if(d())return;let C;const A=i===0?e.initialPromise:void 0;try{C=A??e.fn()}catch(E){C=Promise.reject(E)}Promise.resolve(C).then(x).catch(E=>{if(d())return;const R=e.retry??(qc?0:3),k=e.retryDelay??CE,O=typeof k=="function"?k(i,E):k,P=R===!0||typeof R=="number"&&i<R||typeof R=="function"&&R(i,E);if(a||!P){b(E);return}i++,e.onFail?.(i,E),fE(O).then(()=>p()?void 0:j()).then(()=>{a?b(E):N()})})};return{promise:c,status:()=>c.status,cancel:f,continue:()=>(s?.(),c),cancelRetry:h,continueRetry:g,canStart:y,start:()=>(y()?N():j().then(N),c)}}var mC=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),lE(this.gcTime)&&(this.#e=Mh.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(qc?1/0:300*1e3))}clearGcTimeout(){this.#e&&(Mh.clearTimeout(this.#e),this.#e=void 0)}},SE=class extends mC{#e;#a;#t;#r;#n;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#r=e.client,this.#t=this.#r.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=Jv(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#n?.promise}setOptions(e){if(this.options={...this.#o,...e},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const a=Jv(this.options);a.data!==void 0&&(this.setState(Qv(a.data,a.dataUpdatedAt)),this.#e=a)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#t.remove(this)}setData(e,a){const i=hE(this.state.data,e,this.options);return this.#i({data:i,type:"success",dataUpdatedAt:a?.updatedAt,manual:a?.manual}),i}setState(e,a){this.#i({type:"setState",state:e,setStateOptions:a})}cancel(e){const a=this.#n?.promise;return this.#n?.cancel(e),a?a.then(wa).catch(wa):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#e)}isActive(){return this.observers.some(e=>dE(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Rm||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>Oh(e.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e==="static"?!1:this.state.isInvalidated?!0:!cE(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(a=>a.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#n?.continue()}onOnline(){this.observers.find(a=>a.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#n?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(a=>a!==e),this.observers.length||(this.#n&&(this.#s?this.#n.cancel({revert:!0}):this.#n.cancelRetry()),this.scheduleGc()),this.#t.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#i({type:"invalidate"})}async fetch(e,a){if(this.state.fetchStatus!=="idle"&&this.#n?.status()!=="rejected"){if(this.state.data!==void 0&&a?.cancelRefetch)this.cancel({silent:!0});else if(this.#n)return this.#n.continueRetry(),this.#n.promise}if(e&&this.setOptions(e),!this.options.queryFn){const h=this.observers.find(g=>g.options.queryFn);h&&this.setOptions(h.options)}const i=new AbortController,s=h=>{Object.defineProperty(h,"signal",{enumerable:!0,get:()=>(this.#s=!0,i.signal)})},c=()=>{const h=dC(this.options,a),p=(()=>{const y={client:this.#r,queryKey:this.queryKey,meta:this.meta};return s(y),y})();return this.#s=!1,this.options.persister?this.options.persister(h,p,this):h(p)},f=(()=>{const h={fetchOptions:a,options:this.options,queryKey:this.queryKey,client:this.#r,state:this.state,fetchFn:c};return s(h),h})();this.options.behavior?.onFetch(f,this),this.#a=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==f.fetchOptions?.meta)&&this.#i({type:"fetch",meta:f.fetchOptions?.meta}),this.#n=hC({initialPromise:a?.initialPromise,fn:f.fetchFn,onCancel:h=>{h instanceof Vh&&h.revert&&this.setState({...this.#a,fetchStatus:"idle"}),i.abort()},onFail:(h,g)=>{this.#i({type:"failed",failureCount:h,error:g})},onPause:()=>{this.#i({type:"pause"})},onContinue:()=>{this.#i({type:"continue"})},retry:f.options.retry,retryDelay:f.options.retryDelay,networkMode:f.options.networkMode,canRun:()=>!0});try{const h=await this.#n.start();if(h===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(h),this.#t.config.onSuccess?.(h,this),this.#t.config.onSettled?.(h,this.state.error,this),h}catch(h){if(h instanceof Vh){if(h.silent)return this.#n.promise;if(h.revert){if(this.state.data===void 0)throw h;return this.state.data}}throw this.#i({type:"error",error:h}),this.#t.config.onError?.(h,this),this.#t.config.onSettled?.(this.state.data,h,this),h}finally{this.scheduleGc()}}#i(e){const a=i=>{switch(e.type){case"failed":return{...i,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...i,fetchStatus:"paused"};case"continue":return{...i,fetchStatus:"fetching"};case"fetch":return{...i,...jE(i.data,this.options),fetchMeta:e.meta??null};case"success":const s={...i,...Qv(e.data,e.dataUpdatedAt),dataUpdateCount:i.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#a=e.manual?s:void 0,s;case"error":const c=e.error;return{...i,error:c,errorUpdateCount:i.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:i.fetchFailureCount+1,fetchFailureReason:c,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...i,isInvalidated:!0};case"setState":return{...i,...e.state}}};this.state=a(this.state),kt.batch(()=>{this.observers.forEach(i=>{i.onQueryUpdate()}),this.#t.notify({query:this,type:"updated",action:e})})}};function jE(e,a){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:fC(a.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function Qv(e,a){return{data:e,dataUpdatedAt:a??Date.now(),error:null,isInvalidated:!1,status:"success"}}function Jv(e){const a=typeof e.initialData=="function"?e.initialData():e.initialData,i=a!==void 0,s=i?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:a,dataUpdateCount:0,dataUpdatedAt:i?s??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:i?"success":"pending",fetchStatus:"idle"}}function eb(e){return{onFetch:(a,i)=>{const s=a.options,c=a.fetchOptions?.meta?.fetchMore?.direction,d=a.state.data?.pages||[],f=a.state.data?.pageParams||[];let h={pages:[],pageParams:[]},g=0;const p=async()=>{let y=!1;const x=N=>{gE(N,()=>a.signal,()=>y=!0)},b=dC(a.options,a.fetchOptions),j=async(N,C,A)=>{if(y)return Promise.reject();if(C==null&&N.pages.length)return Promise.resolve(N);const R=(()=>{const G={client:a.client,queryKey:a.queryKey,pageParam:C,direction:A?"backward":"forward",meta:a.options.meta};return x(G),G})(),k=await b(R),{maxPages:O}=a.options,P=A?pE:mE;return{pages:P(N.pages,k,O),pageParams:P(N.pageParams,C,O)}};if(c&&d.length){const N=c==="backward",C=N?NE:tb,A={pages:d,pageParams:f},E=C(s,A);h=await j(A,E,N)}else{const N=e??d.length;do{const C=g===0?f[0]??s.initialPageParam:tb(s,h);if(g>0&&C==null)break;h=await j(h,C),g++}while(g<N)}return h};a.options.persister?a.fetchFn=()=>a.options.persister?.(p,{client:a.client,queryKey:a.queryKey,meta:a.options.meta,signal:a.signal},i):a.fetchFn=p}}}function tb(e,{pages:a,pageParams:i}){const s=a.length-1;return a.length>0?e.getNextPageParam(a[s],a,i[s],i):void 0}function NE(e,{pages:a,pageParams:i}){return a.length>0?e.getPreviousPageParam?.(a[0],a,i[0],i):void 0}var AE=class extends mC{#e;#a;#t;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#t=e.mutationCache,this.#a=[],this.state=e.state||TE(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#a.includes(e)||(this.#a.push(e),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#a=this.#a.filter(a=>a!==e),this.scheduleGc(),this.#t.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#a.length||(this.state.status==="pending"?this.scheduleGc():this.#t.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){const a=()=>{this.#n({type:"continue"})},i={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=hC({fn:()=>this.options.mutationFn?this.options.mutationFn(e,i):Promise.reject(new Error("No mutationFn found")),onFail:(d,f)=>{this.#n({type:"failed",failureCount:d,error:f})},onPause:()=>{this.#n({type:"pause"})},onContinue:a,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#t.canRun(this)});const s=this.state.status==="pending",c=!this.#r.canStart();try{if(s)a();else{this.#n({type:"pending",variables:e,isPaused:c}),this.#t.config.onMutate&&await this.#t.config.onMutate(e,this,i);const f=await this.options.onMutate?.(e,i);f!==this.state.context&&this.#n({type:"pending",context:f,variables:e,isPaused:c})}const d=await this.#r.start();return await this.#t.config.onSuccess?.(d,e,this.state.context,this,i),await this.options.onSuccess?.(d,e,this.state.context,i),await this.#t.config.onSettled?.(d,null,this.state.variables,this.state.context,this,i),await this.options.onSettled?.(d,null,e,this.state.context,i),this.#n({type:"success",data:d}),d}catch(d){try{await this.#t.config.onError?.(d,e,this.state.context,this,i)}catch(f){Promise.reject(f)}try{await this.options.onError?.(d,e,this.state.context,i)}catch(f){Promise.reject(f)}try{await this.#t.config.onSettled?.(void 0,d,this.state.variables,this.state.context,this,i)}catch(f){Promise.reject(f)}try{await this.options.onSettled?.(void 0,d,e,this.state.context,i)}catch(f){Promise.reject(f)}throw this.#n({type:"error",error:d}),d}finally{this.#t.runNext(this)}}#n(e){const a=i=>{switch(e.type){case"failed":return{...i,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...i,isPaused:!0};case"continue":return{...i,isPaused:!1};case"pending":return{...i,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...i,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...i,data:void 0,error:e.error,failureCount:i.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=a(this.state),kt.batch(()=>{this.#a.forEach(i=>{i.onMutationUpdate(e)}),this.#t.notify({mutation:this,type:"updated",action:e})})}};function TE(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var EE=class extends Bc{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#a=new Map,this.#t=0}#e;#a;#t;build(e,a,i){const s=new AE({client:e,mutationCache:this,mutationId:++this.#t,options:e.defaultMutationOptions(a),state:i});return this.add(s),s}add(e){this.#e.add(e);const a=Hl(e);if(typeof a=="string"){const i=this.#a.get(a);i?i.push(e):this.#a.set(a,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#e.delete(e)){const a=Hl(e);if(typeof a=="string"){const i=this.#a.get(a);if(i)if(i.length>1){const s=i.indexOf(e);s!==-1&&i.splice(s,1)}else i[0]===e&&this.#a.delete(a)}}this.notify({type:"removed",mutation:e})}canRun(e){const a=Hl(e);if(typeof a=="string"){const s=this.#a.get(a)?.find(c=>c.state.status==="pending");return!s||s===e}else return!0}runNext(e){const a=Hl(e);return typeof a=="string"?this.#a.get(a)?.find(s=>s!==e&&s.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){kt.batch(()=>{this.#e.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#e.clear(),this.#a.clear()})}getAll(){return Array.from(this.#e)}find(e){const a={exact:!0,...e};return this.getAll().find(i=>Kv(a,i))}findAll(e={}){return this.getAll().filter(a=>Kv(e,a))}notify(e){kt.batch(()=>{this.listeners.forEach(a=>{a(e)})})}resumePausedMutations(){const e=this.getAll().filter(a=>a.state.isPaused);return kt.batch(()=>Promise.all(e.map(a=>a.continue().catch(wa))))}};function Hl(e){return e.options.scope?.id}var RE=class extends Bc{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,a,i){const s=a.queryKey,c=a.queryHash??Em(s,a);let d=this.get(c);return d||(d=new SE({client:e,queryKey:s,queryHash:c,options:e.defaultQueryOptions(a),state:i,defaultOptions:e.getQueryDefaults(s)}),this.add(d)),d}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const a=this.#e.get(e.queryHash);a&&(e.destroy(),a===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){kt.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){const a={exact:!0,...e};return this.getAll().find(i=>$v(a,i))}findAll(e={}){const a=this.getAll();return Object.keys(e).length>0?a.filter(i=>$v(e,i)):a}notify(e){kt.batch(()=>{this.listeners.forEach(a=>{a(e)})})}onFocus(){kt.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){kt.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},kE=class{#e;#a;#t;#r;#n;#o;#s;#i;constructor(e={}){this.#e=e.queryCache||new RE,this.#a=e.mutationCache||new EE,this.#t=e.defaultOptions||{},this.#r=new Map,this.#n=new Map,this.#o=0}mount(){this.#o++,this.#o===1&&(this.#s=uC.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#i=pc.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#o--,this.#o===0&&(this.#s?.(),this.#s=void 0,this.#i?.(),this.#i=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#a.findAll({...e,status:"pending"}).length}getQueryData(e){const a=this.defaultQueryOptions({queryKey:e});return this.#e.get(a.queryHash)?.state.data}ensureQueryData(e){const a=this.defaultQueryOptions(e),i=this.#e.build(this,a),s=i.state.data;return s===void 0?this.fetchQuery(e):(e.revalidateIfStale&&i.isStaleByTime(Oh(a.staleTime,i))&&this.prefetchQuery(a),Promise.resolve(s))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:a,state:i})=>{const s=i.data;return[a,s]})}setQueryData(e,a,i){const s=this.defaultQueryOptions({queryKey:e}),d=this.#e.get(s.queryHash)?.state.data,f=sE(a,d);if(f!==void 0)return this.#e.build(this,s).setData(f,{...i,manual:!0})}setQueriesData(e,a,i){return kt.batch(()=>this.#e.findAll(e).map(({queryKey:s})=>[s,this.setQueryData(s,a,i)]))}getQueryState(e){const a=this.defaultQueryOptions({queryKey:e});return this.#e.get(a.queryHash)?.state}removeQueries(e){const a=this.#e;kt.batch(()=>{a.findAll(e).forEach(i=>
9{a.remove(i)})})}resetQueries(e,a){const i=this.#e;return kt.batch(()=>(i.findAll(e).forEach(s=>{s.reset()}),this.refetchQueries({type:"active",...e},a)))}cancelQueries(e,a={}){const i={revert:!0,...a},s=kt.batch(()=>this.#e.findAll(e).map(c=>c.cancel(i)));return Promise.all(s).then(wa).catch(wa)}invalidateQueries(e,a={}){return kt.batch(()=>(this.#e.findAll(e).forEach(i=>{i.invalidate()}),e?.refetchType==="none"?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},a)))}refetchQueries(e,a={}){const i={...a,cancelRefetch:a.cancelRefetch??!0},s=kt.batch(()=>this.#e.findAll(e).filter(c=>!c.isDisabled()&&!c.isStatic()).map(c=>{let d=c.fetch(void 0,i);return i.throwOnError||(d=d.catch(wa)),c.state.fetchStatus==="paused"?Promise.resolve():d}));return Promise.all(s).then(wa)}fetchQuery(e){const a=this.defaultQueryOptions(e);a.retry===void 0&&(a.retry=!1);const i=this.#e.build(this,a);return i.isStaleByTime(Oh(a.staleTime,i))?i.fetch(a):Promise.resolve(i.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(wa).catch(wa)}fetchInfiniteQuery(e){return e.behavior=eb(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(wa).catch(wa)}ensureInfiniteQueryData(e){return e.behavior=eb(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return pc.isOnline()?this.#a.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#a}getDefaultOptions(){return this.#t}setDefaultOptions(e){this.#t=e}setQueryDefaults(e,a){this.#r.set(is(e),{queryKey:e,defaultOptions:a})}getQueryDefaults(e){const a=[...this.#r.values()],i={};return a.forEach(s=>{os(e,s.queryKey)&&Object.assign(i,s.defaultOptions)}),i}setMutationDefaults(e,a){this.#n.set(is(e),{mutationKey:e,defaultOptions:a})}getMutationDefaults(e){const a=[...this.#n.values()],i={};return a.forEach(s=>{os(e,s.mutationKey)&&Object.assign(i,s.defaultOptions)}),i}defaultQueryOptions(e){if(e._defaulted)return e;const a={...this.#t.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return a.queryHash||(a.queryHash=Em(a.queryKey,a)),a.refetchOnReconnect===void 0&&(a.refetchOnReconnect=a.networkMode!=="always"),a.throwOnError===void 0&&(a.throwOnError=!!a.suspense),!a.networkMode&&a.persister&&(a.networkMode="offlineFirst"),a.queryFn===Rm&&(a.enabled=!1),a}defaultMutationOptions(e){return e?._defaulted?e:{...this.#t.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#a.clear()}},DE=w.createContext(void 0),ME=({client:e,children:a})=>(w.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),r.jsx(DE.Provider,{value:e,children:a}));const OE=1,PE=1e6;let Vf=0;function VE(){return Vf=(Vf+1)%Number.MAX_SAFE_INTEGER,Vf.toString()}const Lf=new Map,ab=e=>{if(Lf.has(e))return;const a=setTimeout(()=>{Lf.delete(e),Qo({type:"REMOVE_TOAST",toastId:e})},PE);Lf.set(e,a)},LE=(e,a)=>{switch(a.type){case"ADD_TOAST":return{...e,toasts:[a.toast,...e.toasts].slice(0,OE)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(i=>i.id===a.toast.id?{...i,...a.toast}:i)};case"DISMISS_TOAST":{const{toastId:i}=a;return i?ab(i):e.toasts.forEach(s=>{ab(s.id)}),{...e,toasts:e.toasts.map(s=>s.id===i||i===void 0?{...s,open:!1}:s)}}case"REMOVE_TOAST":return a.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(i=>i.id!==a.toastId)}}},ac=[];let nc={toasts:[]};function Qo(e){nc=LE(nc,e),ac.forEach(a=>{a(nc)})}function FE({...e}){const a=VE(),i=c=>Qo({type:"UPDATE_TOAST",toast:{...c,id:a}}),s=()=>Qo({type:"DISMISS_TOAST",toastId:a});return Qo({type:"ADD_TOAST",toast:{...e,id:a,open:!0,onOpenChange:c=>{c||s()}}}),{id:a,dismiss:s,update:i}}function pC(){const[e,a]=w.useState(nc);return w.useEffect(()=>(ac.push(a),()=>{const i=ac.indexOf(a);i>-1&&ac.splice(i,1)}),[e]),{...e,toast:FE,dismiss:i=>Qo({type:"DISMISS_TOAST",toastId:i})}}var Pi=_w();const zE=ps(Pi);function Re(e,a,{checkForDefaultPrevented:i=!0}={}){return function(c){if(e?.(c),i===!1||!c.defaultPrevented)return a?.(c)}}function nb(e,a){if(typeof e=="function")return e(a);e!=null&&(e.current=a)}function km(...e){return a=>{let i=!1;const s=e.map(c=>{const d=nb(c,a);return!i&&typeof d=="function"&&(i=!0),d});if(i)return()=>{for(let c=0;c<s.length;c++){const d=s[c];typeof d=="function"?d():nb(e[c],null)}}}}function et(...e){return w.useCallback(km(...e),e)}function gs(e,a=[]){let i=[];function s(d,f){const h=w.createContext(f),g=i.length;i=[...i,f];const p=x=>{const{scope:b,children:j,...N}=x,C=b?.[e]?.[g]||h,A=w.useMemo(()=>N,Object.values(N));return r.jsx(C.Provider,{value:A,children:j})};p.displayName=d+"Provider";function y(x,b){const j=b?.[e]?.[g]||h,N=w.useContext(j);if(N)return N;if(f!==void 0)return f;throw new Error(`\`${x}\` must be used within \`${d}\``)}return[p,y]}const c=()=>{const d=i.map(f=>w.createContext(f));return function(h){const g=h?.[e]||d;return w.useMemo(()=>({[`__scope${e}`]:{...h,[e]:g}}),[h,g])}};return c.scopeName=e,[s,HE(c,...a)]}function HE(...e){const a=e[0];if(e.length===1)return a;const i=()=>{const s=e.map(c=>({useScope:c(),scopeName:c.scopeName}));return function(d){const f=s.reduce((h,{useScope:g,scopeName:p})=>{const x=g(d)[`__scope${p}`];return{...h,...x}},{});return w.useMemo(()=>({[`__scope${a.scopeName}`]:f}),[f])}};return i.scopeName=a.scopeName,i}function gc(e){const a=BE(e),i=w.forwardRef((s,c)=>{const{children:d,...f}=s,h=w.Children.toArray(d),g=h.find(WE);if(g){const p=g.props.children,y=h.map(x=>x===g?w.Children.count(p)>1?w.Children.only(null):w.isValidElement(p)?p.props.children:null:x);return r.jsx(a,{...f,ref:c,children:w.isValidElement(p)?w.cloneElement(p,void 0,y):null})}return r.jsx(a,{...f,ref:c,children:d})});return i.displayName=`${e}.Slot`,i}function BE(e){const a=w.forwardRef((i,s)=>{const{children:c,...d}=i;
vendor: 10,790 bytes, line 9
9if(w.isValidElement(c)){const f=GE(c),h=_E(d,c.props);return c.type!==w.Fragment&&(h.ref=s?km(s,f):f),w.cloneElement(c,h)}return w.Children.count(c)>1?w.Children.only(null):null});return a.displayName=`${e}.SlotClone`,a}var gC=Symbol("radix.slottable");function qE(e){const a=({children:i})=>r.jsx(r.Fragment,{children:i});return a.displayName=`${e}.Slottable`,a.__radixId=gC,a}function WE(e){return w.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===gC}function _E(e,a){const i={...a};for(const s in a){const c=e[s],d=a[s];/^on[A-Z]/.test(s)?c&&d?i[s]=(...h)=>{const g=d(...h);return c(...h),g}:c&&(i[s]=c):s==="style"?i[s]={...c,...d}:s==="className"&&(i[s]=[c,d].filter(Boolean).join(" "))}return{...e,...i}}function GE(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,i=a&&"isReactWarning"in a&&a.isReactWarning;return i?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,i=a&&"isReactWarning"in a&&a.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}function yC(e){const a=e+"CollectionProvider",[i,s]=gs(a),[c,d]=i(a,{collectionRef:{current:null},itemMap:new Map}),f=C=>{const{scope:A,children:E}=C,R=ze.useRef(null),k=ze.useRef(new Map).current;return r.jsx(c,{scope:A,itemMap:k,collectionRef:R,children:E})};f.displayName=a;const h=e+"CollectionSlot",g=gc(h),p=ze.forwardRef((C,A)=>{const{scope:E,children:R}=C,k=d(h,E),O=et(A,k.collectionRef);return r.jsx(g,{ref:O,children:R})});p.displayName=h;const y=e+"CollectionItemSlot",x="data-radix-collection-item",b=gc(y),j=ze.forwardRef((C,A)=>{const{scope:E,children:R,...k}=C,O=ze.useRef(null),P=et(A,O),G=d(y,E);return ze.useEffect(()=>(G.itemMap.set(O,{ref:O,...k}),()=>{G.itemMap.delete(O)})),r.jsx(b,{[x]:"",ref:P,children:R})});j.displayName=y;function N(C){const A=d(e+"CollectionConsumer",C);return ze.useCallback(()=>{const R=A.collectionRef.current;if(!R)return[];const k=Array.from(R.querySelectorAll(`[${x}]`));return Array.from(A.itemMap.values()).sort((G,I)=>k.indexOf(G.ref.current)-k.indexOf(I.ref.current))},[A.collectionRef,A.itemMap])}return[{Provider:f,Slot:p,ItemSlot:j},N,s]}var UE=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],We=UE.reduce((e,a)=>{const i=gc(`Primitive.${a}`),s=w.forwardRef((c,d)=>{const{asChild:f,...h}=c,g=f?i:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),r.jsx(g,{...h,ref:d})});return s.displayName=`Primitive.${a}`,{...e,[a]:s}},{});function xC(e,a){e&&Pi.flushSync(()=>e.dispatchEvent(a))}function Na(e){const a=w.useRef(e);return w.useEffect(()=>{a.current=e}),w.useMemo(()=>(...i)=>a.current?.(...i),[])}function IE(e,a=globalThis?.document){const i=Na(e);w.useEffect(()=>{const s=c=>{c.key==="Escape"&&i(c)};return a.addEventListener("keydown",s,{capture:!0}),()=>a.removeEventListener("keydown",s,{capture:!0})},[i,a])}var YE="DismissableLayer",Lh="dismissableLayer.update",$E="dismissableLayer.pointerDownOutside",KE="dismissableLayer.focusOutside",rb,vC=w.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Wc=w.forwardRef((e,a)=>{const{disableOutsidePointerEvents:i=!1,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:f,onDismiss:h,...g}=e,p=w.useContext(vC),[y,x]=w.useState(null),b=y?.ownerDocument??globalThis?.document,[,j]=w.useState({}),N=et(a,I=>x(I)),C=Array.from(p.layers),[A]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),E=C.indexOf(A),R=y?C.indexOf(y):-1,k=p.layersWithOutsidePointerEventsDisabled.size>0,O=R>=E,P=XE(I=>{const H=I.target,X=[...p.branches].some(ae=>ae.contains(H));!O||X||(c?.(I),f?.(I),I.defaultPrevented||h?.())},b),G=QE(I=>{const H=I.target;[...p.branches].some(ae=>ae.contains(H))||(d?.(I),f?.(I),I.defaultPrevented||h?.())},b);return IE(I=>{R===p.layers.size-1&&(s?.(I),!I.defaultPrevented&&h&&(I.preventDefault(),h()))},b),w.useEffect(()=>{if(y)return i&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(rb=b.body.style.pointerEvents,b.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(y)),p.layers.add(y),ib(),()=>{i&&p.layersWithOutsidePointerEventsDisabled.size===1&&(b.body.style.pointerEvents=rb)}},[y,b,i,p]),w.useEffect(()=>()=>{y&&(p.layers.delete(y),p.layersWithOutsidePointerEventsDisabled.delete(y),ib())},[y,p]),w.useEffect(()=>{const I=()=>j({});return document.addEventListener(Lh,I),()=>document.removeEventListener(Lh,I)},[]),r.jsx(We.div,{...g,ref:N,style:{pointerEvents:k?O?"auto":"none":void 0,...e.style},onFocusCapture:Re(e.onFocusCapture,G.onFocusCapture),onBlurCapture:Re(e.onBlurCapture,G.onBlurCapture),onPointerDownCapture:Re(e.onPointerDownCapture,P.onPointerDownCapture)})});Wc.displayName=YE;var ZE="DismissableLayerBranch",bC=w.forwardRef((e,a)=>{const i=w.useContext(vC),s=w.useRef(null),c=et(a,s);return w.useEffect(()=>{const d=s.current;if(d)return i.branches.add(d),()=>{i.branches.delete(d)}},[i.branches]),r.jsx(We.div,{...e,ref:c})});bC.displayName=ZE;function XE(e,a=globalThis?.document){const i=Na(e),s=w.useRef(!1),c=w.useRef(()=>{});return w.useEffect(()=>{const d=h=>{if(h.target&&!s.current){let g=function(){wC($E,i,p,{discrete:!0})};const p={originalEvent:h};h.pointerType==="touch"?(a.removeEventListener("click",c.current),c.current=g,a.addEventListener("click",c.current,{once:!0})):g()}else a.removeEventListener("click",c.current);s.current=!1},f=window.setTimeout(()=>{a.addEventListener("pointerdown",d)},0);return()=>{window.clearTimeout(f),a.removeEventListener("pointerdown",d),a.removeEventListener("click",c.current)}},[a,i]),{onPointerDownCapture:()=>s.current=!0}}function QE(e,a=globalThis?.document){const i=Na(e),s=w.useRef(!1);return w.useEffect(()=>{const c=d=>{d.target&&!s.current&&wC(KE,i,{originalEvent:d},{discrete:!1})};return a.addEventListener("focusin",c),()=>a.removeEventListener("focusin",c)},[a,i]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function ib(){const e=new CustomEvent(Lh);document.dispatchEvent(e)}function wC(e,a,i,{discrete:s}){const c=i.originalEvent.target,d=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:i});a&&c.addEventListener(e,a,{once:!0}),s?xC(c,d):c.dispatchEvent(d)}var JE=Wc,eR=bC,bt=globalThis?.document?w.useLayoutEffect:()=>{},tR="Portal",_c=w.forwardRef((e,a)=>{const{container:i,...s}=e,[c,d]=w.useState(!1);bt(()=>d(!0),[]);const f=i||c&&globalThis?.document?.body;return f?zE.createPortal(r.jsx(We.div,{...s,ref:a}),f):null});_c.displayName=tR;function aR(e,a){return w.useReducer((i,s)=>a[i][s]??i,e)}var Gc=e=>{const{present:a,children:i}=e,s=nR(a),c=typeof i=="function"?i({present:s.isPresent}):w.Children.only(i),d=et(s.ref,rR(c));return typeof i=="function"||s.isPresent?w.cloneElement(c,{ref:d}):null};Gc.displayName="Presence";function nR(e){const[a,i]=w.useState(),s=w.useRef(null),c=w.useRef(e),d=w.useRef("none"),f=e?"mounted":"unmounted",[h,g]=aR(f,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return w.useEffect(()=>{const p=Bl(s.current);d.current=h==="mounted"?p:"none"},[h]),bt(()=>{const p=s.current,y=c.current;if(y!==e){const b=d.current,j=Bl(p);e?g("MOUNT"):j==="none"||p?.display==="none"?g("UNMOUNT"):g(y&&b!==j?"ANIMATION_OUT":"UNMOUNT"),c.current=e}},[e,g]),bt(()=>{if(a){let p;const y=a.ownerDocument.defaultView??window,x=j=>{const C=Bl(s.current).includes(CSS.escape(j.animationName));if(j.target===a&&C&&(g("ANIMATION_END"),!c.current)){const A=a.style.animationFillMode;a.style.animationFillMode="forwards",p=y.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=A)})}},b=j=>{j.target===a&&(d.current=Bl(s.current))};return a.addEventListener("animationstart",b),a.addEventListener("animationcancel",x),a.addEventListener("animationend",x),()=>{y.clearTimeout(p),a.removeEventListener("animationstart",b),a.removeEventListener("animationcancel",x),a.removeEventListener("animationend",x)}}else g("ANIMATION_END")},[a,g]),{isPresent:["mounted","unmountSuspended"].includes(h),ref:w.useCallback(p=>{s.current=p?getComputedStyle(p):null,i(p)},[])}}function Bl(e){return e?.animationName||"none"}function rR(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,i=a&&"isReactWarning"in a&&a.isReactWarning;return i?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,i=a&&"isReactWarning"in a&&a.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}var iR=Fc[" useInsertionEffect ".trim().toString()]||bt;function Fh({prop:e,defaultProp:a,onChange:i=()=>{},caller:s}){const[c,d,f]=oR({defaultProp:a,onChange:i}),h=e!==void 0,g=h?e:c;{const y=w.useRef(e!==void 0);w.useEffect(()=>{const x=y.current;x!==h&&console.warn(`${s} is changing from ${x?"controlled":"uncontrolled"} to ${h?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),y.current=h},[h,s])}const p=w.useCallback(y=>{if(h){const x=sR(y)?y(e):y;x!==e&&f.current?.(x)}else d(y)},[h,e,d,f]);return[g,p]}function oR({defaultProp:e,onChange:a}){const[i,s]=w.useState(e),c=w.useRef(i),d=w.useRef(a);return iR(()=>{d.current=a},[a]),w.useEffect(()=>{c.current!==i&&(d.current?.(i),c.current=i)},[i,c]),[i,s,d]}function sR(e){return typeof e=="function"}var CC=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),lR="VisuallyHidden",Uc=w.forwardRef((e,a)=>r.jsx(We.span,{...e,ref:a,style:{...CC,...e.style}}));Uc.displayName=lR;var cR=Uc,Dm="ToastProvider",[Mm,dR,uR]=yC("Toast"),[SC]=gs("Toast",[uR]),[fR,Ic]=SC(Dm),jC=e=>{const{__scopeToast:a,label:i="Notification",duration:s=5e3,swipeDirection:c="right",swipeThreshold:d=50,children:f}=e,[h,g]=w.useState(null),[p,y]=w.useState(0),x=w.useRef(!1),b=w.useRef(!1);return i.trim()||console.error(`Invalid prop \`label\` supplied to \`${Dm}\`. Expected non-empty \`string\`.`),r.jsx(Mm.Provider,{scope:a,children:r.jsx(fR,{scope:a,label:i,duration:s,swipeDirection:c,swipeThreshold:d,toastCount:p,viewport:h,onViewportChange:g,onToastAdd:w.useCallback(()=>y(j=>j+1),[]),onToastRemove:w.useCallback(()=>y(j=>j-1),[]),isFocusedToastEscapeKeyDownRef:x,isClosePausedRef:b,children:f})})};jC.displayName=Dm;var NC="ToastViewport",hR=["F8"],zh="toast.viewportPause",Hh="toast.viewportResume",AC=w.forwardRef((e,a)=>{const{__scopeToast:i,hotkey:s=hR,label:c="Notifications ({hotkey})",...d}=e,f=Ic(NC,i),h=dR(i),g=w.useRef(null),p=w.useRef(null),y=w.useRef(null),x=w.useRef(null),b=et(a,x,f.onViewportChange),j=s.join("+").replace(/Key/g,"").replace(/Digit/g,""),N=f.toastCount>0;w.useEffect(()=>{const A=E=>{s.length!==0&&s.every(k=>
9E[k]||E.code===k)&&x.current?.focus()};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[s]),w.useEffect(()=>{const A=g.current,E=x.current;if(N&&A&&E){const R=()=>{if(!f.isClosePausedRef.current){const G=new CustomEvent(zh);E.dispatchEvent(G),f.isClosePausedRef.current=!0}},k=()=>{if(f.isClosePausedRef.current){const G=new CustomEvent(Hh);E.dispatchEvent(G),f.isClosePausedRef.current=!1}},O=G=>{!A.contains(G.relatedTarget)&&k()},P=()=>{A.contains(document.activeElement)||k()};return A.addEventListener("focusin",R),A.addEventListener("focusout",O),A.addEventListener("pointermove",R),A.addEventListener("pointerleave",P),window.addEventListener("blur",R),window.addEventListener("focus",k),()=>{A.removeEventListener("focusin",R),A.removeEventListener("focusout",O),A.removeEventListener("pointermove",R),A.removeEventListener("pointerleave",P),window.removeEventListener("blur",R),window.removeEventListener("focus",k)}}},[N,f.isClosePausedRef]);const C=w.useCallback(({tabbingDirection:A})=>{const R=h().map(k=>{const O=k.ref.current,P=[O,...AR(O)];return A==="forwards"?P:P.reverse()});return(A==="forwards"?R.reverse():R).flat()},[h]);return w.useEffect(()=>{const A=x.current;if(A){const E=R=>{const k=R.altKey||R.ctrlKey||R.metaKey;if(R.key==="Tab"&&!k){const P=document.activeElement,G=R.shiftKey;if(R.target===A&&G){p.current?.focus();return}const X=C({tabbingDirection:G?"backwards":"forwards"}),ae=X.findIndex(fe=>fe===P);Ff(X.slice(ae+1))?R.preventDefault():G?p.current?.focus():y.current?.focus()}};return A.addEventListener("keydown",E),()=>A.removeEventListener("keydown",E)}},[h,C]),r.jsxs(eR,{ref:g,role:"region","aria-label":c.replace("{hotkey}",j),tabIndex:-1,style:{pointerEvents:N?void 0:"none"},children:[N&&r.jsx(Bh,{ref:p,onFocusFromOutsideViewport:()=>{const A=C({tabbingDirection:"forwards"});Ff(A)}}),r.jsx(Mm.Slot,{scope:i,children:r.jsx(We.ol,{tabIndex:-1,...d,ref:b})}),N&&r.jsx(Bh,{ref:y,onFocusFromOutsideViewport:()=>{const A=C({tabbingDirection:"backwards"});Ff(A)}})]})});AC.displayName=NC;var TC="ToastFocusProxy",Bh=w.forwardRef((e,a)=>{const{__scopeToast:i,onFocusFromOutsideViewport:s,...c}=e,d=Ic(TC,i);return r.jsx(Uc,{tabIndex:0,...c,ref:a,style:{position:"fixed"},onFocus:f=>{const h=f.relatedTarget;!d.viewport?.contains(h)&&s()}})});Bh.displayName=TC;var ys="Toast",mR="toast.swipeStart",pR="toast.swipeMove",gR="toast.swipeCancel",yR="toast.swipeEnd",EC=w.forwardRef((e,a)=>{const{forceMount:i,open:s,defaultOpen:c,onOpenChange:d,...f}=e,[h,g]=Fh({prop:s,defaultProp:c??!0,onChange:d,caller:ys});return r.jsx(Gc,{present:i||h,children:r.jsx(bR,{open:h,...f,ref:a,onClose:()=>g(!1),onPause:Na(e.onPause),onResume:Na(e.onResume),onSwipeStart:Re(e.onSwipeStart,p=>{p.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:Re(e.onSwipeMove,p=>{const{x:y,y:x}=p.detail.delta;p.currentTarget.setAttribute("data-swipe","move"),p.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${y}px`),p.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${x}px`)}),onSwipeCancel:Re(e.onSwipeCancel,p=>{p.currentTarget.setAttribute("data-swipe","cancel"),p.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),p.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),p.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),p.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:Re(e.onSwipeEnd,p=>{const{x:y,y:x}=p.detail.delta;p.currentTarget.setAttribute("data-swipe","end"),p.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),p.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),p.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${y}px`),p.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${x}px`),g(!1)})})})});EC.displayName=ys;var[xR,vR]=SC(ys,{onClose(){}}),bR=w.forwardRef((e,a)=>{const{__scopeToast:i,type:s="foreground",duration:c,open:d,onClose:f,onEscapeKeyDown:h,onPause:g,onResume:p,onSwipeStart:y,onSwipeMove:x,onSwipeCancel:b,onSwipeEnd:j,...N}=e,C=Ic(ys,i),[A,E]=w.useState(null),R=et(a,te=>E(te)),k=w.useRef(null),O=w.useRef(null),P=c||C.duration,G=w.useRef(0),I=w.useRef(P),H=w.useRef(0),{onToastAdd:X,onToastRemove:ae}=C,fe=Na(()=>{A?.contains(document.activeElement)&&C.viewport?.focus(),f()}),ie=w.useCallback(te=>
9{!te||te===1/0||(window.clearTimeout(H.current),G.current=new Date().getTime(),H.current=window.setTimeout(fe,te))},[fe]);w.useEffect(()=>{const te=C.viewport;if(te){const se=()=>{ie(I.current),p?.()},V=()=>{const B=new Date().getTime()-G.current;I.current=I.current-B,window.clearTimeout(H.current),g?.()};return te.addEventListener(zh,V),te.addEventListener(Hh,se),()=>{te.removeEventListener(zh,V),te.removeEventListener(Hh,se)}}},[C.viewport,P,g,p,ie]),w.useEffect(()=>{d&&!C.isClosePausedRef.current&&ie(P)},[d,P,C.isClosePausedRef,ie]),w.useEffect(()=>(X(),()=>ae()),[X,ae]);const xe=w.useMemo(()=>A?VC(A):null,[A]);return C.viewport?r.jsxs(r.Fragment,{children:[xe&&r.jsx(wR,{__scopeToast:i,role:"status","aria-live":s==="foreground"?"assertive":"polite",children:xe}),r.jsx(xR,{scope:i,onClose:fe,children:Pi.createPortal(r.jsx(Mm.ItemSlot,{scope:i,children:r.jsx(JE,{asChild:!0,onEscapeKeyDown:Re(h,()=>{C.isFocusedToastEscapeKeyDownRef.current||fe(),C.isFocusedToastEscapeKeyDownRef.current=!1}),children:r.jsx(We.li,{tabIndex:0,"data-state":d?"open":"closed","data-swipe-direction":C.swipeDirection,...N,ref:R,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:Re(e.onKeyDown,te=>{te.key==="Escape"&&(h?.(te.nativeEvent),te.nativeEvent.defaultPrevented||(C.isFocusedToastEscapeKeyDownRef.current=!0,fe()))}),onPointerDown:Re(e.onPointerDown,te=>{te.button===0&&(k.current={x:te.clientX,y:te.clientY})}),onPointerMove:Re(e.onPointerMove,te=>{if(!k.current)return;const se=te.clientX-k.current.x,V=te.clientY-k.current.y,B=!!O.current,W=["left","right"].includes(C.swipeDirection),Q=["left","up"].includes(C.swipeDirection)?Math.min:Math.max,T=W?Q(0,se):0,U=W?0:Q(0,V),ee=te.pointerType==="touch"?10:2,J={x:T,y:U},re={originalEvent:te,delta:J};B?(O.current=J,ql(pR,x,re,{discrete:!1})):ob(J,C.swipeDirection,ee)?(O.current=J,ql(mR,y,re,{discrete:!1}),te.target.setPointerCapture(te.pointerId)):(Math.abs(se)>ee||Math.abs(V)>ee)&&(k.current=null)}),onPointerUp:Re(e.onPointerUp,te=>{const se=O.current,V=te.target;if(V.hasPointerCapture(te.pointerId)&&V.releasePointerCapture(te.pointerId),O.current=null,k.current=null,se){const B=te.currentTarget,W={originalEvent:te,delta:se};ob(se,C.swipeDirection,C.swipeThreshold)?ql(yR,j,W,{discrete:!0}):ql(gR,b,W,{discrete:!0}),B.addEventListener("click",Q=>Q.preventDefault(),{once:!0})}})})})}),C.viewport)})]}):null}),wR=e=>{const{__scopeToast:a,children:i,...s}=e,c=Ic(ys,a),[d,f]=w.useState(!1),[h,g]=w.useState(!1);return jR(()=>f(!0)),w.useEffect(()=>{const p=window.setTimeout(()=>g(!0),1e3);return()=>window.clearTimeout(p)},[]),h?null:r.jsx(_c,{asChild:!0,children:r.jsx(Uc,{...s,children:d&&r.jsxs(r.Fragment,{children:[c.label," ",i]})})})},CR="ToastTitle",RC=w.forwardRef((e,a)=>{const{__scopeToast:i,...s}=e;return r.jsx(We.div,{...s,ref:a})});RC.displayName=CR;var SR="ToastDescription",kC=w.forwardRef((e,a)=>{const{__scopeToast:i,...s}=e;return r.jsx(We.div,{...s,ref:a})});kC.displayName=SR;var DC="ToastAction",MC=w.forwardRef((e,a)=>{const{altText:i,...s}=e;return i.trim()?r.jsx(PC,{altText:i,asChild:!0,children:r.jsx(Om,{...s,ref:a})}):(console.error(`Invalid prop \`altText\` supplied to \`${DC}\`. Expected non-empty \`string\`.`),null)});MC.displayName=DC;var OC="ToastClose",Om=w.forwardRef((e,a)=>{const{__scopeToast:i,...s}=e,c=vR(OC,i);return r.jsx(PC,{asChild:!0,children:r.jsx(We.button,{type:"button",...s,ref:a,onClick:Re(e.onClick,c.onClose)})})});Om.displayName=OC;var PC=w.forwardRef((e,a)=>{const{__scopeToast:i,altText:s,...c}=e;return r.jsx(We.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":s||void 0,...c,ref:a})});function VC(e){const a=[];return Array.from(e.childNodes).forEach(s=>{if(s.nodeType===s.TEXT_NODE&&s.textContent&&a.push(s.textContent),NR(s)){const c=s.ariaHidden||s.hidden||s.style.display==="none",d=s.dataset.radixToastAnnounceExclude==="";if(!c)if(d){const f=s.dataset.radixToastAnnounceAlt;f&&a.push(f)}else a.push(...VC(s))}}),a}function ql(e,a,i,{discrete:s}){const c=i.originalEvent.currentTarget,d=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:i});a&&c.addEventListener(e,a,{once:!0}),s?xC(c,d):c.dispatchEvent(d)}var ob=(e,a,i=0)=>{const s=Math.abs(e.x),c=Math.abs(e.y),d=s>c;return a==="left"||a==="right"?d&&s>i:!d&&c>i};
9function jR(e=()=>{}){const a=Na(e);bt(()=>{let i=0,s=0;return i=window.requestAnimationFrame(()=>s=window.requestAnimationFrame(a)),()=>{window.cancelAnimationFrame(i),window.cancelAnimationFrame(s)}},[a])}function NR(e){return e.nodeType===e.ELEMENT_NODE}function AR(e){const a=[],i=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const c=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||c?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;i.nextNode();)a.push(i.currentNode);return a}function Ff(e){const a=document.activeElement;return e.some(i=>i===a?!0:(i.focus(),document.activeElement!==a))}var TR=jC,LC=AC,FC=EC,zC=RC,HC=kC,BC=MC,qC=Om;function WC(e){var a,i,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var c=e.length;for(a=0;a<c;a++)e[a]&&(i=WC(e[a]))&&(s&&(s+=" "),s+=i)}else for(i in e)e[i]&&(s&&(s+=" "),s+=i);return s}function _C(){for(var e,a,i=0,s="",c=arguments.length;i<c;i++)(e=arguments[i])&&(a=WC(e))&&(s&&(s+=" "),s+=a);return s}const sb=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,lb=_C,GC=(e,a)=>i=>{var s;if(a?.variants==null)return lb(e,i?.class,i?.className);const{variants:c,defaultVariants:d}=a,f=Object.keys(c).map(p=>{const y=i?.[p],x=d?.[p];if(y===null)return null;const b=sb(y)||sb(x);return c[p][b]}),h=i&&Object.entries(i).reduce((p,y)=>{let[x,b]=y;return b===void 0||(p[x]=b),p},{}),g=a==null||(s=a.compoundVariants)===null||s===void 0?void 0:s.reduce((p,y)=>{let{class:x,className:b,...j}=y;return Object.entries(j).every(N=>{let[C,A]=N;return Array.isArray(A)?A.includes({...d,...h}[C]):{...d,...h}[C]===A})?[...p,x,b]:p},[]);return lb(e,f,g,i?.class,i?.className)};const ER=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),RR=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,i,s)=>s?s.toUpperCase():i.toLowerCase()),cb=e=>{const a=RR(e);return a.charAt(0).toUpperCase()+a.slice(1)},UC=(...e)=>e.filter((a,i,s)=>!!a&&a.trim()!==""&&s.indexOf(a)===i).join(" ").trim(),kR=e=>{for(const a in e)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var DR={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const MR=w.forwardRef(({color:e="currentColor",size:a=24,strokeWidth:i=2,absoluteStrokeWidth:s,className:c="",children:d,iconNode:f,...h},g)=>w.createElement("svg",{ref:g,...DR,width:a,height:a,stroke:e,strokeWidth:s?Number(i)*24/Number(a):i,className:UC("lucide",c),...!d&&!kR(h)&&{"aria-hidden":"true"},...h},[...f.map(([p,y])=>w.createElement(p,y)),...Array.isArray(d)?d:[d]]));const we=(e,a)=>{const i=w.forwardRef(({className:s,...c},d)=>w.createElement(MR,{ref:d,iconNode:a,className:UC(`lucide-${ER(cb(e))}`,`lucide-${e}`,s),...c}));return i.displayName=cb(e),i};const OR=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],Ot=we("arrow-left",OR);const PR=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],Jo=we("arrow-right",PR);const VR=[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]],LR=we("award",VR);const FR=[["path",{d:"M10 12h4",key:"a56b0p"}],["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M14 21v-3a2 2 0 0 0-4 0v3",key:"1rgiei"}],["path",{d:"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2",key:"secmi2"}],["path",{d:"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16",key:"16ra0t"}]],zR=we("building-2",FR);const HR=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],ln=we("calendar",HR);const BR=[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]],qR=we("camera",BR);const WR=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],_R=we("check",WR);const GR=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],ss=we("chevron-down",GR);const UR=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],IR=we("chevron-left",UR);const YR=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],IC=we("chevron-right",YR);const $R=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],YC=we("chevron-up",$R);const KR=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],ZR=we("circle-alert",KR);const XR=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],nt=we("circle-check-big",XR);
9const QR=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]],JR=we("clipboard-list",QR);const ek=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],$C=we("clock",ek);const tk=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],Pm=we("dollar-sign",tk);const ak=[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]],_n=we("droplets",ak);const nk=[["path",{d:"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z",key:"1jg4f8"}]],zf=we("facebook",nk);const rk=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],ik=we("file-text",rk);const ok=[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]],db=we("flame",ok);const sk=[["path",{d:"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9",key:"1hayfq"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"15ts47"}]],Yc=we("hammer",sk);const lk=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],ls=we("house",lk);const ck=[["rect",{width:"20",height:"20",x:"2",y:"2",rx:"5",ry:"5",key:"2e1cvw"}],["path",{d:"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z",key:"9exkf1"}],["line",{x1:"17.5",x2:"17.51",y1:"6.5",y2:"6.5",key:"r4j83e"}]],Hf=we("instagram",ck);const dk=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],yc=we("layers",dk);const uk=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],fk=we("layout-grid",uk);const hk=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],rc=we("mail",hk);const mk=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],At=we("map-pin",mk);const pk=[["path",{d:"M18 8c0 3.613-3.869 7.429-5.393 8.795a1 1 0 0 1-1.214 0C9.87 15.429 6 11.613 6 8a6 6 0 0 1 12 0",key:"11u0oz"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M8.714 14h-3.71a1 1 0 0 0-.948.683l-2.004 6A1 1 0 0 0 3 22h18a1 1 0 0 0 .948-1.316l-2-6a1 1 0 0 0-.949-.684h-3.712",key:"q8zwxj"}]],gk=we("map-pinned",pk);const yk=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],xc=we("menu",yk);const xk=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],vk=we("palette",xk);const bk=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],wk=we("pause",bk);const Ck=[["path",{d:"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 
90 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",key:"9njp5v"}]],Ye=we("phone",Ck);const Sk=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],jk=we("play",Sk);const Nk=[["path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"rib7q0"}],["path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"1ymkrd"}]],Ak=we("quote",Nk);const Tk=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],KC=we("shield-check",Tk);const Ek=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],Jt=we("shield",Ek);const Rk=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],Bn=we("star",Rk);const kk=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],Vm=we("sun",kk);const Dk=[["path",{d:"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",key:"17jzev"}]],Mk=we("thermometer",Dk);const Ok=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],ZC=we("thumbs-up",Ok);const Pk=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],$o=we("triangle-alert",Pk);const Vk=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],ki=we("wrench",Vk);const Lk=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Wn=we("x",Lk);const Fk=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],XC=we("zap",Fk),zk=(e,a)=>{const i=new Array(e.length+a.length);for(let s=0;s<e.length;s++)i[s]=e[s];for(let s=0;s<a.length;s++)i[e.length+s]=a[s];return i},Hk=(e,a)=>({classGroupId:e,validator:a}),QC=(e=new Map,a=null,i)=>({nextPart:e,validators:a,classGroupId:i}),vc="-",ub=[],Bk="arbitrary..",qk=e=>{const a=_k(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:f=>{if(f.startsWith("[")&&f.endsWith("]"))return Wk(f);const h=f.split(vc),g=h[0]===""&&h.length>1?1:0;return JC(h,g,a)},getConflictingClassGroupIds:(f,h)=>{if(h){const g=s[f],p=i[f];return g?p?zk(p,g):g:p||ub}return i[f]||ub}}},JC=(e,a,i)=>{if(e.length-a===0)return i.classGroupId;const c=e[a],d=i.nextPart.get(c);if(d){const p=JC(e,a+1,d);if(p)return p}const f=i.validators;if(f===null)return;const h=a===0?e.join(vc):e.slice(a).join(vc),g=f.length;for(let p=0;p<g;p++){const y=f[p];if(y.validator(h))return y.classGroupId}},Wk=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=e.slice(1,-1),i=a.indexOf(":"),s=a.slice(0,i);return s?Bk+s:void 0})(),_k=e=>{const{theme:a,classGroups:i}=e;return Gk(i,a)},Gk=(e,a)=>{const i=QC();for(const s in e){const c=e[s];Lm(c,i,s,a)}return i},Lm=(e,a,i,s)=>{const c=e.length;for(let d=0;d<c;d++){const f=e[d];Uk(f,a,i,s)}},Uk=(e,a,i,s)=>{if(typeof e=="string"){Ik(e,a,i);return}if(typeof e=="function"){Yk(e,a,i,s);return}$k(e,a,i,s)},Ik=(e,a,i)=>{const s=e===""?a:e1(a,e);s.classGroupId=i},Yk=(e,a,i,s)=>{if(Kk(e)){Lm(e(s),a,i,s);return}a.validators===null&&(a.validators=[]),a.validators.push(Hk(i,e))},$k=(e,a,i,s)=>{const c=Object.entries(e),d=c.length;for(let f=0;f<d;f++){const[h,g]=c[f];Lm(g,e1(a,h),i,s)}},e1=(e,a)=>{let i=e;const s=a.split(vc),c=s.length;for(let d=0;d<c;d++){const f=s[d];let h=i.nextPart.get(f);h||(h=QC(),i.nextPart.set(f,h)),i=h}return i},Kk=e=>
vendor: 6,374 bytes, line 9
9"isThemeGetter"in e&&e.isThemeGetter===!0,Zk=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,i=Object.create(null),s=Object.create(null);const c=(d,f)=>{i[d]=f,a++,a>e&&(a=0,s=i,i=Object.create(null))};return{get(d){let f=i[d];if(f!==void 0)return f;if((f=s[d])!==void 0)return c(d,f),f},set(d,f){d in i?i[d]=f:c(d,f)}}},qh="!",fb=":",Xk=[],hb=(e,a,i,s,c)=>({modifiers:e,hasImportantModifier:a,baseClassName:i,maybePostfixModifierPosition:s,isExternal:c}),Qk=e=>{const{prefix:a,experimentalParseClassName:i}=e;let s=c=>{const d=[];let f=0,h=0,g=0,p;const y=c.length;for(let C=0;C<y;C++){const A=c[C];if(f===0&&h===0){if(A===fb){d.push(c.slice(g,C)),g=C+1;continue}if(A==="/"){p=C;continue}}A==="["?f++:A==="]"?f--:A==="("?h++:A===")"&&h--}const x=d.length===0?c:c.slice(g);let b=x,j=!1;x.endsWith(qh)?(b=x.slice(0,-1),j=!0):x.startsWith(qh)&&(b=x.slice(1),j=!0);const N=p&&p>g?p-g:void 0;return hb(d,j,b,N)};if(a){const c=a+fb,d=s;s=f=>f.startsWith(c)?d(f.slice(c.length)):hb(Xk,!1,f,void 0,!0)}if(i){const c=s;s=d=>i({className:d,parseClassName:c})}return s},Jk=e=>{const a=new Map;return e.orderSensitiveModifiers.forEach((i,s)=>{a.set(i,1e6+s)}),i=>{const s=[];let c=[];for(let d=0;d<i.length;d++){const f=i[d],h=f[0]==="[",g=a.has(f);h||g?(c.length>0&&(c.sort(),s.push(...c),c=[]),s.push(f)):c.push(f)}return c.length>0&&(c.sort(),s.push(...c)),s}},e3=e=>({cache:Zk(e.cacheSize),parseClassName:Qk(e),sortModifiers:Jk(e),...qk(e)}),t3=/\s+/,a3=(e,a)=>{const{parseClassName:i,getClassGroupId:s,getConflictingClassGroupIds:c,sortModifiers:d}=a,f=[],h=e.trim().split(t3);let g="";for(let p=h.length-1;p>=0;p-=1){const y=h[p],{isExternal:x,modifiers:b,hasImportantModifier:j,baseClassName:N,maybePostfixModifierPosition:C}=i(y);if(x){g=y+(g.length>0?" "+g:g);continue}let A=!!C,E=s(A?N.substring(0,C):N);if(!E){if(!A){g=y+(g.length>0?" "+g:g);continue}if(E=s(N),!E){g=y+(g.length>0?" "+g:g);continue}A=!1}const R=b.length===0?"":b.length===1?b[0]:d(b).join(":"),k=j?R+qh:R,O=k+E;if(f.indexOf(O)>-1)continue;f.push(O);const P=c(E,A);for(let G=0;G<P.length;++G){const I=P[G];f.push(k+I)}g=y+(g.length>0?" "+g:g)}return g},n3=(...e)=>{let a=0,i,s,c="";for(;a<e.length;)(i=e[a++])&&(s=t1(i))&&(c&&(c+=" "),c+=s);return c},t1=e=>{if(typeof e=="string")return e;let a,i="";for(let s=0;s<e.length;s++)e[s]&&(a=t1(e[s]))&&(i&&(i+=" "),i+=a);return i},r3=(e,...a)=>{let i,s,c,d;const f=g=>{const p=a.reduce((y,x)=>x(y),e());return i=e3(p),s=i.cache.get,c=i.cache.set,d=h,h(g)},h=g=>{const p=s(g);if(p)return p;const y=a3(g,i);return c(g,y),y};return d=f,(...g)=>d(n3(...g))},i3=[],dt=e=>{const a=i=>i[e]||i3;return a.isThemeGetter=!0,a},a1=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,n1=/^\((?:(\w[\w-]*):)?(.+)\)$/i,o3=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,s3=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,l3=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,c3=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,d3=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,u3=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Vn=e=>o3.test(e),Ne=e=>!!e&&!Number.isNaN(Number(e)),Ln=e=>!!e&&Number.isInteger(Number(e)),Bf=e=>e.endsWith("%")&&Ne(e.slice(0,-1)),an=e=>s3.test(e),r1=()=>!0,f3=e=>l3.test(e)&&!c3.test(e),Fm=()=>!1,h3=e=>d3.test(e),m3=e=>u3.test(e),p3=e=>!ce(e)&&!ue(e),g3=e=>Yn(e,s1,Fm),ce=e=>a1.test(e),xr=e=>Yn(e,l1,f3),mb=e=>Yn(e,j3,Ne),y3=e=>Yn(e,d1,r1),x3=e=>Yn(e,c1,Fm),pb=e=>Yn(e,i1,Fm),v3=e=>Yn(e,o1,m3),Wl=e=>Yn(e,u1,h3),ue=e=>n1.test(e),Uo=e=>Er(e,l1),b3=e=>Er(e,c1),gb=e=>Er(e,i1),w3=e=>Er(e,s1),C3=e=>Er(e,o1),_l=e=>Er(e,u1,!0),S3=e=>Er(e,d1,!0),Yn=(e,a,i)=>{const s=a1.exec(e);return s?s[1]?a(s[1]):i(s[2]):!1},Er=(e,a,i=!1)=>{const s=n1.exec(e);return s?s[1]?a(s[1]):i:!1},i1=e=>e==="position"||e==="percentage",o1=e=>e==="image"||e==="url",s1=e=>e==="length"||e==="size"||e==="bg-size",l1=e=>e==="length",j3=e=>e==="number",c1=e=>e==="family-name",d1=e=>e==="number"||e==="weight",u1=e=>e==="shadow",N3=()=>{const e=dt("color"),a=dt("font"),i=dt("text"),s=dt("font-weight"),c=dt("tracking"),d=dt("leading"),f=dt("breakpoint"),h=dt("container"),g=dt("spacing"),p=dt("radius"),y=dt("shadow"),x=dt("inset-shadow"),b=dt("text-shadow"),j=dt("drop-shadow"),N=dt("blur"),C=dt("perspective"),A=dt("aspect"),E=dt("ease"),R=dt("animate"),k=()=>["auto","avoid","all","avoid-page","page","left","right","column"],O=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],P=()=>[...O(),ue,ce],G=()=>["auto","hidden","clip","visible","scroll"],I=()=>["auto","contain","none"],H=()=>[ue,ce,g],X=()=>[Vn,"full","auto",...H()],ae=()=>[Ln,"none","subgrid",ue,ce],fe=()=>["auto",{span:["full",Ln,ue,ce]},Ln,ue,ce],ie=()=>[Ln,"auto",ue,ce],xe=()=>["auto","min","max","fr",ue,ce],te=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],se=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...H()],B=()=>[Vn,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...H()],W=()=>[Vn,"screen","full","dvw","lvw","svw","min","max","fit",...H()],Q=()=>[Vn,"screen","full","lh","dvh","lvh","svh","min","max","fit",...H()],T=()=>[e,ue,ce],U=()=>[...O(),gb,pb,{position:[ue,ce]}],ee=()=>["no-repeat",{repeat:["","x","y","space","round"]}],J=()=>["auto","cover","contain",w3,g3,{size:[ue,ce]}],re=()=>[Bf,Uo,xr],me=()=>["","none","full",p,ue,ce],ne=()=>["",Ne,Uo,xr],oe=()=>["solid","dashed","dotted","double"],ge=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ce=()=>[Ne,Bf,gb,pb],Me=()=>["","none",N,ue,ce],ke=()=>["none",Ne,ue,ce],Ve=()=>["none",Ne,ue,ce],rt=()=>[Ne,ue,ce],wt=()=>[Vn,"full",...H()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[an],breakpoint:[an],color:[r1],container:[an],"drop-shadow":[an],ease:["in","out","in-out"],font:[p3],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[an],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[an],shadow:[an
vendor: 6,282 bytes, line 9
9],spacing:["px",Ne],text:[an],"text-shadow":[an],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Vn,ce,ue,A]}],container:["container"],columns:[{columns:[Ne,ce,ue,h]}],"break-after":[{"break-after":k()}],"break-before":[{"break-before":k()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:P()}],overflow:[{overflow:G()}],"overflow-x":[{"overflow-x":G()}],"overflow-y":[{"overflow-y":G()}],overscroll:[{overscroll:I()}],"overscroll-x":[{"overscroll-x":I()}],"overscroll-y":[{"overscroll-y":I()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:X()}],"inset-x":[{"inset-x":X()}],"inset-y":[{"inset-y":X()}],start:[{"inset-s":X(),start:X()}],end:[{"inset-e":X(),end:X()}],"inset-bs":[{"inset-bs":X()}],"inset-be":[{"inset-be":X()}],top:[{top:X()}],right:[{right:X()}],bottom:[{bottom:X()}],left:[{left:X()}],visibility:["visible","invisible","collapse"],z:[{z:[Ln,"auto",ue,ce]}],basis:[{basis:[Vn,"full","auto",h,...H()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ne,Vn,"auto","initial","none",ce]}],grow:[{grow:["",Ne,ue,ce]}],shrink:[{shrink:["",Ne,ue,ce]}],order:[{order:[Ln,"first","last","none",ue,ce]}],"grid-cols":[{"grid-cols":ae()}],"col-start-end":[{col:fe()}],"col-start":[{"col-start":ie()}],"col-end":[{"col-end":ie()}],"grid-rows":[{"grid-rows":ae()}],"row-start-end":[{row:fe()}],"row-start":[{"row-start":ie()}],"row-end":[{"row-end":ie()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":xe()}],"auto-rows":[{"auto-rows":xe()}],gap:[{gap:H()}],"gap-x":[{"gap-x":H()}],"gap-y":[{"gap-y":H()}],"justify-content":[{justify:[...te(),"normal"]}],"justify-items":[{"justify-items":[...se(),"normal"]}],"justify-self":[{"justify-self":["auto",...se()]}],"align-content":[{content:["normal",...te()]}],"align-items":[{items:[...se(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...se(),{baseline:["","last"]}]}],"place-content":[{"place-content":te()}],"place-items":[{"place-items":[...se(),"baseline"]}],"place-self":[{"place-self":["auto",...se()]}],p:[{p:H()}],px:[{px:H()}],py:[{py:H()}],ps:[{ps:H()}],pe:[{pe:H()}],pbs:[{pbs:H()}],pbe:[{pbe:H()}],pt:[{pt:H()}],pr:[{pr:H()}],pb:[{pb:H()}],pl:[{pl:H()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mbs:[{mbs:V()}],mbe:[{mbe:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":H()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":H()}],"space-y-reverse":["space-y-reverse"],size:[{size:B()}],"inline-size":[{inline:["auto",...W()]}],"min-inline-size":[{"min-inline":["auto",...W()]}],"max-inline-size":[{"max-inline":["none",...W()]}],"block-size":[{block:["auto",...Q()]}],"min-block-size":[{"min-block":["auto",...Q()]}],"max-block-size":[{"max-block":["none",...Q()]}],w:[{w:[h,"screen",...B()]}],"min-w":[{"min-w":[h,"screen","none",...B()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[f]},...B()]}],h:[{h:["screen","lh",...B()]}],"min-h":[{"min-h":["screen","lh","none",...B()]}],"max-h":[{"max-h":["screen","lh",...B()]}],"font-size":[{text:["base",i,Uo,xr]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,S3,y3]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Bf,ce]}],"font-family":[{font:[b3,x3,a]}],"font-features":[{"font-features":[ce]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[c,ue,ce]}],"line-clamp":[{"line-clamp":[Ne,"none",ue,mb]}],leading:[{leading:[d,...H()]}],"list-image":[{"list-image":["none",ue,ce]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ue,ce]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:T()}],"text-color":[{text:T()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...oe(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ne,"from-font","auto",ue,xr]}],"text-decoration-color":[{decoration:T()}],"underline-offset":[{"underline-offset":[Ne,"auto",ue,ce]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:H()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ue,ce]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ue,ce]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:U()}],"bg-repeat":[{bg:ee()}],"bg-size":[{bg:J()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Ln,ue,ce],radial:["",ue,ce],conic:[Ln,ue,ce]},C3,v3]}],"bg-color":[{bg:T()}],"gradient-from-pos":[{from:re()}
vendor: 7,403 bytes, line 9
9],"gradient-via-pos":[{via:re()}],"gradient-to-pos":[{to:re()}],"gradient-from":[{from:T()}],"gradient-via":[{via:T()}],"gradient-to":[{to:T()}],rounded:[{rounded:me()}],"rounded-s":[{"rounded-s":me()}],"rounded-e":[{"rounded-e":me()}],"rounded-t":[{"rounded-t":me()}],"rounded-r":[{"rounded-r":me()}],"rounded-b":[{"rounded-b":me()}],"rounded-l":[{"rounded-l":me()}],"rounded-ss":[{"rounded-ss":me()}],"rounded-se":[{"rounded-se":me()}],"rounded-ee":[{"rounded-ee":me()}],"rounded-es":[{"rounded-es":me()}],"rounded-tl":[{"rounded-tl":me()}],"rounded-tr":[{"rounded-tr":me()}],"rounded-br":[{"rounded-br":me()}],"rounded-bl":[{"rounded-bl":me()}],"border-w":[{border:ne()}],"border-w-x":[{"border-x":ne()}],"border-w-y":[{"border-y":ne()}],"border-w-s":[{"border-s":ne()}],"border-w-e":[{"border-e":ne()}],"border-w-bs":[{"border-bs":ne()}],"border-w-be":[{"border-be":ne()}],"border-w-t":[{"border-t":ne()}],"border-w-r":[{"border-r":ne()}],"border-w-b":[{"border-b":ne()}],"border-w-l":[{"border-l":ne()}],"divide-x":[{"divide-x":ne()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ne()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...oe(),"hidden","none"]}],"divide-style":[{divide:[...oe(),"hidden","none"]}],"border-color":[{border:T()}],"border-color-x":[{"border-x":T()}],"border-color-y":[{"border-y":T()}],"border-color-s":[{"border-s":T()}],"border-color-e":[{"border-e":T()}],"border-color-bs":[{"border-bs":T()}],"border-color-be":[{"border-be":T()}],"border-color-t":[{"border-t":T()}],"border-color-r":[{"border-r":T()}],"border-color-b":[{"border-b":T()}],"border-color-l":[{"border-l":T()}],"divide-color":[{divide:T()}],"outline-style":[{outline:[...oe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ne,ue,ce]}],"outline-w":[{outline:["",Ne,Uo,xr]}],"outline-color":[{outline:T()}],shadow:[{shadow:["","none",y,_l,Wl]}],"shadow-color":[{shadow:T()}],"inset-shadow":[{"inset-shadow":["none",x,_l,Wl]}],"inset-shadow-color":[{"inset-shadow":T()}],"ring-w":[{ring:ne()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:T()}],"ring-offset-w":[{"ring-offset":[Ne,xr]}],"ring-offset-color":[{"ring-offset":T()}],"inset-ring-w":[{"inset-ring":ne()}],"inset-ring-color":[{"inset-ring":T()}],"text-shadow":[{"text-shadow":["none",b,_l,Wl]}],"text-shadow-color":[{"text-shadow":T()}],opacity:[{opacity:[Ne,ue,ce]}],"mix-blend":[{"mix-blend":[...ge(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ge()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ne]}],"mask-image-linear-from-pos":[{"mask-linear-from":Ce()}],"mask-image-linear-to-pos":[{"mask-linear-to":Ce()}],"mask-image-linear-from-color":[{"mask-linear-from":T()}],"mask-image-linear-to-color":[{"mask-linear-to":T()}],"mask-image-t-from-pos":[{"mask-t-from":Ce()}],"mask-image-t-to-pos":[{"mask-t-to":Ce()}],"mask-image-t-from-color":[{"mask-t-from":T()}],"mask-image-t-to-color":[{"mask-t-to":T()}],"mask-image-r-from-pos":[{"mask-r-from":Ce()}],"mask-image-r-to-pos":[{"mask-r-to":Ce()}],"mask-image-r-from-color":[{"mask-r-from":T()}],"mask-image-r-to-color":[{"mask-r-to":T()}],"mask-image-b-from-pos":[{"mask-b-from":Ce()}],"mask-image-b-to-pos":[{"mask-b-to":Ce()}],"mask-image-b-from-color":[{"mask-b-from":T()}],"mask-image-b-to-color":[{"mask-b-to":T()}],"mask-image-l-from-pos":[{"mask-l-from":Ce()}],"mask-image-l-to-pos":[{"mask-l-to":Ce()}],"mask-image-l-from-color":[{"mask-l-from":T()}],"mask-image-l-to-color":[{"mask-l-to":T()}],"mask-image-x-from-pos":[{"mask-x-from":Ce()}],"mask-image-x-to-pos":[{"mask-x-to":Ce()}],"mask-image-x-from-color":[{"mask-x-from":T()}],"mask-image-x-to-color":[{"mask-x-to":T()}],"mask-image-y-from-pos":[{"mask-y-from":Ce()}],"mask-image-y-to-pos":[{"mask-y-to":Ce()}],"mask-image-y-from-color":[{"mask-y-from":T()}],"mask-image-y-to-color":[{"mask-y-to":T()}],"mask-image-radial":[{"mask-radial":[ue,ce]}],"mask-image-radial-from-pos":[{"mask-radial-from":Ce()}],"mask-image-radial-to-pos":[{"mask-radial-to":Ce()}],"mask-image-radial-from-color":[{"mask-radial-from":T()}],"mask-image-radial-to-color":[{"mask-radial-to":T()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":O()}],"mask-image-conic-pos":[{"mask-conic":[Ne]}],"mask-image-conic-from-pos":[{"mask-conic-from":Ce()}],"mask-image-conic-to-pos":[{"mask-conic-to":Ce()}],"mask-image-conic-from-color":[{"mask-conic-from":T()}],"mask-image-conic-to-color":[{"mask-conic-to":T()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:U()}],"mask-repeat":[{mask:ee()}],"mask-size":[{mask:J()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ue,ce]}],filter:[{filter:["","none",ue,ce]}],blur:[{blur:Me()}],brightness:[{brightness:[Ne,ue,ce]}],contrast:[{contrast:[Ne,ue,ce]}],"drop-shadow":[{"drop-shadow":["","none",j,_l,Wl]}],"drop-shadow-color":[{"drop-shadow":T()}],grayscale:[{grayscale:["",Ne,ue,ce]}],"hue-rotate":[{"hue-rotate":[Ne,ue,ce]}],invert:[{invert:["",Ne,ue,ce]}],saturate:[{saturate:[Ne,ue,ce]}],sepia:[{sepia:["",Ne,ue,ce]}],"backdrop-filter":[{"backdrop-filter":["","none",ue,ce]}],"backdrop-blur":[{"backdrop-blur":Me()}],"backdrop-brightness":[{"backdrop-brightness":[Ne,ue,ce]}],"backdrop-contrast":[{"backdrop-contrast":[Ne,ue,ce]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ne,ue,ce]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ne,ue,ce]}],"backdrop-invert":[{"backdrop-invert":["",Ne,ue,ce]}],"backdrop-opacity":[{"backdrop-opacity":[Ne,ue,ce]}],"backdrop-saturate":[{"backdrop-saturate":[Ne,ue,ce]}],"backdrop-sepia":[{"backdrop-sepia":["",Ne,ue,ce]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":H()}],"border-spacing-x":[{"border-spacing-x":H()}],"border-spacing-y":[{"border-spacing-y":H()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ue,ce]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ne,"initial",ue,ce]}],ease:[{ease:["linear","initial",E,ue,ce]}],delay:[{delay:[Ne,ue,ce]}],animate:[{animate:["none",R,ue,ce]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[C,ue,ce]}],"perspective-origin":[{"perspective-origin":P()}],rotate:[{rotate:ke()}],"rotate-x":[{"rotate-x":ke()}],"rotate-y":[{"rotate-y":ke()}],"rotate-z":[{"rotate-z":ke()}],scale:[{scale:Ve()}],"scale-x":[{"scale-x":Ve()}],"scale-y":[{"scale-y":Ve()}],"scale-z":[{"scale-z":Ve()}],"scale-3d":["scale-3d"],skew:[{skew:rt()}],"skew-x":[{"skew-x":rt()}],"skew-y":[{"skew-y":rt()}],transform:[{transform:[ue,ce,"","none","gpu","cpu"]}],"transform-origin":[{origin:P()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:wt()}],"translate-x":[{"translate-x":wt()}],"translate-y":[{"translate-y":wt()}],"translate-z":[{"translate-z":wt()}],"translate-none":["translate-none"],accent:[{accent:T()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:T()}
9],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",ue,ce]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":H()}],"scroll-mx":[{"scroll-mx":H()}],"scroll-my":[{"scroll-my":H()}],"scroll-ms":[{"scroll-ms":H()}],"scroll-me":[{"scroll-me":H()}],"scroll-mbs":[{"scroll-mbs":H()}],"scroll-mbe":[{"scroll-mbe":H()}],"scroll-mt":[{"scroll-mt":H()}],"scroll-mr":[{"scroll-mr":H()}],"scroll-mb":[{"scroll-mb":H()}],"scroll-ml":[{"scroll-ml":H()}],"scroll-p":[{"scroll-p":H()}],"scroll-px":[{"scroll-px":H()}],"scroll-py":[{"scroll-py":H()}],"scroll-ps":[{"scroll-ps":H()}],"scroll-pe":[{"scroll-pe":H()}],"scroll-pbs":[{"scroll-pbs":H()}],"scroll-pbe":[{"scroll-pbe":H()}],"scroll-pt":[{"scroll-pt":H()}],"scroll-pr":[{"scroll-pr":H()}],"scroll-pb":[{"scroll-pb":H()}],"scroll-pl":[{"scroll-pl":H()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",ue,ce]}],fill:[{fill:["none",...T()]}],"stroke-w":[{stroke:[Ne,Uo,xr,mb]}],stroke:[{stroke:["none",...T()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},A3=r3(N3);function $e(...e){return A3(_C(e))}const T3=TR,f1=w.forwardRef(({className:e,...a},i)=>r.jsx(LC,{ref:i,className:$e("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...a}));f1.displayName=LC.displayName;const E3=GC("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),h1=w.forwardRef(({className:e,variant:a,...i},s)=>r.jsx(FC,{ref:s,className:$e(E3({variant:a}),e),...i}));h1.displayName=FC.displayName;const R3=w.forwardRef(({className:e,...a},i)=>r.jsx(BC,{ref:i,className:$e("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...a}));R3.displayName=BC.displayName;const m1=w.forwardRef(({className:e,...a},i)=>r.jsx(qC,{ref:i,className:$e("absolute right-2 top-2 rounded-md p-1 text-foreground
vendor: 4,312 bytes, line 9
9/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...a,children:r.jsx(Wn,{className:"h-4 w-4"})}));m1.displayName=qC.displayName;const p1=w.forwardRef(({className:e,...a},i)=>r.jsx(zC,{ref:i,className:$e("text-sm font-semibold",e),...a}));p1.displayName=zC.displayName;const g1=w.forwardRef(({className:e,...a},i)=>r.jsx(HC,{ref:i,className:$e("text-sm opacity-90",e),...a}));g1.displayName=HC.displayName;function k3(){const{toasts:e}=pC();return r.jsxs(T3,{children:[e.map(function({id:a,title:i,description:s,action:c,...d}){return r.jsxs(h1,{...d,children:[r.jsxs("div",{className:"grid gap-1",children:[i&&r.jsx(p1,{children:i}),s&&r.jsx(g1,{children:s})]}),c,r.jsx(m1,{})]},a)}),r.jsx(f1,{})]})}var D3=Fc[" useId ".trim().toString()]||(()=>{}),M3=0;function zm(e){const[a,i]=w.useState(D3());return bt(()=>{i(s=>s??String(M3++))},[e]),a?`radix-${a}`:""}const O3=["top","right","bottom","left"],Gn=Math.min,Qt=Math.max,bc=Math.round,Gl=Math.floor,La=e=>({x:e,y:e}),P3={left:"right",right:"left",bottom:"top",top:"bottom"};function Wh(e,a,i){return Qt(e,Gn(a,i))}function rn(e,a){return typeof e=="function"?e(a):e}function on(e){return e.split("-")[0]}function Vi(e){return e.split("-")[1]}function Hm(e){return e==="x"?"y":"x"}function Bm(e){return e==="y"?"height":"width"}function Va(e){const a=e[0];return a==="t"||a==="b"?"y":"x"}function qm(e){return Hm(Va(e))}function V3(e,a,i){i===void 0&&(i=!1);const s=Vi(e),c=qm(e),d=Bm(c);let f=c==="x"?s===(i?"end":"start")?"right":"left":s==="start"?"bottom":"top";return a.reference[d]>a.floating[d]&&(f=wc(f)),[f,wc(f)]}function L3(e){const a=wc(e);return[_h(e),a,_h(a)]}function _h(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const yb=["left","right"],xb=["right","left"],F3=["top","bottom"],z3=["bottom","top"];function H3(e,a,i){switch(e){case"top":case"bottom":return i?a?xb:yb:a?yb:xb;case"left":case"right":return a?F3:z3;default:return[]}}function B3(e,a,i,s){const c=Vi(e);let d=H3(on(e),i==="start",s);return c&&(d=d.map(f=>f+"-"+c),a&&(d=d.concat(d.map(_h)))),d}function wc(e){const a=on(e);return P3[a]+e.slice(a.length)}function q3(e){return{top:0,right:0,bottom:0,left:0,...e}}function y1(e){return typeof e!="number"?q3(e):{top:e,right:e,bottom:e,left:e}}function Cc(e){const{x:a,y:i,width:s,height:c}=e;return{width:s,height:c,top:i,left:a,right:a+s,bottom:i+c,x:a,y:i}}function vb(e,a,i){let{reference:s,floating:c}=e;const d=Va(a),f=qm(a),h=Bm(f),g=on(a),p=d==="y",y=s.x+s.width/2-c.width/2,x=s.y+s.height/2-c.height/2,b=s[h]/2-c[h]/2;let j;switch(g){case"top":j={x:y,y:s.y-c.height};break;case"bottom":j={x:y,y:s.y+s.height};break;case"right":j={x:s.x+s.width,y:x};break;case"left":j={x:s.x-c.width,y:x};break;default:j={x:s.x,y:s.y}}switch(Vi(a)){case"start":j[f]-=b*(i&&p?-1:1);break;case"end":j[f]+=b*(i&&p?-1:1);break}return j}async function W3(e,a){var i;a===void 0&&(a={});const{x:s,y:c,platform:d,rects:f,elements:h,strategy:g}=e,{boundary:p="clippingAncestors",rootBoundary:y="viewport",elementContext:x="floating",altBoundary:b=!1,padding:j=0}=rn(a,e),N=y1(j),A=h[b?x==="floating"?"reference":"floating":x],E=Cc(await d.getClippingRect({element:(i=await(d.isElement==null?void 0:d.isElement(A)))==null||i?A:A.contextElement||await(d.getDocumentElement==null?void 0:d.getDocumentElement(h.floating)),boundary:p,rootBoundary:y,strategy:g})),R=x==="floating"?{x:s,y:c,width:f.floating.width,height:f.floating.height}:f.reference,k=await(d.getOffsetParent==null?void 0:d.getOffsetParent(h.floating)),O=await(d.isElement==null?void 0:d.isElement(k))?await(d.getScale==null?void 0:d.getScale(k))||{x:1,y:1}:{x:1,y:1},P=Cc(d.convertOffsetParentRelativeRectToViewportRelativeRect?await d.convertOffsetParentRelativeRectToViewportRelativeRect({elements:h,rect:R,offsetParent:k,strategy:g}):R);return{top:(E.top-P.top+N.top)/O.y,bottom:(P.bottom-E.bottom+N.bottom)/O.y,left:(E.left-P.left+N.left)/O.x,right:(P.right-E.right+N.right)/O.x}}const _3=50,G3=async(e,a,i)=>{const{placement:s="bottom",strategy:c="absolute",middleware:d=[],platform:f}
vendor: 4,414 bytes, line 9
9=i,h=f.detectOverflow?f:{...f,detectOverflow:W3},g=await(f.isRTL==null?void 0:f.isRTL(a));let p=await f.getElementRects({reference:e,floating:a,strategy:c}),{x:y,y:x}=vb(p,s,g),b=s,j=0;const N={};for(let C=0;C<d.length;C++){const A=d[C];if(!A)continue;const{name:E,fn:R}=A,{x:k,y:O,data:P,reset:G}=await R({x:y,y:x,initialPlacement:s,placement:b,strategy:c,middlewareData:N,rects:p,platform:h,elements:{reference:e,floating:a}});y=k??y,x=O??x,N[E]={...N[E],...P},G&&j<_3&&(j++,typeof G=="object"&&(G.placement&&(b=G.placement),G.rects&&(p=G.rects===!0?await f.getElementRects({reference:e,floating:a,strategy:c}):G.rects),{x:y,y:x}=vb(p,b,g)),C=-1)}return{x:y,y:x,placement:b,strategy:c,middlewareData:N}},U3=e=>({name:"arrow",options:e,async fn(a){const{x:i,y:s,placement:c,rects:d,platform:f,elements:h,middlewareData:g}=a,{element:p,padding:y=0}=rn(e,a)||{};if(p==null)return{};const x=y1(y),b={x:i,y:s},j=qm(c),N=Bm(j),C=await f.getDimensions(p),A=j==="y",E=A?"top":"left",R=A?"bottom":"right",k=A?"clientHeight":"clientWidth",O=d.reference[N]+d.reference[j]-b[j]-d.floating[N],P=b[j]-d.reference[j],G=await(f.getOffsetParent==null?void 0:f.getOffsetParent(p));let I=G?G[k]:0;(!I||!await(f.isElement==null?void 0:f.isElement(G)))&&(I=h.floating[k]||d.floating[N]);const H=O/2-P/2,X=I/2-C[N]/2-1,ae=Gn(x[E],X),fe=Gn(x[R],X),ie=ae,xe=I-C[N]-fe,te=I/2-C[N]/2+H,se=Wh(ie,te,xe),V=!g.arrow&&Vi(c)!=null&&te!==se&&d.reference[N]/2-(te<ie?ae:fe)-C[N]/2<0,B=V?te<ie?te-ie:te-xe:0;return{[j]:b[j]+B,data:{[j]:se,centerOffset:te-se-B,...V&&{alignmentOffset:B}},reset:V}}}),I3=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(a){var i,s;const{placement:c,middlewareData:d,rects:f,initialPlacement:h,platform:g,elements:p}=a,{mainAxis:y=!0,crossAxis:x=!0,fallbackPlacements:b,fallbackStrategy:j="bestFit",fallbackAxisSideDirection:N="none",flipAlignment:C=!0,...A}=rn(e,a);if((i=d.arrow)!=null&&i.alignmentOffset)return{};const E=on(c),R=Va(h),k=on(h)===h,O=await(g.isRTL==null?void 0:g.isRTL(p.floating)),P=b||(k||!C?[wc(h)]:L3(h)),G=N!=="none";!b&&G&&P.push(...B3(h,C,N,O));const I=[h,...P],H=await g.detectOverflow(a,A),X=[];let ae=((s=d.flip)==null?void 0:s.overflows)||[];if(y&&X.push(H[E]),x){const te=V3(c,f,O);X.push(H[te[0]],H[te[1]])}if(ae=[...ae,{placement:c,overflows:X}],!X.every(te=>te<=0)){var fe,ie;const te=(((fe=d.flip)==null?void 0:fe.index)||0)+1,se=I[te];if(se&&(!(x==="alignment"?R!==Va(se):!1)||ae.every(W=>Va(W.placement)===R?W.overflows[0]>0:!0)))return{data:{index:te,overflows:ae},reset:{placement:se}};let V=(ie=ae.filter(B=>B.overflows[0]<=0).sort((B,W)=>B.overflows[1]-W.overflows[1])[0])==null?void 0:ie.placement;if(!V)switch(j){case"bestFit":{var xe;const B=(xe=ae.filter(W=>{if(G){const Q=Va(W.placement);return Q===R||Q==="y"}return!0}).map(W=>[W.placement,W.overflows.filter(Q=>Q>0).reduce((Q,T)=>Q+T,0)]).sort((W,Q)=>W[1]-Q[1])[0])==null?void 0:xe[0];B&&(V=B);break}case"initialPlacement":V=h;break}if(c!==V)return{reset:{placement:V}}}return{}}}};function bb(e,a){return{top:e.top-a.height,right:e.right-a.width,bottom:e.bottom-a.height,left:e.left-a.width}}function wb(e){return O3.some(a=>e[a]>=0)}const Y3=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(a){const{rects:i,platform:s}=a,{strategy:c="referenceHidden",...d}=rn(e,a);switch(c){case"referenceHidden":{const f=await s.detectOverflow(a,{...d,elementContext:"reference"}),h=bb(f,i.reference);return{data:{referenceHiddenOffsets:h,referenceHidden:wb(h)}}}case"escaped":{const f=await s.detectOverflow(a,{...d,altBoundary:!0}),h=bb(f,i.floating);return{data:{escapedOffsets:h,escaped:wb(h)}}}default:return{}}}}},x1=new Set(["left","top"]);async function $3(e,a){const{placement:i,platform:s,elements:c}=e,d=await(s.isRTL==null?void 0:s.isRTL(c.floating)),f=on(i),h=Vi(i),g=Va(i)==="y",p=x1.has(f)?-1:1,y=d&&g?-1:1,x=rn(a,e);let{mainAxis:b,crossAxis:j,alignmentAxis:N}=typeof x=="number"?{mainAxis:x,crossAxis:0,alignmentAxis:null}:{mainAxis:x.mainAxis||0,crossAxis:x.crossAxis||0,alignmentAxis:x.alignmentAxis};return h&&typeof N=="number"&&(j=h==="end"?N*-1:N),g?{x:j*y,y:b*p}:{x:b*p,y:j*y}}const K3=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(a){var i,s;const{x:c,y:d,placement:f,middlewareData:h}=a,g=await $3(a,e);return f===((i=h.offset)==null?void 0:i.placement)&&(s=h.arrow)!=null&&s.alignmentOffset?{}:{x:c+g.x,y:d+g.y,data:{...g,placement:f}}}}}
9,Z3=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(a){const{x:i,y:s,placement:c,platform:d}=a,{mainAxis:f=!0,crossAxis:h=!1,limiter:g={fn:E=>{let{x:R,y:k}=E;return{x:R,y:k}}},...p}=rn(e,a),y={x:i,y:s},x=await d.detectOverflow(a,p),b=Va(on(c)),j=Hm(b);let N=y[j],C=y[b];if(f){const E=j==="y"?"top":"left",R=j==="y"?"bottom":"right",k=N+x[E],O=N-x[R];N=Wh(k,N,O)}if(h){const E=b==="y"?"top":"left",R=b==="y"?"bottom":"right",k=C+x[E],O=C-x[R];C=Wh(k,C,O)}const A=g.fn({...a,[j]:N,[b]:C});return{...A,data:{x:A.x-i,y:A.y-s,enabled:{[j]:f,[b]:h}}}}}},X3=function(e){return e===void 0&&(e={}),{options:e,fn(a){const{x:i,y:s,placement:c,rects:d,middlewareData:f}=a,{offset:h=0,mainAxis:g=!0,crossAxis:p=!0}=rn(e,a),y={x:i,y:s},x=Va(c),b=Hm(x);let j=y[b],N=y[x];const C=rn(h,a),A=typeof C=="number"?{mainAxis:C,crossAxis:0}:{mainAxis:0,crossAxis:0,...C};if(g){const k=b==="y"?"height":"width",O=d.reference[b]-d.floating[k]+A.mainAxis,P=d.reference[b]+d.reference[k]-A.mainAxis;j<O?j=O:j>P&&(j=P)}if(p){var E,R;const k=b==="y"?"width":"height",O=x1.has(on(c)),P=d.reference[x]-d.floating[k]+(O&&((E=f.offset)==null?void 0:E[x])||0)+(O?0:A.crossAxis),G=d.reference[x]+d.reference[k]+(O?0:((R=f.offset)==null?void 0:R[x])||0)-(O?A.crossAxis:0);N<P?N=P:N>G&&(N=G)}return{[b]:j,[x]:N}}}},Q3=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(a){var i,s;const{placement:c,rects:d,platform:f,elements:h}=a,{apply:g=()=>{},...p}=rn(e,a),y=await f.detectOverflow(a,p),x=on(c),b=Vi(c),j=Va(c)==="y",{width:N,height:C}=d.floating;let A,E;x==="top"||x==="bottom"?(A=x,E=b===(await(f.isRTL==null?void 0:f.isRTL(h.floating))?"start":"end")?"left":"right"):(E=x,A=b==="end"?"top":"bottom");const R=C-y.top-y.bottom,k=N-y.left-y.right,O=Gn(C-y[A],R),P=Gn(N-y[E],k),G=!a.middlewareData.shift;let I=O,H=P;if((i=a.middlewareData.shift)!=null&&i.enabled.x&&(H=k),(s=a.middlewareData.shift)!=null&&s.enabled.y&&(I=R),G&&!b){const ae=Qt(y.left,0),fe=Qt(y.right,0),ie=Qt(y.top,0),xe=Qt(y.bottom,0);j?H=N-2*(ae!==0||fe!==0?ae+fe:Qt(y.left,y.right)):I=C-2*(ie!==0||xe!==0?ie+xe:Qt(y.top,y.bottom))}await g({...a,availableWidth:H,availableHeight:I});const X=await f.getDimensions(h.floating);return N!==X.width||C!==X.height?{reset:{rects:!0}}:{}}}};function $c(){return typeof window<"u"}function Li(e){return v1(e)?(e.nodeName||"").toLowerCase():"#document"}function ea(e){var a;return(e==null||(a=e.ownerDocument)==null?void 0:a.defaultView)||window}function Ha(e){var a;return(a=(v1(e)?e.ownerDocument:e.document)||window.document)==null?void 0:a.documentElement}function v1(e){return $c()?e instanceof Node||e instanceof ea(e).Node:!1}function Aa(e){return $c()?e instanceof Element||e instanceof ea(e).Element:!1}function cn(e){return $c()?e instanceof HTMLElement||e instanceof ea(e).HTMLElement:!1}function Cb(e){return!$c()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof ea(e).ShadowRoot}function xs(e){const{overflow:a,overflowX:i,overflowY:s,display:c}=Ta(e);return/auto|scroll|overlay|hidden|clip/.test(a+s+i)&&c!=="inline"&&c!=="contents"}function J3(e){return/^(table|td|th)$/.test(Li(e))}function Kc(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const eD=/transform|translate|scale|rotate|perspective|filter/,tD=/paint|layout|strict|content/,vr=e=>!!e&&e!=="none";let qf;function Wm(e){const a=Aa(e)?Ta(e):e;return vr(a.transform)||vr(a.translate)||vr(a.scale)||vr(a.rotate)||vr(a.perspective)||!_m()&&(vr(a.backdropFilter)||vr(a.filter))||eD.test(a.willChange||"")||tD.test(a.contain||"")}function aD(e){let a=Un(e);for(;cn(a)&&!Di(a);){if(Wm(a))return a;if(Kc(a))return null;a=Un(a)}return null}function _m(){return qf==null&&(qf=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),qf}function Di(e){return/^(html|body|#document)$/.test(Li(e))}function Ta(e){return ea(e).getComputedStyle(e)}function Zc(e){return Aa(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Un(e){if(Li(e)==="html")return e;const a=e.assignedSlot||e.parentNode||Cb(e)&&e.host||Ha(e);return Cb(a)?a.host:a}function b1(e){const a=Un(e);return Di(a)?e.ownerDocument?e.ownerDocument.body:e.body:cn(a)&&xs(a)?a:b1(a)}function cs(e,a,i){var s;a===void 0&&(a=[]),i===void 0&&(i=!0);const c=b1(e),d=c===((s=e.ownerDocument)==null?void 0:s.body),f=ea(c);if(d){const h=Gh(f);
vendor: 4,302 bytes, line 9
9return a.concat(f,f.visualViewport||[],xs(c)?c:[],h&&i?cs(h):[])}else return a.concat(c,cs(c,[],i))}function Gh(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function w1(e){const a=Ta(e);let i=parseFloat(a.width)||0,s=parseFloat(a.height)||0;const c=cn(e),d=c?e.offsetWidth:i,f=c?e.offsetHeight:s,h=bc(i)!==d||bc(s)!==f;return h&&(i=d,s=f),{width:i,height:s,$:h}}function Gm(e){return Aa(e)?e:e.contextElement}function Ai(e){const a=Gm(e);if(!cn(a))return La(1);const i=a.getBoundingClientRect(),{width:s,height:c,$:d}=w1(a);let f=(d?bc(i.width):i.width)/s,h=(d?bc(i.height):i.height)/c;return(!f||!Number.isFinite(f))&&(f=1),(!h||!Number.isFinite(h))&&(h=1),{x:f,y:h}}const nD=La(0);function C1(e){const a=ea(e);return!_m()||!a.visualViewport?nD:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function rD(e,a,i){return a===void 0&&(a=!1),!i||a&&i!==ea(e)?!1:a}function Nr(e,a,i,s){a===void 0&&(a=!1),i===void 0&&(i=!1);const c=e.getBoundingClientRect(),d=Gm(e);let f=La(1);a&&(s?Aa(s)&&(f=Ai(s)):f=Ai(e));const h=rD(d,i,s)?C1(d):La(0);let g=(c.left+h.x)/f.x,p=(c.top+h.y)/f.y,y=c.width/f.x,x=c.height/f.y;if(d){const b=ea(d),j=s&&Aa(s)?ea(s):s;let N=b,C=Gh(N);for(;C&&s&&j!==N;){const A=Ai(C),E=C.getBoundingClientRect(),R=Ta(C),k=E.left+(C.clientLeft+parseFloat(R.paddingLeft))*A.x,O=E.top+(C.clientTop+parseFloat(R.paddingTop))*A.y;g*=A.x,p*=A.y,y*=A.x,x*=A.y,g+=k,p+=O,N=ea(C),C=Gh(N)}}return Cc({width:y,height:x,x:g,y:p})}function Xc(e,a){const i=Zc(e).scrollLeft;return a?a.left+i:Nr(Ha(e)).left+i}function S1(e,a){const i=e.getBoundingClientRect(),s=i.left+a.scrollLeft-Xc(e,i),c=i.top+a.scrollTop;return{x:s,y:c}}function iD(e){let{elements:a,rect:i,offsetParent:s,strategy:c}=e;const d=c==="fixed",f=Ha(s),h=a?Kc(a.floating):!1;if(s===f||h&&d)return i;let g={scrollLeft:0,scrollTop:0},p=La(1);const y=La(0),x=cn(s);if((x||!x&&!d)&&((Li(s)!=="body"||xs(f))&&(g=Zc(s)),x)){const j=Nr(s);p=Ai(s),y.x=j.x+s.clientLeft,y.y=j.y+s.clientTop}const b=f&&!x&&!d?S1(f,g):La(0);return{width:i.width*p.x,height:i.height*p.y,x:i.x*p.x-g.scrollLeft*p.x+y.x+b.x,y:i.y*p.y-g.scrollTop*p.y+y.y+b.y}}function oD(e){return Array.from(e.getClientRects())}function sD(e){const a=Ha(e),i=Zc(e),s=e.ownerDocument.body,c=Qt(a.scrollWidth,a.clientWidth,s.scrollWidth,s.clientWidth),d=Qt(a.scrollHeight,a.clientHeight,s.scrollHeight,s.clientHeight);let f=-i.scrollLeft+Xc(e);const h=-i.scrollTop;return Ta(s).direction==="rtl"&&(f+=Qt(a.clientWidth,s.clientWidth)-c),{width:c,height:d,x:f,y:h}}const Sb=25;function lD(e,a){const i=ea(e),s=Ha(e),c=i.visualViewport;let d=s.clientWidth,f=s.clientHeight,h=0,g=0;if(c){d=c.width,f=c.height;const y=_m();(!y||y&&a==="fixed")&&(h=c.offsetLeft,g=c.offsetTop)}const p=Xc(s);if(p<=0){const y=s.ownerDocument,x=y.body,b=getComputedStyle(x),j=y.compatMode==="CSS1Compat"&&parseFloat(b.marginLeft)+parseFloat(b.marginRight)||0,N=Math.abs(s.clientWidth-x.clientWidth-j);N<=Sb&&(d-=N)}else p<=Sb&&(d+=p);return{width:d,height:f,x:h,y:g}}function cD(e,a){const i=Nr(e,!0,a==="fixed"),s=i.top+e.clientTop,c=i.left+e.clientLeft,d=cn(e)?Ai(e):La(1),f=e.clientWidth*d.x,h=e.clientHeight*d.y,g=c*d.x,p=s*d.y;return{width:f,height:h,x:g,y:p}}function jb(e,a,i){let s;if(a==="viewport")s=lD(e,i);else if(a==="document")s=sD(Ha(e));else if(Aa(a))s=cD(a,i);else{const c=C1(e);s={x:a.x-c.x,y:a.y-c.y,width:a.width,height:a.height}}return Cc(s)}function j1(e,a){const i=Un(e);return i===a||!Aa(i)||Di(i)?!1:Ta(i).position==="fixed"||j1(i,a)}function dD(e,a){const i=a.get(e);if(i)return i;let s=cs(e,[],!1).filter(h=>Aa(h)&&Li(h)!=="body"),c=null;const d=Ta(e).position==="fixed";let f=d?Un(e):e;for(;Aa(f)&&!Di(f);){const h=Ta(f),g=Wm(f);!g&&h.position==="fixed"&&(c=null),(d?!g&&!c:!g&&h.position==="static"&&!!c&&(c.position==="absolute"||c.position==="fixed")||xs(f)&&!g&&j1(e,f))?s=s.filter(y=>y!==f):c=h,f=Un(f)}return a.set(e,s),s}function uD(e){let{element:a,boundary:i,rootBoundary:s,strategy:c}=e;const f=[...i==="clippingAncestors"?Kc(a)?[]:dD(a,this._c):[].concat(i),s],h=jb(a,f[0],c);let g=h.top,p=h.right,y=h.bottom,x=h.left;for(let b=1;b<f.length;b++){const j=jb(a,f[b],c);g=Qt(j.top,g),p=Gn(j.right,p),y=Gn(j.bottom,y),x=Qt(j.left,x)}return{width:p-x,height:y-g,x,y:g}}function fD(e){const{width:a,height:i}=w1(e);return{width:a,height:i}}
vendor: 4,581 bytes, line 9
9function hD(e,a,i){const s=cn(a),c=Ha(a),d=i==="fixed",f=Nr(e,!0,d,a);let h={scrollLeft:0,scrollTop:0};const g=La(0);function p(){g.x=Xc(c)}if(s||!s&&!d)if((Li(a)!=="body"||xs(c))&&(h=Zc(a)),s){const j=Nr(a,!0,d,a);g.x=j.x+a.clientLeft,g.y=j.y+a.clientTop}else c&&p();d&&!s&&c&&p();const y=c&&!s&&!d?S1(c,h):La(0),x=f.left+h.scrollLeft-g.x-y.x,b=f.top+h.scrollTop-g.y-y.y;return{x,y:b,width:f.width,height:f.height}}function Wf(e){return Ta(e).position==="static"}function Nb(e,a){if(!cn(e)||Ta(e).position==="fixed")return null;if(a)return a(e);let i=e.offsetParent;return Ha(e)===i&&(i=i.ownerDocument.body),i}function N1(e,a){const i=ea(e);if(Kc(e))return i;if(!cn(e)){let c=Un(e);for(;c&&!Di(c);){if(Aa(c)&&!Wf(c))return c;c=Un(c)}return i}let s=Nb(e,a);for(;s&&J3(s)&&Wf(s);)s=Nb(s,a);return s&&Di(s)&&Wf(s)&&!Wm(s)?i:s||aD(e)||i}const mD=async function(e){const a=this.getOffsetParent||N1,i=this.getDimensions,s=await i(e.floating);return{reference:hD(e.reference,await a(e.floating),e.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function pD(e){return Ta(e).direction==="rtl"}const gD={convertOffsetParentRelativeRectToViewportRelativeRect:iD,getDocumentElement:Ha,getClippingRect:uD,getOffsetParent:N1,getElementRects:mD,getClientRects:oD,getDimensions:fD,getScale:Ai,isElement:Aa,isRTL:pD};function A1(e,a){return e.x===a.x&&e.y===a.y&&e.width===a.width&&e.height===a.height}function yD(e,a){let i=null,s;const c=Ha(e);function d(){var h;clearTimeout(s),(h=i)==null||h.disconnect(),i=null}function f(h,g){h===void 0&&(h=!1),g===void 0&&(g=1),d();const p=e.getBoundingClientRect(),{left:y,top:x,width:b,height:j}=p;if(h||a(),!b||!j)return;const N=Gl(x),C=Gl(c.clientWidth-(y+b)),A=Gl(c.clientHeight-(x+j)),E=Gl(y),k={rootMargin:-N+"px "+-C+"px "+-A+"px "+-E+"px",threshold:Qt(0,Gn(1,g))||1};let O=!0;function P(G){const I=G[0].intersectionRatio;if(I!==g){if(!O)return f();I?f(!1,I):s=setTimeout(()=>{f(!1,1e-7)},1e3)}I===1&&!A1(p,e.getBoundingClientRect())&&f(),O=!1}try{i=new IntersectionObserver(P,{...k,root:c.ownerDocument})}catch{i=new IntersectionObserver(P,k)}i.observe(e)}return f(!0),d}function xD(e,a,i,s){s===void 0&&(s={});const{ancestorScroll:c=!0,ancestorResize:d=!0,elementResize:f=typeof ResizeObserver=="function",layoutShift:h=typeof IntersectionObserver=="function",animationFrame:g=!1}=s,p=Gm(e),y=c||d?[...p?cs(p):[],...a?cs(a):[]]:[];y.forEach(E=>{c&&E.addEventListener("scroll",i,{passive:!0}),d&&E.addEventListener("resize",i)});const x=p&&h?yD(p,i):null;let b=-1,j=null;f&&(j=new ResizeObserver(E=>{let[R]=E;R&&R.target===p&&j&&a&&(j.unobserve(a),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{var k;(k=j)==null||k.observe(a)})),i()}),p&&!g&&j.observe(p),a&&j.observe(a));let N,C=g?Nr(e):null;g&&A();function A(){const E=Nr(e);C&&!A1(C,E)&&i(),C=E,N=requestAnimationFrame(A)}return i(),()=>{var E;y.forEach(R=>{c&&R.removeEventListener("scroll",i),d&&R.removeEventListener("resize",i)}),x?.(),(E=j)==null||E.disconnect(),j=null,g&&cancelAnimationFrame(N)}}const vD=K3,bD=Z3,wD=I3,CD=Q3,SD=Y3,Ab=U3,jD=X3,ND=(e,a,i)=>{const s=new Map,c={platform:gD,...i},d={...c.platform,_c:s};return G3(e,a,{...c,platform:d})};var AD=typeof document<"u",TD=function(){},ic=AD?w.useLayoutEffect:TD;function Sc(e,a){if(e===a)return!0;if(typeof e!=typeof a)return!1;if(typeof e=="function"&&e.toString()===a.toString())return!0;let i,s,c;if(e&&a&&typeof e=="object"){if(Array.isArray(e)){if(i=e.length,i!==a.length)return!1;for(s=i;s--!==0;)if(!Sc(e[s],a[s]))return!1;return!0}if(c=Object.keys(e),i=c.length,i!==Object.keys(a).length)return!1;for(s=i;s--!==0;)if(!{}.hasOwnProperty.call(a,c[s]))return!1;for(s=i;s--!==0;){const d=c[s];if(!(d==="_owner"&&e.$$typeof)&&!Sc(e[d],a[d]))return!1}return!0}return e!==e&&a!==a}function T1(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Tb(e,a){const i=T1(e);return Math.round(a*i)/i}function _f(e){const a=w.useRef(e);return ic(()=>{a.current=e}),a}function ED(e){e===void 0&&(e={});const{placement:a="bottom",strategy:i="absolute",middleware:s=[],platform:c,elements:{reference:d,floating:f}={},transform:h=!0,whileElementsMounted:g,open:p}=e,[y,x]=w.useState({x:0,y:0,strategy:i,placement:a,middlewareData:{},isPositioned:!1}),[b,j]=w.useState(s);Sc(b,s)||j(s);const[N,C]=w.useState(null),[A,E]=w.useState(null),R=w.useCallback(W=>{W!==G.current&&(G.current=W,C(W))},[]),k=w.useCallback(W=>{W!==I.current&&(I.current=W,E(W))},[]),O=d||N,P=f||A,G=w.useRef(null),I=w.useRef(null),H=w.useRef(y),X=g!=null,ae=_f(g),fe=_f(c),ie=_f(p),xe=w.useCallback(()=>
vendor: 5,308 bytes, line 9
9{if(!G.current||!I.current)return;const W={placement:a,strategy:i,middleware:b};fe.current&&(W.platform=fe.current),ND(G.current,I.current,W).then(Q=>{const T={...Q,isPositioned:ie.current!==!1};te.current&&!Sc(H.current,T)&&(H.current=T,Pi.flushSync(()=>{x(T)}))})},[b,a,i,fe,ie]);ic(()=>{p===!1&&H.current.isPositioned&&(H.current.isPositioned=!1,x(W=>({...W,isPositioned:!1})))},[p]);const te=w.useRef(!1);ic(()=>(te.current=!0,()=>{te.current=!1}),[]),ic(()=>{if(O&&(G.current=O),P&&(I.current=P),O&&P){if(ae.current)return ae.current(O,P,xe);xe()}},[O,P,xe,ae,X]);const se=w.useMemo(()=>({reference:G,floating:I,setReference:R,setFloating:k}),[R,k]),V=w.useMemo(()=>({reference:O,floating:P}),[O,P]),B=w.useMemo(()=>{const W={position:i,left:0,top:0};if(!V.floating)return W;const Q=Tb(V.floating,y.x),T=Tb(V.floating,y.y);return h?{...W,transform:"translate("+Q+"px, "+T+"px)",...T1(V.floating)>=1.5&&{willChange:"transform"}}:{position:i,left:Q,top:T}},[i,h,V.floating,y.x,y.y]);return w.useMemo(()=>({...y,update:xe,refs:se,elements:V,floatingStyles:B}),[y,xe,se,V,B])}const RD=e=>{function a(i){return{}.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){const{element:s,padding:c}=typeof e=="function"?e(i):e;return s&&a(s)?s.current!=null?Ab({element:s.current,padding:c}).fn(i):{}:s?Ab({element:s,padding:c}).fn(i):{}}}},kD=(e,a)=>{const i=vD(e);return{name:i.name,fn:i.fn,options:[e,a]}},DD=(e,a)=>{const i=bD(e);return{name:i.name,fn:i.fn,options:[e,a]}},MD=(e,a)=>({fn:jD(e).fn,options:[e,a]}),OD=(e,a)=>{const i=wD(e);return{name:i.name,fn:i.fn,options:[e,a]}},PD=(e,a)=>{const i=CD(e);return{name:i.name,fn:i.fn,options:[e,a]}},VD=(e,a)=>{const i=SD(e);return{name:i.name,fn:i.fn,options:[e,a]}},LD=(e,a)=>{const i=RD(e);return{name:i.name,fn:i.fn,options:[e,a]}};var FD="Arrow",E1=w.forwardRef((e,a)=>{const{children:i,width:s=10,height:c=5,...d}=e;return r.jsx(We.svg,{...d,ref:a,width:s,height:c,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?i:r.jsx("polygon",{points:"0,0 30,0 15,10"})})});E1.displayName=FD;var zD=E1;function HD(e){const[a,i]=w.useState(void 0);return bt(()=>{if(e){i({width:e.offsetWidth,height:e.offsetHeight});const s=new ResizeObserver(c=>{if(!Array.isArray(c)||!c.length)return;const d=c[0];let f,h;if("borderBoxSize"in d){const g=d.borderBoxSize,p=Array.isArray(g)?g[0]:g;f=p.inlineSize,h=p.blockSize}else f=e.offsetWidth,h=e.offsetHeight;i({width:f,height:h})});return s.observe(e,{box:"border-box"}),()=>s.unobserve(e)}else i(void 0)},[e]),a}var Um="Popper",[R1,Qc]=gs(Um),[BD,k1]=R1(Um),D1=e=>{const{__scopePopper:a,children:i}=e,[s,c]=w.useState(null);return r.jsx(BD,{scope:a,anchor:s,onAnchorChange:c,children:i})};D1.displayName=Um;var M1="PopperAnchor",O1=w.forwardRef((e,a)=>{const{__scopePopper:i,virtualRef:s,...c}=e,d=k1(M1,i),f=w.useRef(null),h=et(a,f),g=w.useRef(null);return w.useEffect(()=>{const p=g.current;g.current=s?.current||f.current,p!==g.current&&d.onAnchorChange(g.current)}),s?null:r.jsx(We.div,{...c,ref:h})});O1.displayName=M1;var Im="PopperContent",[qD,WD]=R1(Im),P1=w.forwardRef((e,a)=>{const{__scopePopper:i,side:s="bottom",sideOffset:c=0,align:d="center",alignOffset:f=0,arrowPadding:h=0,avoidCollisions:g=!0,collisionBoundary:p=[],collisionPadding:y=0,sticky:x="partial",hideWhenDetached:b=!1,updatePositionStrategy:j="optimized",onPlaced:N,...C}=e,A=k1(Im,i),[E,R]=w.useState(null),k=et(a,oe=>R(oe)),[O,P]=w.useState(null),G=HD(O),I=G?.width??0,H=G?.height??0,X=s+(d!=="center"?"-"+d:""),ae=typeof y=="number"?y:{top:0,right:0,bottom:0,left:0,...y},fe=Array.isArray(p)?p:[p],ie=fe.length>0,xe={padding:ae,boundary:fe.filter(GD),altBoundary:ie},{refs:te,floatingStyles:se,placement:V,isPositioned:B,middlewareData:W}=ED({strategy:"fixed",placement:X,whileElementsMounted:(...oe)=>xD(...oe,{animationFrame:j==="always"}),elements:{reference:A.anchor},middleware:[kD({mainAxis:c+H,alignmentAxis:f}),g&&DD({mainAxis:!0,crossAxis:!1,limiter:x==="partial"?MD():void 0,...xe}),g&&OD({...xe}),PD({...xe,apply:({elements:oe,rects:ge,availableWidth:Ce,availableHeight:Me})=>{const{width:ke,height:Ve}=ge.reference,rt=oe.floating.style;rt.setProperty("--radix-popper-available-width",`${Ce}px`),rt.setProperty("--radix-popper-available-height",`${Me}px`),rt.setProperty("--radix-popper-anchor-width",`${ke}px`),rt.setProperty("--radix-popper-anchor-height",`${Ve}px`)}}),O&&LD({element:O,padding:h}),UD({arrowWidth:I,arrowHeight:H}),b&&VD({strategy:"referenceHidden",...xe})]}),[Q,T]=F1(V),U=Na(N);bt(()=>{B&&U?.()},[B,U]);const ee=W.arrow?.x,J=W.arrow?.y,re=W.arrow?.centerOffset!==0,[me,ne]=w.useState();return bt(()=>{E&&ne(window.getComputedStyle(E).zIndex)},[E]),r.jsx("div",{ref:te.setFloating,"data-radix-popper-content-wrapper":"",style:{...se,transform:B?se.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:me,"--radix-popper-transform-origin":[W.transformOrigin?.x,W.transformOrigin?.y].join(" "),...W.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:r.jsx(qD,{scope:i,placedSide:Q,onArrowChange:P,arrowX:ee,arrowY:J,shouldHideArrow:re,children:r.jsx(We.div,{"data-side":Q,"data-align":T,...C,ref:k,style:{...C.style,animation:B?void 0:"none"}})})})});P1.displayName=Im;var V1="PopperArrow",_D={top:"bottom",right:"left",bottom:"top",left:"r
9ight"},L1=w.forwardRef(function(a,i){const{__scopePopper:s,...c}=a,d=WD(V1,s),f=_D[d.placedSide];return r.jsx("span",{ref:d.onArrowChange,style:{position:"absolute",left:d.arrowX,top:d.arrowY,[f]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[d.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[d.placedSide],visibility:d.shouldHideArrow?"hidden":void 0},children:r.jsx(zD,{...c,ref:i,style:{...c.style,display:"block"}})})});L1.displayName=V1;function GD(e){return e!==null}var UD=e=>({name:"transformOrigin",options:e,fn(a){const{placement:i,rects:s,middlewareData:c}=a,f=c.arrow?.centerOffset!==0,h=f?0:e.arrowWidth,g=f?0:e.arrowHeight,[p,y]=F1(i),x={start:"0%",center:"50%",end:"100%"}[y],b=(c.arrow?.x??0)+h/2,j=(c.arrow?.y??0)+g/2;let N="",C="";return p==="bottom"?(N=f?x:`${b}px`,C=`${-g}px`):p==="top"?(N=f?x:`${b}px`,C=`${s.floating.height+g}px`):p==="right"?(N=`${-g}px`,C=f?x:`${j}px`):p==="left"&&(N=`${s.floating.width+g}px`,C=f?x:`${j}px`),{data:{x:N,y:C}}}});function F1(e){const[a,i="center"]=e.split("-");return[a,i]}var ID=D1,z1=O1,H1=P1,B1=L1,[Jc]=gs("Tooltip",[Qc]),Ym=Qc(),q1="TooltipProvider",YD=700,Eb="tooltip.open",[$D,W1]=Jc(q1),_1=e=>{const{__scopeTooltip:a,delayDuration:i=YD,skipDelayDuration:s=300,disableHoverableContent:c=!1,children:d}=e,f=w.useRef(!0),h=w.useRef(!1),g=w.useRef(0);return w.useEffect(()=>{const p=g.current;return()=>window.clearTimeout(p)},[]),r.jsx($D,{scope:a,isOpenDelayedRef:f,delayDuration:i,onOpen:w.useCallback(()=>{window.clearTimeout(g.current),f.current=!1},[]),onClose:w.useCallback(()=>{window.clearTimeout(g.current),g.current=window.setTimeout(()=>f.current=!0,s)},[s]),isPointerInTransitRef:h,onPointerInTransitChange:w.useCallback(p=>{h.current=p},[]),disableHoverableContent:c,children:d})};_1.displayName=q1;var G1="Tooltip",[IV,vs]=Jc(G1),Uh="TooltipTrigger",KD=w.forwardRef((e,a)=>{const{__scopeTooltip:i,...s}=e,c=vs(Uh,i),d=W1(Uh,i),f=Ym(i),h=w.useRef(null),g=et(a,h,c.onTriggerChange),p=w.useRef(!1),y=w.useRef(!1),x=w.useCallback(()=>p.current=!1,[]);return w.useEffect(()=>()=>document.removeEventListener("pointerup",x),[x]),r.jsx(z1,{asChild:!0,...f,children:r.jsx(We.button,{"aria-describedby":c.open?c.contentId:void 0,"data-state":c.stateAttribute,...s,ref:g,onPointerMove:Re(e.onPointerMove,b=>{b.pointerType!=="touch"&&!y.current&&!d.isPointerInTransitRef.current&&(c.onTriggerEnter(),y.current=!0)}),onPointerLeave:Re(e.onPointerLeave,()=>{c.onTriggerLeave(),y.current=!1}),onPointerDown:Re(e.onPointerDown,()=>{c.open&&c.onClose(),p.current=!0,document.addEventListener("pointerup",x,{once:!0})}),onFocus:Re(e.onFocus,()=>{p.current||c.onOpen()}),onBlur:Re(e.onBlur,c.onClose),onClick:Re(e.onClick,c.onClose)})})});KD.displayName=Uh;var $m="TooltipPortal",[ZD,XD]=Jc($m,{forceMount:void 0}),U1=e=>{const{__scopeTooltip:a,forceMount:i,children:s,container:c}=e,d=vs($m,a);return r.jsx(ZD,{scope:a,forceMount:i,children:r.jsx(Gc,{present:i||d.open,children:r.jsx(_c,{asChild:!0,container:c,children:s})})})};U1.displayName=$m;var Mi="TooltipContent",I1=w.forwardRef((e,a)=>{const i=XD(Mi,e.__scopeTooltip),{forceMount:s=i.forceMount,side:c="top",...d}=e,f=vs(Mi,e.__scopeTooltip);return r.jsx(Gc,{present:s||f.open,children:f.disableHoverableContent?r.jsx(Y1,{side:c,...d,ref:a}):r.jsx(QD,{side:c,...d,ref:a})})}),QD=w.forwardRef((e,a)=>{const i=vs(Mi,e.__scopeTooltip),s=W1(Mi,e.__scopeTooltip),c=w.useRef(null),d=et(a,c),[f,h]=w.useState(null),{trigger:g,onClose:p}=i,y=c.current,{onPointerInTransitChange:x}=s,b=w.useCallback(()=>{h(null),x(!1)},[x]),j=w.useCallback((N,C)=>{const A=N.currentTarget,E={x:N.clientX,y:N.clientY},R=nM(E,A.getBoundingClientRect()),k=rM(E,R),O=iM(C.getBoundingClientRect()),P=sM([...k,...O]);h(P),x(!0)},[x]);return w.useEffect(()=>()=>b(),[b]),w.useEffect(()=>{if(g&&y){const N=A=>j(A,y),C=A=>j(A,g);return g.addEventListener("pointerleave",N),y.addEventListener("pointerleave",C),()=>{g.removeEventListener("pointerleave",N),y.removeEventListener("pointerleave",C)}}},[g,y,j,b]),w.useEffect(()=>{if(f){const N=C=>{const A=C.target,E={x:C.clientX,y:C.clientY},R=g?.contains(A)||y?.contains(A),k=!oM(E,f);R?b():k&&(b(),p())};return document.addEventListener("pointermove",N),()=>document.removeEventListener("pointermove",N)}},[g,y,f,p,b]),r.jsx(Y1,{...e,ref:d})}),[JD,eM]=Jc(G1,{isInside:!1}),tM=qE("TooltipContent"),Y1=w.forwardRef((e,a)=>{const{__scopeTooltip:i,children:s,"aria-label":c,onEscapeKeyDown:d,onPointerDownOutside:f,...h}=e,g=vs(Mi,i),p=Ym(i),{onClose:y}=g;return w.useEffect(()=>(document.addEventListener(Eb,y),()=>document.removeEventListener(Eb,y)),[y]),w.useEffect(()=>{if(g.trigger){const x=b=>{b.target?.contains(g.trigger)&&y()};return window.addEventListener("scroll",x,{capture:!0}),()=>window.removeEventListener("scroll",x,{capture:!0})}},[g.trigger,y]),r.jsx(Wc,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:x=>x.preventDefault(),onDismiss:y,children:r.jsxs(H1,{"data-state":g.
vendor: 1,045 bytes, line 9
9stateAttribute,...p,...h,ref:a,style:{...h.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[r.jsx(tM,{children:s}),r.jsx(JD,{scope:i,isInside:!0,children:r.jsx(cR,{id:g.contentId,role:"tooltip",children:c||s})})]})})});I1.displayName=Mi;var $1="TooltipArrow",aM=w.forwardRef((e,a)=>{const{__scopeTooltip:i,...s}=e,c=Ym(i);return eM($1,i).isInside?null:r.jsx(B1,{...c,...s,ref:a})});aM.displayName=$1;function nM(e,a){const i=Math.abs(a.top-e.y),s=Math.abs(a.bottom-e.y),c=Math.abs(a.right-e.x),d=Math.abs(a.left-e.x);switch(Math.min(i,s,c,d)){case d:return"left";case c:return"right";case i:return"top";case s:return"bottom";default:throw new Error("unreachable")}}function rM(e,a,i=5){const s=[];
9switch(a){case"top":s.push({x:e.x-i,y:e.y+i},{x:e.x+i,y:e.y+i});break;case"bottom":s.push({x:e.x-i,y:e.y-i},{x:e.x+i,y:e.y-i});break;case"left":s.push({x:e.x+i,y:e.y-i},{x:e.x+i,y:e.y+i});break;case"right":s.push({x:e.x-i,y:e.y-i},{x:e.x-i,y:e.y+i});break}return s}function iM(e){const{top:a,right:i,bottom:s,left:c}=e;return[{x:c,y:a},{x:i,y:a},{x:i,y:s},{x:c,y:s}]}function oM(e,a){const{x:i,y:s}=e;let c=!1;for(let d=0,f=a.length-1;d<a.length;f=d++){const h=a[d],g=a[f],p=h.x,y=h.y,x=g.x,b=g.y;y>s!=b>s&&i<(x-p)*(s-y)/(b-y)+p&&(c=!c)}return c}function sM(e){const a=e.slice();return a.sort((i,s)=>i.x<s.x?-1:i.x>s.x?1:i.y<s.y?-1:i.y>s.y?1:0),lM(a)}function lM(e){if(e.length<=1)return e.slice();const a=[];for(let s=0;s<e.length;s++){const c=e[s];for(;a.length>=2;){const d=a[a.length-1],f=a[a.length-2];if((d.x-f.x)*(c.y-f.y)>=(d.y-f.y)*(c.x-f.x))a.pop();else break}a.push(c)}a.pop();const i=[];for(let s=e.length-1;s>=0;s--){const c=e[s];for(;i.length>=2;){const d=i[i.length-1],f=i[i.length-2];if((d.x-f.x)*(c.y-f.y)>=(d.y-f.y)*(c.x-f.x))i.pop();else break}i.push(c)}return i.pop(),a.length===1&&i.length===1&&a[0].x===i[0].x&&a[0].y===i[0].y?a:a.concat(i)}var cM=_1,dM=U1,K1=I1;const uM=cM,fM=w.forwardRef(({className:e,sideOffset:a=4,...i},s)=>r.jsx(dM,{children:r.jsx(K1,{ref:s,sideOffset:a,className:$e("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",e),...i})}));fM.displayName=K1.displayName;const jc=w.forwardRef(({className:e,...a},i)=>r.jsx("div",{ref:i,className:$e("rounded-xl border bg-card text-card-foreground shadow",e),...a}));jc.displayName="Card";const hM=w.forwardRef(({className:e,...a},i)=>r.jsx("div",{ref:i,className:$e("flex flex-col space-y-1.5 p-6",e),...a}));hM.displayName="CardHeader";const mM=w.forwardRef(({className:e,...a},i)=>r.jsx("div",{ref:i,className:$e("font-semibold leading-none tracking-tight",e),...a}));mM.displayName="CardTitle";const pM=w.forwardRef(({className:e,...a},i)=>r.jsx("div",{ref:i,className:$e("text-sm text-muted-foreground",e),...a}));pM.displayName="CardDescription";const Nc=w.forwardRef(({className:e,...a},i)=>r.jsx("div",{ref:i,className:$e("p-6 pt-0",e),...a}));Nc.displayName="CardContent";const gM=w.forwardRef(({className:e,...a},i)=>r.jsx("div",{ref:i,className:$e("flex items-center p-6 pt-0",e),...a}));gM.displayName="CardFooter";function Tt(){return r.jsx("div",{className:"min-h-screen w-full flex items-center justify-center bg-gray-50",children:r.jsx(jc,{className:"w-full max-w-md mx-4",children:r.jsxs(Nc,{className:"pt-6",children:[r.jsxs("div",{className:"flex mb-4 gap-2",children:[r.jsx(ZR,{className:"h-8 w-8 text-red-500"}),r.jsx("h1",{className:"text-2xl font-bold text-gray-900",children:"404 Page Not Found"})]}),r.jsx("p",{className:"mt-4 text-sm text-gray-600",children:"Did you forget to add the page to the router?"})]})})})}const Km=w.createContext({});function Zm(e){const a=w.useRef(null);return a.current===null&&(a.current=e()),a.current}const yM=typeof window<"u",Z1=yM?w.useLayoutEffect:w.useEffect,ed=w.createContext(null);function Xm(e,a){e.indexOf(a)===-1&&e.push(a)}function Ac(e,a){const i=e.indexOf(a);i>-1&&e.splice(i,1)}const za=(e,a,i)=>i>a?a:i<e?e:i;let Qm=()=>{};const sn={},X1=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e);function Q1(e){return typeof e=="object"&&e!==null}const J1=e=>/^0[^.\s]+$/u.test(e);function eS(e){let a;return()=>(a===void 0&&(a=e()),a)}const ha=e=>e,xM=(e,a)=>i=>a(e(i)),bs=(...e)=>e.reduce(xM),ds=(e,a,i)=>{const s=a-e;return s===0?1:(i-e)/s};class Jm{constructor(){this.subscriptions=[]}add(a){return Xm(this.subscriptions,a),()=>Ac(this.subscriptions,a)}notify(a,i,s){const c=this.subscriptions.length;if(c)if(c===1)this.subscriptions[0](a,i,s);else for(let d=0;d<c;d++){const f=this.subscriptions[d];f&&f(a,i,s)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const Sa=e=>e*1e3,fa=e=>e/1e3;function tS(e,a){return a?e*(1e3/a):0}const aS=(e,a,i)=>(((1-3*i+3*a)*e+(3*i-6*a))*e+3*a)*e,vM=1e-7,bM=12;function wM(e,a,i,s,c){let d,f,h=0;do f=a+(i-a)/2,d=aS(f,s,c)-e,d>0?i=f:a=f;
vendor: 15,840 bytes, line 9
9while(Math.abs(d)>vM&&++h<bM);return f}function ws(e,a,i,s){if(e===a&&i===s)return ha;const c=d=>wM(d,0,1,e,i);return d=>d===0||d===1?d:aS(c(d),a,s)}const nS=e=>a=>a<=.5?e(2*a)/2:(2-e(2*(1-a)))/2,rS=e=>a=>1-e(1-a),iS=ws(.33,1.53,.69,.99),ep=rS(iS),oS=nS(ep),sS=e=>(e*=2)<1?.5*ep(e):.5*(2-Math.pow(2,-10*(e-1))),tp=e=>1-Math.sin(Math.acos(e)),lS=rS(tp),cS=nS(tp),CM=ws(.42,0,1,1),SM=ws(0,0,.58,1),dS=ws(.42,0,.58,1),jM=e=>Array.isArray(e)&&typeof e[0]!="number",uS=e=>Array.isArray(e)&&typeof e[0]=="number",NM={linear:ha,easeIn:CM,easeInOut:dS,easeOut:SM,circIn:tp,circInOut:cS,circOut:lS,backIn:ep,backInOut:oS,backOut:iS,anticipate:sS},AM=e=>typeof e=="string",Rb=e=>{if(uS(e)){Qm(e.length===4);const[a,i,s,c]=e;return ws(a,i,s,c)}else if(AM(e))return NM[e];return e},Ul=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function TM(e,a){let i=new Set,s=new Set,c=!1,d=!1;const f=new WeakSet;let h={delta:0,timestamp:0,isProcessing:!1};function g(y){f.has(y)&&(p.schedule(y),e()),y(h)}const p={schedule:(y,x=!1,b=!1)=>{const N=b&&c?i:s;return x&&f.add(y),N.has(y)||N.add(y),y},cancel:y=>{s.delete(y),f.delete(y)},process:y=>{if(h=y,c){d=!0;return}c=!0,[i,s]=[s,i],i.forEach(g),i.clear(),c=!1,d&&(d=!1,p.process(y))}};return p}const EM=40;function fS(e,a){let i=!1,s=!0;const c={delta:0,timestamp:0,isProcessing:!1},d=()=>i=!0,f=Ul.reduce((k,O)=>(k[O]=TM(d),k),{}),{setup:h,read:g,resolveKeyframes:p,preUpdate:y,update:x,preRender:b,render:j,postRender:N}=f,C=()=>{const k=sn.useManualTiming?c.timestamp:performance.now();i=!1,sn.useManualTiming||(c.delta=s?1e3/60:Math.max(Math.min(k-c.timestamp,EM),1)),c.timestamp=k,c.isProcessing=!0,h.process(c),g.process(c),p.process(c),y.process(c),x.process(c),b.process(c),j.process(c),N.process(c),c.isProcessing=!1,i&&a&&(s=!1,e(C))},A=()=>{i=!0,s=!0,c.isProcessing||e(C)};return{schedule:Ul.reduce((k,O)=>{const P=f[O];return k[O]=(G,I=!1,H=!1)=>(i||A(),P.schedule(G,I,H)),k},{}),cancel:k=>{for(let O=0;O<Ul.length;O++)f[Ul[O]].cancel(k)},state:c,steps:f}}const{schedule:Ue,cancel:In,state:vt,steps:Gf}=fS(typeof requestAnimationFrame<"u"?requestAnimationFrame:ha,!0);let oc;function RM(){oc=void 0}const Dt={now:()=>(oc===void 0&&Dt.set(vt.isProcessing||sn.useManualTiming?vt.timestamp:performance.now()),oc),set:e=>{oc=e,queueMicrotask(RM)}},hS=e=>a=>typeof a=="string"&&a.startsWith(e),mS=hS("--"),kM=hS("var(--"),ap=e=>kM(e)?DM.test(e.split("/*")[0].trim()):!1,DM=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function kb(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const Fi={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},us={...Fi,transform:e=>za(0,1,e)},Il={...Fi,default:1},es=e=>Math.round(e*1e5)/1e5,np=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function MM(e){return e==null}const OM=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,rp=(e,a)=>i=>!!(typeof i=="string"&&OM.test(i)&&i.startsWith(e)||a&&!MM(i)&&Object.prototype.hasOwnProperty.call(i,a)),pS=(e,a,i)=>s=>{if(typeof s!="string")return s;const[c,d,f,h]=s.match(np);return{[e]:parseFloat(c),[a]:parseFloat(d),[i]:parseFloat(f),alpha:h!==void 0?parseFloat(h):1}},PM=e=>za(0,255,e),Uf={...Fi,transform:e=>Math.round(PM(e))},Cr={test:rp("rgb","red"),parse:pS("red","green","blue"),transform:({red:e,green:a,blue:i,alpha:s=1})=>"rgba("+Uf.transform(e)+", "+Uf.transform(a)+", "+Uf.transform(i)+", "+es(us.transform(s))+")"};function VM(e){let a="",i="",s="",c="";return e.length>5?(a=e.substring(1,3),i=e.substring(3,5),s=e.substring(5,7),c=e.substring(7,9)):(a=e.substring(1,2),i=e.substring(2,3),s=e.substring(3,4),c=e.substring(4,5),a+=a,i+=i,s+=s,c+=c),{red:parseInt(a,16),green:parseInt(i,16),blue:parseInt(s,16),alpha:c?parseInt(c,16)/255:1}}const Ih={test:rp("#"),parse:VM,transform:Cr.transform},Cs=e=>({test:a=>typeof a=="string"&&a.endsWith(e)&&a.split(" ").length===1,parse:parseFloat,transform:a=>`${a}${e}`}),Fn=Cs("deg"),Fa=Cs("%"),de=Cs("px"),LM=Cs("vh"),FM=Cs("vw"),Db={...Fa,parse:e=>Fa.parse(e)/100,transform:e=>Fa.transform(e*100)},vi={test:rp("hsl","hue"),parse:pS("hue","saturation","lightness"),transform:({hue:e,saturation:a,lightness:i,alpha:s=1})=>"hsla("+Math.round(e)+", "+Fa.transform(es(a))+", "+Fa.transform(es(i))+", "+es(us.transform(s))+")"},st={test:e=>Cr.test(e)||Ih.test(e)||vi.test(e),parse:e=>Cr.test(e)?Cr.parse(e):vi.test(e)?vi.parse(e):Ih.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?Cr.transform(e):vi.transform(e),getAnimatableNone:e=>{const a=st.parse(e);return a.alpha=0,st.transform(a)}},zM=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function HM(e){return isNaN(e)&&typeof e=="string"&&(e.match(np)?.length||0)+(e.match(zM)?.length||0)>0}const gS="number",yS="color",BM="var",qM="var(",Mb="${}",WM=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function fs(e){const a=e.toString(),i=[],s={color:[],number:[],var:[]},c=[];let d=0;const h=a.replace(WM,g=>(st.test(g)?(s.color.push(d),c.push(yS),i.push(st.parse(g))):g.startsWith(qM)?(s.var.push(d),c.push(BM),i.push(g)):(s.number.push(d),c.push(gS),i.push(parseFloat(g))),++d,Mb)).split(Mb);return{values:i,split:h,indexes:s,types:c}}function xS(e){return fs(e).values}function vS(e){const{split:a,types:i}=fs(e),s=a.length;return c=>{let d="";for(let f=0;f<s;f++)if(d+=a[f],c[f]!==void 0){const h=i[f];h===gS?d+=es(c[f]):h===yS?d+=st.transform(c[f]):d+=c[f]}return d}}const _M=e=>typeof e=="number"?0:st.test(e)?st.getAnimatableNone(e):e;function GM(e){const a=xS(e);return vS(e)(a.map(_M))}const ja={test:HM,parse:xS,createTransformer:vS,getAnimatableNone:GM};function If(e,a,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(a-e)*6*i:i<1/2?a:i<2/3?e+(a-e)*(2/3-i)*6:e}function UM({hue:e,saturation:a,lightness:i,alpha:s}){e/=360,a/=100,i/=100;let c=0,d=0,f=0;if(!a)c=d=f=i;else{const h=i<.5?i*(1+a):i+a-i*a,g=2*i-h;c=If(g,h,e+1/3),d=If(g,h,e),f=If(g,h,e-1/3)}return{red:Math.round(c*255),green:Math.round(d*255),blue:Math.round(f*255),alpha:s}}function Tc(e,a){return i=>i>0?a:e}const Ze=(e,a,i)=>e+(a-e)*i,Yf=(e,a,i)=>{const s=e*e,c=i*(a*a-s)+s;return c<0?0:Math.sqrt(c)},IM=[Ih,Cr,vi],YM=e=>IM.find(a=>a.test(e));function Ob(e){const a=YM(e);if(!a)return!1;let i=a.parse(e);return a===vi&&(i=UM(i)),i}const Pb=(e,a)=>{const i=Ob(e),s=Ob(a);if(!i||!s)return Tc(e,a);const c={...i};return d=>(c.red=Yf(i.red,s.red,d),c.green=Yf(i.green,s.green,d),c.blue=Yf(i.blue,s.blue,d),c.alpha=Ze(i.alpha,s.alpha,d),Cr.transform(c))},Yh=new Set(["none","hidden"]);function $M(e,a){return Yh.has(e)?i=>i<=0?e:a:i=>i>=1?a:e}function KM(e,a){return i=>Ze(e,a,i)}function ip(e){return typeof e=="number"?KM:typeof e=="string"?ap(e)?Tc:st.test(e)?Pb:QM:Array.isArray(e)?bS:typeof e=="object"?st.test(e)?Pb:ZM:Tc}function bS(e,a){const i=[...e],s=i.length,c=e.map((d,f)=>ip(d)(d,a[f]));return d=>{for(let f=0;f<s;f++)i[f]=c[f](d);return i}}function ZM(e,a){const i={...e,...a},s={};for(const c in i)e[c]!==void 0&&a[c]!==void 0&&(s[c]=ip(e[c])(e[c],a[c]));return c=>{for(const d in s)i[d]=s[d](c);return i}}function XM(e,a){const i=[],s={color:0,var:0,number:0};for(let c=0;c<a.values.length;c++){const d=a.types[c],f=e.indexes[d][s[d]],h=e.values[f]??0;i[c]=h,s[d]++}return i}const QM=(e,a)=>{const i=ja.createTransformer(a),s=fs(e),c=fs(a);return s.indexes.var.length===c.indexes.var.length&&s.indexes.color.length===c.indexes.color.length&&s.indexes.number.length>=c.indexes.number.length?Yh.has(e)&&!c.values.length||Yh.has(a)&&!s.values.length?$M(e,a):bs(bS(XM(s,c),c.values),i):Tc(e,a)};function wS(e,a,i){return typeof e=="number"&&typeof a=="number"&&typeof i=="number"?Ze(e,a,i):ip(e)(e,a)}const JM=e=>{const a=({timestamp:i})=>e(i);return{start:(i=!0)=>Ue.update(a,i),stop:()=>In(a),now:()=>vt.isProcessing?vt.timestamp:Dt.now()}},CS=(e,a,i=10)=>{let s="";const c=Math.max(Math.round(a/i),2);for(let d=0;d<c;d++)s+=Math.round(e(d/(c-1))*1e4)/1e4+", ";return`linear(${s.substring(0,s.length-2)})`},Ec=2e4;function op(e){let a=0;const i=50;let s=e.next(a);for(;!s.done&&a<Ec;)a+=i,s=e.next(a);return a>=Ec?1/0:a}function e5(e,a=100,i){const s=i({...e,keyframes:[0,a]}),c=Math.min(op(s),Ec);return{type:"keyframes",ease:d=>s.next(c*d).value/a,duration:fa(c)}}const t5=5;function SS(e,a,i){const s=Math.max(a-t5,0);return tS(i-e(s),a-s)}const Je={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},$f=.001;function a5({duration:e=Je.duration,bounce:a=Je.bounce,velocity:i=Je.velocity,mass:s=Je.mass}){let c,d,f=1-a;f=za(Je.minDamping,Je.maxDamping,f),e=za(Je.minDuration,Je.maxDuration,fa(e)),f<1?(c=p=>{const y=p*f,x=y*e,b=y-i,j=$h(p,f),N=Math.exp(-x);return $f-b/j*N},d=p=>{const x=p*f*e,b=x*i+i,j=Math.pow(f,2)*Math.pow(p,2)*e,N=Math.exp(-x),C=$h(Math.pow(p,2),f);return(-c(p)+$f>0?-1:1)*((b-j)*N)/C}):(c=p=>{const y=Math.exp(-p*e),x=(p-i)*e+1;return-$f+y*x},d=p=>{const y=Math.exp(-p*e),x=(i-p)*(e*e);return y*x});const h=5/e,g=r5(c,d,h);if(e=Sa(e),isNaN(g))return{stiffness:Je.stiffness,damping:Je.damping,duration:e};{const p=Math.pow(g,2)*s;return{stiffness:p,damping:f*2*Math.sqrt(s*p),duration:e}}}const n5=12;function r5(e,a,i){let s=i;for(let c=1;c<n5;c++)s=s-e(s)/a(s);return s}function $h(e,a){return e*Math.sqrt(1-a*a)}const i5=["duration","bounce"],o5=["stiffness","damping","mass"];function Vb(e,a){return a.some(i=>e[i]!==void 0)}function s5(e){let a={velocity:Je.velocity,stiffness:Je.stiffness,damping:Je.damping,mass:Je.mass,isResolvedFromDuration:!1,...e};if(!Vb(e,o5)&&Vb(e,i5))if(a.velocity=0,e.visualDuration){const i=e.visualDuration,s=2*Math.PI/(i*1.2),c=s*s,d=2*za(.05,1,1-(e.bounce||0))*Math.sqrt(c);a={...a,mass:Je.mass,stiffness:c,damping:d}}else{const i=a5({...e,velocity:0});a={...a,...i,mass:Je.mass},a.isResolvedFromDuration=!0}return a}function Rc(e=Je.visualDuration,a=Je.bounce){const i=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:a}:e;let{restSpeed:s,restDelta:c}=i;const d=i.keyframes[0],f=i.keyframes[i.keyframes.length-1],h={done:!1,value:d},{stiffness:g,damping:p,mass:y,duration:x,velocity:b,isResolvedFromDuration:j}=s5({...i,velocity:-fa(i.velocity||0)}),N=b||0,C=p/(2*Math.sqrt(g*y)),A=f-d,E=fa(Math.sqrt(g/y)),R=Math.abs(A)<5;s||(s=R?Je.restSpeed.granular:Je.restSpeed.default),c||(c=R?Je.restDelta.granular:Je.restDelta.default);let k;if(C<1){const P=$h(E,C);k=G=>{const I=Math.exp(-C*E*G);return f-I*((N+C*E*A)/P*Math.sin(P*G)+A*Math.cos(P*G))}}else if(C===1)k=P=>f-Math.exp(-E*P)*(A+(N+E*A)*P);else{const P=E*Math.sqrt(C*C-1);k=G=>{const I=Math.exp(-C*E*G),H=Math.min(P*G,300);return f-I*((N+C*E*A)*Math.sinh(H)+P*A*Math.cosh(H))/P}}const O={calculatedDuration:j&&x||null,next:P=>{const G=k(P);if(j)h.done=P>=x;else{let I=P===0?N:0;C<1&&(I=P===0?Sa(N):SS(k,P,G));const H=Math.abs(I)<=s,X=Math.abs(f-G)<=c;h.done=H&&X}return h.value=h.done?f:G,h},toString:()=>{const P=Math.min(op(O),Ec),G=CS(I=>O.next(P*I).value,P,30);return P+"ms "+G},toTransition:()=>{}};return O}Rc.applyToOptions=e=>{const a=e5(e,100,Rc);return e.ease=a.ease,e.duration=Sa(a.duration),e.type="keyframes",e};function Kh({keyframes:e,velocity:a=0,power:i=.8,timeConstant:s=325,bounceDamping:c=10,bounceStiffness:d=500,modifyTarget:f,min:h,max:g,restDelta:p=.5,restSpeed:y}){const x=e[0],b={done:!1,value:x},j=H=>h!==void 0&&H<h||g!==void 0&&H>g,N=H=>h===void 0?g:g===void 0||Math.abs(h-H)<Math.abs(g-H)?h:g;let C=i*a;const A=x+C,E=f===void 0?A:f(A);E!==A&&(C=E-x);const R=H=>-C*Math.exp(-H/s),k=H=>E+R(H),O=H=>{const X=R(H),ae=k(H);b.done=Math.abs(X)<=p,b.value=b.done?E:ae};let P,G;const I=H=>{j(b.value)&&(P=H,G=Rc({keyframes:[b.value,N(b.value)],velocity:SS(k,H,b.value),damping:c,stiffness:d,restDelta:p,restSpeed:y}))};return I(0),{calculatedDuration:null,next:H=>{let X=!1;return!G&&P===void 0&&(X=!0,O(H),I(H)),P!==void 0&&H>=P?G.next(H-P):(!X&&O(H),b)}}}function l5(e,a,i){const s=[],c=i||sn.mix||wS,d=e.length-1;for(let f=0;f<d;f++){let h=c(e[f],e[f+1]);if(a){const g=Array.isArray(a)?a[f]||ha:a;h=bs(g,h)}s.push(h)}return s}function c5(e,a,{clamp:i=!0,ease:s,mixer:c}={}){const d=e.length;if(Qm(d===a.length),d===1)return()=>a[0];if(d===2&&a[0]===a[1])return()=>a[1];const f=e[0]===e[1];e[0]>e[d-1]&&(e=[...e].reverse(),a=[...a].reverse());const h=l5(a,s,c),g=h.length,p=y=>{if(f&&y<e[0])return a[0];let x=0;if(g>1)for(;x<e.length-2&&!(y<e[x+1]);x++);const b=ds(e[x],e[x+1],y);return h[x](b)};return i?y=>p(za(e[0],e[d-1],y)):p}function d5(e,a){const i=e[e.length-1];for(let s=1;s<=a;s++){const c=ds(0,a,s);e.push(Ze(i,1,c))}}function u5(e){const a=[0];return d5(a,e.length-1),a}function f5(e,a){return e.map(i=>i*a)}function h5(e,a){return e.map(()=>a||dS).splice(0,e.length-1)}function ts({duration:e=300,keyframes:a,times:i,ease:s="easeInOut"}){const c=jM(s)?s.map(Rb):Rb(s),d={done:!1,value:a[0]},f=f5(i&&i.length===a.length?i:u5(a),e),h=c5(f,a,{ease:Array.isArray(c)?c:h5(a,c)});return{calculatedDuration:e,next:g=>(d.value=h(g),d.done=g>=e,d)}}const m5=e=>e!==null;function sp(e,{repeat:a,repeatType:i="loop"},s,c=1){const d=e.filter(m5),h=c<0||a&&i!=="loop"&&a%2===1?0:d.length-1;return!h||s===void 0?d[h]:s}const p5={decay:Kh,inertia:Kh,tween:ts,keyframes:ts,spring:Rc};function jS(e){typeof e.type=="string"&&(e.type=p5[e.type])}class lp{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(a=>{this.resolve=a})}notifyFinished(){this.resolve()}then(a,i){return this.finished.then(a,i)}}const g5=e=>e/100;class cp extends lp{constructor(a){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.stop=()=>{const{motionValue:i}=this.options;i&&i.updatedAt!==Dt.now()&&this.tick(Dt.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=a,this.initAnimation(),this.play(),a.autoplay===!1&&this.pause()}initAnimation(){const{options:a}=this;jS(a);const{type:i=ts,repeat:s=0,repeatDelay:c=0,repeatType:d,velocity:f=0}=a;let{keyframes:h}=a;const g=i||ts;g!==ts&&typeof h[0]!="number"&&(this.mixKeyframes=bs(g5,wS(h[0],h[1])),h=[0,100]);const p=g({...a,keyframes:h});d==="mirror"&&(this.mirroredGenerator=g({...a,keyframes:[...h].reverse(),velocity:-f})),p.calculatedDuration===null&&(p.calculatedDuration=op(p));const{calculatedDuration:y}=p;this.calculatedDuration=y,this.resolvedDuration=y+c,this.totalDuration=this.resolvedDuration*(s+1)-c,this.generator=p}updateTime(a){const i=Math.round(a-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=i}tick(a,i=!1){const{generator:s,totalDuration:c,mixKeyframes:d,mirroredGenerator:f,resolvedDuration:h,calculatedDuration:g}=this;if(this.startTime===null)return s.next(0);const{delay:p=0,keyframes:y,repeat:x,repeatType:b,repeatDelay:j,type:N,onUpdate:C,finalKeyframe:A}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,a):this.speed<0&&(this.startTime=Math.min(a-c/this.speed,this.startTime)),i?this.currentTime=a:this.updateTime(a);const E=this.currentTime-p*(this.playbackSpeed>=0?1:-1),R=this.playbackSpeed>=0?E<0:E>c;this.currentTime=Math.max(E,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=c);let k=this.currentTime,O=s;if(x){const H=Math.min(this.currentTime,c)/h;let X=Math.floor(H),ae=H%1;!ae&&H>=1&&(ae=1),ae===1&&X--,X=Math.min(X,x+1),X%2&&(b==="reverse"?(ae=1-ae,j&&(ae-=j/h)):b==="mirror"&&(O=f)),k=za(0,1,ae)*h}const P=R?{done:!1,value:y[0]}:O.next(k);
vendor: 11,020 bytes, line 9
9d&&!R&&(P.value=d(P.value));let{done:G}=P;!R&&g!==null&&(G=this.playbackSpeed>=0?this.currentTime>=c:this.currentTime<=0);const I=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&G);return I&&N!==Kh&&(P.value=sp(y,this.options,A,this.speed)),C&&C(P.value),I&&this.finish(),P}then(a,i){return this.finished.then(a,i)}get duration(){return fa(this.calculatedDuration)}get iterationDuration(){const{delay:a=0}=this.options||{};return this.duration+fa(a)}get time(){return fa(this.currentTime)}set time(a){a=Sa(a),this.currentTime=a,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=a:this.driver&&(this.startTime=this.driver.now()-a/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=a,this.tick(a))}get speed(){return this.playbackSpeed}set speed(a){const i=this.playbackSpeed!==a;i&&this.driver&&this.updateTime(Dt.now()),this.playbackSpeed=a,i&&this.driver&&(this.time=fa(this.currentTime))}play(){if(this.isStopped)return;const{driver:a=JM,startTime:i}=this.options;this.driver||(this.driver=a(c=>this.tick(c))),this.options.onPlay?.();const s=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=s):this.holdTime!==null?this.startTime=s-this.holdTime:this.startTime||(this.startTime=i??s),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(Dt.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(a){return this.startTime=0,this.tick(a,!0)}attachTimeline(a){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),a.observe(this)}}function y5(e){for(let a=1;a<e.length;a++)e[a]??(e[a]=e[a-1])}const Sr=e=>e*180/Math.PI,Zh=e=>{const a=Sr(Math.atan2(e[1],e[0]));return Xh(a)},x5={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:Zh,rotateZ:Zh,skewX:e=>Sr(Math.atan(e[1])),skewY:e=>Sr(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},Xh=e=>(e=e%360,e<0&&(e+=360),e),Lb=Zh,Fb=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),zb=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),v5={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:Fb,scaleY:zb,scale:e=>(Fb(e)+zb(e))/2,rotateX:e=>Xh(Sr(Math.atan2(e[6],e[5]))),rotateY:e=>Xh(Sr(Math.atan2(-e[2],e[0]))),rotateZ:Lb,rotate:Lb,skewX:e=>Sr(Math.atan(e[4])),skewY:e=>Sr(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function Qh(e){return e.includes("scale")?1:0}function Jh(e,a){if(!e||e==="none")return Qh(a);const i=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let s,c;if(i)s=v5,c=i;else{const h=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);s=x5,c=h}if(!c)return Qh(a);const d=s[a],f=c[1].split(",").map(w5);return typeof d=="function"?d(f):f[d]}const b5=(e,a)=>{const{transform:i="none"}=getComputedStyle(e);return Jh(i,a)};function w5(e){return parseFloat(e.trim())}const zi=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Hi=new Set(zi),Hb=e=>e===Fi||e===de,C5=new Set(["x","y","z"]),S5=zi.filter(e=>!C5.has(e));function j5(e){const a=[];return S5.forEach(i=>{const s=e.getValue(i);s!==void 0&&(a.push([i,s.get()]),s.set(i.startsWith("scale")?1:0))}),a}const qn={width:({x:e},{paddingLeft:a="0",paddingRight:i="0"})=>e.max-e.min-parseFloat(a)-parseFloat(i),height:({y:e},{paddingTop:a="0",paddingBottom:i="0"})=>e.max-e.min-parseFloat(a)-parseFloat(i),top:(e,{top:a})=>parseFloat(a),left:(e,{left:a})=>parseFloat(a),bottom:({y:e},{top:a})=>parseFloat(a)+(e.max-e.min),right:({x:e},{left:a})=>parseFloat(a)+(e.max-e.min),x:(e,{transform:a})=>Jh(a,"x"),y:(e,{transform:a})=>Jh(a,"y")};qn.translateX=qn.x;qn.translateY=qn.y;const jr=new Set;let em=!1,tm=!1,am=!1;function NS(){if(tm){const e=Array.from(jr).filter(s=>s.needsMeasurement),a=new Set(e.map(s=>s.element)),i=new Map;a.forEach(s=>{const c=j5(s);c.length&&(i.set(s,c),s.render())}),e.forEach(s=>s.measureInitialState()),a.forEach(s=>{s.render();const c=i.get(s);c&&c.forEach(([d,f])=>{s.getValue(d)?.set(f)})}),e.forEach(s=>s.measureEndState()),e.forEach(s=>{s.suspendedScrollY!==void 0&&window.scrollTo(0,s.suspendedScrollY)})}tm=!1,em=!1,jr.forEach(e=>e.complete(am)),jr.clear()}function AS(){jr.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(tm=!0)})}function N5(){am=!0,AS(),NS(),am=!1}class dp{constructor(a,i,s,c,d,f=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...a],this.onComplete=i,this.name=s,this.motionValue=c,this.element=d,this.isAsync=f}scheduleResolve(){this.state="scheduled",this.isAsync?(jr.add(this),em||(em=!0,Ue.read(AS),Ue.resolveKeyframes(NS))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:a,name:i,element:s,motionValue:c}=this;if(a[0]===null){const d=c?.get(),f=a[a.length-1];if(d!==void 0)a[0]=d;else if(s&&i){const h=s.readValue(i,f);h!=null&&(a[0]=h)}a[0]===void 0&&(a[0]=f),c&&d===void 0&&c.set(a[0])}y5(a)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(a=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,a),jr.delete(this)}cancel(){this.state==="scheduled"&&(jr.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const A5=e=>e.startsWith("--");function TS(e,a,i){A5(a)?e.style.setProperty(a,i):e.style[a]=i}const T5={};function ES(e,a){const i=eS(e);return()=>T5[a]??i()}const E5=ES(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),RS=ES(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Ko=([e,a,i,s])=>`cubic-bezier(${e}, ${a}, ${i}, ${s})`,Bb={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Ko([0,.65,.55,1]),circOut:Ko([.55,0,1,.45]),backIn:Ko([.31,.01,.66,-.59]),backOut:Ko([.33,1.53,.69,.99])};function kS(e,a){if(e)return typeof e=="function"?RS()?CS(e,a):"ease-out":uS(e)?Ko(e):Array.isArray(e)?e.map(i=>kS(i,a)||Bb.easeOut):Bb[e]}function R5(e,a,i,{delay:s=0,duration:c=300,repeat:d=0,repeatType:f="loop",ease:h="easeOut",times:g}={},p=void 0){const y={[a]:i};g&&(y.offset=g);const x=kS(h,c);Array.isArray(x)&&(y.easing=x);const b={delay:s,duration:c,easing:Array.isArray(x)?"linear":x,fill:"both",iterations:d+1,direction:f==="reverse"?"alternate":"normal"};return p&&(b.pseudoElement=p),e.animate(y,b)}function DS(e){return typeof e=="function"&&"applyToOptions"in e}function k5({type:e,...a}){return DS(e)&&RS()?e.applyToOptions(a):(a.duration??(a.duration=300),a.ease??(a.ease="easeOut"),a)}class MS extends lp{constructor(a){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!a)return;const{element:i,name:s,keyframes:c,pseudoElement:d,allowFlatten:f=!1,finalKeyframe:h,onComplete:g}=a;this.isPseudoElement=!!d,this.allowFlatten=f,this.options=a,Qm(typeof a.type!="string");const p=k5(a);this.animation=R5(i,s,c,p,d),p.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!d){const y=sp(c,this.options,h,this.speed);this.updateMotionValue&&this.updateMotionValue(y),TS(i,s,y),this.animation.cancel()}g?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:a}=this;a==="idle"||a==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const a=this.options?.element;!this.isPseudoElement&&a?.isConnected&&this.animation.commitStyles?.()}get duration(){const a=this.animation.effect?.getComputedTiming?.().duration||0;return fa(Number(a))}get iterationDuration(){const{delay:a=0}=this.options||{};return this.duration+fa(a)}get time(){return fa(Number(this.animation.currentTime)||0)}set time(a){const i=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Sa(a),i&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(a){a<0&&(this.finishedTime=null),this.animation.playbackRate=a}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(a){this.manualStartTime=this.animation.startTime=a}attachTimeline({timeline:a,rangeStart:i,rangeEnd:s,observe:c}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,a&&E5()?(this.animation.timeline=a,i&&(this.animation.rangeStart=i),s&&(this.animation.rangeEnd=s),ha):c(this)}}const OS={anticipate:sS,backInOut:oS,circInOut:cS};function D5(e){return e in OS}function M5(e){typeof e.ease=="string"&&D5(e.ease)&&(e.ease=OS[e.ease])}const Kf=10;class O5 extends MS{constructor(a){M5(a),jS(a),super(a),a.startTime!==void 0&&(this.startTime=a.startTime),this.options=a}updateMotionValue(a){const{motionValue:i,onUpdate:s,onComplete:c,element:d,...f}=this.options;if(!i)return;if(a!==void 0){i.set(a);return}const h=new cp({...f,autoplay:!1}),g=Math.max(Kf,Dt.now()-this.startTime),p=za(0,Kf,g-Kf),y=h.sample(g).value,{name:x}=this.options;d&&x&&TS(d,x,y),i.setWithVelocity(h.sample(Math.max(0,g-p)).value,y,p),h.stop()}}const qb=(e,a)=>a==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(ja.test(e)||e==="0")&&!e.startsWith("url("));function P5(e){const a=e[0];if(e.length===1)return!0;for(let i=0;i<e.length;i++)if(e[i]!==a)return!0}function V5(e,a,i,s){const c=e[0];if(c===null)return!1;if(a==="display"||a==="visibility")return!0;const d=e[e.length-1],f=qb(c,a),h=qb(d,a);return!f||!h?!1:P5(e)||(i==="spring"||DS(i))&&s}function nm(e){e.duration=0,e.type="keyframes"}const L5=new Set(["opacity","clipPath","filter","transform"]),F5=eS(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function z5(e){const{motionValue:a,name:i,repeatDelay:s,repeatType:c,damping:d,type:f}=e;if(!(a?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:g,transformTemplate:p}=a.owner.getProps();return F5()&&i&&L5.has(i)&&(i!=="transform"||!p)&&!g&&!s&&c!=="mirror"&&d!==0&&f!=="inertia"}const H5=40;class B5 extends lp{constructor({autoplay:a=!0,delay:i=0,type:s="
9keyframes",repeat:c=0,repeatDelay:d=0,repeatType:f="loop",keyframes:h,name:g,motionValue:p,element:y,...x}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=Dt.now();const b={autoplay:a,delay:i,type:s,repeat:c,repeatDelay:d,repeatType:f,name:g,motionValue:p,element:y,...x},j=y?.KeyframeResolver||dp;this.keyframeResolver=new j(h,(N,C,A)=>this.onKeyframesResolved(N,C,b,!A),g,p,y),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(a,i,s,c){this.keyframeResolver=void 0;const{name:d,type:f,velocity:h,delay:g,isHandoff:p,onUpdate:y}=s;this.resolvedAt=Dt.now(),V5(a,d,f,h)||((sn.instantAnimations||!g)&&y?.(sp(a,s,i)),a[0]=a[a.length-1],nm(s),s.repeat=0);const b={startTime:c?this.resolvedAt?this.resolvedAt-this.createdAt>H5?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:i,...s,keyframes:a},j=!p&&z5(b),N=b.motionValue?.owner?.current,C=j?new O5({...b,element:N}):new cp(b);C.finished.then(()=>{this.notifyFinished()}).catch(ha),this.pendingTimeline&&(this.stopTimeline=C.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=C}get finished(){return this._animation?this.animation.finished:this._finished}then(a,i){return this.finished.finally(a).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),N5()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(a){this.animation.time=a}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(a){this.animation.speed=a}get startTime(){return this.animation.startTime}attachTimeline(a){return this._animation?this.stopTimeline=this.animation.attachTimeline(a):this.pendingTimeline=a,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function PS(e,a,i,s=0,c=1){const d=Array.from(e).sort((p,y)=>
vendor: 21,172 bytes, line 9
9p.sortNodePosition(y)).indexOf(a),f=e.size,h=(f-1)*s;return typeof i=="function"?i(d,f):c===1?d*s:h-d*s}const q5=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function W5(e){const a=q5.exec(e);if(!a)return[,];const[,i,s,c]=a;return[`--${i??s}`,c]}function VS(e,a,i=1){const[s,c]=W5(e);if(!s)return;const d=window.getComputedStyle(a).getPropertyValue(s);if(d){const f=d.trim();return X1(f)?parseFloat(f):f}return ap(c)?VS(c,a,i+1):c}const _5={type:"spring",stiffness:500,damping:25,restSpeed:10},G5=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),U5={type:"keyframes",duration:.8},I5={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},Y5=(e,{keyframes:a})=>a.length>2?U5:Hi.has(e)?e.startsWith("scale")?G5(a[1]):_5:I5,$5=e=>e!==null;function K5(e,{repeat:a,repeatType:i="loop"},s){const c=e.filter($5),d=a&&i!=="loop"&&a%2===1?0:c.length-1;return c[d]}function LS(e,a){if(e?.inherit&&a){const{inherit:i,...s}=e;return{...a,...s}}return e}function up(e,a){const i=e?.[a]??e?.default??e;return i!==e?LS(i,e):i}function Z5({when:e,delay:a,delayChildren:i,staggerChildren:s,staggerDirection:c,repeat:d,repeatType:f,repeatDelay:h,from:g,elapsed:p,...y}){return!!Object.keys(y).length}const fp=(e,a,i,s={},c,d)=>f=>{const h=up(s,e)||{},g=h.delay||s.delay||0;let{elapsed:p=0}=s;p=p-Sa(g);const y={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:a.getVelocity(),...h,delay:-p,onUpdate:b=>{a.set(b),h.onUpdate&&h.onUpdate(b)},onComplete:()=>{f(),h.onComplete&&h.onComplete()},name:e,motionValue:a,element:d?void 0:c};Z5(h)||Object.assign(y,Y5(e,y)),y.duration&&(y.duration=Sa(y.duration)),y.repeatDelay&&(y.repeatDelay=Sa(y.repeatDelay)),y.from!==void 0&&(y.keyframes[0]=y.from);let x=!1;if((y.type===!1||y.duration===0&&!y.repeatDelay)&&(nm(y),y.delay===0&&(x=!0)),(sn.instantAnimations||sn.skipAnimations||c?.shouldSkipAnimations)&&(x=!0,nm(y),y.delay=0),y.allowFlatten=!h.type&&!h.ease,x&&!d&&a.get()!==void 0){const b=K5(y.keyframes,h);if(b!==void 0){Ue.update(()=>{y.onUpdate(b),y.onComplete()});return}}return h.isSync?new cp(y):new B5(y)};function Wb(e){const a=[{},{}];return e?.values.forEach((i,s)=>{a[0][s]=i.get(),a[1][s]=i.getVelocity()}),a}function hp(e,a,i,s){if(typeof a=="function"){const[c,d]=Wb(s);a=a(i!==void 0?i:e.custom,c,d)}if(typeof a=="string"&&(a=e.variants&&e.variants[a]),typeof a=="function"){const[c,d]=Wb(s);a=a(i!==void 0?i:e.custom,c,d)}return a}function Ti(e,a,i){const s=e.getProps();return hp(s,a,i!==void 0?i:s.custom,e)}const FS=new Set(["width","height","top","left","right","bottom",...zi]),_b=30,X5=e=>!isNaN(parseFloat(e));class Q5{constructor(a,i={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=s=>{const c=Dt.now();if(this.updatedAt!==c&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(s),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const d of this.dependents)d.dirty()},this.hasAnimated=!1,this.setCurrent(a),this.owner=i.owner}setCurrent(a){this.current=a,this.updatedAt=Dt.now(),this.canTrackVelocity===null&&a!==void 0&&(this.canTrackVelocity=X5(this.current))}setPrevFrameValue(a=this.current){this.prevFrameValue=a,this.prevUpdatedAt=this.updatedAt}onChange(a){return this.on("change",a)}on(a,i){this.events[a]||(this.events[a]=new Jm);const s=this.events[a].add(i);return a==="change"?()=>{s(),Ue.read(()=>{this.events.change.getSize()||this.stop()})}:s}clearListeners(){for(const a in this.events)this.events[a].clear()}attach(a,i){this.passiveEffect=a,this.stopPassiveEffect=i}set(a){this.passiveEffect?this.passiveEffect(a,this.updateAndNotify):this.updateAndNotify(a)}setWithVelocity(a,i,s){this.set(i),this.prev=void 0,this.prevFrameValue=a,this.prevUpdatedAt=this.updatedAt-s}jump(a,i=!0){this.updateAndNotify(a),this.prev=a,this.prevUpdatedAt=this.prevFrameValue=void 0,i&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(a){this.dependents||(this.dependents=new Set),this.dependents.add(a)}removeDependent(a){this.dependents&&this.dependents.delete(a)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const a=Dt.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||a-this.updatedAt>_b)return 0;const i=Math.min(this.updatedAt-this.prevUpdatedAt,_b);return tS(parseFloat(this.current)-parseFloat(this.prevFrameValue),i)}start(a){return this.stop(),new Promise(i=>{this.hasAnimated=!0,this.animation=a(i),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Oi(e,a){return new Q5(e,a)}const rm=e=>Array.isArray(e);function J5(e,a,i){e.hasValue(a)?e.getValue(a).set(i):e.addValue(a,Oi(i))}function e4(e){return rm(e)?e[e.length-1]||0:e}function t4(e,a){const i=Ti(e,a);let{transitionEnd:s={},transition:c={},...d}=i||{};d={...d,...s};for(const f in d){const h=e4(d[f]);J5(e,f,h)}}const Nt=e=>!!(e&&e.getVelocity);function a4(e){return!!(Nt(e)&&e.add)}function im(e,a){const i=e.getValue("willChange");if(a4(i))return i.add(a);if(!i&&sn.WillChange){const s=new sn.WillChange("auto");e.addValue("willChange",s),s.add(a)}}function mp(e){return e.replace(/([A-Z])/g,a=>`-${a.toLowerCase()}`)}const n4="framerAppearId",zS="data-"+mp(n4);function HS(e){return e.props[zS]}function r4({protectedKeys:e,needsAnimating:a},i){const s=e.hasOwnProperty(i)&&a[i]!==!0;return a[i]=!1,s}function BS(e,a,{delay:i=0,transitionOverride:s,type:c}={}){let{transition:d,transitionEnd:f,...h}=a;const g=e.getDefaultTransition();d=d?LS(d,g):g;const p=d?.reduceMotion;s&&(d=s);const y=[],x=c&&e.animationState&&e.animationState.getState()[c];for(const b in h){const j=e.getValue(b,e.latestValues[b]??null),N=h[b];if(N===void 0||x&&r4(x,b))continue;const C={delay:i,...up(d||{},b)},A=j.get();if(A!==void 0&&!j.isAnimating&&!Array.isArray(N)&&N===A&&!C.velocity)continue;let E=!1;if(window.MotionHandoffAnimation){const O=HS(e);if(O){const P=window.MotionHandoffAnimation(O,b,Ue);P!==null&&(C.startTime=P,E=!0)}}im(e,b);const R=p??e.shouldReduceMotion;j.start(fp(b,j,N,R&&FS.has(b)?{type:!1}:C,e,E));const k=j.animation;k&&y.push(k)}if(f){const b=()=>Ue.update(()=>{f&&t4(e,f)});y.length?Promise.all(y).then(b):b()}return y}function om(e,a,i={}){const s=Ti(e,a,i.type==="exit"?e.presenceContext?.custom:void 0);let{transition:c=e.getDefaultTransition()||{}}=s||{};i.transitionOverride&&(c=i.transitionOverride);const d=s?()=>Promise.all(BS(e,s,i)):()=>Promise.resolve(),f=e.variantChildren&&e.variantChildren.size?(g=0)=>{const{delayChildren:p=0,staggerChildren:y,staggerDirection:x}=c;return i4(e,a,g,p,y,x,i)}:()=>Promise.resolve(),{when:h}=c;if(h){const[g,p]=h==="beforeChildren"?[d,f]:[f,d];return g().then(()=>p())}else return Promise.all([d(),f(i.delay)])}function i4(e,a,i=0,s=0,c=0,d=1,f){const h=[];for(const g of e.variantChildren)g.notify("AnimationStart",a),h.push(om(g,a,{...f,delay:i+(typeof s=="function"?0:s)+PS(e.variantChildren,g,s,c,d)}).then(()=>g.notify("AnimationComplete",a)));return Promise.all(h)}function o4(e,a,i={}){e.notify("AnimationStart",a);let s;if(Array.isArray(a)){const c=a.map(d=>om(e,d,i));s=Promise.all(c)}else if(typeof a=="string")s=om(e,a,i);else{const c=typeof a=="function"?Ti(e,a,i.custom):a;s=Promise.all(BS(e,c,i))}return s.then(()=>{e.notify("AnimationComplete",a)})}const s4={test:e=>e==="auto",parse:e=>e},qS=e=>a=>a.test(e),WS=[Fi,de,Fa,Fn,FM,LM,s4],Gb=e=>WS.find(qS(e));function l4(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||J1(e):!0}const c4=new Set(["brightness","contrast","saturate","opacity"]);function d4(e){const[a,i]=e.slice(0,-1).split("(");if(a==="drop-shadow")return e;const[s]=i.match(np)||[];if(!s)return e;const c=i.replace(s,"");let d=c4.has(a)?1:0;return s!==i&&(d*=100),a+"("+d+c+")"}const u4=/\b([a-z-]*)\(.*?\)/gu,sm={...ja,getAnimatableNone:e=>{const a=e.match(u4);return a?a.map(d4).join(" "):e}},lm={...ja,getAnimatableNone:e=>{const a=ja.parse(e);return ja.createTransformer(e)(a.map(s=>typeof s=="number"?0:typeof s=="object"?{...s,alpha:1}:s))}},Ub={...Fi,transform:Math.round},f4={rotate:Fn,rotateX:Fn,rotateY:Fn,rotateZ:Fn,scale:Il,scaleX:Il,scaleY:Il,scaleZ:Il,skew:Fn,skewX:Fn,skewY:Fn,distance:de,translateX:de,translateY:de,translateZ:de,x:de,y:de,z:de,perspective:de,transformPerspective:de,opacity:us,originX:Db,originY:Db,originZ:de},pp={borderWidth:de,borderTopWidth:de,borderRightWidth:de,borderBottomWidth:de,borderLeftWidth:de,borderRadius:de,borderTopLeftRadius:de,borderTopRightRadius:de,borderBottomRightRadius:de,borderBottomLeftRadius:de,width:de,maxWidth:de,height:de,maxHeight:de,top:de,right:de,bottom:de,left:de,inset:de,insetBlock:de,insetBlockStart:de,insetBlockEnd:de,insetInline:de,insetInlineStart:de,insetInlineEnd:de,padding:de,paddingTop:de,paddingRight:de,paddingBottom:de,paddingLeft:de,paddingBlock:de,paddingBlockStart:de,paddingBlockEnd:de,paddingInline:de,paddingInlineStart:de,paddingInlineEnd:de,margin:de,marginTop:de,marginRight:de,marginBottom:de,marginLeft:de,marginBlock:de,marginBlockStart:de,marginBlockEnd:de,marginInline:de,marginInlineStart:de,marginInlineEnd:de,fontSize:de,backgroundPositionX:de,backgroundPositionY:de,...f4,zIndex:Ub,fillOpacity:us,strokeOpacity:us,numOctaves:Ub},h4={...pp,color:st,backgroundColor:st,outlineColor:st,fill:st,stroke:st,borderColor:st,borderTopColor:st,borderRightColor:st,borderBottomColor:st,borderLeftColor:st,filter:sm,WebkitFilter:sm,mask:lm,WebkitMask:lm},_S=e=>h4[e],m4=new Set([sm,lm]);function GS(e,a){let i=_S(e);return m4.has(i)||(i=ja),i.getAnimatableNone?i.getAnimatableNone(a):void 0}const p4=new Set(["auto","none","0"]);function g4(e,a,i){let s=0,c;for(;s<e.length&&!c;){const d=e[s];typeof d=="string"&&!p4.has(d)&&fs(d).values.length&&(c=e[s]),s++}if(c&&i)for(const d of a)e[d]=GS(i,c)}class y4 extends dp{constructor(a,i,s,c,d){super(a,i,s,c,d,!0)}readKeyframes(){const{unresolvedKeyframes:a,element:i,name:s}=this;if(!i||!i.current)return;super.readKeyframes();for(let y=0;y<a.length;y++){let x=a[y];if(typeof x=="string"&&(x=x.trim(),ap(x))){const b=VS(x,i.current);b!==void 0&&(a[y]=b),y===a.length-1&&(this.finalKeyframe=x)}}if(this.resolveNoneKeyframes(),!FS.has(s)||a.length!==2)return;const[c,d]=a,f=Gb(c),h=Gb(d),g=kb(c),p=kb(d);if(g!==p&&qn[s]){this.needsMeasurement=!0;return}if(f!==h)if(Hb(f)&&Hb(h))for(let y=0;y<a.length;y++){const x=a[y];typeof x=="string"&&(a[y]=parseFloat(x))}else qn[s]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:a,name:i}=this,s=[];for(let c=0;c<a.length;c++)(a[c]===null||l4(a[c]))&&s.push(c);s.length&&g4(a,s,i)}measureInitialState(){const{element:a,unresolvedKeyframes:i,name:s}=this;if(!a||!a.current)return;s==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=qn[s](a.measureViewportBox(),window.getComputedStyle(a.current)),i[0]=this.measuredOrigin;const c=i[i.length-1];c!==void 0&&a.getValue(s,c).jump(c,!1)}measureEndState(){const{element:a,name:i,unresolvedKeyframes:s}=this;if(!a||!a.current)return;const c=a.getValue(i);c&&c.jump(this.measuredOrigin,!1);const d=s.length-1,f=s[d];s[d]=qn[i](a.measureViewportBox(),window.getComputedStyle(a.current)),f!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=f),this.removedTransforms?.length&&this.removedTransforms.forEach(([h,g])=>{a.getValue(h).set(g)}),this.resolveNoneKeyframes()}}const x4=new Set(["opacity","clipPath","filter","transform"]);function US(e,a,i){if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){let s=document;const c=i?.[e]??s.querySelectorAll(e);return c?Array.from(c):[]}return Array.from(e).filter(s=>s!=null)}const IS=(e,a)=>a&&typeof e=="number"?a.transform(e):e;function cm(e){return Q1(e)&&"offsetHeight"in e}const{schedule:gp}=fS(queueMicrotask,!1),va={x:!1,y:!1};function YS(){return va.x||va.y}function v4(e){return e==="x"||e==="y"?va[e]?null:(va[e]=!0,()=>{va[e]=!1}):va.x||va.y?null:(va.x=va.y=!0,()=>{va.x=va.y=!1})}function $S(e,a){const i=US(e),s=new AbortController,c={passive:!0,...a,signal:s.signal};return[i,c,()=>s.abort()]}function b4(e){return!(e.pointerType==="touch"||YS())}function w4(e,a,i={}){const[s,c,d]=$S(e,i);return s.forEach(f=>{let h=!1,g=!1,p;const y=()=>{f.removeEventListener("pointerleave",N)},x=A=>{p&&(p(A),p=void 0),y()},b=A=>{h=!1,window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),g&&(g=!1,x(A))},j=()=>{h=!0,window.addEventListener("pointerup",b,c),window.addEventListener("pointercancel",b,c)},N=A=>{if(A.pointerType!=="touch"){if(h){g=!0;return}x(A)}},C=A=>{if(!b4(A))return;g=!1;const E=a(f,A);typeof E=="function"&&(p=E,f.addEventListener("pointerleave",N,c))};f.addEventListener("pointerenter",C,c),f.addEventListener("pointerdown",j,c)}),d}const KS=(e,a)=>a?e===a?!0:KS(e,a.parentElement):!1,yp=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,C4=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function S4(e){return C4.has(e.tagName)||e.isContentEditable===!0}const j4=new Set(["INPUT","SELECT","TEXTAREA"]);function N4(e){return j4.has(e.tagName)||e.isContentEditable===!0}const sc=new WeakSet;function Ib(e){return a=>{a.key==="Enter"&&e(a)}}function Zf(e,a){e.dispatchEvent(new PointerEvent("pointer"+a,{isPrimary:!0,bubbles:!0}))}const A4=(e,a)=>{const i=e.currentTarget;if(!i)return;const s=Ib(()=>{if(sc.has(i))return;Zf(i,"down");const c=Ib(()=>{Zf(i,"up")}),d=()=>Zf(i,"cancel");i.addEventListener("keyup",c,a),i.addEventListener("blur",d,a)});i.addEventListener("keydown",s,a),i.addEventListener("blur",()=>i.removeEventListener("keydown",s),a)};function Yb(e){return yp(e)&&!YS()}const $b=new WeakSet;function T4(e,a,i={}){const[s,c,d]=$S(e,i),f=h=>{const g=h.currentTarget;if(!Yb(h)||$b.has(h))return;sc.add(g),i.stopPropagation&&$b.add(h);const p=a(g,h),y=(j,N)=>{window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",b),sc.has(g)&&sc.delete(g),Yb(j)&&typeof p=="function"&&p(j,{success:N})},x=j=>{y(j,g===window||g===document||i.useGlobalTarget||KS(g,j.target))},b=j=>{y(j,!1)};window.addEventListener("pointerup",x,c),window.addEventListener("pointercancel",b,c)};return s.forEach(h=>{(i.useGlobalTarget?window:h).addEventListener("pointerdown",f,c),cm(h)&&(h.addEventListener("focus",p=>A4(p,c)),!S4(h)&&!h.hasAttribute("tabindex")&&(h.tabIndex=0))}),d}function xp(e){return Q1(e)&&"ownerSVGElement"in e}const lc=new WeakMap;let cc;const ZS=(e,a,i)=>(s,c)=>c&&c[0]?c[0][e+"Size"]:xp(s)&&"getBBox"in s?s.getBBox()[a]:s[i],E4=ZS("inline","width","offsetWidth"),R4=ZS("block","height","offsetHeight");function k4({target:e,borderBoxSize:a}){lc.get(e)?.forEach(i=>{i(e,{get width(){return E4(e,a)},get height(){return R4(e,a)}})})}function D4(e){e.forEach(k4)}function M4(){typeof ResizeObserver>"u"||(cc=new ResizeObserver(D4))}function O4(e,a){cc||M4();const i=US(e);return i.forEach(s=>{let c=lc.get(s);c||(c=new Set,lc.set(s,c)),c.add(a),cc?.observe(s)}),()=>{i.forEach(s=>{const c=lc.get(s);c?.delete(a),c?.size||cc?.unobserve(s)})}}const dc=new Set;let bi;function P4(){bi=()=>{const e={get width(){return window.innerWidth},get height(){return window.innerHeight}};dc.forEach(a=>a(e))},window.addEventListener("resize",bi)}function V4(e){return dc.add(e),bi||P4(),()=>{dc.delete(e),!dc.size&&typeof bi=="function"&&(window.removeEventListener("resize",bi),bi=void 0)}}function Kb(e,a){return typeof e=="function"?V4(e):O4(e,a)}function L4(e){return xp(e)&&e.tagName==="svg"}const F4=[...WS,st,ja],z4=e=>F4.find(qS(e)),Zb=()=>({translate:0,scale:1,origin:0,originPoint:0}),wi=()=>({x:Zb(),y:Zb()}),Xb=()=>({min:0,max:0}),ut=()=>({x:Xb(),y:Xb()}),H4=new WeakMap;function td(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function hs(e){return typeof e=="string"||Array.isArray(e)}const vp=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],bp=["initial",...vp];function ad(e){return td(e.animate)||bp.some(a=>hs(e[a]))}function XS(e){return!!(ad(e)||e.variants)}function B4(e,a,i){for(const s in a){const c=a[s],d=i[s];if(Nt(c))e.addValue(s,c);else if(Nt(d))e.addValue(s,Oi(c,{owner:e}));else if(d!==c)if(e.hasValue(s)){const f=e.getValue(s);f.liveStyle===!0?f.jump(c):f.hasAnimated||f.set(c)}else{const f=e.getStaticValue(s);e.addValue(s,Oi(f!==void 0?f:c,{owner:e}))}}for(const s in i)a[s]===void 0&&e.removeValue(s);return a}const dm={current:null},QS={current:!1},q4=typeof window<"u";function W4(){if(QS.current=!0,!!q4)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),a=()=>dm.current=e.matches;e.addEventListener("change",a),a()}else dm.current=!1}const Qb=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let kc={};function JS(e){kc=e}function _4(){return kc}class G4{scrapeMotionValuesFromProps(a,i,s){return{}}constructor({parent:a,props:i,presenceContext:s,reducedMotionConfig:c,skipAnimations:d,blockInitialAnimation:f,visualState:h},g={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=dp,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const j=Dt.now();this.renderScheduledAt<j&&(this.renderScheduledAt=j,Ue.render(this.render,!1,!0))};const{latestValues:p,renderState:y}=h;this.latestValues=p,this.baseTarget={...p},this.initialValues=i.initial?{...p}:{},this.renderState=y,this.parent=a,this.props=i,this.presenceContext=s,this.depth=a?a.depth+1:0,this.reducedMotionConfig=c,this.skipAnimationsConfig=d,this.options=g,this.blockInitialAnimation=!!f,this.isControllingVariants=ad(i),this.isVariantNode=XS(i),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(a&&a.current);const{willChange:x,...b}=this.scrapeMotionValuesFromProps(i,{},this);for(const j in b){const N=b[j];p[j]!==void 0&&Nt(N)&&N.set(p[j])}}mount(a){if(this.hasBeenMounted)for(const i in this.initialValues)this.values.get(i)?.jump(this.initialValues[i]),this.latestValues[i]=this.initialValues[i];this.current=a,H4.set(a,this),this.projection&&!this.projection.instance&&this.projection.mount(a),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((i,s)=>this.bindToMotionValue(s,i)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(QS.current||W4(),this.shouldReduceMotion=dm.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),In(this.notifyUpdate),In(this.render),this.valueSubscriptions.forEach(a=>a()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const a in this.events)this.events[a].clear();for(const a in this.features){const i=this.features[a];i&&(i.unmount(),i.isMounted=!1)}this.current=null}addChild(a){this.children.add(a),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(a)}removeChild(a){this.children.delete(a),this.enteringChildren&&this.enteringChildren.delete(a)}bindToMotionValue(a,i){if(this.valueSubscriptions.has(a)&&this.valueSubscriptions.get(a)(),i.accelerate&&x4.has(a)&&this.current instanceof HTMLElement){const{factory:f,keyframes:h,times:g,ease:p,duration:y}=i.accelerate,x=new MS({element:this.current,name:a,keyframes:h,times:g,ease:p,duration:Sa(y)}),b=f(x);this.valueSubscriptions.set(a,()=>{b(),x.cancel()});return}const s=Hi.has(a);s&&this.onBindTransform&&this.onBindTransform();const c=i.on("change",f=>{this.latestValues[a]=f,this.props.onUpdate&&Ue.preRender(this.notifyUpdate),s&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let d;typeof window<"u"&&window.MotionCheckAppearSync&&(d=window.MotionCheckAppearSync(this,a,i)),this.valueSubscriptions.set(a,()=>{c(),d&&d(),i.owner&&i.stop()})}sortNodePosition(a){return!this.current||!this.sortInstanceNodePosition||this.type!==a.type?0:this.sortInstanceNodePosition(this.current,a.current)}updateFeatures(){let a="animation";for(a in kc){const i=kc[a];if(!i)continue;const{isEnabled:s,Feature:c}=i;
vendor: 5,780 bytes, line 9
9if(!this.features[a]&&c&&s(this.props)&&(this.features[a]=new c(this)),this.features[a]){const d=this.features[a];d.isMounted?d.update():(d.mount(),d.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):ut()}getStaticValue(a){return this.latestValues[a]}setStaticValue(a,i){this.latestValues[a]=i}update(a,i){(a.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=a,this.prevPresenceContext=this.presenceContext,this.presenceContext=i;for(let s=0;s<Qb.length;s++){const c=Qb[s];this.propEventSubscriptions[c]&&(this.propEventSubscriptions[c](),delete this.propEventSubscriptions[c]);const d="on"+c,f=a[d];f&&(this.propEventSubscriptions[c]=this.on(c,f))}this.prevMotionValues=B4(this,this.scrapeMotionValuesFromProps(a,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(a){return this.props.variants?this.props.variants[a]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(a){const i=this.getClosestVariantNode();if(i)return i.variantChildren&&i.variantChildren.add(a),()=>i.variantChildren.delete(a)}addValue(a,i){const s=this.values.get(a);i!==s&&(s&&this.removeValue(a),this.bindToMotionValue(a,i),this.values.set(a,i),this.latestValues[a]=i.get())}removeValue(a){this.values.delete(a);const i=this.valueSubscriptions.get(a);i&&(i(),this.valueSubscriptions.delete(a)),delete this.latestValues[a],this.removeValueFromRenderState(a,this.renderState)}hasValue(a){return this.values.has(a)}getValue(a,i){if(this.props.values&&this.props.values[a])return this.props.values[a];let s=this.values.get(a);return s===void 0&&i!==void 0&&(s=Oi(i===null?void 0:i,{owner:this}),this.addValue(a,s)),s}readValue(a,i){let s=this.latestValues[a]!==void 0||!this.current?this.latestValues[a]:this.getBaseTargetFromProps(this.props,a)??this.readValueFromInstance(this.current,a,this.options);return s!=null&&(typeof s=="string"&&(X1(s)||J1(s))?s=parseFloat(s):!z4(s)&&ja.test(i)&&(s=GS(a,i)),this.setBaseTarget(a,Nt(s)?s.get():s)),Nt(s)?s.get():s}setBaseTarget(a,i){this.baseTarget[a]=i}getBaseTarget(a){const{initial:i}=this.props;let s;if(typeof i=="string"||typeof i=="object"){const d=hp(this.props,i,this.presenceContext?.custom);d&&(s=d[a])}if(i&&s!==void 0)return s;const c=this.getBaseTargetFromProps(this.props,a);return c!==void 0&&!Nt(c)?c:this.initialValues[a]!==void 0&&s===void 0?void 0:this.baseTarget[a]}on(a,i){return this.events[a]||(this.events[a]=new Jm),this.events[a].add(i)}notify(a,...i){this.events[a]&&this.events[a].notify(...i)}scheduleRenderMicrotask(){gp.render(this.render)}}class ej extends G4{constructor(){super(...arguments),this.KeyframeResolver=y4}sortInstanceNodePosition(a,i){return a.compareDocumentPosition(i)&2?1:-1}getBaseTargetFromProps(a,i){const s=a.style;return s?s[i]:void 0}removeValueFromRenderState(a,{vars:i,style:s}){delete i[a],delete s[a]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:a}=this.props;Nt(a)&&(this.childSubscription=a.on("change",i=>{this.current&&(this.current.textContent=`${i}`)}))}}class $n{constructor(a){this.isMounted=!1,this.node=a}update(){}}function tj({top:e,left:a,right:i,bottom:s}){return{x:{min:a,max:i},y:{min:e,max:s}}}function U4({x:e,y:a}){return{top:a.min,right:e.max,bottom:a.max,left:e.min}}function I4(e,a){if(!a)return e;const i=a({x:e.left,y:e.top}),s=a({x:e.right,y:e.bottom});return{top:i.y,left:i.x,bottom:s.y,right:s.x}}function Xf(e){return e===void 0||e===1}function um({scale:e,scaleX:a,scaleY:i}){return!Xf(e)||!Xf(a)||!Xf(i)}function wr(e){return um(e)||aj(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function aj(e){return Jb(e.x)||Jb(e.y)}function Jb(e){return e&&e!=="0%"}function Dc(e,a,i){const s=e-i,c=a*s;return i+c}function e0(e,a,i,s,c){return c!==void 0&&(e=Dc(e,c,s)),Dc(e,i,s)+a}function fm(e,a=0,i=1,s,c){e.min=e0(e.min,a,i,s,c),e.max=e0(e.max,a,i,s,c)}function nj(e,{x:a,y:i}){fm(e.x,a.translate,a.scale,a.originPoint),fm(e.y,i.translate,i.scale,i.originPoint)}const t0=.999999999999,a0=1.0000000000001;function Y4(e,a,i,s=!1){const c=i.length;if(!c)return;a.x=a.y=1;let d,f;for(let h=0;h<c;h++){d=i[h],f=d.projectionDelta;const{visualElement:g}=d.options;g&&g.props.style&&g.props.style.display==="contents"||(s&&d.options.layoutScroll&&d.scroll&&d!==d.root&&Si(e,{x:-d.scroll.offset.x,y:-d.scroll.offset.y}),f&&(a.x*=f.x.scale,a.y*=f.y.scale,nj(e,f)),s&&wr(d.latestValues)&&Si(e,d.latestValues))}a.x<a0&&a.x>t0&&(a.x=1),a.y<a0&&a.y>t0&&(a.y=1)}function Ci(e,a){e.min=e.min+a,e.max=e.max+a}function n0(e,a,i,s,c=.5){const d=Ze(e.min,e.max,c);fm(e,a,i,d,s)}function r0(e,a){return typeof e=="string"?parseFloat(e)/100*(a.max-a.min):e}function Si(e,a){n0(e.x,r0(a.x,e.x),a.scaleX,a.scale,a.originX),n0(e.y,r0(a.y,e.y),a.scaleY,a.scale,a.originY)}function rj(e,a){return tj(I4(e.getBoundingClientRect(),a))}function $4(e,a,i){const s=rj(e,i),{scroll:c}=a;return c&&(Ci(s.x,c.offset.x),Ci(s.y,c.offset.y)),s}const K4={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},Z4=zi.length;function X4(e,a,i){let s="",c=!0;for(let d=0;d<Z4;d++){const f=zi[d],h=e[f];if(h===void 0)continue;let g=!0;if(typeof h=="number")g=h===(f.startsWith("scale")?1:0);else{const p=parseFloat(h);g=f.startsWith("scale")?p===1:p===0}if(!g||i){const p=IS(h,pp[f]);if(!g){c=!1;const y=K4[f]||f;s+=`${y}(${p}
9) `}i&&(a[f]=p)}}return s=s.trim(),i?s=i(a,c?"":s):c&&(s="none"),s}function wp(e,a,i){const{style:s,vars:c,transformOrigin:d}=e;let f=!1,h=!1;for(const g in a){const p=a[g];if(Hi.has(g)){f=!0;continue}else if(mS(g)){c[g]=p;continue}else{const y=IS(p,pp[g]);g.startsWith("origin")?(h=!0,d[g]=y):s[g]=y}}if(a.transform||(f||i?s.transform=X4(a,e.transform,i):s.transform&&(s.transform="none")),h){const{originX:g="50%",originY:p="50%",originZ:y=0}=d;s.transformOrigin=`${g} ${p} ${y}`}}function ij(e,{style:a,vars:i},s,c){const d=e.style;let f;for(f in a)d[f]=a[f];c?.applyProjectionStyles(d,s);for(f in i)d.setProperty(f,i[f])}function i0(e,a){return a.max===a.min?0:e/(a.max-a.min)*100}const Io={correct:(e,a)=>{if(!a.target)return e;if(typeof e=="string")if(de.test(e))e=parseFloat(e);else return e;const i=i0(e,a.target.x),s=i0(e,a.target.y);return`${i}% ${s}%`}},Q4={correct:(e,{treeScale:a,projectionDelta:i})=>{const s=e,c=ja.parse(e);if(c.length>5)return s;const d=ja.createTransformer(e),f=typeof c[0]!="number"?1:0,h=i.x.scale*a.x,g=i.y.scale*a.y;c[0+f]/=h,c[1+f]/=g;const p=Ze(h,g,.5);return typeof c[2+f]=="number"&&(c[2+f]/=p),typeof c[3+f]=="number"&&(c[3+f]/=p),d(c)}},hm={borderRadius:{...Io,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Io,borderTopRightRadius:Io,borderBottomLeftRadius:Io,borderBottomRightRadius:Io,boxShadow:Q4};function oj(e,{layout:a,layoutId:i}){return Hi.has(e)||e.startsWith("origin")||(a||i!==void 0)&&(!!hm[e]||e==="opacity")}function Cp(e,a,i){const s=e.style,c=a?.style,d={};if(!s)return d;for(const f in s)(Nt(s[f])||c&&Nt(c[f])||oj(f,e)||i?.getValue(f)?.liveStyle!==void 0)&&(d[f]=s[f]);return d}function J4(e){return window.getComputedStyle(e)}class eO extends ej{constructor(){super(...arguments),this.type="html",this.renderInstance=ij}readValueFromInstance(a,i){if(Hi.has(i))return this.projection?.isProjecting?Qh(i):b5(a,i);{const s=J4(a),c=(mS(i)?s.getPropertyValue(i):s[i])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(a,{transformPagePoint:i}){return rj(a,i)}build(a,i,s){wp(a,i,s.transformTemplate)}scrapeMotionValuesFromProps(a,i,s){return Cp(a,i,s)}}const tO={offset:"stroke-dashoffset",array:"stroke-dasharray"},aO={offset:"strokeDashoffset",array:"strokeDasharray"};function nO(e,a,i=1,s=0,c=!0){e.pathLength=1;const d=c?tO:aO;e[d.offset]=`${-s}`,e[d.array]=`${a} ${i}`}const rO=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function sj(e,{attrX:a,attrY:i,attrScale:s,pathLength:c,pathSpacing:d=1,pathOffset:f=0,...h},g,p,y){if(wp(e,h,p),g){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:x,style:b}=e;x.transform&&(b.transform=x.transform,delete x.transform),(b.transform||x.transformOrigin)&&(b.transformOrigin=x.transformOrigin??"50% 50%",delete x.transformOrigin),b.transform&&(b.transformBox=y?.transformBox??"fill-box",delete x.transformBox);for(const j of rO)x[j]!==void 0&&(b[j]=x[j],delete x[j]);a!==void 0&&(x.x=a),i!==void 0&&(x.y=i),s!==void 0&&(x.scale=s),c!==void 0&&nO(x,c,d,f,!1)}const lj=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),cj=e=>typeof e=="string"&&e.toLowerCase()==="svg";function iO(e,a,i,s){ij(e,a,void 0,s);for(const c in a.attrs)e.setAttribute(lj.has(c)?c:mp(c),a.attrs[c])}function dj(e,a,i){const s=Cp(e,a,i);for(const c in e)if(Nt(e[c])||Nt(a[c])){const d=zi.indexOf(c)!==-1?"attr"+c.charAt(0).toUpperCase()+c.substring(1):c;s[d]=e[c]}return s}class oO extends ej{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=ut}getBaseTargetFromProps(a,i){return a[i]}readValueFromInstance(a,i){if(Hi.has(i)){const s=_S(i);return s&&s.default||0}return i=lj.has(i)?i:mp(i),a.getAttribute(i)}scrapeMotionValuesFromProps(a,i,s){return dj(a,i,s)}build(a,i,s){sj(a,i,this.isSVGTag,s.transformTemplate,s.style)}renderInstance(a,i,s,c){iO(a,i,s,c)}mount(a){this.isSVGTag=cj(a.tagName),super.mount(a)}}const sO=bp.length;function uj(e){if(!e)return;if(!e.isControllingVariants){const i=e.parent?uj(e.parent)||{}:{};return e.props.initial!==void 0&&(i.initial=e.props.initial),i}const a={};for(let i=0;i<sO;i++){const s=bp[i],c=e.props[s];(hs(c)||c===!1)&&(a[s]=c)}return a}function fj(e,a){if(!Array.isArray(a))return!1;const i=a.length;if(i!==e.length)return!1;for(let s=0;s<i;
vendor: 9,295 bytes, line 9
9s++)if(a[s]!==e[s])return!1;return!0}const lO=[...vp].reverse(),cO=vp.length;function dO(e){return a=>Promise.all(a.map(({animation:i,options:s})=>o4(e,i,s)))}function uO(e){let a=dO(e),i=o0(),s=!0,c=!1;const d=p=>(y,x)=>{const b=Ti(e,x,p==="exit"?e.presenceContext?.custom:void 0);if(b){const{transition:j,transitionEnd:N,...C}=b;y={...y,...C,...N}}return y};function f(p){a=p(e)}function h(p){const{props:y}=e,x=uj(e.parent)||{},b=[],j=new Set;let N={},C=1/0;for(let E=0;E<cO;E++){const R=lO[E],k=i[R],O=y[R]!==void 0?y[R]:x[R],P=hs(O),G=R===p?k.isActive:null;G===!1&&(C=E);let I=O===x[R]&&O!==y[R]&&P;if(I&&(s||c)&&e.manuallyAnimateOnMount&&(I=!1),k.protectedKeys={...N},!k.isActive&&G===null||!O&&!k.prevProp||td(O)||typeof O=="boolean")continue;if(R==="exit"&&k.isActive&&G!==!0){k.prevResolvedValues&&(N={...N,...k.prevResolvedValues});continue}const H=fO(k.prevProp,O);let X=H||R===p&&k.isActive&&!I&&P||E>C&&P,ae=!1;const fe=Array.isArray(O)?O:[O];let ie=fe.reduce(d(R),{});G===!1&&(ie={});const{prevResolvedValues:xe={}}=k,te={...xe,...ie},se=W=>{X=!0,j.has(W)&&(ae=!0,j.delete(W)),k.needsAnimating[W]=!0;const Q=e.getValue(W);Q&&(Q.liveStyle=!1)};for(const W in te){const Q=ie[W],T=xe[W];if(N.hasOwnProperty(W))continue;let U=!1;rm(Q)&&rm(T)?U=!fj(Q,T):U=Q!==T,U?Q!=null?se(W):j.add(W):Q!==void 0&&j.has(W)?se(W):k.protectedKeys[W]=!0}k.prevProp=O,k.prevResolvedValues=ie,k.isActive&&(N={...N,...ie}),(s||c)&&e.blockInitialAnimation&&(X=!1);const V=I&&H;X&&(!V||ae)&&b.push(...fe.map(W=>{const Q={type:R};if(typeof W=="string"&&(s||c)&&!V&&e.manuallyAnimateOnMount&&e.parent){const{parent:T}=e,U=Ti(T,W);if(T.enteringChildren&&U){const{delayChildren:ee}=U.transition||{};Q.delay=PS(T.enteringChildren,e,ee)}}return{animation:W,options:Q}}))}if(j.size){const E={};if(typeof y.initial!="boolean"){const R=Ti(e,Array.isArray(y.initial)?y.initial[0]:y.initial);R&&R.transition&&(E.transition=R.transition)}j.forEach(R=>{const k=e.getBaseTarget(R),O=e.getValue(R);O&&(O.liveStyle=!0),E[R]=k??null}),b.push({animation:E})}let A=!!b.length;return s&&(y.initial===!1||y.initial===y.animate)&&!e.manuallyAnimateOnMount&&(A=!1),s=!1,c=!1,A?a(b):Promise.resolve()}function g(p,y){if(i[p].isActive===y)return Promise.resolve();e.variantChildren?.forEach(b=>b.animationState?.setActive(p,y)),i[p].isActive=y;const x=h(p);for(const b in i)i[b].protectedKeys={};return x}return{animateChanges:h,setActive:g,setAnimateFunction:f,getState:()=>i,reset:()=>{i=o0(),c=!0}}}function fO(e,a){return typeof a=="string"?a!==e:Array.isArray(a)?!fj(a,e):!1}function br(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function o0(){return{animate:br(!0),whileInView:br(),whileHover:br(),whileTap:br(),whileDrag:br(),whileFocus:br(),exit:br()}}function s0(e,a){e.min=a.min,e.max=a.max}function ya(e,a){s0(e.x,a.x),s0(e.y,a.y)}function l0(e,a){e.translate=a.translate,e.scale=a.scale,e.originPoint=a.originPoint,e.origin=a.origin}const hj=1e-4,hO=1-hj,mO=1+hj,mj=.01,pO=0-mj,gO=0+mj;function Mt(e){return e.max-e.min}function yO(e,a,i){return Math.abs(e-a)<=i}function c0(e,a,i,s=.5){e.origin=s,e.originPoint=Ze(a.min,a.max,e.origin),e.scale=Mt(i)/Mt(a),e.translate=Ze(i.min,i.max,e.origin)-e.originPoint,(e.scale>=hO&&e.scale<=mO||isNaN(e.scale))&&(e.scale=1),(e.translate>=pO&&e.translate<=gO||isNaN(e.translate))&&(e.translate=0)}function as(e,a,i,s){c0(e.x,a.x,i.x,s?s.originX:void 0),c0(e.y,a.y,i.y,s?s.originY:void 0)}function d0(e,a,i){e.min=i.min+a.min,e.max=e.min+Mt(a)}function xO(e,a,i){d0(e.x,a.x,i.x),d0(e.y,a.y,i.y)}function u0(e,a,i){e.min=a.min-i.min,e.max=e.min+Mt(a)}function Mc(e,a,i){u0(e.x,a.x,i.x),u0(e.y,a.y,i.y)}function f0(e,a,i,s,c){return e-=a,e=Dc(e,1/i,s),c!==void 0&&(e=Dc(e,1/c,s)),e}function vO(e,a=0,i=1,s=.5,c,d=e,f=e){if(Fa.test(a)&&(a=parseFloat(a),a=Ze(f.min,f.max,a/100)-f.min),typeof a!="number")return;let h=Ze(d.min,d.max,s);e===d&&(h-=a),e.min=f0(e.min,a,i,h,c),e.max=f0(e.max,a,i,h,c)}function h0(e,a,[i,s,c],d,f){vO(e,a[i],a[s],a[c],a.scale,d,f)}const bO=["x","scaleX","originX"],wO=["y","scaleY","originY"];function m0(e,a,i,s){h0(e.x,a,bO,i?i.x:void 0,s?s.x:void 0),h0(e.y,a,wO,i?i.y:void 0,s?s.y:void 0)}function p0(e){return e.translate===0&&e.scale===1}function pj(e){return p0(e.x)&&p0(e.y)}function g0(e,a){return e.min===a.min&&e.max===a.max}function CO(e,a){return g0(e.x,a.x)&&g0(e.y,a.y)}function y0(e,a){return Math.round(e.min)===Math.round(a.min)&&Math.round(e.max)===Math.round(a.max)}function gj(e,a){return y0(e.x,a.x)&&y0(e.y,a.y)}function x0(e){return Mt(e.x)/Mt(e.y)}function v0(e,a){return e.translate===a.translate&&e.scale===a.scale&&e.originPoint===a.originPoint}function Oa(e){return[e("x"),e("y")]}function SO(e,a,i){let s="";const c=e.x.translate/a.x,d=e.y.translate/a.y,f=i?.z||0;if((c||d||f)&&(s=`translate3d(${c}px, ${d}px, ${f}px) `),(a.x!==1||a.y!==1)&&(s+=`scale(${1/a.x}, ${1/a.y}) `),i){const{transformPerspective:p,rotate:y,rotateX:x,rotateY:b,skewX:j,skewY:N}=i;p&&(s=`perspective(${p}px) ${s}`),y&&(s+=`rotate(${y}deg) `),x&&(s+=`rotateX(${x}deg) `),b&&(s+=`rotateY(${b}deg) `),j&&(s+=`skewX(${j}deg) `),N&&(s+=`skewY(${N}deg) `)}const h=e.x.scale*a.x,g=e.y.scale*a.y;return(h!==1||g!==1)&&(s+=`scale(${h}, ${g})`),s||"none"}const yj=["TopLeft","TopRight","BottomLeft","BottomRight"],jO=yj.length,b0=e=>typeof e=="string"?parseFloat(e):e,w0=e=>typeof e=="number"||de.test(e);function NO(e,a,i,s,c,d){c?(e.opacity=Ze(0,i.opacity??1,AO(s)),e.opacityExit=Ze(a.opacity??1,0,TO(s))):d&&(e.opacity=Ze(a.opacity??1,i.opacity??1,s));for(let f=0;f<jO;f++){const h=`border${yj[f]}Radius`;let g=C0(a,h),p=C0(i,h);if(g===void 0&&p===void 0)continue;g||(g=0),p||(p=0),g===0||p===0||w0(g)===w0(p)?(e[h]=Math.max(Ze(b0(g),b0(p),s),0),(Fa.test(p)||Fa.test(g))&&(e[h]+="%")):e[h]=p}(a.rotate||i.rotate)&&(e.rotate=Ze(a.rotate||0,i.rotate||0,s))}function C0(e,a){return e[a]!==void 0?e[a]:e.borderRadius}const AO=xj(0,.5,lS),TO=xj(.5,.95,ha);function xj(e,a,i){return s=>s<e?0:s>a?1:i(ds(e,a,s))}function EO(e,a,i){const s=Nt(e)?e:Oi(e);return s.start(fp("",s,a,i)),s.animation}function ms(e,a,i,s={passive:!0}){return e.addEventListener(a,i,s),()=>e.removeEventListener(a,i)}const RO=(e,a)=>e.depth-a.depth;class kO{constructor(){this.children=[],this.isDirty=!1}add(a){Xm(this.children,a),this.isDirty=!0}remove(a){Ac(this.children,a),this.isDirty=!0}forEach(a){this.isDirty&&this.children.sort(RO),this.isDirty=!1,this.children.forEach(a)}}function DO(e,a){const i=Dt.now(),s=({timestamp:c})=>{const d=c-i;d>=a&&(In(s),e(d-a))};return Ue.setup(s,!0),()=>In(s)}function uc(e){return Nt(e)?e.get():e}class MO{constructor(){this.members=[]}add(a){Xm(this.members,a);for(let i=this.members.length-1;i>=0;i--){const s=this.members[i];if(s===a||s===this.lead||s===this.prevLead)continue;const c=s.instance;(!c||c.isConnected===!1)&&!s.snapshot&&(Ac(this.members,s),s.unmount())}a.scheduleRender()}remove(a){if(Ac(this.members,a),a===this.prevLead&&(this.prevLead=void 0),a===this.lead){const i=this.members[this.members.length-1];i&&this.promote(i)}}relegate(a){for(let i=this.members.indexOf(a)-1;i>=0;i--){const s=this.members[i];if(s.isPresent!==!1&&s.instance?.isConnected!==!1)return this.promote(s),!0}return!1}promote(a,i){const s=this.lead;if(a!==s&&(this.prevLead=s,this.lead=a,a.show(),s)){s.updateSnapshot(),a.scheduleRender();const{layoutDependency:c}=s.options,{layoutDependency:d}=a.options;(c===void 0||c!==d)&&(a.resumeFrom=s,i&&(s.preserveOpacity=!0),s.snapshot&&(a.snapshot=s.snapshot,a.snapshot.latestValues=s.animationValues||s.latestValues),a.root?.isUpdating&&(a.isLayoutDirty=!0)),a.options.crossfade===!1&&s.hide()}}exitAnimationComplete(){this.members.forEach(a=>{a.options.onExitComplete?.(),a.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(a=>a.instance&&a.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const fc={hasAnimatedSinceResize:!0,hasEverUpdated:!1},Qf=["","X","Y","Z"],OO=1e3;let PO=0;function Jf(e,a,i,s){const{latestValues:c}=a;c[e]&&(i[e]=c[e],a.setStaticValue(e,0),s&&(s[e]=0))}function vj(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:a}=e.options;if(!a)return;const i=HS(a);if(window.MotionHasOptimisedAnimation(i,"transform")){const{layout:c,layoutId:d}=e.options;window.MotionCancelOptimisedAnimation(i,"transform",Ue,!(c||d))}const{parent:s}=e;s&&!s.hasCheckedOptimisedAppear&&vj(s)}function bj({attachResizeListener:e,defaultParent:a,measureScroll:i,checkIsScrollRoot:s,resetTransform:c}){return class{constructor(f={},h=a?.()){this.id=PO++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>
vendor: 10,421 bytes, line 9
9{this.projectionUpdateScheduled=!1,this.nodes.forEach(FO),this.nodes.forEach(qO),this.nodes.forEach(WO),this.nodes.forEach(zO)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=f,this.root=h?h.root||h:this,this.path=h?[...h.path,h]:[],this.parent=h,this.depth=h?h.depth+1:0;for(let g=0;g<this.path.length;g++)this.path[g].shouldResetTransform=!0;this.root===this&&(this.nodes=new kO)}addEventListener(f,h){return this.eventHandlers.has(f)||this.eventHandlers.set(f,new Jm),this.eventHandlers.get(f).add(h)}notifyListeners(f,...h){const g=this.eventHandlers.get(f);g&&g.notify(...h)}hasListeners(f){return this.eventHandlers.has(f)}mount(f){if(this.instance)return;this.isSVG=xp(f)&&!L4(f),this.instance=f;const{layoutId:h,layout:g,visualElement:p}=this.options;if(p&&!p.current&&p.mount(f),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(g||h)&&(this.isLayoutDirty=!0),e){let y,x=0;const b=()=>this.root.updateBlockedByResize=!1;Ue.read(()=>{x=window.innerWidth}),e(f,()=>{const j=window.innerWidth;j!==x&&(x=j,this.root.updateBlockedByResize=!0,y&&y(),y=DO(b,250),fc.hasAnimatedSinceResize&&(fc.hasAnimatedSinceResize=!1,this.nodes.forEach(N0)))})}h&&this.root.registerSharedNode(h,this),this.options.animate!==!1&&p&&(h||g)&&this.addEventListener("didUpdate",({delta:y,hasLayoutChanged:x,hasRelativeLayoutChanged:b,layout:j})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const N=this.options.transition||p.getDefaultTransition()||YO,{onLayoutAnimationStart:C,onLayoutAnimationComplete:A}=p.getProps(),E=!this.targetLayout||!gj(this.targetLayout,j),R=!x&&b;if(this.options.layoutRoot||this.resumeFrom||R||x&&(E||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const k={...up(N,"layout"),onPlay:C,onComplete:A};(p.shouldReduceMotion||this.options.layoutRoot)&&(k.delay=0,k.type=!1),this.startAnimation(k),this.setAnimationOrigin(y,R)}else x||N0(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=j})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const f=this.getStack();f&&f.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),In(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(_O),this.animationId++)}getTransformTemplate(){const{visualElement:f}=this.options;return f&&f.getProps().transformTemplate}willUpdate(f=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&vj(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let y=0;y<this.path.length;y++){const x=this.path[y];x.shouldResetTransform=!0,x.updateScroll("snapshot"),x.options.layoutRoot&&x.willUpdate(!1)}const{layoutId:h,layout:g}=this.options;if(h===void 0&&!g)return;const p=this.getTransformTemplate();this.prevTransformTemplateValue=p?p(this.latestValues,""):void 0,this.updateSnapshot(),f&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(S0);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(j0);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(BO),this.nodes.forEach(VO),this.nodes.forEach(LO)):this.nodes.forEach(j0),this.clearAllSnapshots();const h=Dt.now();vt.delta=za(0,1e3/60,h-vt.timestamp),vt.timestamp=h,vt.isProcessing=!0,Gf.update.process(vt),Gf.preRender.process(vt),Gf.render.process(vt),vt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,gp.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(HO),this.sharedNodes.forEach(GO)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Ue.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Ue.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!Mt(this.snapshot.measuredBox.x)&&!Mt(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let g=0;g<this.path.length;g++)this.path[g].updateScroll();const f=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected=ut(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:h}=this.options;h&&h.notify("LayoutMeasure",this.layout.layoutBox,f?f.layoutBox:void 0)}updateScroll(f="measure"){let h=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===f&&(h=!1),h&&this.instance){const g=s(this.instance);this.scroll={animationId:this.root.animationId,phase:f,isRoot:g,offset:i(this.instance),wasRoot:this.scroll?this.scroll.isRoot:g}}}resetTransform(){if(!c)return;const f=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,h=this.projectionDelta&&!pj(this.projectionDelta),g=this.getTransformTemplate(),p=g?g(this.latestValues,""):void 0,y=p!==this.prevTransformTemplateValue;f&&this.instance&&(h||wr(this.latestValues)||y)&&(c(this.instance,p),this.shouldResetTransform=!1,this.scheduleRender())}measure(f=!0){const h=this.measurePageBox();let g=this.removeElementScroll(h);return f&&(g=this.removeTransform(g)),$O(g),{animationId:this.root.animationId,measuredBox:h,layoutBox:g,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:f}=this.options;if(!f)return ut();const h=f.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(KO))){const{scroll:p}=this.root;p&&(Ci(h.x,p.offset.x),Ci(h.y,p.offset.y))}return h}removeElementScroll(f){const h=ut();if(ya(h,f),this.scroll?.wasRoot)return h;for(let g=0;g<this.path.length;g++){const p=this.path[g],{scroll:y,options:x}=p;p!==this.root&&y&&x.layoutScroll&&(y.wasRoot&&ya(h,f),Ci(h.x,y.offset.x),Ci(h.y,y.offset.y))}return h}applyTransform(f,h=!1){const g=ut();ya(g,f);for(let p=0;p<this.path.length;p++){const y=this.path[p];!h&&y.options.layoutScroll&&y.scroll&&y!==y.root&&Si(g,{x:-y.scroll.offset.x,y:-y.scroll.offset.y}),wr(y.latestValues)&&Si(g,y.latestValues)}return wr(this.latestValues)&&Si(g,this.latestValues),g}removeTransform(f){const h=ut();ya(h,f);for(let g=0;g<this.path.length;g++){const p=this.path[g];if(!p.instance||!wr(p.latestValues))continue;um(p.latestValues)&&p.updateSnapshot();const y=ut(),x=p.measurePageBox();ya(y,x),m0(h,p.latestValues,p.snapshot?p.snapshot.layoutBox:void 0,y)}return wr(this.latestValues)&&m0(h,this.latestValues),h}setTargetDelta(f){this.targetDelta=f,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(f){this.options={...this.options,...f,crossfade:f.crossfade!==void 0?f.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==vt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(f=!1){const h=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=h.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=h.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=h.isSharedProjectionDirty);const g=!!this.resumingFrom||this!==h;if(!(f||g&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:y,layoutId:x}=this.options;if(!this.layout||!(y||x))return;this.resolvedRelativeTargetAt=vt.timestamp;const b=this.getClosestProjectingParent();b&&this.linkedParentVersion!==b.layoutVersion&&!b.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(b&&b.layout?this.createRelativeTarget(b,this.layout.layoutBox,b.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=ut(),this.targetWithTransforms=ut()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),xO(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):ya(this.target,this.layout.layoutBox),nj(this.target,this.targetDelta)):ya(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,b&&!!b.resumingFrom==!!this.resumingFrom&&!b.options.layoutScroll&&b.target&&this.animationProgress!==1?this.createRelativeTarget(b,this.target,b.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||um(this.parent.latestValues)||aj(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(f,h,g){this.relativeParent=f,this.linkedParentVersion=f.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=ut(),this.relativeTargetOrigin=ut(),Mc(this.relativeTargetOrigin,h,g),ya(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const f=this.getLead(),h=!!this.resumingFrom||this!==f;let g=!0;
vendor: 4,768 bytes, line 9
9if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(g=!1),h&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(g=!1),this.resolvedRelativeTargetAt===vt.timestamp&&(g=!1),g)return;const{layout:p,layoutId:y}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(p||y))return;ya(this.layoutCorrected,this.layout.layoutBox);const x=this.treeScale.x,b=this.treeScale.y;Y4(this.layoutCorrected,this.treeScale,this.path,h),f.layout&&!f.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(f.target=f.layout.layoutBox,f.targetWithTransforms=ut());const{target:j}=f;if(!j){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(l0(this.prevProjectionDelta.x,this.projectionDelta.x),l0(this.prevProjectionDelta.y,this.projectionDelta.y)),as(this.projectionDelta,this.layoutCorrected,j,this.latestValues),(this.treeScale.x!==x||this.treeScale.y!==b||!v0(this.projectionDelta.x,this.prevProjectionDelta.x)||!v0(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",j))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(f=!0){if(this.options.visualElement?.scheduleRender(),f){const h=this.getStack();h&&h.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=wi(),this.projectionDelta=wi(),this.projectionDeltaWithTransform=wi()}setAnimationOrigin(f,h=!1){const g=this.snapshot,p=g?g.latestValues:{},y={...this.latestValues},x=wi();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!h;const b=ut(),j=g?g.source:void 0,N=this.layout?this.layout.source:void 0,C=j!==N,A=this.getStack(),E=!A||A.members.length<=1,R=!!(C&&!E&&this.options.crossfade===!0&&!this.path.some(IO));this.animationProgress=0;let k;this.mixTargetDelta=O=>{const P=O/1e3;A0(x.x,f.x,P),A0(x.y,f.y,P),this.setTargetDelta(x),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Mc(b,this.layout.layoutBox,this.relativeParent.layout.layoutBox),UO(this.relativeTarget,this.relativeTargetOrigin,b,P),k&&CO(this.relativeTarget,k)&&(this.isProjectionDirty=!1),k||(k=ut()),ya(k,this.relativeTarget)),C&&(this.animationValues=y,NO(y,p,this.latestValues,P,R,E)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=P},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(f){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(In(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Ue.update(()=>{fc.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=Oi(0)),this.motionValue.jump(0,!1),this.currentAnimation=EO(this.motionValue,[0,1e3],{...f,velocity:0,isSync:!0,onUpdate:h=>{this.mixTargetDelta(h),f.onUpdate&&f.onUpdate(h)},onStop:()=>{},onComplete:()=>{f.onComplete&&f.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const f=this.getStack();f&&f.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(OO),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const f=this.getLead();let{targetWithTransforms:h,target:g,layout:p,latestValues:y}=f;if(!(!h||!g||!p)){if(this!==f&&this.layout&&p&&wj(this.options.animationType,this.layout.layoutBox,p.layoutBox)){g=this.target||ut();const x=Mt(this.layout.layoutBox.x);g.x.min=f.target.x.min,g.x.max=g.x.min+x;const b=Mt(this.layout.layoutBox.y);g.y.min=f.target.y.min,g.y.max=g.y.min+b}ya(h,g),Si(h,y),as(this.projectionDeltaWithTransform,this.layoutCorrected,h,y)}}registerSharedNode(f,h){this.sharedNodes.has(f)||this.sharedNodes.set(f,new MO),this.sharedNodes.get(f).add(h);const p=h.options.initialPromotionConfig;h.promote({transition:p?p.transition:void 0,preserveFollowOpacity:p&&p.shouldPreserveFollowOpacity?p.shouldPreserveFollowOpacity(h):void 0})}isLead(){const f=this.getStack();return f?f.lead===this:!0}getLead(){const{layoutId:f}=this.options;
vendor: 15,526 bytes, lines 9-17
9return f?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:f}=this.options;return f?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:f}=this.options;if(f)return this.root.sharedNodes.get(f)}promote({needsReset:f,transition:h,preserveFollowOpacity:g}={}){const p=this.getStack();p&&p.promote(this,g),f&&(this.projectionDelta=void 0,this.needsReset=!0),h&&this.setOptions({transition:h})}relegate(){const f=this.getStack();return f?f.relegate(this):!1}resetSkewAndRotation(){const{visualElement:f}=this.options;if(!f)return;let h=!1;const{latestValues:g}=f;if((g.z||g.rotate||g.rotateX||g.rotateY||g.rotateZ||g.skewX||g.skewY)&&(h=!0),!h)return;const p={};g.z&&Jf("z",f,p,this.animationValues);for(let y=0;y<Qf.length;y++)Jf(`rotate${Qf[y]}`,f,p,this.animationValues),Jf(`skew${Qf[y]}`,f,p,this.animationValues);f.render();for(const y in p)f.setStaticValue(y,p[y]),this.animationValues&&(this.animationValues[y]=p[y]);f.scheduleRender()}applyProjectionStyles(f,h){if(!this.instance||this.isSVG)return;if(!this.isVisible){f.visibility="hidden";return}const g=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,f.visibility="",f.opacity="",f.pointerEvents=uc(h?.pointerEvents)||"",f.transform=g?g(this.latestValues,""):"none";return}const p=this.getLead();if(!this.projectionDelta||!this.layout||!p.target){this.options.layoutId&&(f.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,f.pointerEvents=uc(h?.pointerEvents)||""),this.hasProjected&&!wr(this.latestValues)&&(f.transform=g?g({},""):"none",this.hasProjected=!1);return}f.visibility="";const y=p.animationValues||p.latestValues;this.applyTransformsToTarget();let x=SO(this.projectionDeltaWithTransform,this.treeScale,y);g&&(x=g(y,x)),f.transform=x;const{x:b,y:j}=this.projectionDelta;f.transformOrigin=`${b.origin*100}% ${j.origin*100}% 0`,p.animationValues?f.opacity=p===this?y.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:y.opacityExit:f.opacity=p===this?y.opacity!==void 0?y.opacity:"":y.opacityExit!==void 0?y.opacityExit:0;for(const N in hm){if(y[N]===void 0)continue;const{correct:C,applyTo:A,isCSSVariable:E}=hm[N],R=x==="none"?y[N]:C(y[N],p);if(A){const k=A.length;for(let O=0;O<k;O++)f[A[O]]=R}else E?this.options.visualElement.renderState.vars[N]=R:f[N]=R}this.options.layoutId&&(f.pointerEvents=p===this?uc(h?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(f=>f.currentAnimation?.stop()),this.root.nodes.forEach(S0),this.root.sharedNodes.clear()}}}function VO(e){e.updateLayout()}function LO(e){const a=e.resumeFrom?.snapshot||e.snapshot;if(e.isLead()&&e.layout&&a&&e.hasListeners("didUpdate")){const{layoutBox:i,measuredBox:s}=e.layout,{animationType:c}=e.options,d=a.source!==e.layout.source;c==="size"?Oa(y=>{const x=d?a.measuredBox[y]:a.layoutBox[y],b=Mt(x);x.min=i[y].min,x.max=x.min+b}):wj(c,a.layoutBox,i)&&Oa(y=>{const x=d?a.measuredBox[y]:a.layoutBox[y],b=Mt(i[y]);x.max=x.min+b,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[y].max=e.relativeTarget[y].min+b)});const f=wi();as(f,i,a.layoutBox);const h=wi();d?as(h,e.applyTransform(s,!0),a.measuredBox):as(h,i,a.layoutBox);const g=!pj(f);let p=!1;if(!e.resumeFrom){const y=e.getClosestProjectingParent();if(y&&!y.resumeFrom){const{snapshot:x,layout:b}=y;if(x&&b){const j=ut();Mc(j,a.layoutBox,x.layoutBox);const N=ut();Mc(N,i,b.layoutBox),gj(j,N)||(p=!0),y.options.layoutRoot&&(e.relativeTarget=N,e.relativeTargetOrigin=j,e.relativeParent=y)}}}e.notifyListeners("didUpdate",{layout:i,snapshot:a,delta:h,layoutDelta:f,hasLayoutChanged:g,hasRelativeLayoutChanged:p})}else if(e.isLead()){const{onExitComplete:i}=e.options;i&&i()}e.options.transition=void 0}function FO(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function zO(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function HO(e){e.clearSnapshot()}function S0(e){e.clearMeasurements()}function j0(e){e.isLayoutDirty=!1}function BO(e){const{visualElement:a}=e.options;a&&a.getProps().onBeforeLayoutMeasure&&a.notify("BeforeLayoutMeasure"),e.resetTransform()}function N0(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function qO(e){e.resolveTargetDelta()}function WO(e){e.calcProjection()}function _O(e){e.resetSkewAndRotation()}function GO(e){e.removeLeadSnapshot()}function A0(e,a,i){e.translate=Ze(a.translate,0,i),e.scale=Ze(a.scale,1,i),e.origin=a.origin,e.originPoint=a.originPoint}function T0(e,a,i,s){e.min=Ze(a.min,i.min,s),e.max=Ze(a.max,i.max,s)}function UO(e,a,i,s){T0(e.x,a.x,i.x,s),T0(e.y,a.y,i.y,s)}function IO(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const YO={duration:.45,ease:[.4,0,.1,1]},E0=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),R0=E0("applewebkit/")&&!E0("chrome/")?Math.round:ha;function k0(e){e.min=R0(e.min),e.max=R0(e.max)}function $O(e){k0(e.x),k0(e.y)}function wj(e,a,i){return e==="position"||e==="preserve-aspect"&&!yO(x0(a),x0(i),.2)}function KO(e){return e!==e.root&&e.scroll?.wasRoot}const ZO=bj({attachResizeListener:(e,a)=>ms(e,"resize",a),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),eh={current:void 0},Cj=bj({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!eh.current){const e=new ZO({});e.mount(window),e.setOptions({layoutScroll:!0}),eh.current=e}return eh.current},resetTransform:(e,a)=>{e.style.transform=a!==void 0?a:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),Sp=w.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function D0(e,a){if(typeof e=="function")return e(a);e!=null&&(e.current=a)}function XO(...e){return a=>{let i=!1;const s=e.map(c=>{const d=D0(c,a);return!i&&typeof d=="function"&&(i=!0),d});if(i)return()=>{for(let c=0;c<s.length;c++){const d=s[c];typeof d=="function"?d():D0(e[c],null)}}}}function QO(...e){return w.useCallback(XO(...e),e)}class JO extends w.Component{getSnapshotBeforeUpdate(a){const i=this.props.childRef.current;if(i&&a.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const s=i.offsetParent,c=cm(s)&&s.offsetWidth||0,d=cm(s)&&s.offsetHeight||0,f=this.props.sizeRef.current;f.height=i.offsetHeight||0,f.width=i.offsetWidth||0,f.top=i.offsetTop,f.left=i.offsetLeft,f.right=c-f.width-f.left,f.bottom=d-f.height-f.top}return null}componentDidUpdate(){}render(){return this.props.children}}function eP({children:e,isPresent:a,anchorX:i,anchorY:s,root:c,pop:d}){const f=w.useId(),h=w.useRef(null),g=w.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:p}=w.useContext(Sp),y=e.props?.ref??e?.ref,x=QO(h,y);return w.useInsertionEffect(()=>{const{width:b,height:j,top:N,left:C,right:A,bottom:E}=g.current;if(a||d===!1||!h.current||!b||!j)return;const R=i==="left"?`left: ${C}`:`right: ${A}`,k=s==="bottom"?`bottom: ${E}`:`top: ${N}`;h.current.dataset.motionPopId=f;const O=document.createElement("style");p&&(O.nonce=p);const P=c??document.head;return P.appendChild(O),O.sheet&&O.sheet.insertRule(`
10          [data-motion-pop-id="${f}"] {
11            position: absolute !important;
12            width: ${b}px !important;
13            height: ${j}px !important;
14            ${R}px !important;
15            ${k}px !important;
16          }
17        `),()=>{P.contains(O)&&P.removeChild(O)}},[a]),r.jsx(JO,{isPresent:a,childRef:h,sizeRef:g,pop:d,children:d===!1?e:w.cloneElement(e,{ref:x})})}const tP=({children:e,initial:a,isPresent:i,onExitComplete:s,custom:c,presenceAffectsLayout:d,mode:f,anchorX:h,anchorY:g,root:p})=>{const y=Zm(aP),x=w.useId();let b=!0,j=w.useMemo(()=>(b=!1,{id:x,initial:a,isPresent:i,custom:c,onExitComplete:N=>{y.set(N,!0);for(const C of y.values())if(!C)return;s&&s()},register:N=>(y.set(N,!1),()=>y.delete(N))}),[i,y,s]);return d&&b&&(j={...j}),w.useMemo(()=>{y.forEach((N,C)=>y.set(C,!1))},[i]),w.useEffect(()=>{!i&&!y.size&&s&&s()},[i]),e=r.jsx(eP,{pop:f==="popLayout",isPresent:i,anchorX:h,anchorY:g,root:p,children:e}),r.jsx(ed.Provider,{value:j,children:e})};function aP(){return new Map}function Sj(e=!0){const a=w.useContext(ed);if(a===null)return[!0,null];const{isPresent:i,onExitComplete:s,register:c}=a,d=w.useId();w.useEffect(()=>{if(e)return c(d)},[e]);const f=w.useCallback(()=>e&&s&&s(d),[d,s,e]);return!i&&s?[!1,f]:[!0]}const Yl=e=>e.key||"";function M0(e){const a=[];return w.Children.forEach(e,i=>{w.isValidElement(i)&&a.push(i)}),a}const mm=({children:e,custom:a,initial:i=!0,onExitComplete:s,presenceAffectsLayout:c=!0,mode:d="sync",propagate:f=!1,anchorX:h="left",anchorY:g="top",root:p})=>{const[y,x]=Sj(f),b=w.useMemo(()=>M0(e),[e]),j=f&&!y?[]:b.map(Yl),N=w.useRef(!0),C=w.useRef(b),A=Zm(()=>new Map),E=w.useRef(new Set),[R,k]=w.useState(b),[O,P]=w.useState(b);Z1(()=>{N.current=!1,C.current=b;for(let H=0;H<O.length;H++){const X=Yl(O[H]);j.includes(X)?(A.delete(X),E.current.delete(X)):A.get(X)!==!0&&A.set(X,!1)}},[O,j.length,j.join("-")]);const G=[];if(b!==R){let H=[...b];for(let X=0;X<O.length;X++){const ae=O[X],fe=Yl(ae);j.includes(fe)||(H.splice(X,0,ae),G.push(ae))}return d==="wait"&&G.length&&(H=G),P(M0(H)),k(b),null}const{forceRender:I}=w.useContext(Km);return r.jsx(r.Fragment,{children:O.map(H=>{const X=Yl(H),ae=f&&!y?!1:b===O||j.includes(X),fe=()=>{if(E.current.has(X))return;if(E.current.add(X),A.has(X))A.set(X,!0);else return;let ie=!0;A.forEach(xe=>{xe||(ie=!1)}),ie&&(I?.(),P(C.current),f&&x?.(),s&&s())};return r.jsx(tP,{isPresent:ae,initial:!N.current||i?void 0:!1,custom:a,presenceAffectsLayout:c,mode:d,root:p,onExitComplete:ae?void 0:fe,anchorX:h,anchorY:g,children:H},X)})})},jj=w.createContext({strict:!1}),O0={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let P0=!1;function nP(){if(P0)return;const e={};for(const a in O0)e[a]={isEnabled:i=>O0[a].some(s=>!!i[s])};JS(e),P0=!0}function Nj(){return nP(),_4()}function rP(e){const a=Nj();for(const i in e)a[i]={...a[i],...e[i]};JS(a)}const iP=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Oc(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||iP.has(e)}let Aj=e=>!Oc(e);function oP(e){typeof e=="function"&&(Aj=a=>a.startsWith("on")?!Oc(a):e(a))}try{oP(require("@emotion/is-prop-valid").default)}catch{}function sP(e,a,i){const s={};for(const c in e)c==="values"&&typeof e.values=="object"||(Aj(c)||i===!0&&Oc(c)||!a&&!Oc(c)||e.draggable&&c.startsWith("onDrag"))&&(s[c]=e[c]);return s}const nd=w.createContext({});function lP(e,a){if(ad(e)){const{initial:i,animate:s}=e;return{initial:i===!1||hs(i)?i:void 0,animate:hs(s)?s:void 0}}return e.inherit!==!1?a:{}}function cP(e){const{initial:a,animate:i}=lP(e,w.useContext(nd));return w.useMemo(()=>({initial:a,animate:i}),[V0(a),V0(i)])}function V0(e){return Array.isArray(e)?e.join(" "):e}const jp=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function Tj(e,a,i){for(const s in a)!Nt(a[s])&&!oj(s,i)&&(e[s]=a[s])}function dP({transformTemplate:e},a){return w.useMemo(()=>{const i=jp();return wp(i,a,e),Object.assign({},i.vars,i.style)},[a])}function uP(e,a){const i=e.style||{},s={};return Tj(s,i,e),Object.assign(s,dP(e,a)),s}function fP(e,a){const i={},s=uP(e,a);return e.drag&&e.dragListener!==!1&&(i.draggable=!1,s.userSelect=s.WebkitUserSelect=s.WebkitTouchCallout="none",s.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(i.tabIndex=0),i.style=s,i}const Ej=()=>({...jp(),attrs:{}});function hP(e,a,i,s){const c=w.useMemo(()=>{const d=Ej();return sj(d,a,cj(s),e.transformTemplate,e.style),{...d.attrs,style:{...d.style}}},[a]);if(e.style){const d={};Tj(d,e.style,e),c.style={...d,...c.style}}return c}const mP=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Np(e){return typeof e!="string"||e.includes("-")?!1:!!(mP.indexOf(e)>-1||/[A-Z]/u.test(e))}function pP(e,a,i,{latestValues:s},c,d=!1,f){const g=(f??Np(e)?hP:fP)(a,s,c,e),p=sP(a,typeof e=="string",d),y=e!==w.Fragment?{...p,...g,ref:i}:{},{children:x}=a,b=w.useMemo(()=>Nt(x)?x.get():x,[x]);return w.createElement(e,{...y,children:b})}function gP({scrapeMotionValuesFromProps:e,createRenderState:a},i,s,c){return{latestValues:yP(i,s,c,e),renderState:a()}}function yP(e,a,i,s){const c={},d=s(e,{});for(const b in d)c[b]=uc(d[b]);let{initial:f,animate:h}=e;const g=ad(e),p=XS(e);a&&p&&!g&&e.inherit!==!1&&(f===void 0&&(f=a.initial),h===void 0&&(h=a.animate));let y=i?i.initial===!1:!1;y=y||f===!1;const x=y?h:f;if(x&&typeof x!="boolean"&&!td(x)){const b=Array.isArray(x)?x:[x];for(let j=0;j<b.length;j++){const N=hp(e,b[j]);if(N){const{transitionEnd:C,transition:A,...E}=N;for(const R in E){let k=E[R];if(Array.isArray(k)){const O=y?k.length-1:0;k=k[O]}k!==null&&(c[R]=k)}for(const R in C)c[R]=C[R]}}}return c}const Rj=e=>(a,i)=>{const s=w.useContext(nd),c=w.useContext(ed),d=()=>gP(e,a,s,c);return i?d():Zm(d)},xP=Rj({scrapeMotionValuesFromProps:Cp,createRenderState:jp}),vP=Rj({scrapeMotionValuesFromProps:dj,createRenderState:Ej}),bP=Symbol.for("motionComponentSymbol");function wP(e,a,i){const s=w.useRef(i);w.useInsertionEffect(()=>{s.current=i});const c=w.useRef(null);return w.useCallback(d=>{d&&e.onMount?.(d);const f=s.current;if(typeof f=="function")if(d){const h=f(d);typeof h=="function"&&(c.current=h)}else c.current?(c.current(),c.current=null):f(d);else f&&(f.current=d);a&&(d?a.mount(d):a.unmount())},[a])}const kj=w.createContext({});function xi(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function CP(e,a,i,s,c,d){const{visualElement:f}=w.useContext(nd),h=w.useContext(jj),g=w.useContext(ed),p=w.useContext(Sp),y=p.reducedMotion,x=p.skipAnimations,b=w.useRef(null),j=w.useRef(!1);s=s||h.renderer,!b.current&&s&&(b.current=s(e,{visualState:a,parent:f,props:i,presenceContext:g,blockInitialAnimation:g?g.initial===!1:!1,reducedMotionConfig:y,skipAnimations:x,isSVG:d}),j.current&&b.current&&(b.current.manuallyAnimateOnMount=!0));const N=b.current,C=w.useContext(kj);N&&!N.projection&&c&&(N.type==="html"||N.type==="svg")&&SP(b.current,i,c,C);const A=w.useRef(!1);w.useInsertionEffect(()=>{N&&A.current&&N.update(i,g)}
vendor: 19,552 bytes, line 17
17);const E=i[zS],R=w.useRef(!!E&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(E)&&window.MotionHasOptimisedAnimation?.(E));return Z1(()=>{j.current=!0,N&&(A.current=!0,window.MotionIsMounted=!0,N.updateFeatures(),N.scheduleRenderMicrotask(),R.current&&N.animationState&&N.animationState.animateChanges())}),w.useEffect(()=>{N&&(!R.current&&N.animationState&&N.animationState.animateChanges(),R.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(E)}),R.current=!1),N.enteringChildren=void 0)}),N}function SP(e,a,i,s){const{layoutId:c,layout:d,drag:f,dragConstraints:h,layoutScroll:g,layoutRoot:p,layoutCrossfade:y}=a;e.projection=new i(e.latestValues,a["data-framer-portal-id"]?void 0:Dj(e.parent)),e.projection.setOptions({layoutId:c,layout:d,alwaysMeasureLayout:!!f||h&&xi(h),visualElement:e,animationType:typeof d=="string"?d:"both",initialPromotionConfig:s,crossfade:y,layoutScroll:g,layoutRoot:p})}function Dj(e){if(e)return e.options.allowProjection!==!1?e.projection:Dj(e.parent)}function th(e,{forwardMotionProps:a=!1,type:i}={},s,c){s&&rP(s);const d=i?i==="svg":Np(e),f=d?vP:xP;function h(p,y){let x;const b={...w.useContext(Sp),...p,layoutId:jP(p)},{isStatic:j}=b,N=cP(p),C=f(p,j);if(!j&&typeof window<"u"){NP();const A=AP(b);x=A.MeasureLayout,N.visualElement=CP(e,C,b,c,A.ProjectionNode,d)}return r.jsxs(nd.Provider,{value:N,children:[x&&N.visualElement?r.jsx(x,{visualElement:N.visualElement,...b}):null,pP(e,p,wP(C,N.visualElement,y),C,j,a,d)]})}h.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const g=w.forwardRef(h);return g[bP]=e,g}function jP({layoutId:e}){const a=w.useContext(Km).id;return a&&e!==void 0?a+"-"+e:e}function NP(e,a){w.useContext(jj).strict}function AP(e){const a=Nj(),{drag:i,layout:s}=a;if(!i&&!s)return{};const c={...i,...s};return{MeasureLayout:i?.isEnabled(e)||s?.isEnabled(e)?c.MeasureLayout:void 0,ProjectionNode:c.ProjectionNode}}function TP(e,a){if(typeof Proxy>"u")return th;const i=new Map,s=(d,f)=>th(d,f,e,a),c=(d,f)=>s(d,f);return new Proxy(c,{get:(d,f)=>f==="create"?s:(i.has(f)||i.set(f,th(f,void 0,e,a)),i.get(f))})}const EP=(e,a)=>a.isSVG??Np(e)?new oO(a):new eO(a,{allowProjection:e!==w.Fragment});class RP extends $n{constructor(a){super(a),a.animationState||(a.animationState=uO(a))}updateAnimationControlsSubscription(){const{animate:a}=this.node.getProps();td(a)&&(this.unmountControls=a.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:a}=this.node.getProps(),{animate:i}=this.node.prevProps||{};a!==i&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let kP=0;class DP extends $n{constructor(){super(...arguments),this.id=kP++}update(){if(!this.node.presenceContext)return;const{isPresent:a,onExitComplete:i}=this.node.presenceContext,{isPresent:s}=this.node.prevPresenceContext||{};if(!this.node.animationState||a===s)return;const c=this.node.animationState.setActive("exit",!a);i&&!a&&c.then(()=>{i(this.id)})}mount(){const{register:a,onExitComplete:i}=this.node.presenceContext||{};i&&i(this.id),a&&(this.unmount=a(this.id))}unmount(){}}const MP={animation:{Feature:RP},exit:{Feature:DP}};function Ss(e){return{point:{x:e.pageX,y:e.pageY}}}const OP=e=>a=>yp(a)&&e(a,Ss(a));function ns(e,a,i,s){return ms(e,a,OP(i),s)}const Mj=({current:e})=>e?e.ownerDocument.defaultView:null,L0=(e,a)=>Math.abs(e-a);function PP(e,a){const i=L0(e.x,a.x),s=L0(e.y,a.y);return Math.sqrt(i**2+s**2)}const F0=new Set(["auto","scroll"]);class Oj{constructor(a,i,{transformPagePoint:s,contextWindow:c=window,dragSnapToOrigin:d=!1,distanceThreshold:f=3,element:h}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=j=>{this.handleScroll(j.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const j=nh(this.lastMoveEventInfo,this.history),N=this.startEvent!==null,C=PP(j.offset,{x:0,y:0})>=this.distanceThreshold;if(!N&&!C)return;const{point:A}=j,{timestamp:E}=vt;this.history.push({...A,timestamp:E});const{onStart:R,onMove:k}=this.handlers;N||(R&&R(this.lastMoveEvent,j),this.startEvent=this.lastMoveEvent),k&&k(this.lastMoveEvent,j)},this.handlePointerMove=(j,N)=>{this.lastMoveEvent=j,this.lastMoveEventInfo=ah(N,this.transformPagePoint),Ue.update(this.updatePoint,!0)},this.handlePointerUp=(j,N)=>{this.end();const{onEnd:C,onSessionEnd:A,resumeAnimation:E}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&E&&E(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const R=nh(j.type==="pointercancel"?this.lastMoveEventInfo:ah(N,this.transformPagePoint),this.history);this.startEvent&&C&&C(j,R),A&&A(j,R)},!yp(a))return;this.dragSnapToOrigin=d,this.handlers=i,this.transformPagePoint=s,this.distanceThreshold=f,this.contextWindow=c||window;const g=Ss(a),p=ah(g,this.transformPagePoint),{point:y}=p,{timestamp:x}=vt;this.history=[{...y,timestamp:x}];const{onSessionStart:b}=i;b&&b(a,nh(p,this.history)),this.removeListeners=bs(ns(this.contextWindow,"pointermove",this.handlePointerMove),ns(this.contextWindow,"pointerup",this.handlePointerUp),ns(this.contextWindow,"pointercancel",this.handlePointerUp)),h&&this.startScrollTracking(h)}startScrollTracking(a){let i=a.parentElement;for(;i;){const s=getComputedStyle(i);(F0.has(s.overflowX)||F0.has(s.overflowY))&&this.scrollPositions.set(i,{x:i.scrollLeft,y:i.scrollTop}),i=i.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(a){const i=this.scrollPositions.get(a);if(!i)return;const s=a===window,c=s?{x:window.scrollX,y:window.scrollY}:{x:a.scrollLeft,y:a.scrollTop},d={x:c.x-i.x,y:c.y-i.y};d.x===0&&d.y===0||(s?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=d.x,this.lastMoveEventInfo.point.y+=d.y):this.history.length>0&&(this.history[0].x-=d.x,this.history[0].y-=d.y),this.scrollPositions.set(a,c),Ue.update(this.updatePoint,!0))}updateHandlers(a){this.handlers=a}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),In(this.updatePoint)}}function ah(e,a){return a?{point:a(e.point)}:e}function z0(e,a){return{x:e.x-a.x,y:e.y-a.y}}function nh({point:e},a){return{point:e,delta:z0(e,Pj(a)),offset:z0(e,VP(a)),velocity:LP(a,.1)}}function VP(e){return e[0]}function Pj(e){return e[e.length-1]}function LP(e,a){if(e.length<2)return{x:0,y:0};let i=e.length-1,s=null;const c=Pj(e);for(;i>=0&&(s=e[i],!(c.timestamp-s.timestamp>Sa(a)));)i--;if(!s)return{x:0,y:0};s===e[0]&&e.length>2&&c.timestamp-s.timestamp>Sa(a)*2&&(s=e[1]);const d=fa(c.timestamp-s.timestamp);if(d===0)return{x:0,y:0};const f={x:(c.x-s.x)/d,y:(c.y-s.y)/d};return f.x===1/0&&(f.x=0),f.y===1/0&&(f.y=0),f}function FP(e,{min:a,max:i},s){return a!==void 0&&e<a?e=s?Ze(a,e,s.min):Math.max(e,a):i!==void 0&&e>i&&(e=s?Ze(i,e,s.max):Math.min(e,i)),e}function H0(e,a,i){return{min:a!==void 0?e.min+a:void 0,max:i!==void 0?e.max+i-(e.max-e.min):void 0}}function zP(e,{top:a,left:i,bottom:s,right:c}){return{x:H0(e.x,i,c),y:H0(e.y,a,s)}}function B0(e,a){let i=a.min-e.min,s=a.max-e.max;return a.max-a.min<e.max-e.min&&([i,s]=[s,i]),{min:i,max:s}}function HP(e,a){return{x:B0(e.x,a.x),y:B0(e.y,a.y)}}function BP(e,a){let i=.5;const s=Mt(e),c=Mt(a);return c>s?i=ds(a.min,a.max-s,e.min):s>c&&(i=ds(e.min,e.max-c,a.min)),za(0,1,i)}function qP(e,a){const i={};return a.min!==void 0&&(i.min=a.min-e.min),a.max!==void 0&&(i.max=a.max-e.min),i}const pm=.35;function WP(e=pm){return e===!1?e=0:e===!0&&(e=pm),{x:q0(e,"left","right"),y:q0(e,"top","bottom")}}function q0(e,a,i){return{min:W0(e,a),max:W0(e,i)}}function W0(e,a){return typeof e=="number"?e:e[a]||0}const _P=new WeakMap;class GP{constructor(a){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=ut(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=a}start(a,{snapToCursor:i=!1,distanceThreshold:s}={}){const{presenceContext:c}=this.visualElement;if(c&&c.isPresent===!1)return;const d=x=>{i&&this.snapToCursor(Ss(x).point),this.stopAnimation()},f=(x,b)=>{const{drag:j,dragPropagation:N,onDragStart:C}=this.getProps();if(j&&!N&&(this.openDragLock&&this.openDragLock(),this.openDragLock=v4(j),!this.openDragLock))return;this.latestPointerEvent=x,this.latestPanInfo=b,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Oa(E=>{let R=this.getAxisMotionValue(E).get()||0;if(Fa.test(R)){const{projection:k}=this.visualElement;if(k&&k.layout){const O=k.layout.layoutBox[E];O&&(R=Mt(O)*(parseFloat(R)/100))}}this.originPoint[E]=R}),C&&Ue.update(()=>C(x,b),!1,!0),im(this.visualElement,"transform");const{animationState:A}=this.visualElement;A&&A.setActive("whileDrag",!0)},h=(x,b)=>{this.latestPointerEvent=x,this.latestPanInfo=b;const{dragPropagation:j,dragDirectionLock:N,onDirectionLock:C,onDrag:A}=this.getProps();if(!j&&!this.openDragLock)return;const{offset:E}=b;if(N&&this.currentDirection===null){this.currentDirection=IP(E),this.currentDirection!==null&&C&&C(this.currentDirection);return}this.updateAxis("x",b.point,E),this.updateAxis("y",b.point,E),this.visualElement.render(),A&&Ue.update(()=>A(x,b),!1,!0)},g=(x,b)=>{this.latestPointerEvent=x,this.latestPanInfo=b,this.stop(x,b),this.latestPointerEvent=null,this.latestPanInfo=null},p=()=>{const{dragSnapToOrigin:x}=this.getProps();(x||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:y}=this.getProps();this.panSession=new Oj(a,{onSessionStart:d,onStart:f,onMove:h,onSessionEnd:g,resumeAnimation:p},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:y,distanceThreshold:s,contextWindow:Mj(this.visualElement),element:this.visualElement.current})}stop(a,i){const s=a||this.latestPointerEvent,c=i||this.latestPanInfo,d=this.isDragging;if(this.cancel(),!d||!c||!s)return;const{velocity:f}=c;this.startAnimation(f);const{onDragEnd:h}=this.getProps();h&&Ue.postRender(()=>h(s,c))}cancel(){this.isDragging=!1;const{projection:a,animationState:i}=this.visualElement;a&&(a.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:s}=this.getProps();!s&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),i&&i.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(a,i,s){const{drag:c}=this.getProps();if(!s||!$l(a,c,this.currentDirection))return;const d=this.getAxisMotionValue(a);let f=this.originPoint[a]+s[a];this.constraints&&this.constraints[a]&&(f=FP(f,this.constraints[a],this.elastic[a])),d.set(f)}resolveConstraints(){const{dragConstraints:a,dragElastic:i}=this.getProps(),s=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,c=this.constraints;a&&xi(a)?this.constraints||(this.constraints=this.resolveRefConstraints()):a&&s?this.constraints=zP(s.layoutBox,a):this.constraints=!1,this.elastic=WP(i),c!==this.constraints&&!xi(a)&&s&&this.constraints&&!this.hasMutatedConstraints&&Oa(d=>{this.constraints!==!1&&this.getAxisMotionValue(d)&&(this.constraints[d]=qP(s.layoutBox[d],this.constraints[d]))})}resolveRefConstraints(){const{dragConstraints:a,onMeasureDragConstraints:i}=this.getProps();if(!a||!xi(a))return!1;const s=a.current,{projection:c}=this.visualElement;if(!c||!c.layout)return!1;const d=$4(s,c.root,this.visualElement.getTransformPagePoint());let f=HP(c.layout.layoutBox,d);if(i){const h=i(U4(f));this.hasMutatedConstraints=!!h,h&&(f=tj(h))}return f}startAnimation(a){const{drag:i,dragMomentum:s,dragElastic:c,dragTransition:d,dragSnapToOrigin:f,onDragTransitionEnd:h}=this.getProps(),g=this.constraints||{},p=Oa(y=>{if(!$l(y,i,this.currentDirection))return;let x=g&&g[y]||{};f&&(x={min:0,max:0});const b=c?200:1e6,j=c?40:1e7,N={type:"inertia",velocity:s?a[y]:0,bounceStiffness:b,bounceDamping:j,timeConstant:750,restDelta:1,restSpeed:10,...d,...x};return this.startAxisValueAnimation(y,N)});return Promise.all(p).then(h)}startAxisValueAnimation(a,i){const s=this.getAxisMotionValue(a);return im(this.visualElement,a),s.start(fp(a,s,0,i,this.visualElement,!1))}stopAnimation(){Oa(a=>this.getAxisMotionValue(a).stop())}getAxisMotionValue(a){const i=`_drag${a.toUpperCase()}`,s=this.visualElement.getProps(),c=s[i];return c||this.visualElement.getValue(a,(s.initial?s.initial[a]:void 0)||0)}snapToCursor(a){Oa(i=>{const{drag:s}=this.getProps();if(!$l(i,s,this.currentDirection))return;const{projection:c}=this.visualElement,d=this.getAxisMotionValue(i);if(c&&c.layout){const{min:f,max:h}=c.layout.layoutBox[i],g=d.get()||0;d.set(a[i]-Ze(f,h,.5)+g)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:a,dragConstraints:i}=this.getProps(),{projection:s}=this.visualElement;if(!xi(i)||!s||!this.constraints)return;this.stopAnimation();const c={x:0,y:0};Oa(f=>{const h=this.getAxisMotionValue(f);if(h&&this.constraints!==!1){const g=h.get();c[f]=BP({min:g,max:g},this.constraints[f])}});const{transformTemplate:d}=this.visualElement.getProps();this.visualElement.current.style.transform=d?d({},""):"none",s.root&&s.root.updateScroll(),s.updateLayout(),this.constraints=!1,this.resolveConstraints(),Oa(f=>{if(!$l(f,a,null))return;const h=this.getAxisMotionValue(f),{min:g,max:p}=this.constraints[f];h.set(Ze(g,p,c[f]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;_P.set(this.visualElement,this);const a=this.visualElement.current,i=ns(a,"pointerdown",p=>{const{drag:y,dragListener:x=!0}=this.getProps(),b=p.target,j=b!==a&&N4(b);y&&x&&!j&&this.start(p)});let s;const c=()=>{const{dragConstraints:p}=this.getProps();xi(p)&&p.current&&(this.constraints=this.resolveRefConstraints(),s||(s=UP(a,p.current,()=>this.scalePositionWithinConstraints())))},{projection:d}=this.visualElement,f=d.addEventListener("measure",c);d&&!d.layout&&(d.root&&d.root.updateScroll(),d.updateLayout()),Ue.read(c);const h=ms(window,"resize",()=>this.scalePositionWithinConstraints()),g=d.addEventListener("didUpdate",(({delta:p,hasLayoutChanged:y})=>{this.isDragging&&y&&(Oa(x=>{const b=this.getAxisMotionValue(x);b&&(this.originPoint[x]+=p[x].translate,b.set(b.get()+p[x].translate))}),this.visualElement.render())}));return()=>{h(),i(),f(),g&&g(),s&&s()}}getProps(){const a=this.visualElement.getProps(),{drag:i=!1,dragDirectionLock:s=!1,dragPropagation:c=!1,dragConstraints:d=!1,dragElastic:f=pm,dragMomentum:h=!0}=a;return{...a,drag:i,dragDirectionLock:s,dragPropagation:c,dragConstraints:d,dragElastic:f,dragMomentum:h}}}function _0(e){let a=!0;return()=>{if(a){a=!1;return}e()}}function UP(e,a,i){const s=Kb(e,_0(i)),c=Kb(a,_0(i));return()=>{s(),c()}}function $l(e,a,i){return(a===!0||a===e)&&(i===null||i===e)}function IP(e,a=10){let i=null;return Math.abs(e.y)>a?i="y":Math.abs(e.x)>a&&(i="x"),i}class YP extends $n{constructor(a){super(a),this.removeGroupControls=ha,this.removeListeners=ha,this.controls=new GP(a)}mount(){const{dragControls:a}=this.node.getProps();a&&(this.removeGroupControls=a.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||ha}update(){const{dragControls:a}=this.node.getProps(),{dragControls:i}=this.node.prevProps||{};a!==i&&(this.removeGroupControls(),a&&(this.removeGroupControls=a.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const rh=e=>(a,i)=>{e&&Ue.update(()=>e(a,i),!1,!0)};class $P extends $n{constructor(){super(...arguments),this.removePointerDownListener=ha}onPointerDown(a){this.session=new Oj(a,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:Mj(this.node)})}createPanHandlers(){const{onPanSessionStart:a,onPanStart:i,onPan:s,onPanEnd:c}=this.node.getProps();return{onSessionStart:rh(a),onStart:rh(i),onMove:rh(s),onEnd:(d,f)=>{delete this.session,c&&Ue.postRender(()=>c(d,f))}}}mount(){this.removePointerDownListener=ns(this.node.current,"pointerdown",a=>this.onPointerDown(a))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let ih=!1;class KP extends w.Component{componentDidMount(){const{visualElement:a,layoutGroup:i,switchLayoutGroup:s,layoutId:c}=this.props,{projection:d}=a;d&&(i.group&&i.group.add(d),s&&s.register&&c&&s.register(d),ih&&d.root.didUpdate(),d.addEventListener("animationComplete",()=>{this.safeToRemove()}),d.setOptions({...d.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),fc.hasEverUpdated=!0}getSnapshotBeforeUpdate(a){const{layoutDependency:i,visualElement:s,drag:c,isPresent:d}=this.props,{projection:f}=s;return f&&(f.isPresent=d,a.layoutDependency!==i&&f.setOptions({...f.options,layoutDependency:i}),ih=!0,c||a.layoutDependency!==i||i===void 0||a.isPresent!==d?f.willUpdate():this.safeToRemove(),a.isPresent!==d&&(d?f.promote():f.relegate()||Ue.postRender(()=>{const h=f.getStack();(!h||!h.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:a}=this.props.visualElement;a&&(a.root.didUpdate(),gp.postRender(()=>{!a.currentAnimation&&a.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:a,layoutGroup:i,switchLayoutGroup:s}=this.props,{projection:c}=a;ih=!0,c&&(c.scheduleCheckAfterUnmount(),i&&i.group&&i.group.remove(c),s&&s.deregister&&s.deregister(c))}safeToRemove(){const{safeToRemove:a}=this.props;a&&a()}render(){return null}}function Vj(e){const[a,i]=Sj(),s=w.useContext(Km);return r.jsx(KP,{...e,layoutGroup:s,switchLayoutGroup:w.useContext(kj),isPresent:a,safeToRemove:i})}const ZP={pan:{Feature:$P},drag:{Feature:YP,ProjectionNode:Cj,MeasureLayout:Vj}};function G0(e,a,i){const{props:s}=e;e.animationState&&s.whileHover&&e.animationState.setActive("whileHover",i==="Start");const c="onHover"+i,d=s[c];d&&Ue.postRender(()=>d(a,Ss(a)))}class XP extends $n{mount(){const{current:a}=this.node;a&&(this.unmount=w4(a,(i,s)=>(G0(this.node,s,"Start"),c=>G0(this.node,c,"End"))))}unmount(){}}class QP extends $n{constructor(){super(...arguments),this.isActive=!1}onFocus(){let a=!1;try{a=this.node.current.matches(":focus-visible")}catch{a=!0}!a||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=bs(ms(this.node.current,"focus",()=>this.onFocus()),ms(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function U0(e,a,i){const{props:s}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&s.whileTap&&e.animationState.setActive("whileTap",i==="Start");const c="onTap"+(i==="End"?"":i),d=s[c];d&&Ue.postRender(()=>d(a,Ss(a)))}class JP extends $n{mount(){const{current:a}=this.node;if(!a)return;
17const{globalTapTarget:i,propagate:s}=this.node.props;this.unmount=T4(a,(c,d)=>(U0(this.node,d,"Start"),(f,{success:h})=>U0(this.node,f,h?"End":"Cancel")),{useGlobalTarget:i,stopPropagation:s?.tap===!1})}unmount(){}}const gm=new WeakMap,oh=new WeakMap,e6=e=>{const a=gm.get(e.target);a&&a(e)},t6=e=>{e.forEach(e6)};function a6({root:e,...a}){const i=e||document;oh.has(i)||oh.set(i,{});const s=oh.get(i),c=JSON.stringify(a);return s[c]||(s[c]=new IntersectionObserver(t6,{root:e,...a})),s[c]}function n6(e,a,i){const s=a6(a);return gm.set(e,i),s.observe(e),()=>{gm.delete(e),s.unobserve(e)}}const r6={some:0,all:1};class i6 extends $n{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:a={}}=this.node.getProps(),{root:i,margin:s,amount:c="some",once:d}=a,f={root:i?i.current:void 0,rootMargin:s,threshold:typeof c=="number"?c:r6[c]},h=g=>{const{isIntersecting:p}=g;if(this.isInView===p||(this.isInView=p,d&&!p&&this.hasEnteredView))return;p&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",p);const{onViewportEnter:y,onViewportLeave:x}=this.node.getProps(),b=p?y:x;b&&b(g)};return n6(this.node.current,f,h)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:a,prevProps:i}=this.node;["amount","margin","root"].some(o6(a,i))&&this.startObserver()}unmount(){}}function o6({viewport:e={}},{viewport:a={}}={}){return i=>e[i]!==a[i]}const s6={inView:{Feature:i6},tap:{Feature:JP},focus:{Feature:QP},hover:{Feature:XP}},l6={layout:{ProjectionNode:Cj,MeasureLayout:Vj}},c6={...MP,...s6,...ZP,...l6},ua=TP(c6,EP);var d6=Symbol.for("react.lazy"),Pc=Fc[" use ".trim().toString()];function u6(e){return typeof e=="object"&&e!==null&&"then"in e}function Lj(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===d6&&"_payload"in e&&u6(e._payload)}function f6(e){const a=m6(e),i=w.forwardRef((s,c)=>{let{children:d,...f}=s;Lj(d)&&typeof Pc=="function"&&(d=Pc(d._payload));const h=w.Children.toArray(d),g=h.find(g6);if(g){const p=g.props.children,y=h.map(x=>x===g?w.Children.count(p)>1?w.Children.only(null):w.isValidElement(p)?p.props.children:null:x);return r.jsx(a,{...f,ref:c,children:w.isValidElement(p)?w.cloneElement(p,void 0,y):null})}return r.jsx(a,{...f,ref:c,children:d})});return i.displayName=`${e}.Slot`,i}var h6=f6("Slot");function m6(e){const a=w.forwardRef((i,s)=>{let{children:c,...d}=i;if(Lj(c)&&typeof Pc=="function"&&(c=Pc(c._payload)),w.isValidElement(c)){const f=x6(c),h=y6(d,c.props);return c.type!==w.Fragment&&(h.ref=s?km(s,f):f),w.cloneElement(c,h)}return w.Children.count(c)>1?w.Children.only(null):null});return a.displayName=`${e}.SlotClone`,a}var p6=Symbol("radix.slottable");function g6(e){return w.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===p6}function y6(e,a){const i={...a};for(const s in a){const c=e[s],d=a[s];/^on[A-Z]/.test(s)?c&&d?i[s]=(...h)=>{const g=d(...h);return c(...h),g}:c&&(i[s]=c):s==="style"?i[s]={...c,...d}:s==="className"&&(i[s]=[c,d].filter(Boolean).join(" "))}return{...e,...i}}function x6(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,i=a&&"isReactWarning"in a&&a.isReactWarning;return i?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,i=a&&"isReactWarning"in a&&a.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}const v6=GC("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover-elevate active-elevate-2",{variants:{variant:{default:"bg-primary text-primary-foreground border border-primary-border",destructive:"bg-destructive text-destructive-foreground shadow-sm border-destructive-border",outline:" border [border-color:var(--button-outline)] shadow-xs active:shadow-none ",secondary:"border bg-secondary text-secondary-foreground border border-secondary-border ",ghost:"border border-transparent",link:"text-primary underline-offset-4 hover:underline"},size:{default:"min-h-9 px-4 py-2",sm:"min-h-8 rounded-md px-3 text-xs",lg:"min-h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),zn=w.forwardRef(({className:e,variant:a,size:i,asChild:s=!1,...c},d)=>{const f=s?h6:"button";return r.jsx(f,{className:$e(v6({variant:a,size:i,className:e})),ref:d,...c})});zn.displayName="Button";const rs=w.forwardRef(({className:e,type:a,...i},s)=>r.jsx("input",{type:a,className:$e("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:s,...i}));rs.displayName="Input";const Fj=w.forwardRef(({className:e,...a},i)=>
vendor: 10,566 bytes, line 17
17r.jsx("textarea",{className:$e("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:i,...a}));Fj.displayName="Textarea";function I0(e,[a,i]){return Math.min(i,Math.max(a,e))}var b6=w.createContext(void 0);function w6(e){const a=w.useContext(b6);return e||a||"ltr"}var sh=0;function C6(){w.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Y0()),document.body.insertAdjacentElement("beforeend",e[1]??Y0()),sh++,()=>{sh===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),sh--}},[])}function Y0(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var lh="focusScope.autoFocusOnMount",ch="focusScope.autoFocusOnUnmount",$0={bubbles:!1,cancelable:!0},S6="FocusScope",zj=w.forwardRef((e,a)=>{const{loop:i=!1,trapped:s=!1,onMountAutoFocus:c,onUnmountAutoFocus:d,...f}=e,[h,g]=w.useState(null),p=Na(c),y=Na(d),x=w.useRef(null),b=et(a,C=>g(C)),j=w.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;w.useEffect(()=>{if(s){let C=function(k){if(j.paused||!h)return;const O=k.target;h.contains(O)?x.current=O:Hn(x.current,{select:!0})},A=function(k){if(j.paused||!h)return;const O=k.relatedTarget;O!==null&&(h.contains(O)||Hn(x.current,{select:!0}))},E=function(k){if(document.activeElement===document.body)for(const P of k)P.removedNodes.length>0&&Hn(h)};document.addEventListener("focusin",C),document.addEventListener("focusout",A);const R=new MutationObserver(E);return h&&R.observe(h,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",C),document.removeEventListener("focusout",A),R.disconnect()}}},[s,h,j.paused]),w.useEffect(()=>{if(h){Z0.add(j);const C=document.activeElement;if(!h.contains(C)){const E=new CustomEvent(lh,$0);h.addEventListener(lh,p),h.dispatchEvent(E),E.defaultPrevented||(j6(R6(Hj(h)),{select:!0}),document.activeElement===C&&Hn(h))}return()=>{h.removeEventListener(lh,p),setTimeout(()=>{const E=new CustomEvent(ch,$0);h.addEventListener(ch,y),h.dispatchEvent(E),E.defaultPrevented||Hn(C??document.body,{select:!0}),h.removeEventListener(ch,y),Z0.remove(j)},0)}}},[h,p,y,j]);const N=w.useCallback(C=>{if(!i&&!s||j.paused)return;const A=C.key==="Tab"&&!C.altKey&&!C.ctrlKey&&!C.metaKey,E=document.activeElement;if(A&&E){const R=C.currentTarget,[k,O]=N6(R);k&&O?!C.shiftKey&&E===O?(C.preventDefault(),i&&Hn(k,{select:!0})):C.shiftKey&&E===k&&(C.preventDefault(),i&&Hn(O,{select:!0})):E===R&&C.preventDefault()}},[i,s,j.paused]);return r.jsx(We.div,{tabIndex:-1,...f,ref:b,onKeyDown:N})});zj.displayName=S6;function j6(e,{select:a=!1}={}){const i=document.activeElement;for(const s of e)if(Hn(s,{select:a}),document.activeElement!==i)return}function N6(e){const a=Hj(e),i=K0(a,e),s=K0(a.reverse(),e);return[i,s]}function Hj(e){const a=[],i=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:s=>{const c=s.tagName==="INPUT"&&s.type==="hidden";return s.disabled||s.hidden||c?NodeFilter.FILTER_SKIP:s.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;i.nextNode();)a.push(i.currentNode);return a}function K0(e,a){for(const i of e)if(!A6(i,{upTo:a}))return i}function A6(e,{upTo:a}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(a!==void 0&&e===a)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function T6(e){return e instanceof HTMLInputElement&&"select"in e}function Hn(e,{select:a=!1}={}){if(e&&e.focus){const i=document.activeElement;e.focus({preventScroll:!0}),e!==i&&T6(e)&&a&&e.select()}}var Z0=E6();function E6(){let e=[];return{add(a){const i=e[0];a!==i&&i?.pause(),e=X0(e,a),e.unshift(a)},remove(a){e=X0(e,a),e[0]?.resume()}}}function X0(e,a){const i=[...e],s=i.indexOf(a);return s!==-1&&i.splice(s,1),i}function R6(e){return e.filter(a=>a.tagName!=="A")}function k6(e){const a=w.useRef({value:e,previous:e});return w.useMemo(()=>(a.current.value!==e&&(a.current.previous=a.current.value,a.current.value=e),a.current.previous),[e])}var D6=function(e){if(typeof document>"u")return null;var a=Array.isArray(e)?e[0]:e;return a.ownerDocument.body},pi=new WeakMap,Kl=new WeakMap,Zl={},dh=0,Bj=function(e){return e&&(e.host||Bj(e.parentNode))},M6=function(e,a){return a.map(function(i){if(e.contains(i))return i;var s=Bj(i);return s&&e.contains(s)?s:(console.error("aria-hidden",i,"in not contained inside",e,". Doing nothing"),null)}).filter(function(i){return!!i})},O6=function(e,a,i,s){var c=M6(a,Array.isArray(e)?e:[e]);Zl[i]||(Zl[i]=new WeakMap);var d=Zl[i],f=[],h=new Set,g=new Set(c),p=function(x){!x||h.has(x)||(h.add(x),p(x.parentNode))};c.forEach(p);var y=function(x){!x||g.has(x)||Array.prototype.forEach.call(x.children,function(b){if(h.has(b))y(b);else try{var j=b.getAttribute(s),N=j!==null&&j!=="false",C=(pi.get(b)||0)+1,A=(d.get(b)||0)+1;pi.set(b,C),d.set(b,A),f.push(b),C===1&&N&&Kl.set(b,!0),A===1&&b.setAttribute(i,"true"),N||b.setAttribute(s,"true")}catch(E){console.error("aria-hidden: cannot operate on ",b,E)}})};return y(a),h.clear(),dh++,function(){f.forEach(function(x){var b=pi.get(x)-1,j=d.get(x)-1;pi.set(x,b),d.set(x,j),b||(Kl.has(x)||x.removeAttribute(s),Kl.delete(x)),j||x.removeAttribute(i)}),dh--,dh||(pi=new WeakMap,pi=new WeakMap,Kl=new WeakMap,Zl={})}},P6=function(e,a,i){i===void 0&&(i="data-aria-hidden");var s=Array.from(Array.isArray(e)?e:[e]),c=D6(e);return c?(s.push.apply(s,Array.from(c.querySelectorAll("[aria-live], script"))),O6(s,c,i,"aria-hidden")):function(){return null}},Pa=function(){return Pa=Object.assign||function(a){for(var i,s=1,c=arguments.length;s<c;s++){i=arguments[s];for(var d in i)Object.prototype.hasOwnProperty.call(i,d)&&(a[d]=i[d])}return a},Pa.apply(this,arguments)};function qj(e,a){var i={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&a.indexOf(s)<0&&(i[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var c=0,s=Object.getOwnPropertySymbols(e);c<s.length;c++)a.indexOf(s[c])<0&&Object.prototype.propertyIsEnumerable.call(e,s[c])&&(i[s[c]]=e[s[c]]);return i}function V6(e,a,i){if(i||arguments.length===2)for(var s=0,c=a.length,d;s<c;s++)(d||!(s in a))&&(d||(d=Array.prototype.slice.call(a,0,s)),d[s]=a[s]);return e.concat(d||Array.prototype.slice.call(a))}var hc="right-scroll-bar-position",mc="width-before-scroll-bar",L6="with-scroll-bars-hidden",F6="--removed-body-scroll-bar-size";function uh(e,a){return typeof e=="function"?e(a):e&&(e.current=a),e}function z6(e,a){var i=w.useState(function(){return{value:e,callback:a,facade:{get current(){return i.value},set current(s){var c=i.value;c!==s&&(i.value=s,i.callback(s,c))}}}})[0];return i.callback=a,i.facade}var H6=typeof window<"u"?w.useLayoutEffect:w.useEffect,Q0=new WeakMap;function B6(e,a){var i=z6(null,function(s){return e.forEach(function(c){return uh(c,s)})});return H6(function(){var s=Q0.get(i);if(s){var c=new Set(s),d=new Set(e),f=i.current;c.forEach(function(h){d.has(h)||uh(h,null)}),d.forEach(function(h){c.has(h)||uh(h,f)})}Q0.set(i,e)},[e]),i}function q6(e){return e}function W6(e,a){a===void 0&&(a=q6);var i=[],s=!1,c={read:function(){if(s)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return i.length?i[i.length-1]:e},useMedium:function(d){var f=a(d,s);return i.push(f),function(){i=i.filter(function(h){return h!==f})}},assignSyncMedium:function(d){for(s=!0;i.length;){var f=i;i=[],f.forEach(d)}i={push:function(h){return d(h)},filter:function(){return i}}},assignMedium:function(d){s=!0;var f=[];if(i.length){var h=i;i=[],h.forEach(d),f=i}var g=function(){var y=f;f=[],y.forEach(d)},p=function(){return Promise.resolve().then(g)};p(),i={push:function(y){f.push(y),p()},filter:function(y){return f=f.filter(y),i}}}};return c}function _6(e){e===void 0&&(e={});var a=W6(null);return a.options=Pa({async:!0,ssr:!1},e),a}var Wj=function(e){var a=e.sideCar,i=qj(e,["sideCar"]);if(!a)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var s=a.read();if(!s)throw new Error("Sidecar medium not found");return w.createElement(s,Pa({},i))};Wj.isSideCarExport=!0;function G6(e,a){return e.useMedium(a),Wj}var _j=_6(),fh=function(){},rd=w.forwardRef(function(e,a){var i=w.useRef(null),s=w.useState({onScrollCapture:fh,onWheelCapture:fh,onTouchMoveCapture:fh}),c=s[0],d=s[1],f=e.forwardProps,h=e.children,g=e.className,p=e.removeScrollBar,y=e.enabled,x=e.shards,b=e.sideCar,j=e.noRelative,N=e.noIsolation,C=e.inert,A=e.allowPinchZoom,E=e.as,R=E===void 0?"div":E,k=e.gapMode,O=qj(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),P=b,G=B6([i,a]),I=Pa(Pa({},O),c);return w.createElement(w.Fragment,null,y&&w.createElement(P,{sideCar:_j,removeScrollBar:p,shards:x,noRelative:j,noIsolation:N,inert:C,setCallbacks:d,allowPinchZoom:!!A,lockRef:i,gapMode:k}),f?w.cloneElement(w.Children.only(h),Pa(Pa({},I),{ref:G})):w.createElement(R,Pa({},I,{className:g,ref:G}),h))});rd.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};rd.classNames={fullWidth:mc,zeroRight:hc};var U6=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function I6(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var a=U6();return a&&e.setAttribute("nonce",a),e}function Y6(e,a){e.styleSheet?e.styleSheet.cssText=a:e.appendChild(document.createTextNode(a))}function $6(e){var a=document.head||document.getElementsByTagName("head")[0];a.appendChild(e)}var K6=function(){var e=0,a=null;return{add:function(i){e==0&&(a=I6())&&(Y6(a,i),$6(a)),e++},remove:function(){e--,!e&&a&&(a.parentNode&&a.parentNode.removeChild(a),a=null)}}},Z6=function(){var e=K6();return function(a,i){w.useEffect(function(){return e.add(a),function(){e.remove()}},[a&&i])}},Gj=function(){var e=Z6(),a=function(i){var s=i.styles,c=i.dynamic;return e(s,c),null};return a},X6={left:0,top:0,right:0,gap:0},hh=function(e){return parseInt(e||"",10)||0},Q6=function(e){var a=window.getComputedStyle(document.body),i=a[e==="padding"?"paddingLeft":"marginLeft"],s=a[e==="padding"?"paddingTop":"marginTop"],c=a[e==="padding"?"paddingRight":"marginRight"];
vendor: 1,596 bytes, lines 17-54
17return[hh(i),hh(s),hh(c)]},J6=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return X6;var a=Q6(e),i=document.documentElement.clientWidth,s=window.innerWidth;return{left:a[0],top:a[1],right:a[2],gap:Math.max(0,s-i+a[2]-a[0])}},e9=Gj(),Ei="data-scroll-locked",t9=function(e,a,i,s){var c=e.left,d=e.top,f=e.right,h=e.gap;return i===void 0&&(i="margin"),`
18  .`.concat(L6,` {
19   overflow: hidden `).concat(s,`;
20   padding-right: `).concat(h,"px ").concat(s,`;
21  }
22  body[`).concat(Ei,`] {
23    overflow: hidden `).concat(s,`;
24    overscroll-behavior: contain;
25    `).concat([a&&"position: relative ".concat(s,";"),i==="margin"&&`
26    padding-left: `.concat(c,`px;
27    padding-top: `).concat(d,`px;
28    padding-right: `).concat(f,`px;
29    margin-left:0;
30    margin-top:0;
31    margin-right: `).concat(h,"px ").concat(s,`;
32    `),i==="padding"&&"padding-right: ".concat(h,"px ").concat(s,";")].filter(Boolean).join(""),`
33  }
34  
35  .`).concat(hc,` {
36    right: `).concat(h,"px ").concat(s,`;
37  }
38  
39  .`).concat(mc,` {
40    margin-right: `).concat(h,"px ").concat(s,`;
41  }
42  
43  .`).concat(hc," .").concat(hc,` {
44    right: 0 `).concat(s,`;
45  }
46  
47  .`).concat(mc," .").concat(mc,` {
48    margin-right: 0 `).concat(s,`;
49  }
50  
51  body[`).concat(Ei,`] {
52    `).concat(F6,": ").concat(h,`px;
53  }
54`)},J0=function(){var e=parseInt(document.body.getAttribute(Ei)||"0",10);return isFinite(e)?e:0},a9=function(){w.useEffect(function(){return document.body.setAttribute(Ei,(J0()+1).toString()),function(){var e=J0()-1;e<=0?document.body.removeAttribute(Ei):document.body.setAttribute(Ei,e.toString())}},[])}
vendor: 2,378 bytes, lines 54-57
54,n9=function(e){var a=e.noRelative,i=e.noImportant,s=e.gapMode,c=s===void 0?"margin":s;a9();var d=w.useMemo(function(){return J6(c)},[c]);return w.createElement(e9,{styles:t9(d,!a,c,i?"":"!important")})},ym=!1;if(typeof window<"u")try{var Xl=Object.defineProperty({},"passive",{get:function(){return ym=!0,!0}});window.addEventListener("test",Xl,Xl),window.removeEventListener("test",Xl,Xl)}catch{ym=!1}var gi=ym?{passive:!1}:!1,r9=function(e){return e.tagName==="TEXTAREA"},Uj=function(e,a){if(!(e instanceof Element))return!1;var i=window.getComputedStyle(e);return i[a]!=="hidden"&&!(i.overflowY===i.overflowX&&!r9(e)&&i[a]==="visible")},i9=function(e){return Uj(e,"overflowY")},o9=function(e){return Uj(e,"overflowX")},ew=function(e,a){var i=a.ownerDocument,s=a;do{typeof ShadowRoot<"u"&&s instanceof ShadowRoot&&(s=s.host);var c=Ij(e,s);if(c){var d=Yj(e,s),f=d[1],h=d[2];if(f>h)return!0}s=s.parentNode}while(s&&s!==i.body);return!1},s9=function(e){var a=e.scrollTop,i=e.scrollHeight,s=e.clientHeight;return[a,i,s]},l9=function(e){var a=e.scrollLeft,i=e.scrollWidth,s=e.clientWidth;return[a,i,s]},Ij=function(e,a){return e==="v"?i9(a):o9(a)},Yj=function(e,a){return e==="v"?s9(a):l9(a)},c9=function(e,a){return e==="h"&&a==="rtl"?-1:1},d9=function(e,a,i,s,c){var d=c9(e,window.getComputedStyle(a).direction),f=d*s,h=i.target,g=a.contains(h),p=!1,y=f>0,x=0,b=0;do{if(!h)break;var j=Yj(e,h),N=j[0],C=j[1],A=j[2],E=C-A-d*N;(N||E)&&Ij(e,h)&&(x+=E,b+=N);var R=h.parentNode;h=R&&R.nodeType===Node.DOCUMENT_FRAGMENT_NODE?R.host:R}while(!g&&h!==document.body||g&&(a.contains(h)||a===h));return(y&&Math.abs(x)<1||!y&&Math.abs(b)<1)&&(p=!0),p},Ql=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},tw=function(e){return[e.deltaX,e.deltaY]},aw=function(e){return e&&"current"in e?e.current:e},u9=function(e,a){return e[0]===a[0]&&e[1]===a[1]},f9=function(e){return`
55  .block-interactivity-`.concat(e,` {pointer-events: none;}
56  .allow-interactivity-`).concat(e,` {pointer-events: all;}
57`)},h9=0,yi=[];function m9(e){var a=w.useRef([]),i=w.useRef([0,0]),s=w.useRef(),c=w.useState(h9++)[0],d=w.useState(Gj)[0],f=w.useRef(e);w.useEffect(function(){f.current=e},[e]),w.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(c));var C=V6([e.lockRef.current],(e.shards||[]).map(aw),!0).filter(Boolean);
vendor: 4,902 bytes, line 57
57return C.forEach(function(A){return A.classList.add("allow-interactivity-".concat(c))}),function(){document.body.classList.remove("block-interactivity-".concat(c)),C.forEach(function(A){return A.classList.remove("allow-interactivity-".concat(c))})}}},[e.inert,e.lockRef.current,e.shards]);var h=w.useCallback(function(C,A){if("touches"in C&&C.touches.length===2||C.type==="wheel"&&C.ctrlKey)return!f.current.allowPinchZoom;var E=Ql(C),R=i.current,k="deltaX"in C?C.deltaX:R[0]-E[0],O="deltaY"in C?C.deltaY:R[1]-E[1],P,G=C.target,I=Math.abs(k)>Math.abs(O)?"h":"v";if("touches"in C&&I==="h"&&G.type==="range")return!1;var H=window.getSelection(),X=H&&H.anchorNode,ae=X?X===G||X.contains(G):!1;if(ae)return!1;var fe=ew(I,G);if(!fe)return!0;if(fe?P=I:(P=I==="v"?"h":"v",fe=ew(I,G)),!fe)return!1;if(!s.current&&"changedTouches"in C&&(k||O)&&(s.current=P),!P)return!0;var ie=s.current||P;return d9(ie,A,C,ie==="h"?k:O)},[]),g=w.useCallback(function(C){var A=C;if(!(!yi.length||yi[yi.length-1]!==d)){var E="deltaY"in A?tw(A):Ql(A),R=a.current.filter(function(P){return P.name===A.type&&(P.target===A.target||A.target===P.shadowParent)&&u9(P.delta,E)})[0];if(R&&R.should){A.cancelable&&A.preventDefault();return}if(!R){var k=(f.current.shards||[]).map(aw).filter(Boolean).filter(function(P){return P.contains(A.target)}),O=k.length>0?h(A,k[0]):!f.current.noIsolation;O&&A.cancelable&&A.preventDefault()}}},[]),p=w.useCallback(function(C,A,E,R){var k={name:C,delta:A,target:E,should:R,shadowParent:p9(E)};a.current.push(k),setTimeout(function(){a.current=a.current.filter(function(O){return O!==k})},1)},[]),y=w.useCallback(function(C){i.current=Ql(C),s.current=void 0},[]),x=w.useCallback(function(C){p(C.type,tw(C),C.target,h(C,e.lockRef.current))},[]),b=w.useCallback(function(C){p(C.type,Ql(C),C.target,h(C,e.lockRef.current))},[]);w.useEffect(function(){return yi.push(d),e.setCallbacks({onScrollCapture:x,onWheelCapture:x,onTouchMoveCapture:b}),document.addEventListener("wheel",g,gi),document.addEventListener("touchmove",g,gi),document.addEventListener("touchstart",y,gi),function(){yi=yi.filter(function(C){return C!==d}),document.removeEventListener("wheel",g,gi),document.removeEventListener("touchmove",g,gi),document.removeEventListener("touchstart",y,gi)}},[]);var j=e.removeScrollBar,N=e.inert;return w.createElement(w.Fragment,null,N?w.createElement(d,{styles:f9(c)}):null,j?w.createElement(n9,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function p9(e){for(var a=null;e!==null;)e instanceof ShadowRoot&&(a=e.host,e=e.host),e=e.parentNode;return a}const g9=G6(_j,m9);var $j=w.forwardRef(function(e,a){return w.createElement(rd,Pa({},e,{ref:a,sideCar:g9}))});$j.classNames=rd.classNames;var y9=[" ","Enter","ArrowUp","ArrowDown"],x9=[" ","Enter"],Ar="Select",[id,od,v9]=yC(Ar),[Bi]=gs(Ar,[v9,Qc]),sd=Qc(),[b9,Kn]=Bi(Ar),[w9,C9]=Bi(Ar),Kj=e=>{const{__scopeSelect:a,children:i,open:s,defaultOpen:c,onOpenChange:d,value:f,defaultValue:h,onValueChange:g,dir:p,name:y,autoComplete:x,disabled:b,required:j,form:N}=e,C=sd(a),[A,E]=w.useState(null),[R,k]=w.useState(null),[O,P]=w.useState(!1),G=w6(p),[I,H]=Fh({prop:s,defaultProp:c??!1,onChange:d,caller:Ar}),[X,ae]=Fh({prop:f,defaultProp:h,onChange:g,caller:Ar}),fe=w.useRef(null),ie=A?N||!!A.closest("form"):!0,[xe,te]=w.useState(new Set),se=Array.from(xe).map(V=>V.props.value).join(";");return r.jsx(ID,{...C,children:r.jsxs(b9,{required:j,scope:a,trigger:A,onTriggerChange:E,valueNode:R,onValueNodeChange:k,valueNodeHasChildren:O,onValueNodeHasChildrenChange:P,contentId:zm(),value:X,onValueChange:ae,open:I,onOpenChange:H,dir:G,triggerPointerDownPosRef:fe,disabled:b,children:[r.jsx(id.Provider,{scope:a,children:r.jsx(w9,{scope:e.__scopeSelect,onNativeOptionAdd:w.useCallback(V=>{te(B=>new Set(B).add(V))},[]),onNativeOptionRemove:w.useCallback(V=>{te(B=>{const W=new Set(B);return W.delete(V),W})},[]),children:i})}),ie?r.jsxs(vN,{"aria-hidden":!0,required:j,tabIndex:-1,name:y,autoComplete:x,value:X,onChange:V=>ae(V.target.value),disabled:b,form:N,children:[X===void 0?r.jsx("option",{value:""}):null,Array.from(xe)]},se):null]})})};Kj.displayName=Ar;var Zj="SelectTrigger",Xj=w.forwardRef((e,a)=>{const{__scopeSelect:i,disabled:s=!1,...c}=e,d=sd(i),f=Kn(Zj,i),h=f.disabled||s,g=et(a,f.onTriggerChange),p=od(i),y=w.useRef("touch"),[x,b,j]=wN(C=>{const A=p().filter(k=>!k.disabled),E=A.find(k=>k.value===f.value),R=CN(A,C,E);R!==void 0&&f.onValueChange(R.value)}),N=C=>{h||(f.onOpenChange(!0),j()),C&&(f.triggerPointerDownPosRef.current={x:Math.round(C.pageX),y:Math.round(C.pageY)})};return r.jsx(z1,{asChild:!0,...d,children:r.jsx(We.button,{type:"button",role:"combobox","aria-controls":f.contentId,"aria-expanded":f.open,"aria-required":f.required,"aria-autocomplete":"none",dir:f.dir,"data-state":f.open?"open":"closed",disabled:h,"data-disabled":h?"":void 0,"data-placeholder":bN(f.value)?"":void 0,...c,ref:g,onClick:Re(c.onClick,C=>
vendor: 17,135 bytes, line 57
57{C.currentTarget.focus(),y.current!=="mouse"&&N(C)}),onPointerDown:Re(c.onPointerDown,C=>{y.current=C.pointerType;const A=C.target;A.hasPointerCapture(C.pointerId)&&A.releasePointerCapture(C.pointerId),C.button===0&&C.ctrlKey===!1&&C.pointerType==="mouse"&&(N(C),C.preventDefault())}),onKeyDown:Re(c.onKeyDown,C=>{const A=x.current!=="";!(C.ctrlKey||C.altKey||C.metaKey)&&C.key.length===1&&b(C.key),!(A&&C.key===" ")&&y9.includes(C.key)&&(N(),C.preventDefault())})})})});Xj.displayName=Zj;var Qj="SelectValue",Jj=w.forwardRef((e,a)=>{const{__scopeSelect:i,className:s,style:c,children:d,placeholder:f="",...h}=e,g=Kn(Qj,i),{onValueNodeHasChildrenChange:p}=g,y=d!==void 0,x=et(a,g.onValueNodeChange);return bt(()=>{p(y)},[p,y]),r.jsx(We.span,{...h,ref:x,style:{pointerEvents:"none"},children:bN(g.value)?r.jsx(r.Fragment,{children:f}):d})});Jj.displayName=Qj;var S9="SelectIcon",eN=w.forwardRef((e,a)=>{const{__scopeSelect:i,children:s,...c}=e;return r.jsx(We.span,{"aria-hidden":!0,...c,ref:a,children:s||"▼"})});eN.displayName=S9;var j9="SelectPortal",tN=e=>r.jsx(_c,{asChild:!0,...e});tN.displayName=j9;var Tr="SelectContent",aN=w.forwardRef((e,a)=>{const i=Kn(Tr,e.__scopeSelect),[s,c]=w.useState();if(bt(()=>{c(new DocumentFragment)},[]),!i.open){const d=s;return d?Pi.createPortal(r.jsx(nN,{scope:e.__scopeSelect,children:r.jsx(id.Slot,{scope:e.__scopeSelect,children:r.jsx("div",{children:e.children})})}),d):null}return r.jsx(rN,{...e,ref:a})});aN.displayName=Tr;var ba=10,[nN,Zn]=Bi(Tr),N9="SelectContentImpl",A9=gc("SelectContent.RemoveScroll"),rN=w.forwardRef((e,a)=>{const{__scopeSelect:i,position:s="item-aligned",onCloseAutoFocus:c,onEscapeKeyDown:d,onPointerDownOutside:f,side:h,sideOffset:g,align:p,alignOffset:y,arrowPadding:x,collisionBoundary:b,collisionPadding:j,sticky:N,hideWhenDetached:C,avoidCollisions:A,...E}=e,R=Kn(Tr,i),[k,O]=w.useState(null),[P,G]=w.useState(null),I=et(a,oe=>O(oe)),[H,X]=w.useState(null),[ae,fe]=w.useState(null),ie=od(i),[xe,te]=w.useState(!1),se=w.useRef(!1);w.useEffect(()=>{if(k)return P6(k)},[k]),C6();const V=w.useCallback(oe=>{const[ge,...Ce]=ie().map(Ve=>Ve.ref.current),[Me]=Ce.slice(-1),ke=document.activeElement;for(const Ve of oe)if(Ve===ke||(Ve?.scrollIntoView({block:"nearest"}),Ve===ge&&P&&(P.scrollTop=0),Ve===Me&&P&&(P.scrollTop=P.scrollHeight),Ve?.focus(),document.activeElement!==ke))return},[ie,P]),B=w.useCallback(()=>V([H,k]),[V,H,k]);w.useEffect(()=>{xe&&B()},[xe,B]);const{onOpenChange:W,triggerPointerDownPosRef:Q}=R;w.useEffect(()=>{if(k){let oe={x:0,y:0};const ge=Me=>{oe={x:Math.abs(Math.round(Me.pageX)-(Q.current?.x??0)),y:Math.abs(Math.round(Me.pageY)-(Q.current?.y??0))}},Ce=Me=>{oe.x<=10&&oe.y<=10?Me.preventDefault():k.contains(Me.target)||W(!1),document.removeEventListener("pointermove",ge),Q.current=null};return Q.current!==null&&(document.addEventListener("pointermove",ge),document.addEventListener("pointerup",Ce,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ge),document.removeEventListener("pointerup",Ce,{capture:!0})}}},[k,W,Q]),w.useEffect(()=>{const oe=()=>W(!1);return window.addEventListener("blur",oe),window.addEventListener("resize",oe),()=>{window.removeEventListener("blur",oe),window.removeEventListener("resize",oe)}},[W]);const[T,U]=wN(oe=>{const ge=ie().filter(ke=>!ke.disabled),Ce=ge.find(ke=>ke.ref.current===document.activeElement),Me=CN(ge,oe,Ce);Me&&setTimeout(()=>Me.ref.current.focus())}),ee=w.useCallback((oe,ge,Ce)=>{const Me=!se.current&&!Ce;(R.value!==void 0&&R.value===ge||Me)&&(X(oe),Me&&(se.current=!0))},[R.value]),J=w.useCallback(()=>k?.focus(),[k]),re=w.useCallback((oe,ge,Ce)=>{const Me=!se.current&&!Ce;(R.value!==void 0&&R.value===ge||Me)&&fe(oe)},[R.value]),me=s==="popper"?xm:iN,ne=me===xm?{side:h,sideOffset:g,align:p,alignOffset:y,arrowPadding:x,collisionBoundary:b,collisionPadding:j,sticky:N,hideWhenDetached:C,avoidCollisions:A}:{};return r.jsx(nN,{scope:i,content:k,viewport:P,onViewportChange:G,itemRefCallback:ee,selectedItem:H,onItemLeave:J,itemTextRefCallback:re,focusSelectedItem:B,selectedItemText:ae,position:s,isPositioned:xe,searchRef:T,children:r.jsx($j,{as:A9,allowPinchZoom:!0,children:r.jsx(zj,{asChild:!0,trapped:R.open,onMountAutoFocus:oe=>{oe.preventDefault()},onUnmountAutoFocus:Re(c,oe=>{R.trigger?.focus({preventScroll:!0}),oe.preventDefault()}),children:r.jsx(Wc,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:oe=>oe.preventDefault(),onDismiss:()=>R.onOpenChange(!1),children:r.jsx(me,{role:"listbox",id:R.contentId,"data-state":R.open?"open":"closed",dir:R.dir,onContextMenu:oe=>oe.preventDefault(),...E,...ne,onPlaced:()=>te(!0),ref:I,style:{display:"flex",flexDirection:"column",outline:"none",...E.style},onKeyDown:Re(E.onKeyDown,oe=>{const ge=oe.ctrlKey||oe.altKey||oe.metaKey;if(oe.key==="Tab"&&oe.preventDefault(),!ge&&oe.key.length===1&&U(oe.key),["ArrowUp","ArrowDown","Home","End"].includes(oe.key)){let Me=ie().filter(ke=>!ke.disabled).map(ke=>ke.ref.current);if(["ArrowUp","End"].includes(oe.key)&&(Me=Me.slice().reverse()),["ArrowUp","ArrowDown"].includes(oe.key)){const ke=oe.target,Ve=Me.indexOf(ke);Me=Me.slice(Ve+1)}setTimeout(()=>V(Me)),oe.preventDefault()}})})})})})})});rN.displayName=N9;var T9="SelectItemAlignedPosition",iN=w.forwardRef((e,a)=>{const{__scopeSelect:i,onPlaced:s,...c}=e,d=Kn(Tr,i),f=Zn(Tr,i),[h,g]=w.useState(null),[p,y]=w.useState(null),x=et(a,I=>y(I)),b=od(i),j=w.useRef(!1),N=w.useRef(!0),{viewport:C,selectedItem:A,selectedItemText:E,focusSelectedItem:R}=f,k=w.useCallback(()=>{if(d.trigger&&d.valueNode&&h&&p&&C&&A&&E){const I=d.trigger.getBoundingClientRect(),H=p.getBoundingClientRect(),X=d.valueNode.getBoundingClientRect(),ae=E.getBoundingClientRect();if(d.dir!=="rtl"){const ke=ae.left-H.left,Ve=X.left-ke,rt=I.left-Ve,wt=I.width+rt,qi=Math.max(wt,H.width),Wi=window.innerWidth-ba,Lt=I0(Ve,[ba,Math.max(ba,Wi-qi)]);h.style.minWidth=wt+"px",h.style.left=Lt+"px"}else{const ke=H.right-ae.right,Ve=window.innerWidth-X.right-ke,rt=window.innerWidth-I.right-Ve,wt=I.width+rt,qi=Math.max(wt,H.width),Wi=window.innerWidth-ba,Lt=I0(Ve,[ba,Math.max(ba,Wi-qi)]);h.style.minWidth=wt+"px",h.style.right=Lt+"px"}const fe=b(),ie=window.innerHeight-ba*2,xe=C.scrollHeight,te=window.getComputedStyle(p),se=parseInt(te.borderTopWidth,10),V=parseInt(te.paddingTop,10),B=parseInt(te.borderBottomWidth,10),W=parseInt(te.paddingBottom,10),Q=se+V+xe+W+B,T=Math.min(A.offsetHeight*5,Q),U=window.getComputedStyle(C),ee=parseInt(U.paddingTop,10),J=parseInt(U.paddingBottom,10),re=I.top+I.height/2-ba,me=ie-re,ne=A.offsetHeight/2,oe=A.offsetTop+ne,ge=se+V+oe,Ce=Q-ge;if(ge<=re){const ke=fe.length>0&&A===fe[fe.length-1].ref.current;h.style.bottom="0px";const Ve=p.clientHeight-C.offsetTop-C.offsetHeight,rt=Math.max(me,ne+(ke?J:0)+Ve+B),wt=ge+rt;h.style.height=wt+"px"}else{const ke=fe.length>0&&A===fe[0].ref.current;h.style.top="0px";const rt=Math.max(re,se+C.offsetTop+(ke?ee:0)+ne)+Ce;h.style.height=rt+"px",C.scrollTop=ge-re+C.offsetTop}h.style.margin=`${ba}px 0`,h.style.minHeight=T+"px",h.style.maxHeight=ie+"px",s?.(),requestAnimationFrame(()=>j.current=!0)}},[b,d.trigger,d.valueNode,h,p,C,A,E,d.dir,s]);bt(()=>k(),[k]);const[O,P]=w.useState();bt(()=>{p&&P(window.getComputedStyle(p).zIndex)},[p]);const G=w.useCallback(I=>{I&&N.current===!0&&(k(),R?.(),N.current=!1)},[k,R]);return r.jsx(R9,{scope:i,contentWrapper:h,shouldExpandOnScrollRef:j,onScrollButtonChange:G,children:r.jsx("div",{ref:g,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:O},children:r.jsx(We.div,{...c,ref:x,style:{boxSizing:"border-box",maxHeight:"100%",...c.style}})})})});iN.displayName=T9;var E9="SelectPopperPosition",xm=w.forwardRef((e,a)=>{const{__scopeSelect:i,align:s="start",collisionPadding:c=ba,...d}=e,f=sd(i);return r.jsx(H1,{...f,...d,ref:a,align:s,collisionPadding:c,style:{boxSizing:"border-box",...d.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});xm.displayName=E9;var[R9,Ap]=Bi(Tr,{}),vm="SelectViewport",oN=w.forwardRef((e,a)=>{const{__scopeSelect:i,nonce:s,...c}=e,d=Zn(vm,i),f=Ap(vm,i),h=et(a,d.onViewportChange),g=w.useRef(0);return r.jsxs(r.Fragment,{children:[r.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),r.jsx(id.Slot,{scope:i,children:r.jsx(We.div,{"data-radix-select-viewport":"",role:"presentation",...c,ref:h,style:{position:"relative",flex:1,overflow:"hidden auto",...c.style},onScroll:Re(c.onScroll,p=>{const y=p.currentTarget,{contentWrapper:x,shouldExpandOnScrollRef:b}=f;if(b?.current&&x){const j=Math.abs(g.current-y.scrollTop);if(j>0){const N=window.innerHeight-ba*2,C=parseFloat(x.style.minHeight),A=parseFloat(x.style.height),E=Math.max(C,A);if(E<N){const R=E+j,k=Math.min(N,R),O=R-k;x.style.height=k+"px",x.style.bottom==="0px"&&(y.scrollTop=O>0?O:0,x.style.justifyContent="flex-end")}}}g.current=y.scrollTop})})})]})});oN.displayName=vm;var sN="SelectGroup",[k9,D9]=Bi(sN),M9=w.forwardRef((e,a)=>{const{__scopeSelect:i,...s}=e,c=zm();return r.jsx(k9,{scope:i,id:c,children:r.jsx(We.div,{role:"group","aria-labelledby":c,...s,ref:a})})});M9.displayName=sN;var lN="SelectLabel",cN=w.forwardRef((e,a)=>{const{__scopeSelect:i,...s}=e,c=D9(lN,i);return r.jsx(We.div,{id:c.id,...s,ref:a})});cN.displayName=lN;var Vc="SelectItem",[O9,dN]=Bi(Vc),uN=w.forwardRef((e,a)=>{const{__scopeSelect:i,value:s,disabled:c=!1,textValue:d,...f}=e,h=Kn(Vc,i),g=Zn(Vc,i),p=h.value===s,[y,x]=w.useState(d??""),[b,j]=w.useState(!1),N=et(a,R=>g.itemRefCallback?.(R,s,c)),C=zm(),A=w.useRef("touch"),E=()=>{c||(h.onValueChange(s),h.onOpenChange(!1))};if(s==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return r.jsx(O9,{scope:i,value:s,disabled:c,textId:C,isSelected:p,onItemTextChange:w.useCallback(R=>{x(k=>k||(R?.textContent??"").trim())},[]),children:r.jsx(id.ItemSlot,{scope:i,value:s,disabled:c,textValue:y,children:r.jsx(We.div,{role:"option","aria-labelledby":C,"data-highlighted":b?"":void 0,"aria-selected":p&&b,"data-state":p?"checked":"unchecked","aria-disabled":c||void 0,"data-disabled":c?"":void 0,tabIndex:c?void 0:-1,...f,ref:N,onFocus:Re(f.onFocus,()=>j(!0)),onBlur:Re(f.onBlur,()=>j(!1)),onClick:Re(f.onClick,()=>{A.current!=="mouse"&&E()}),onPointerUp:Re(f.onPointerUp,()=>{A.current==="mouse"&&E()}),onPointerDown:Re(f.onPointerDown,R=>{A.current=R.pointerType}),onPointerMove:Re(f.onPointerMove,R=>{A.current=R.pointerType,c?g.onItemLeave?.():A.current==="mouse"&&R.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Re(f.onPointerLeave,R=>{R.currentTarget===document.activeElement&&g.onItemLeave?.()}),onKeyDown:Re(f.onKeyDown,R=>{g.searchRef?.current!==""&&R.key===" "||(x9.includes(R.key)&&E(),R.key===" "&&R.preventDefault())})})})})});uN.displayName=Vc;var Zo="SelectItemText",fN=w.forwardRef((e,a)=>{const{__scopeSelect:i,className:s,style:c,...d}=e,f=Kn(Zo,i),h=Zn(Zo,i),g=dN(Zo,i),p=C9(Zo,i),[y,x]=w.useState(null),b=et(a,E=>x(E),g.onItemTextChange,E=>h.itemTextRefCallback?.(E,g.value,g.disabled)),j=y?.textContent,N=w.useMemo(()=>r.jsx("option",{value:g.value,disabled:g.disabled,children:j},g.value),[g.disabled,g.value,j]),{onNativeOptionAdd:C,onNativeOptionRemove:A}=p;return bt(()=>(C(N),()=>A(N)),[C,A,N]),r.jsxs(r.Fragment,{children:[r.jsx(We.span,{id:g.textId,...d,ref:b}),g.isSelected&&f.valueNode&&!f.valueNodeHasChildren?Pi.createPortal(d.children,f.valueNode):null]})});fN.displayName=Zo;var hN="SelectItemIndicator",mN=w.forwardRef((e,a)=>{const{__scopeSelect:i,...s}=e;return dN(hN,i).isSelected?r.jsx(We.span,{"aria-hidden":!0,...s,ref:a}):null});mN.displayName=hN;var bm="SelectScrollUpButton",pN=w.forwardRef((e,a)=>{const i=Zn(bm,e.__scopeSelect),s=Ap(bm,e.__scopeSelect),[c,d]=w.useState(!1),f=et(a,s.onScrollButtonChange);return bt(()=>{if(i.viewport&&i.isPositioned){let h=function(){const p=g.scrollTop>0;d(p)};const g=i.viewport;return h(),g.addEventListener("scroll",h),()=>g.removeEventListener("scroll",h)}},[i.viewport,i.isPositioned]),c?r.jsx(yN,{...e,ref:f,onAutoScroll:()=>{const{viewport:h,selectedItem:g}=i;h&&g&&(h.scrollTop=h.scrollTop-g.offsetHeight)}}):null});pN.displayName=bm;var wm="SelectScrollDownButton",gN=w.forwardRef((e,a)=>{const i=Zn(wm,e.__scopeSelect),s=Ap(wm,e.__scopeSelect),[c,d]=w.useState(!1),f=et(a,s.onScrollButtonChange);return bt(()=>{if(i.viewport&&i.isPositioned){let h=function(){const p=g.scrollHeight-g.clientHeight,y=Math.ceil(g.scrollTop)<p;d(y)};const g=i.viewport;return h(),g.addEventListener("scroll",h),()=>g.removeEventListener("scroll",h)}},[i.viewport,i.isPositioned]),c?r.jsx(yN,{...e,ref:f,onAutoScroll:()=>{const{viewport:h,selectedItem:g}=i;h&&g&&(h.scrollTop=h.scrollTop+g.offsetHeight)}}):null});gN.displayName=wm;var yN=w.forwardRef((e,a)=>{const{__scopeSelect:i,onAutoScroll:s,...c}=e,d=Zn("SelectScrollButton",i),f=w.useRef(null),h=od(i),g=w.useCallback(()=>{f.current!==null&&(window.clearInterval(f.current),f.current=null)},[]);return w.useEffect(()=>()=>g(),[g]),bt(()=>{h().find(y=>y.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[h]),r.jsx(We.div,{"aria-hidden":!0,...c,ref:a,style:{flexShrink:0,...c.style},onPointerDown:Re(c.onPointerDown,()=>{f.current===null&&(f.current=window.setInterval(s,50))}),onPointerMove:Re(c.onPointerMove,()=>{d.onItemLeave?.(),f.current===null&&(f.current=window.setInterval(s,50))}),onPointerLeave:Re(c.onPointerLeave,()=>{g()})})}),P9="SelectSeparator",xN=w.forwardRef((e,a)=>{const{__scopeSelect:i,...s}=e;return r.jsx(We.div,{"aria-hidden":!0,...s,ref:a})});xN.displayName=P9;var Cm="SelectArrow",V9=w.forwardRef((e,a)=>{const{__scopeSelect:i,...s}=e,c=sd(i),d=Kn(Cm,i),f=Zn(Cm,i);return d.open&&f.position==="popper"?r.jsx(B1,{...c,...s,ref:a}):null});V9.displayName=Cm;var L9="SelectBubbleInput",vN=w.forwardRef(({__scopeSelect:e,value:a,...i},s)=>{const c=w.useRef(null),d=et(s,c),f=k6(a);return w.useEffect(()=>{const h=c.current;if(!h)return;const g=window.HTMLSelectElement.prototype,y=Object.getOwnPropertyDescriptor(g,"value").set;if(f!==a&&y){const x=new Event("change",{bubbles:!0});y.call(h,a),h.dispatchEvent(x)}},[f,a]),r.jsx(We.select,{...i,style:{...CC,...i.style},ref:d,defaultValue:a})});vN.displayName=L9;function bN(e){return e===""||e===void 0}function wN(e){const a=Na(e),i=w.useRef(""),s=w.useRef(0),c=w.useCallback(f=>{const h=i.current+f;a(h),(function g(p){i.current=p,window.clearTimeout(s.current),p!==""&&(s.current=window.setTimeout(()=>g(""),1e3))})(h)},[a]),d=w.useCallback(()=>{i.current="",window.clearTimeout(s.current)},[]);return w.useEffect(()=>()=>window.clearTimeout(s.current),[]),[i,c,d]}function CN(e,a,i){const c=a.length>1&&Array.from(a).every(p=>p===a[0])?a[0]:a,d=i?e.indexOf(i):-1;let f=F9(e,Math.max(d,0));c.length===1&&(f=f.filter(p=>p!==i));const g=f.find(p=>p.textValue.toLowerCase().startsWith(c.toLowerCase()));return g!==i?g:void 0}function F9(e,a){return e.map((i,s)=>e[(a+s)%e.length])}var z9=Kj,SN=Xj,H9=Jj,B9=eN,q9=tN,jN=aN,W9=oN,NN=cN,AN=uN,_9=fN,G9=mN,TN=pN,EN=gN,RN=xN;const U9=z9,I9=H9,kN=w.forwardRef(({className:e,children:a,...i},s)=>r.jsxs(SN,{ref:s,className:$e("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...i,children:[a,r.jsx(B9,{asChild:!0,children:r.jsx(ss,{className:"h-4 w-4 opacity-50"})})]}));kN.displayName=SN.displayName;const DN=w.forwardRef(({className:e,...a},i)=>r.jsx(TN,{ref:i,className:$e("flex cursor-default items-center justify-center py-1",e),...a,children:r.jsx(YC,{className:"h-4 w-4"})}));DN.displayName=TN.displayName;const MN=w.forwardRef(({className:e,...a},i)=>r.jsx(EN,{ref:i,className:$e("flex cursor-default items-center justify-center py-1",e),...a,children:r.jsx(ss,{className:"h-4 w-4"})}));MN.displayName=EN.displayName;const ON=w.forwardRef(({className:e,children:a,position:i="popper",...s},c)=>r.jsx(q9,{children:r.jsxs(jN,{ref:c,className:$e("relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:sli
57de-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",i==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:i,...s,children:[r.jsx(DN,{}),r.jsx(W9,{className:$e("p-1",i==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:a}),r.jsx(MN,{})]})}));ON.displayName=jN.displayName;const Y9=w.forwardRef(({className:e,...a},i)=>r.jsx(NN,{ref:i,className:$e("px-2 py-1.5 text-sm font-semibold",e),...a}));Y9.displayName=NN.displayName;const Xo=w.forwardRef(({className:e,children:a,...i},s)=>r.jsxs(AN,{ref:s,className:$e("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...i,children:[r.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:r.jsx(G9,{children:r.jsx(_R,{className:"h-4 w-4"})})}),r.jsx(_9,{children:a})]}));Xo.displayName=AN.displayName;const $9=w.forwardRef(({className:e,...a},i)=>r.jsx(RN,{ref:i,className:$e("-mx-1 my-1 h-px bg-muted",e),...a}));$9.displayName=RN.displayName;function K9({id:e,value:a,onChange:i,required:s}){const[c,d]=w.useState([]),[f,h]=w.useState(!1),[g,p]=w.useState(!1),[y,x]=w.useState(-1),b=w.useRef(null),j=w.useRef(null),N=`${e}-suggestions`;w.useEffect(()=>{const E=a.trim();if(E.length<3){d([]),h(!1);return}return b.current&&clearTimeout(b.current),b.current=setTimeout(async()=>{p(!0);try{const R=new URLSearchParams({q:E,format:"json",countrycodes:"us",limit:"6",addressdetails:"0",viewbox:"-122.8,37.8,-120.5,40.2",bounded:"0"}),O=await(await fetch(`https://nominatim.openstreetmap.org/search?${R.toString()}`,{headers:{"Accept-Language":"en-US"}})).json();d(O),h(O.length>0),x(-1)}catch{d([]),h(!1)}finally{p(!1)}},350),()=>{b.current&&clearTimeout(b.current)}},[a]),w.useEffect(()=>{const E=R=>{j.current&&!j.current.contains(R.target)&&h(!1)};return document.addEventListener("mousedown",E),()=>document.removeEventListener("mousedown",E)},[]);const C=E=>{i(E.display_name),d([]),h(!1),x(-1)},A=E=>{if(f)if(E.key==="ArrowDown")E.preventDefault(),x(R=>Math.min(R+1,c.length-1));else if(E.key==="ArrowUp")E.preventDefault(),x(R=>Math.max(R-1,-1));else if(E.key==="Enter"&&y>=0){E.preventDefault();const R=c[y];R&&C(R)}else E.key==="Escape"&&(h(!1),x(-1))};return r.jsxs("div",{ref:j,className:"relative",children:[r.jsx(rs,{id:e,type:"text",autoComplete:"off",required:s,"aria-required":s,"aria-autocomplete":"list","aria-controls":f?N:void 0,"aria-activedescendant":y>=0?`${N}-${y}`:void 0,"aria-expanded":f,role:"combobox",placeholder:"123 Main St, Vacaville, CA",className:"rounded-none bg-white pr-9",value:a,onChange:E=>i(E.target.value),onKeyDown:A,onFocus:()=>c.length>0&&h(!0)}),r.jsx("div",{className:"absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none",children:g?r.jsxs("svg",{className:"animate-spin h-4 w-4 text-gray-400",viewBox:"0 0 24 24",fill:"none",children:[r.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),r.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"})]}):r.jsx(At,{size:15,className:"text-gray-400"})}),f&&c.length>0&&r.jsx("ul",{id:N,role:"listbox","aria-label":"Address suggestions",className:"absolute z-50 w-full bg-white border border-gray-200 shadow-lg mt-0.5 max-h-56 overflow-y-auto",children:c.map((E,R)=>r.jsxs("li",{id:`${N}-${R}`,role:"option","aria-selected":R===y,onMouseDown:k=>{k.preventDefault(),C(E)},className:`px-3 py-2.5 text-sm cursor-pointer flex items-start gap-2 border-b border-gray-100 last:border-0 ${R===y?"bg-sky-50 text-primary":"hover:bg-gray-50"}`,children:[r.jsx(At,{size:13,className:"text-secondary shrink-0 mt-0.5","aria-hidden":"true"}),r.jsx("span",{className:"leading-snug",children:E.display_name})]},E.place_id))})]})}const Jl="/logo-color.png",Yo=[{src:"/gaf-grand-sequoia-shingle-roof-replacement-solano-county-ca.jpg",alt:"GAF Grand Sequoia shingle roof replacement by Northern California Roofing Co. in Solano County CA"},{src:"/gaf-charcoal-composition-shingles-roof-replacement-solano-county-ca.jpg",alt:"GAF charcoal composition shingle roof replacement by Northern California Roofing Co. in Solano County CA"},{src:"/tpo-membrane-flat-roof-installation-yolo-county-ca.jpg",alt:"TPO membrane flat roof installation by Northern California Roofing Co. in Yolo County CA"},{src:"/pvc-duro-last-membrane-commercial-roofing-solano-county-ca.jpg",alt:"PVC Duro-Last membrane commercial roofing installation by Northern California Roofing Co. in Solano County CA"},{src:"/metal-reroof-commercial-roofing-yolo-county-ca.jpg",alt:"Commercial metal reroof completed by Northern California Roofing Co. in Yolo County CA"}];function Z9(){const[e,a]=w.useState(!1),[i,s]=w.useState(!1),[c,d]=w.useState(!1),[f,h]=w.useState(0),[g,p]=w.useState(!1),[y,x]=w.useState(null),b=w.useRef(null),{toast:j}=pC(),[N,C]=w.useState(""),[A,E]=w.useState(""),[R,k]=w.useState(""),[O,P]=w.useState(""),[G,I]=w.useState(""),[H,X]=w.useState(""),[ae,fe]=w.useState(!1),[ie,xe]=w.useState(!1);w.useEffect(()=>{const B=()=>{const W=b.current?.offsetHeight??500;a(window.scrollY>W-80)};return window.addEventListener("scroll",B,{passive:!0}),()=>window.removeEventListener("scroll",B)},[]),w.useEffect(()=>{if(g)return;const B=setInterval(()=>{h(W=>(W+1)%Yo.length)},5e3);return()=>clearInterval(B)},[g]);const te=async B=>{if(B.preventDefault(),!!c){fe(!0);try{const W=await fetch("/api/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:N,phone:A,email:R,service:O,address:G,message:H})}),Q=await W.json();if(!W.ok||!Q.success)throw new Error(Q.error??"Submission failed");xe(!0),C(""),E(""),k(""),P(""),I(""),X(""),d(!1),j({title:"Request Received!",description:"Thank y
57ou! We'll contact you shortly with your free estimate."})}catch(W){const Q=W instanceof Error?W.message:"Please try again or call us directly.";j({title:"Something went wrong",description:Q,variant:"destructive"})}finally{fe(!1)}}},se={hidden:{opacity:0,y:30},visible:{opacity:1,y:0,transition:{duration:.6}}},V={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.1}}};return r.jsxs("div",{className:"flex flex-col min-h-[100dvh]",children:[r.jsx("a",{href:"#main-content",className:"skip-link",children:"Skip to main content"}),r.jsx(mm,{children:e&&r.jsxs(ua.div,{initial:{y:-80,opacity:0},animate:{y:0,opacity:1},exit:{y:-80,opacity:0},transition:{duration:.25},className:"fixed top-0 left-0 right-0 z-[60] shadow-lg",children:[r.jsxs("div",{className:"bg-primary text-white text-xs py-1.5 px-4 md:px-8 flex justify-between items-center",children:[r.jsxs("div",{className:"flex items-center gap-1",children:[r.jsx("a",{href:"https://www.facebook.com/NorthernCaliforniaRoofingCompany/","aria-label":"Follow us on Facebook",rel:"noopener noreferrer",target:"_blank",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(zf,{size:13,"aria-hidden":"true"})}),r.jsx("a",{href:"https://www.instagram.com/northerncaliforniaroofing/","aria-label":"Follow us on Instagram",rel:"noopener noreferrer",target:"_blank",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(Hf,{size:13,"aria-hidden":"true"})}),r.jsx("a",{href:"https://www.yelp.com/biz/northern-california-roofing-vacaville-6?osq=Northern+California+Roofing","aria-label":"Read our reviews on Yelp",rel:"noopener noreferrer",target:"_blank",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(Bn,{size:13,"aria-hidden":"true"})}),r.jsx("a",{href:"mailto:[email protected]","aria-label":"Email Northern California Roofing Co.",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(rc,{size:13,"aria-hidden":"true"})})]}),r.jsxs("div",{className:"hidden md:flex gap-4 font-semibold tracking-wider",children:[r.jsx("a",{href:"tel:7074475655",className:"hover:text-secondary transition-colors",children:"SOLANO 707-447-5655"}),r.jsx("span",{"aria-hidden":"true",children:"|"}),r.jsx("a",{href:"tel:9169789392",className:"hover:text-secondary transition-colors",children:"YOLO/SACRAMENTO 916-978-9392"}),r.jsx("span",{"aria-hidden":"true",children:"|"}),r.jsx("a",{href:"tel:7074475655",className:"hover:text-secondary transition-colors",children:"BAY AREA 707-447-5655"})]})]}),r.jsxs("div",{className:"bg-white py-2 flex justify-between items-center",children:[r.jsx(Z,{href:"/",className:"flex items-center","aria-label":"Northern California Roofing Co. — Home",children:r.jsx("img",{src:Jl,alt:"Northern California Roofing Co.",className:"h-16"})}),r.jsxs("nav",{"aria-label":"Secondary navigation",className:"hidden lg:flex flex-1 justify-end items-center gap-6 font-bold text-[13px] text-primary tracking-wide pr-6",children:[r.jsx(Z,{href:"/","aria-current":"page",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"HOME"}),r.jsx("a",{href:"#about",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"ABOUT US"}),r.jsxs("div",{className:"group relative",children:[r.jsxs("button",{"aria-haspopup":"true",className:"flex items-center gap-1 hover:text-secondary transition-colors font-bold text-[13px] tracking-wide bg-transparent border-0 cursor-pointer whitespace-nowrap",children:["SERVICES ",r.jsx(ss,{size:12,"aria-hidden":"true"})]}),r.jsxs("div",{role:"menu",className:"absolute top-full left-0 bg-white shadow-lg border border-gray-100 min-w-[180px] opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 invisible group-hover:visible group-focus-within:visible transition-all duration-200 z-50",children:[r.jsx("a",{href:"#services",role:"menuitem",className:"block px-4 py-2.5 text-xs hover:bg-gray-50 hover:text-secondary focus:bg-gray-50 focus:text-secondary",children:"Residential Roofing"}),r.jsx("a",{href:"#services",role:"menuitem",className:"block px-4 py-2.5 text-xs hover:bg-gray-50 hover:text-secondary focus:bg-gray-50 focus:text-secondary",children:"Commercial Roofing"}),r.jsx("a",{href:"#services",role:"menuitem",className:"block px-4 py-2.5 text-xs hover:bg-gray-50 hover:text-secondary focus:bg-gray-50 focus:text-secondary",children:"Roof Repair"})]})]}),r.jsx("a",{href:"#service-areas",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"SERVICE AREAS"}),r.jsx("a",{href:"#reviews",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"REVIEWS"}),r.jsx("a",{href:"#financing",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"FINANCING"}),r.jsx("a",{href:"#contact",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"CONTACT"}),r.jsx("a",{href:"#contact",children:r.jsx(zn,{className:"bg-secondary hover:bg-primary text-white rounded-none font-bold px-4 text-xs ml-1 whitespace-nowrap",children:"ONLINE FORM FILL"})})]}),r.jsx("button",{className:"lg:hidden text-primary pr-4",onClick:()=>s(!i),"aria-expanded":i,"aria-controls":"sticky-mobile-menu","aria-label":i?"Close navigation menu":"Open navigation menu",children:i?r.jsx(Wn,{size:24,"aria-hidden":"true"}):r.jsx(xc,{size:24,"aria-hidden":"true"})})]}),i&&r.jsxs("div",{id:"sticky-mobile-menu",role:"navigation","aria-label":"Mobile navigation",className:"lg:hidden bg-white border-t border-gray-100 shadow-xl flex flex-col",children:[r.jsx(Z,{href:"/",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"HOME"}),r.jsx("a",{href:"#about",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"ABOUT US"}),r.jsx("a",{href:"#services",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"SERVICES"}),r.jsx("a",{href:"#service-areas",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"SERVICE AREAS"}),r.jsx("a",{href:"#reviews",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"REVIEWS"}),r.jsx("a",{href:"#financing",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"FINANCING"}),r.jsx(Z,{href:"/blog",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"BLOG"}),r.jsx(Z,{href:"/awards",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"AWARDS"}),r.jsx("a",{href:"#contact",className:"px-6 py-3 border-b border-gray-100 font-bold text-primary text-sm",onClick:()=>s(!1),children:"CONTACT"})]})]})}),r.jsxs("main",{id:"main-content",children:[r.jsxs("div",{ref:b,className:"relative w-full min-h-screen flex flex-col overflow-hidden",children:[r.jsxs("div",{className:"absolute inset-0 z-0",role:"img","aria-label":"Hero image slideshow",children:[r.jsx(mm,{mode:"sync",children:Yo.map((B,W)=>W===f?r.jsx(ua.img,{src:B.src,alt:B.alt,className:"absolute inset-0 w-full h-full object-cover",initial:{opacity:0,scale:1.04}
57,animate:{opacity:1,scale:1},exit:{opacity:0},transition:{duration:1.2,ease:"easeInOut"}},W):null)}),r.jsx("div",{className:"absolute inset-0 bg-[#0a2035]/60 z-10","aria-hidden":"true"})]}),r.jsx("button",{onClick:()=>p(B=>!B),"aria-label":g?"Play hero slideshow":"Pause hero slideshow",className:"absolute top-28 right-4 z-30 bg-black/40 hover:bg-black/60 text-white rounded-full p-2 transition-colors",children:g?r.jsx(jk,{size:14,"aria-hidden":"true"}):r.jsx(wk,{size:14,"aria-hidden":"true"})}),r.jsxs("div",{"aria-live":"polite","aria-atomic":"true",className:"sr-only",children:["Slide ",f+1," of ",Yo.length,": ",Yo[f].alt]}),r.jsxs("div",{className:"relative z-20 bg-primary/80 backdrop-blur-sm text-white text-xs py-2 px-4 md:px-8 flex flex-col md:flex-row justify-between items-center",children:[r.jsxs("div",{className:"flex items-center gap-1 mb-1 md:mb-0",children:[r.jsx("a",{href:"https://www.facebook.com/NorthernCaliforniaRoofingCompany/","aria-label":"Follow us on Facebook",rel:"noopener noreferrer",target:"_blank",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(zf,{size:14,"aria-hidden":"true"})}),r.jsx("a",{href:"https://www.instagram.com/northerncaliforniaroofing/","aria-label":"Follow us on Instagram",rel:"noopener noreferrer",target:"_blank",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(Hf,{size:14,"aria-hidden":"true"})}),r.jsx("a",{href:"https://www.yelp.com/biz/northern-california-roofing-vacaville-6?osq=Northern+California+Roofing","aria-label":"Read our reviews on Yelp",rel:"noopener noreferrer",target:"_blank",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(Bn,{size:14,"aria-hidden":"true"})}),r.jsx("a",{href:"mailto:[email protected]","aria-label":"Email Northern California Roofing Co.",className:"hover:text-secondary transition-colors p-1.5",children:r.jsx(rc,{size:14,"aria-hidden":"true"})})]}),r.jsxs("div",{className:"flex flex-wrap justify-center gap-2 md:gap-4 font-semibold tracking-wider",children:[r.jsx("a",{href:"tel:7074475655",className:"hover:text-secondary transition-colors",children:"SOLANO 707-447-5655"}),r.jsx("span",{className:"hidden md:inline","aria-hidden":"true",children:"|"}),r.jsx("a",{href:"tel:9169789392",className:"hover:text-secondary transition-colors",children:"YOLO/SACRAMENTO 916-978-9392"}),r.jsx("span",{className:"hidden md:inline","aria-hidden":"true",children:"|"}),r.jsx("a",{href:"tel:7074475655",className:"hover:text-secondary transition-colors",children:"BAY AREA 707-447-5655"})]})]}),r.jsxs("div",{className:"relative z-20 bg-white/95 backdrop-blur-sm border-b border-white/20",children:[r.jsxs("div",{className:"w-full py-3 flex justify-between items-center",children:[r.jsx(Z,{href:"/",className:"flex items-center",children:r.jsx("img",{src:Jl,alt:"Northern California Roofing Co.",className:"h-20 md:h-24"})}),r.jsxs("nav",{"aria-label":"Primary navigation",className:"hidden lg:flex flex-1 justify-end items-center gap-6 font-bold text-[13px] text-primary tracking-wide pr-6",children:[r.jsx(Z,{href:"/","aria-current":"page",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"HOME"}),r.jsx("a",{href:"#about",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"ABOUT US"}),r.jsxs("div",{className:"group relative",children:[r.jsxs("button",{"aria-haspopup":"true",className:"flex items-center gap-1 hover:text-secondary transition-colors font-bold text-[13px] tracking-wide bg-transparent border-0 cursor-pointer whitespace-nowrap",children:["SERVICES ",r.jsx(ss,{size:12,"aria-hidden":"true"})]}),r.jsxs("div",{role:"menu",className:"absolute top-full left-0 bg-white shadow-lg border border-gray-100 min-w-[200px] opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 invisible group-hover:visible group-focus-within:visible transition-all duration-200 z-50",children:[r.jsx("a",{href:"#services",role:"menuitem",className:"block px-4 py-3 text-xs hover:bg-gray-50 hover:text-secondary focus:bg-gray-50 focus:text-secondary",children:"Residential Roofing"}),r.jsx("a",{href:"#services",role:"menuitem",className:"block px-4 py-3 text-xs hover:bg-gray-50 hover:text-secondary focus:bg-gray-50 focus:text-secondary",children:"Commercial Roofing"}),r.jsx("a",{href:"#services",role:"menuitem",className:"block px-4 py-3 text-xs hover:bg-gray-50 hover:text-secondary focus:bg-gray-50 focus:text-secondary",children:"Roof Repair"})]})]}),r.jsx("a",{href:"#service-areas",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"SERVICE AREAS"}),r.jsx("a",{href:"#reviews",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"REVIEWS"}),r.jsx("a",{href:"#financing",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"FINANCING"}),r.jsx("a",{href:"#contact",className:"hover:text-secondary transition-colors whitespace-nowrap",children:"CONTACT"}),r.jsx("a",{href:"#contact",children:r.jsx(zn,{className:"bg-secondary hover:bg-primary text-white rounded-none font-bold px-4 text-xs ml-1 whitespace-nowrap",children:"ONLINE FORM FILL"})})]}),r.jsx("button",{className:"lg:hidden text-primary",onClick:()=>s(!i),"aria-expanded":i,"aria-controls":"hero-mobile-menu","aria-label":i?"Close navigation menu":"Open navigation menu",children:i?r.jsx(Wn,{size:28,"aria-hidden":"true"}):r.jsx(xc,{size:28,"aria-hidden":"true"})})]}),i&&r.jsxs("div",{id:"hero-mobile-menu",role:"navigation","aria-label":"Mobile navigation",className:"lg:hidden bg-white border-t border-gray-100 shadow-xl flex flex-col",children:[r.jsx(Z,{href:"/",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"HOME"}),r.jsx("a",{href:"#about",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"ABOUT US"}),r.jsx("a",{href:"#services",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"SERVICES"}),r.jsx("a",{href:"#service-areas",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"SERVICE AREAS"}),r.jsx("a",{href:"#reviews",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"REVIEWS"}),r.jsx("a",{href:"#financing",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"FINANCING"}),r.jsx(Z,{href:"/blog",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"BLOG"}),r.jsx(Z,{href:"/awards",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"AWARDS"}),r.jsx("a",{href:"#contact",className:"px-6 py-4 border-b border-gray-100 font-bold text-primary",onClick:()=>s(!1),children:"CONTACT"})]})]}),r.jsx("div",{className:"relative z-10 flex-1 flex items-center",children:r.jsx("div",{className:"container mx-auto px-4 md:px-8 py-24",children:r.jsxs(ua.div,{initial:"hidden",animate:"visible",variants:V,className:"max-w-3xl",children:[r.jsx(ua.div,{variants:se,className:"inline-block border border-white/40 px-4 py-2 mb-6",children:r.jsx("p",{className:"text-white font-bold tracking-widest text-sm uppercase",children:"Reliable Roofing for Homes and Businesses Since 1990"})}),r.jsxs(ua.div,{variants:se,className:"mb-8",children:[r.jsx("div",{className:"inline-block bg-white/90 backdrop-blur-sm rounded-2xl shadow-xl px-6 py-4 mb-6",children:r.jsx("img",{src:Jl,alt:"Northern California Roofing Co.",className:"h-28 md:h-36 object-contain"})}),r.jsx("h2",{className:"text-5xl md:text-7xl font-serif font-bold text-secondary leading-tight",children:"Trusted Roofing Experts"})]}),r.jsx(ua.div,{variants:se,children:r.jsx("a",{href:"#contact",children:r.jsx(zn,{size:"lg",className:"bg-secondary hover:bg-white hover:text-primary text-white rounded-none font-bold px-10 py-6 text-base h-auto tracking-widest border-2 border-secondary transition-all duration-300",children:"CONTACT US FOR A FREE ESTIMATE"})})})]})})}),r.jsx("div",{className:"relative z-20 flex justify-center gap-2.5 pb-7",role:"group","aria-label":"Slideshow controls",children:Yo.map((B,W)=>r.jsx("button",{onClick:()=>h(W),"aria-label":`Go to slide ${W+1}: ${B.alt}`,"aria-pressed":W===f,className:`transition-all duration-300 rounded-full ${W===f?"w-8 h-2.5 bg-secondary":"w-2.5 h-2.5 bg-white/50 hover:bg-white/80"}`},W))})]}),r.jsx("section",{className:"bg-white py-12 border-b-4 border-secondary",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-center mb-8 gap-6",children:[r.jsx("h2",{className:"text-3xl md:text-4xl font-serif text-primary font-bold text-center md:text-left",children:"Call Your Local Roofing Experts"}),r.jsx("a",{href:"#contact",children:r.jsx(zn,{size:"lg",className:"bg-primary hover:bg-secondary text-white rounded-none font-bold px-8 py-6 text-lg w-full md:w-auto h-auto",children:"FREE ROOFING ESTIMATE"})})]}),r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 text-center",children:[r.jsxs("div",{className:"bg-gray-50 p-6 flex flex-col items-center justify-center gap-3",children:[r.jsx(Ye,{className:"text-secondary",size:32}),r.jsx("h3",{className:"font-bold text-lg text-primary",children:"Solano County"}),r.jsx("a",{href:"tel:7074475655",className:"text-2xl font-serif text-secondary font-bold hover:underline",children:"707-447-5655"})]}),r.jsxs("div",{className:"bg-gray-50 p-6 flex flex-col items-center justify-center gap-3 border-x-0 md:border-x border-gray-200",children:[r.jsx(Ye,{className:"text-secondary",size:32}),r.jsx("h3",{className:"font-bold text-lg text-primary",children:"Yolo/Sacramento"}),r.jsx("a",{href:"tel:9169789392",className:"text-2xl font-serif text-secondary font-bold hover:underline",children:"916-978-9392"})]}),r.jsxs("div",{className:"bg-gray-50 p-6 flex flex-col items-center justify-center gap-3",children:[r.jsx(Ye,{className:"text-secondary",size:32}),r.jsx("h3",{className:"font-bold text-lg text-primary",children:"Bay Area"}),r.jsx("a",{href:"tel:7074475655",className:"text-2xl font-serif text-secondary font-bold hover:underline",children:"707-447-5655"})]})]})]})}),r.jsxs("section",{id:"about",className:"py-20 bg-gray-50",children:[r.jsx("div",{className:"container mx-auto px-4 md:px-8",children:r.jsxs("div",{className:"flex flex-col lg:flex-row gap-12 items-center",children:[r.jsxs(ua.div,{initial:{opacity:0,x:-50},whileInView:{opacity:1,x:0},viewport:{once:!0},transition:{duration:.6},className:"w-full lg:w-1/2 grid grid-cols-2 gap-3",children:[r.jsx("img",{src:"/northern-california-roofing-fleet-trucks-vacaville-ca.jpg",alt:"Northern California Roofing Co. fleet of roofing trucks at Vacaville CA headquarters",className:"col-span-2 w-full h-56 object-cover shadow-lg hover:scale-[1.02] transition-transform duration-300",loading:"lazy"}),r.jsxs("button",{onClick:()=>x({src:"/northern-california-roofing-duro-last-elite-contractor-awards.jpg",alt:"Northern California Roofing Co. Duro-Last Elite Contractor awards"}),className:"relative group cursor-zoom-in focus:outline-none focus-visible:ring-2 focus-visible:ring-secondary","aria-label":"View Duro-Last awards full size",children:[r.jsx("img",{src:"/northern-california-roofing-duro-last-elite-contractor-awards.jpg",alt:"Northern California Roofing Co. Duro-Last Elite Contractor awards",className:"w-full h-48 object-cover shadow-lg group-hover:scale-[1.02] transition-transform duration-300",loading:"lazy"}),r.jsx("div",{className:"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center",children:r.jsx("span",{className:"opacity-0 group-hover:opacity-100 bg-white/90 text-primary text-xs font-bold px-2 py-1 transition-opacity duration-200",children:"Click to enlarge"})})]}),r.jsxs("button",{onClick:()=>x({src:"/northern-california-roofing-vacaville-office-awards-since-1990.jpg",alt:"Northern California Roofing Co. Vacaville office reception and industry awards since 1990"}),className:"relative group cursor-zoom-in focus:outline-none focus-visible:ring-2 focus-visible:ring-secondary","aria-label":"View Vacaville office awards full size",children:[r.jsx("img",{src:"/northern-california-roofing-vacaville-office-awards-since-1990.jpg",alt:"Northern California Roofing Co. Vacaville office reception and industry awards since 1990",className:"w-full h-48 object-cover shadow-lg group-hover:scale-[1.02] transition-transform duration-300",loading:"lazy"}),r.jsx("div",{className:"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center",children:r.jsx("span",{className:"opacity-0 group-hover:opacity-100 bg-white/90 text-primary text-xs font-bold px-2 py-1 transition-opacity duration-200",children:"Click to enlarge"})})]})]}),r.jsxs(ua.div,{initial:{opacity:0,x:50},whileInView:{opacity:1,x:0},viewport:{once:!0},transition:{duration:.6},className:"w-full lg:w-1/2",children:[r.jsx("h4",{className:"text-secondary font-bold tracking-widest text-sm uppercase mb-2",children:"About Us"}),r.jsx("h2",{className:"text-4xl font-serif text-primary font-bold mb-6",children:"Why Choose Northern California Roofing Co?"}),r.jsx("p",{className:"text-gray-600 mb-8 leading-relaxed",children:"Since 1990, we have been providing top-tier roofing services to homeowners and businesses across Northern California. We treat every project like it's our own home, ensuring quality craftsmanship and lasting durability."}),r.jsx("ul",{className:"space-y-4",children:["Over 30 Years of Local Experience","Fully Licensed, Bonded, and Insured","Premium Materials from Trusted Manufacturers","Expert Installation by Certified Professionals","100% Customer Satisfaction Guarantee","Free, No-Obligation Estimates"].map((B,W)=>r.jsxs("li",{className:"flex items-start gap-3",children:[r.jsx("div",{className:"bg-secondary/10 p-1 mt-1 text-secondary",children:r.jsx(Bn,{size:16,fill:"currentColor"})}),r.jsx("span",{className:"font-bold text-primary",children:B})]},W))}),r.jsx("div",{className:"mt-10",children:r.jsx(Z,{href:"/awards",children:r.jsx(zn,{className:"bg-primary hover:bg-secondary text-white rounded-none font-bold px-8 py-6 h-auto",children:"LEARN MORE ABOUT US & OUR AWARDS"})})})]})]})}),r.jsxs("div",{id:"partner-logos",className:"mt-16 pt-12 border-t border-gray-200",children:[r.jsx("p",{className:"text-center text-xs font-bold tracking-widest text-gray-400 uppercase mb-8",children:"Preferred Applicator & Certified Installer"}),r.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-6 md:gap-10",children:[r.jsx("div",{className:"bg-white rounded-xl shadow-sm p-4 flex items-center justify-center",children:r.jsx("img",{src:"/logo-gaf-master-elite.png",alt:"GAF Master Elite Residential Roofing Contractor",className:"h-20 object-contain",loading:"lazy"})}),r.jsx("div",{className:"bg-white rounded-xl shadow-sm p-4 flex items-center justify-center",children:r.jsx("img",{src:"/logo-gaf-certified-commercial.png",alt:"GAF Certified Commercial Contractor",className:"h-16 object-contain",loading:"lazy"})}),r.jsx("div",{className:"bg-white rounded-xl shadow-sm p-5 flex items-center justify-center",children:r.jsx("img",{src:"/logo-malarkey.svg",alt:"Malarkey Roofing Products Preferred Applicator",className:"h-9 object-contain",loading:"lazy"})}),r.jsx("div",{className:"bg-white rounded-xl shadow-sm p-5 flex items-center justify-center",children:r.jsx("img",{src:"/logo-certainteed.svg",alt:"CertainTeed Certified Installer",className:"h-9 object-contain",loading:"lazy"})}),r.jsx("div",{className:"bg-white rounded-xl shadow-sm p-5 flex items-center justify-center",children:r.jsx("img",{src:"/logo-duro-last.svg",alt:"Duro-Last Elite Contractor",className:"h-8 object-contain",loading:"lazy"})})]})]})]}),r.jsx("section",{id:"services",className:"py-20 bg-primary text-white",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[r.jsx("h4",{className:"text-secondary font-bold tracking-widest text-sm uppercase mb-2",children:"What We Do"}),r.jsx("h2",{className:"text-4xl font-serif font-bold mb-6",children:"Our Roofing Services"}),r.jsx(
57"p",{className:"text-gray-300",children:"Comprehensive roofing solutions tailored to protect your most valuable assets against the Northern California weather."})]}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[{icon:ls,title:"Residential Roofing",desc:"Complete roof replacements and installations for your home."},{icon:Jt,title:"Commercial Roofing",desc:"Durable roofing systems designed for commercial properties."},{icon:ki,title:"Roof Repair",desc:"Fast, reliable repairs for leaks, storm damage, and wear."},{icon:Yc,title:"Roof Replacement",desc:"Upgrade your old roof with modern, long-lasting materials."},{icon:_n,title:"Gutter Services",desc:"Seamless gutter installation, cleaning, and maintenance."},{icon:Vm,title:"Solar Roofing",desc:"Energy-efficient solar integrations for modern roofs."},{icon:Jt,title:"Flat/Low Slope Roofing",desc:"Professional TPO and PVC membrane roofing systems for flat and low-slope roofs."},{icon:ls,title:"Tile Roofing",desc:"Elegant and durable tile roofing installations and repair."}].map((B,W)=>r.jsx(ua.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.4,delay:W*.1},children:r.jsx(jc,{className:"bg-white/5 border-white/10 rounded-none hover:bg-secondary/20 hover:border-secondary/50 transition-all duration-300 h-full",children:r.jsxs(Nc,{className:"p-8",children:[r.jsx(B.icon,{className:"text-secondary mb-6",size:40}),r.jsx("h3",{className:"text-xl font-bold font-serif mb-3",children:B.title}),r.jsx("p",{className:"text-gray-300 text-sm",children:B.desc})]})})},W))})]})}),r.jsx("section",{id:"service-areas",className:"py-20 bg-white",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-12",children:[r.jsx("h4",{className:"text-secondary font-bold tracking-widest text-sm uppercase mb-2",children:"Local Experts"}),r.jsx("h2",{className:"text-4xl font-serif text-primary font-bold mb-4",children:"Areas We Serve"}),r.jsx("p",{className:"text-gray-600 max-w-2xl mx-auto",children:"Proudly serving homeowners and businesses within 60 miles of Vacaville, CA — across the greater Bay Area, Sacramento Valley, and North Bay."})]}),r.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:[{county:"Solano County",cities:["Vacaville","Fairfield","Suisun City","Dixon","Vallejo","Benicia","Rio Vista"]},{county:"Yolo County",cities:["Davis","Woodland","West Sacramento","Winters","Esparto","Clarksburg"]},{county:"Sacramento County",cities:["Sacramento","Elk Grove","Rancho Cordova","Citrus Heights","Folsom","Galt"]},{county:"Contra Costa County",cities:["Concord","Walnut Creek","Martinez","Antioch","Pittsburg","Brentwood","Oakley","Pleasant Hill","Richmond"]},{county:"Alameda County",cities:["Oakland","Berkeley","Livermore","Pleasanton","Dublin","San Leandro","Hayward","Fremont"]},{county:"Napa County",cities:["Napa","American Canyon","Calistoga","St. Helena","Yountville"]},{county:"Sonoma County",cities:["Santa Rosa","Petaluma","Rohnert Park","Cotati","Windsor","Sebastopol"]},{county:"San Joaquin County",cities:["Stockton","Tracy","Lodi","Manteca","Lathrop","Ripon"]},{county:"Placer County",cities:["Roseville","Rocklin","Lincoln","Auburn","Granite Bay"]},{county:"Marin County",cities:["San Rafael","Novato","Mill Valley","Fairfax","San Anselmo"]},{county:"San Francisco County",cities:["San Francisco"]},{county:"San Mateo County",cities:["Daly City","South San Francisco","San Mateo","Burlingame","Redwood City"]}].map(({county:B,cities:W})=>r.jsxs("div",{className:"border border-gray-200 bg-gray-50 p-5",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-3 pb-2 border-b border-primary/20",children:[r.jsx(At,{size:15,className:"text-secondary shrink-0"}),r.jsx("h3",{className:"font-serif font-bold text-primary text-base",children:B})]}),r.jsx("ul",{className:"space-y-1",children:W.map(Q=>{const U={Vacaville:"vacaville",Fairfield:"fairfield",Sacramento:"sacramento",Davis:"davis",Napa:"napa",Vallejo:"vallejo",Woodland:"woodland",Concord:"concord","Elk Grove":"elk-grove",Folsom:"folsom",Roseville:"roseville",Benicia:"benicia",Dixon:"dixon","West Sacramento":"west-sacramento","Walnut Creek":"walnut-creek"}[Q];return r.jsxs("li",{className:"text-sm text-gray-700 flex items-center gap-1.5",children:[r.jsx("span",{className:"w-1 h-1 rounded-full bg-secondary shrink-0"}),U?r.jsx(Z,{href:`/roofing-${U}-ca`,className:"hover:text-secondary hover:underline transition-colors font-medium",children:Q}
57):Q]},Q)})})]},B))})]})}),r.jsx("section",{id:"reviews",className:"py-20 bg-gray-50",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-16",children:[r.jsx("h4",{className:"text-secondary font-bold tracking-widest text-sm uppercase mb-2",children:"Testimonials"}),r.jsx("h2",{className:"text-4xl font-serif text-primary font-bold",children:"What Our Customers Say"})]}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:[{name:"Robert M.",text:"Northern California Roofing did an outstanding job replacing my 25-year-old roof. The crew was professional, clean, and finished ahead of schedule. Highly recommended!"},{name:"Sarah T.",text:"We had a severe leak during the winter storms. They responded immediately, provided a fair quote, and the repair has held up perfectly. Genuine professionals."},{name:"David W.",text:"From the initial inspection to the final cleanup, the entire process was seamless. The new roof looks incredible and their financing options made it very affordable."}].map((B,W)=>r.jsx(jc,{className:"bg-white border-none shadow-lg rounded-none",children:r.jsxs(Nc,{className:"p-8",children:[r.jsx("div",{className:"flex gap-1 mb-6 text-secondary",role:"img","aria-label":"5 out of 5 stars",children:[1,2,3,4,5].map(Q=>r.jsx(Bn,{size:20,fill:"currentColor","aria-hidden":"true"},Q))}),r.jsxs("p",{className:"text-gray-600 mb-6 italic",children:['"',B.text,'"']}),r.jsxs("p",{className:"font-bold text-primary",children:["— ",B.name]})]})},W))})]})}),r.jsx("section",{id:"financing",className:"py-16 bg-secondary text-white text-center",children:r.jsxs("div",{className:"container mx-auto px-4",children:[r.jsx("h2",{className:"text-3xl md:text-4xl font-serif font-bold mb-6",children:"Flexible Financing Available"}),r.jsx("p",{className:"text-lg mb-8 max-w-2xl mx-auto",children:"A new roof is a major investment. We offer flexible financing options to help you protect your home without breaking the bank. Get the roof you need today."}),r.jsx("a",{href:"https://sanfranciscofcu.merchantlinq.com/customer?t=am9mY2FQUmFHdnowanNsbVpwZCoxR3lRTXRDUll4NVdsNmFDVEpicVlhaipTTjFhaEtOWXBMU0sxMlJXNkZsdnkqUzFOKjFJODF4bUw0SWVGcHhxVEJQYWxSZDZIMDkwd1JqWHFDdjB3SmpIVEluMmo5aHByU2JrRioxc1lvb29LeTF4Vk1iRUhEWFlQWFlIZjd0bFRHdUg5cVBobVkxbkREKjFRQUxpYWIqU29BWTlrOTF1MGVMRyoxa24qU2ltU01GKjFzMm1SZEcwZkJKenphdklFVE1OWml5Q3I2V3ZIczRtakE0SU5MZzFsZ1BxdDBGaUU9",target:"_blank",rel:"noopener noreferrer",children:r.jsx(zn,{className:"bg-white text-primary hover:bg-gray-100 rounded-none font-bold px-8 py-6 h-auto text-lg shadow-lg",children:"VIEW FINANCING OPTIONS"})})]})}),r.jsx("section",{id:"contact",className:"py-20 bg-white",children:r.jsx("div",{className:"container mx-auto px-4 md:px-8",children:r.jsxs("div",{className:"flex flex-col lg:flex-row gap-12 max-w-6xl mx-auto",children:[r.jsxs("div",{className:"w-full lg:w-1/3",children:[r.jsx("h2",{className:"text-3xl font-serif text-primary font-bold mb-6",children:"Get Your Free Estimate"}),r.jsx("p",{className:"text-gray-600 mb-8",children:"Contact us today to schedule your free, no-obligation roofing estimate. Our experts are ready to help."}),r.jsxs("div",{className:"space-y-6",children:[r.jsxs("div",{className:"flex items-start gap-4",children:[r.jsx("div",{className:"bg-primary/10 p-3 rounded-full text-primary",children:r.jsx(At,{size:24})}),r.jsxs("div",{children:[r.jsx("h4",{className:"font-bold text-primary mb-1",children:"Main Office"}),r.jsxs("p",{className:"text-gray-600 text-sm",children:["859 Cotting Court, Suite A",r.jsx("br",{}),"Vacaville, CA 95688"]})]})]}),r.jsxs("div",{className:"flex items-start gap-4",children:[r.jsx("div",{className:"bg-primary/10 p-3 rounded-full text-primary",children:r.jsx(Ye,{size:24})}),r.jsxs("div",{children:[r.jsx("h4",{className:"font-bold text-primary mb-1",children:"Call Us"}),r.jsxs("p",{className:"text-gray-600 text-sm",children:["Solano: ",r.jsx("a",{href:"tel:7074475655",className:"hover:text-secondary transition-colors",children:"707-447-5655"})]}),r.jsxs("p",{className:"text-gray-600 text-sm",children:["Yolo/Sacramento: ",r.jsx("a",{href:"tel:9169789392",className:"hover:text-secondary transition-colors",children:"916-978-9392"})]}),r.jsxs("p",{className:"text-gray-600 text-sm",children:["Bay Area: ",r.jsx("a",{href:"tel:7074475655",className:"hover:text-secondary transition-colors",children:"707-447-5655"})]})]})]}),r.jsxs("div",{className:"flex items-start gap-4",children:[r.jsx("div",{className:"bg-primary/10 p-3 rounded-full text-primary",children:r.jsx(rc,{size:24})}),r.jsxs("div",{children:[r.jsx("h4",{className:"font-bold text-primary mb-1",children:"Email Us"}),r.jsx("a",{href:"mailto:[email protected]",className:"text-gray-600 text-sm hover:text-secondary transition-colors",children:"[email protected]"})]})]})]})]}),r.jsx("div",{className:"w-full lg:w-2/3 bg-gray-50 p-8 border border-gray-200",children:r.jsxs("form",{onSubmit:te,className:"space-y-4",noValidate:!0,"aria-label":"Free estimate request form",children:[r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[r.jsxs("div",{children:[r.jsxs("label",{htmlFor:"field-name",className:"block text-sm font-bold text-primary mb-2",children:["First & Last Name ",r.jsx("span",{"aria-hidden":"true",children:"*"}),r.jsx("span",{className:"sr-only",children:"(required)"})]}),r.jsx(rs,{id:"field-name",required:!0,"aria-required":"true",autoComplete:"name",placeholder:"John Doe",className:"rounded-none bg-white",value:N,onChange:B=>C(B.target.value)})]}
57),r.jsxs("div",{children:[r.jsxs("label",{htmlFor:"field-phone",className:"block text-sm font-bold text-primary mb-2",children:["Phone Number ",r.jsx("span",{"aria-hidden":"true",children:"*"}),r.jsx("span",{className:"sr-only",children:"(required)"})]}),r.jsx(rs,{id:"field-phone",required:!0,"aria-required":"true",type:"tel",autoComplete:"tel",placeholder:"(555) 555-5555",className:"rounded-none bg-white",value:A,onChange:B=>E(B.target.value)})]})]}),r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[r.jsxs("div",{children:[r.jsxs("label",{htmlFor:"field-email",className:"block text-sm font-bold text-primary mb-2",children:["Email Address ",r.jsx("span",{className:"text-gray-400 font-normal text-xs",children:"(optional)"})]}),r.jsx(rs,{id:"field-email",type:"email",autoComplete:"email",placeholder:"[email protected]",className:"rounded-none bg-white",value:R,onChange:B=>k(B.target.value)})]}),r.jsxs("div",{children:[r.jsxs("label",{htmlFor:"field-service",className:"block text-sm font-bold text-primary mb-2",children:["Service Needed ",r.jsx("span",{"aria-hidden":"true",children:"*"}),r.jsx("span",{className:"sr-only",children:"(required)"})]}),r.jsxs(U9,{required:!0,value:O,onValueChange:P,children:[r.jsx(kN,{id:"field-service","aria-required":"true",className:"rounded-none bg-white",children:r.jsx(I9,{placeholder:"Select a Service"})}),r.jsxs(ON,{children:[r.jsx(Xo,{value:"replacement",children:"Roof Replacement"}),r.jsx(Xo,{value:"repair",children:"Roof Repair"}),r.jsx(Xo,{value:"commercial",children:"Commercial Roofing"}),r.jsx(Xo,{value:"inspection",children:"Roof Inspection"})]})]})]})]}),r.jsxs("div",{children:[r.jsxs("label",{htmlFor:"field-address",className:"block text-sm font-bold text-primary mb-2",children:["Property Address ",r.jsx("span",{"aria-hidden":"true",children:"*"}),r.jsx("span",{className:"sr-only",children:"(required)"})]}),r.jsx(K9,{id:"field-address",value:G,onChange:I,required:!0})]}),r.jsxs("div",{children:[r.jsx("label",{htmlFor:"field-message",className:"block text-sm font-bold text-primary mb-2",children:"Message Details"}),r.jsx(Fj,{id:"field-message",autoComplete:"off",placeholder:"Please describe your roofing needs...",className:"rounded-none bg-white min-h-[120px]",value:H,onChange:B=>X(B.target.value)})]}),r.jsxs("div",{className:"bg-blue-50 border border-blue-200 p-4 text-xs text-gray-600 leading-relaxed",children:[r.jsxs("p",{className:"font-bold text-[#113753] mb-2 flex items-center gap-2",children:[r.jsx(Jt,{size:14,className:"text-[#0693E3]"}),"California Privacy Notice (CIPA)"]}),r.jsxs("p",{children:["By submitting this form, you acknowledge that your communication may be recorded or intercepted pursuant to the California Invasion of Privacy Act (CIPA), Penal Code § 630 et seq. Your information will be used solely to respond to your inquiry and provide roofing services. See our"," ",r.jsx(Z,{href:"/privacy-policy",className:"text-[#0693E3] underline hover:text-[#113753]","data-testid":"link-privacy-form",children:"Privacy Policy"})," ","for full details."]})]}),r.jsxs("div",{className:"flex items-start gap-3",children:[r.jsx("input",{type:"checkbox",id:"consent-checkbox",checked:c,onChange:B=>d(B.target.checked),required:!0,"data-testid":"checkbox-form-consent",className:"mt-1 w-4 h-4 accent-[#0693E3] shrink-0 cursor-pointer"}),r.jsxs("label",{htmlFor:"consent-checkbox",className:"text-xs text-gray-600 cursor-pointer leading-relaxed",children:["I have read and agree to the"," ",r.jsx(Z,{href:"/privacy-policy",className:"text-[#0693E3] underline hover:text-[#113753]","data-testid":"link-consent-privacy",children:"Privacy Policy"})," ","and"," ",r.jsx(Z,{href:"/terms-of-use",className:"text-[#0693E3] underline hover:text-[#113753]","data-testid":"link-consent-terms",children:"Terms of Use"}),". I consent to the collection of my personal information and understand that my communication may be monitored or recorded. ",r.jsx("span",{className:"text-red-500",children:"*"})]})]}),ie&&r.jsx("div",{role:"status",className:"bg-green-50 border border-green-300 text-green-800 rounded p-4 text-sm font-medium text-center",children:"✓ Your request was sent! We'll be in touch shortly."}),r.jsx(zn,{type:"submit",disabled:!c||ae,className:"bg-primary hover:bg-secondary text-white rounded-none font-bold w-full py-6 h-auto mt-4 disabled:opacity-50 disabled:cursor-not-allowed","data-testid":"button-form-submit",children:ae?"SENDING…":"SUBMIT REQUEST"})]})})]})})})]}),r.jsx("footer",{className:"bg-primary text-white pt-16 pb-8 border-t-8 border-secondary mt-auto",role:"contentinfo",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-12 mb-12",children:[r.jsxs("div",{children:[r.jsx("div",{className:"inline-block bg-white rounded-xl px-4 py-2 mb-6 shadow-sm",children:r.jsx("img",{src:Jl,alt:"Northern California Roofing Co.",className:"h-14 object-contain"})}),r.jsx("p",{className:"text-gray-300 mb-6",children:"Reliable Roofing for Homes and Businesses Since 1990. Northern California's Trusted Roofing Experts."}),r.jsxs("div",{className:"flex gap-4",children:[r.jsx("a",{href:"https://www.facebook.com/NorthernCaliforniaRoofing
57Company/","aria-label":"Follow us on Facebook",rel:"noopener noreferrer",target:"_blank",className:"bg-white/10 p-2 hover:bg-secondary transition-colors rounded-full",children:r.jsx(zf,{size:18,"aria-hidden":"true"})}),r.jsx("a",{href:"https://www.instagram.com/northerncaliforniaroofing/","aria-label":"Follow us on Instagram",rel:"noopener noreferrer",target:"_blank",className:"bg-white/10 p-2 hover:bg-secondary transition-colors rounded-full",children:r.jsx(Hf,{size:18,"aria-hidden":"true"})}),r.jsx("a",{href:"https://www.yelp.com/biz/northern-california-roofing-vacaville-6?osq=Northern+California+Roofing","aria-label":"Read our reviews on Yelp",rel:"noopener noreferrer",target:"_blank",className:"bg-white/10 p-2 hover:bg-secondary transition-colors rounded-full",children:r.jsx(Bn,{size:18,"aria-hidden":"true"})})]})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-serif font-bold text-xl mb-6 border-b border-white/20 pb-2",children:"Quick Links"}),r.jsxs("ul",{className:"space-y-3",children:[r.jsx("li",{children:r.jsx("a",{href:"#",className:"text-gray-300 hover:text-secondary transition-colors",children:"Home"})}),r.jsx("li",{children:r.jsx("a",{href:"#about",className:"text-gray-300 hover:text-secondary transition-colors",children:"About Us"})}),r.jsx("li",{children:r.jsx("a",{href:"#services",className:"text-gray-300 hover:text-secondary transition-colors",children:"Services"})}),r.jsx("li",{children:r.jsx("a",{href:"#financing",className:"text-gray-300 hover:text-secondary transition-colors",children:"Financing"})}),r.jsx("li",{children:r.jsx("a",{href:"#contact",className:"text-gray-300 hover:text-secondary transition-colors",children:"Contact"})}),r.jsx("li",{children:r.jsx(Z,{href:"/blog",className:"text-gray-300 hover:text-secondary transition-colors",children:"Blog"})}),r.jsx("li",{children:r.jsx(Z,{href:"/awards",className:"text-gray-300 hover:text-secondary transition-colors",children:"Awards & Certifications"})})]})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-serif font-bold text-xl mb-6 border-b border-white/20 pb-2",children:"Service Areas"}),r.jsxs("ul",{className:"space-y-2 columns-2 text-sm",children:[r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Solano County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Yolo County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Sacramento County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Contra Costa County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Alameda County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Napa County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Sonoma County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"San Joaquin County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Placer County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"Marin County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"San Francisco County"})}),r.jsx("li",{children:r.jsx("span",{className:"text-gray-300",children:"San Mateo County"})})]}),r.jsx("a",{href:"#service-areas",className:"inline-block mt-4 text-secondary hover:text-white transition-colors underline text-sm",children:"View cities →"})]}),r.jsxs("div",{children:[r.jsx("h3",{className:"font-serif font-bold text-xl mb-6 border-b border-white/20 pb-2",children:"Contact Us"}),r.jsxs("ul",{className:"space-y-4",children:[r.jsxs("li",{className:"flex items-center gap-3",children:[r.jsx(Ye,{size:18,className:"text-secondary shrink-0","aria-hidden":"true"}),r.jsx("a",{href:"tel:7074475655",className:"text-gray-300 hover:text-secondary transition-colors",children:"Solano: 707-447-5655"})]}),r.jsxs("li",{className:"flex items-center gap-3",children:[r.jsx(Ye,{size:18,className:"text-secondary shrink-0","aria-hidden":"true"}),r.jsx("a",{href:"tel:9169789392",className:"text-gray-300 hover:text-secondary transition-colors",children:"Yolo/Sacramento: 916-978-9392"})]}),r.jsxs("li",{className:"flex items-center gap-3",children:[r.jsx(Ye,{size:18,className:"text-secondary shrink-0","aria-hidden":"true"}),r.jsx("a",{href:"tel:7074475655",className:"text-gray-300 hover:text-secondary transition-colors",children:"Bay Area: 707-447-5655"})]}),r.jsxs("li",{className:"flex items-start gap-3 mt-4 pt-4 border-t border-white/10",children:[r.jsx(At,{size:18,className:"text-secondary shrink-0 mt-1"}),r.jsxs("span",{className:"text-gray-300",children:["859 Cotting Court, Suite A",r.jsx("br",{}),"Vacaville, CA 95688",r.jsx("br",{}),r.jsx("span",{className:"text-gray-400 text-xs",children:"CA Lic. #593448"})]})]})]})]})]}),r.jsxs("div",{className:"pt-8 border-t border-white/20 text-gray-400 text-sm text-center",children:[r.jsxs("p",{children:["© ",new Date().getFullYear()," Northern California Roofing Co. All Rights Reserved."]}),r.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 mt-3",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-secondary transition-colors underline underline-offset-2","data-testid":"link-footer-privacy",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-secondary transition-colors underline underline-offset-2","data-testid":"link-footer-terms",children:"Terms of Use"}),r.jsx("span",{children:"|"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-secondary transition-colors underline underline-offset-2",children:"Accessibility Statement"}),r.jsxs("span",{children:["California Residents: ",r.jsx(Z,{href:"/privacy-policy#ccpa",className:"hover:text-secondary transition-colors underline underline-offset-2","data-testid":"link-footer-do-not-sell",children:"Do Not Sell My Personal Information"})]})]}),r.jsx("p",{className:"mt-2 text-xs text-gray-500",children:"This site is CIPA & CCPA compliant. Your privacy is important to us."})]})]})}),y&&r.jsxs("div",{className:"fixed inset-0 z-[200] bg-black/90 flex items-center justify-center p-4",role:"dialog","aria-modal":"true","aria-label":y.alt,onClick:()=>x(null),children:[r.jsx("button",{className:"absolute top-4 right-4 text-white bg-white/10 hover:bg-white/20 rounded-full p-2 transition-colors","aria-label":"Close image",onClick:()=>x(null),children:r.jsx(Wn,{size:28,"aria-hidden":"true"})}),r.jsx("img",{src:y.src,alt:y.alt,className:"max-h-[90vh] max-w-[90vw] object-contain shadow-2xl",onClick:B=>B.stopPropagation()})]})]})}const nw="/logo-color.png";function X9(){return w.useEffect(()=>{window.scrollTo(0,0)},[]),r.jsxs("div",{className:"flex flex-col min-h-screen",children:[r.jsx("header",{className:"bg-[#113753] text-white py-4 px-6 md:px-8 sticky top-0 z-50 shadow-lg",children:r.jsxs("div",{className:"container mx-auto flex items-center justify-between",children:[r.jsx(Z,{href:"/","data-testid":"link-logo-privacy",children:r.jsx("div",{className:"bg-white rounded-xl px-3 py-1.5 shadow-sm inline-block",children:r.jsx("img",{src:nw,alt:"Northern California Roofing Co.",className:"h-10 object-contain"})})}),r.jsxs(Z,{href:"/","data-testid":"link-back-home",className:"flex items-center gap-2 text-sm text-gray-300 hover:text-white transition-colors",children:[r.jsx(Ot,{size:16}),"Back to Home"]})]})}),r.jsx("div",{className:"bg-[#0693E3] text-white py-12 px-6",children:r.jsxs("div",{className:"container mx-auto text-center",children:[r.jsx("div",{className:"flex justify-center mb-4",children:r.jsx(Jt,{size:40})}),r.jsx("h1",{className:"font-serif text-3xl md:text-4xl font-bold mb-2",children:"Privacy Policy"}),r.jsxs("p",{className:"text-white/80 text-sm",children:["Last Updated: ","April 21, 2026"]})]})}),r.jsx("main",{className:"flex-1 bg-white py-12 px-6",children:r.jsxs("div",{className:"container mx-auto max-w-3xl prose prose-slate","data-testid":"privacy-policy-content",children:[r.jsx("p",{className:"text-gray-600 text-sm italic mb-8",children:'Northern California Roofing Co. ("Company," "we," "us," or "our") is committed to protecting your privacy and complying with applicable California and federal privacy laws, including the California Invasion of Privacy Act (CIPA), Penal Code § 630 et seq., and the California Consumer Privacy Act (CCPA), Civil Code § 1798.100 et seq.'}),r.jsxs(Wt,{title:"1. Information We Collect",children:[r.jsx("p",{children:"We may collect the following categories of personal information when you visit our website or contact us:"}),r.jsxs("ul",{children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Identifiers:"})," Name, email address, phone number, mailing address, and IP address."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Commercial Information:"})," Records of services requested or obtained."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Internet or Network Activity:"})," Information about your interaction with our website, including browser type, pages visited, time and date of visits, and referring URLs."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Communications Data:"})," Content of messages you send us through our contact form, email, or telephone."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Geolocation Data:"})," General location inferred from your IP address."]})]})]}),r.jsxs(Wt,{title:"2. How We Collect Information",children:[r.jsx("p",{children:"We collect information in the following ways:"}),r.jsxs("ul",{children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Directly from you:"})," When you fill out our contact form, call us, or email us."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Automatically:"})," Through cookies, web beacons, and similar technologies when you visit our website. This may include session data, browser information, and pages viewed."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"From third parties:"})," We may receive information from advertising partners, analytics providers, and social media platforms."]})]})]}),r.jsxs(Wt,{title:"3. Notice Regarding Electronic Communications (CIPA)",children:[r.jsx("p",{children:"Pursuant to the California Invasion of Privacy Act (CIPA), California Penal Code § 630 et seq., we provide the following notice:"}),r.jsx("p",{children:"This website may use third-party tools and technologies (such as analytics software, session recording tools, and chat widgets) that are capable of recording, capturing, or intercepting electronic communications transmitted through this website, including the content of messages you submit through our contact form and your interactions with website features."}),r.jsxs("p",{children:["By using this website and/or submitting information through our contact forms or other interactive features, ",r.jsx("strong",{children:"you expressly consent"})," to the interception, recording, and/or monitoring of your electronic communications as permitted under CIPA and applicable law."]}),r.jsx("p",{children:"If you do not consent to such interception or recording, please do not use this website's interactive features or submit personal information through the website."})]}),r.jsxs(Wt,{title:"4. Use of Cookies and Tracking Technologies",children:[r.jsx("p",{children:"We use cookies and similar tracking technologies for the following purposes:"}),r.jsxs("ul",{children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Essential Cookies:"})," Required for the website to function properly."]}
57),r.jsxs("li",{children:[r.jsx("strong",{children:"Analytics Cookies:"})," To understand how visitors interact with our website (e.g., Google Analytics)."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Marketing Cookies:"})," To deliver relevant advertisements and track the effectiveness of marketing campaigns."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Preference Cookies:"})," To remember your preferences and settings."]})]}),r.jsxs("p",{children:["You may control cookies through your browser settings. Note that disabling certain cookies may affect website functionality. You may also opt out of Google Analytics by visiting ",r.jsx("a",{href:"https://tools.google.com/dlpage/gaoptout",target:"_blank",rel:"noopener noreferrer",className:"text-[#0693E3]",children:"Google's opt-out page"}),"."]})]}),r.jsxs(Wt,{title:"5. How We Use Your Information",children:[r.jsx("p",{children:"We use the personal information we collect for the following purposes:"}),r.jsxs("ul",{children:[r.jsx("li",{children:"To respond to your inquiries and provide roofing estimates and services."}),r.jsx("li",{children:"To communicate with you about your project, appointments, and follow-up."}),r.jsx("li",{children:"To improve our website, services, and customer experience."}),r.jsx("li",{children:"To send you marketing communications (with your consent, where required)."}),r.jsx("li",{children:"To comply with legal obligations and protect our rights."}),r.jsx("li",{children:"To analyze website traffic and usage patterns."})]})]}),r.jsxs(Wt,{title:"6. Sharing of Personal Information",children:[r.jsx("p",{children:"We do not sell your personal information. We may share your information with:"}),r.jsxs("ul",{children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Service Providers:"})," Third-party vendors who assist us in operating our website and conducting our business (e.g., CRM providers, email platforms, analytics services), subject to confidentiality obligations."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Business Transfers:"})," In the event of a merger, acquisition, or sale of assets, your information may be transferred to the new entity."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Legal Requirements:"})," We may disclose your information when required by law, court order, or to protect our legal rights."]})]})]}),r.jsxs(Wt,{title:"7. California Consumer Privacy Act (CCPA) Rights",children:[r.jsx("p",{children:"If you are a California resident, you have the following rights under the CCPA:"}),r.jsxs("ul",{children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Right to Know:"})," You have the right to request information about the categories and specific pieces of personal information we have collected about you."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Right to Delete:"})," You have the right to request deletion of personal information we have collected, subject to certain exceptions."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Right to Opt-Out of Sale:"})," We do not sell personal information. However, if this practice changes, you will have the right to opt out."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Right to Non-Discrimination:"})," We will not discriminate against you for exercising your CCPA rights."]})]}),r.jsxs("p",{children:["To exercise your CCPA rights, please contact us at"," ",r.jsx("a",{href:"mailto:[email protected]",className:"text-[#0693E3]",children:"[email protected]"})," ","or call us at ",r.jsx("a",{href:"tel:7074475655",className:"text-[#0693E3]",children:"707-447-5655"}),". We will respond to verifiable consumer requests within 45 days."]})]}),r.jsx(Wt,{title:"8. Do Not Sell My Personal Information",children:r.jsx("p",{children:"Northern California Roofing Co. does not sell, rent, or trade your personal information to third parties for monetary or other valuable consideration. If you have any questions about this practice, please contact us at the information provided below."})}),r.jsx(Wt,{title:"9. Data Retention",children:r.jsx("p",{children:"We retain personal information for as long as necessary to fulfill the purposes outlined in this Privacy Policy, unless a longer retention period is required or permitted by law. When information is no longer needed, we securely delete or anonymize it."})}),r.jsx(Wt,{title:"10. Data Security",children:r.jsx("p",{children:"We implement commercially reasonable technical and organizational security measures to protect your personal information from unauthorized access, disclosure, alteration, or destruction. However, no method of transmission over the Internet or electronic storage is 100% secure, and we cannot guarantee absolute security."})}),r.jsx(Wt,{title:"11. Children's Privacy",children:r.jsx("p",{children:"Our website is not directed to children under the age of 13. We do not knowingly collect personal information from children under 13. If you believe we have inadvertently collected information from a child, please contact us immediately and we will delete such information."})}),r.jsx(Wt,{title:"12. Third-Party Links",children:r.jsx("p",{children:"Our website may contain links to third-party websites. We are not responsible for the privacy practices of such websites and encourage you to review their privacy policies before providing any personal information."})}),r.jsx(Wt,{title:"13. Changes to This Privacy Policy",children:r.jsx("p",{children:'We may update this Privacy Policy from time to time. We will notify you of material changes by posting the updated policy on this page with a new "Last Updated" date. Your continued use of the website after such changes constitutes your acceptance of the updated policy.'})}),r.jsxs(Wt,{title:"14. Contact Us",children:[r.jsx("p",{children:"If you have questions, concerns, or requests regarding this Privacy Policy or our privacy practices, please contact us:"}),r.jsxs("address",{className:"not-italic bg-gray-50 border border-gray-200 p-5 mt-3 text-sm text-gray-700",children:[r.jsx("strong",{children:"Northern California Roofing Co."}),r.jsx("br",{}),"Attn: Privacy Officer",r.jsx("br",{}),"Serving Northern California Since 1990",r.jsx("br",{}),r.jsx("br",{}),"Email: ",r.jsx("a",{href:"mailto:[email protected]",className:"text-[#0693E3]",children:"[email protected]"}),r.jsx("br",{}),"Phone (Solano): ",r.jsx("a",{href:"tel:7074475655",className:"text-[#0693E3]",children:"707-447-5655"}),r.jsx("br",{}),"Phone (Yolo/Sacramento): ",r.jsx("a",{href:"tel:9169789392",className:"text-[#0693E3]",children:"916-978-9392"}),r.jsx("br",{}),"Phone (Bay Area): ",r.jsx("a",{href:"tel:7074475655",className:"text-[#0693E3]",children:"707-447-5655"})]})]})]})}),r.jsx("footer",{className:"bg-[#113753] text-white py-8 px-6 text-center text-sm text-gray-300 border-t-4 border-[#0693E3]",children:r.jsxs("div",{className:"container mx-auto",children:[r.jsx("div",{className:"inline-block bg-white rounded-xl px-3 py-1.5 shadow-sm mb-4",children:r.jsx("img",{src:nw,alt:"Northern California Roofing Co.",className:"h-10 object-contain"})}),r.jsxs("p",{children:["© ",new Date().getFullYear()," Northern California Roofing Co. All Rights Reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-white transition-colors","data-testid":"link-footer-privacy",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-white transition-colors","data-testid":"link-footer-terms",children:"Terms of Use"}),r.jsx(Z,{href:"/",className:"hover:text-white transition-colors","data-testid":"link-footer-home",children:"Home"})]})]})})]})}function Wt({title:e,children:a}){return r.jsxs("section",{className:"mb-8",children:[r.jsx("h2",{className:"text-[#113753] font-serif font-bold text-xl mb-3 pb-2 border-b border-gray-200",children:e}),r.jsx("div",{className:"text-gray-700 text-sm leading-relaxed space-y-3",children:a})]})}const rw="/logo-color.png";function Q9(){return w.useEffect(()=>{window.scrollTo(0,0)},[]),r.jsxs("div",{className:"flex flex-col min-h-screen",children:[r.jsx("header",{className:"bg-[#113753] text-white py-4 px-6 md:px-8 sticky top-0 z-50 shadow-lg",children:r.jsxs("div",{className:"container mx-auto flex items-center justify-between",children:[r.jsx(Z,{href:"/","data-testid":"link-logo-terms",children:r.jsx("div",{className:"bg-white rounded-xl px-3 py-1.5 shadow-sm inline-block",children:r.jsx("img",{src:rw,alt:"Northern California Roofing Co.",className:"h-10 object-contain"})})}),r.jsxs(Z,{href:"/","data-testid":"link-back-home-terms",className:"flex items-center gap-2 text-sm text-gray-300 hover:text-white transition-colors",children:[r.jsx(Ot,{size:16}),"Back to Home"]})]})}),r.jsx("div",{className:"bg-[#113753] text-white py-12 px-6 border-b-4 border-[#0693E3]",children:r.jsxs("div",{className:"container mx-auto text-center",children:[r.jsx("div",{className:"flex justify-center mb-4",children:r.jsx(ik,{size:40})}),r.jsx("h1",{className:"font-serif text-3xl md:text-4xl font-bold mb-2",children:"Terms of Use"}),r.jsxs("p",{className:"text-white/80 text-sm",children:["Last Updated: ","April 21, 2026"]})]})}),r.jsx("main",{className:"flex-1 bg-white py-12 px-6",children:r.jsxs("div",{className:"container mx-auto max-w-3xl","data-testid":"terms-of-use
57-content",children:[r.jsx("p",{className:"text-gray-600 text-sm italic mb-8",children:"Please read these Terms of Use carefully before using the northerncaliforniaroofing.com website. By accessing or using this website, you agree to be bound by these Terms."}),r.jsx(xa,{title:"1. Acceptance of Terms",children:r.jsx("p",{children:'By accessing and using this website ("Site"), you accept and agree to be bound by these Terms of Use and our Privacy Policy, which is incorporated herein by reference. If you do not agree to these Terms, you must discontinue use of this Site immediately.'})}),r.jsxs(xa,{title:"2. Use of the Site",children:[r.jsx("p",{children:"You agree to use this Site only for lawful purposes and in a manner that does not infringe the rights of others. You may not:"}),r.jsxs("ul",{children:[r.jsx("li",{children:"Use this Site in any way that violates applicable local, state, national, or international laws or regulations."}),r.jsx("li",{children:"Transmit unsolicited or unauthorized advertising or promotional material."}),r.jsx("li",{children:"Attempt to gain unauthorized access to any portion of the Site or related systems."}),r.jsx("li",{children:"Introduce viruses, malicious code, or other harmful material to the Site."}),r.jsx("li",{children:"Reproduce, duplicate, copy, or sell any part of the Site without our express written permission."})]})]}),r.jsx(xa,{title:"3. Intellectual Property",children:r.jsx("p",{children:'All content on this Site, including but not limited to text, images, logos, graphics, and the overall "look and feel," is the property of Northern California Roofing Co. or its licensors and is protected by applicable intellectual property laws. You may not reproduce, distribute, or create derivative works without our prior written consent.'})}),r.jsxs(xa,{title:"4. Contact Form and Electronic Communications",children:[r.jsx("p",{children:"When you submit information through our contact form or other interactive features of this Site, you consent to receiving electronic communications from us in response to your inquiry. You acknowledge that any electronic communications we send satisfy any legal requirement that such communications be in writing."}),r.jsx("p",{children:"Pursuant to the California Invasion of Privacy Act (CIPA), you are notified and hereby consent that your communications transmitted through this Site, including contact form submissions and any chat features, may be recorded or intercepted by us or our authorized service providers for the purpose of responding to your inquiry and improving our services."})]}),r.jsx(xa,{title:"5. Disclaimer of Warranties",children:r.jsx("p",{children:'This Site and its content are provided on an "as is" and "as available" basis without warranties of any kind, either express or implied. Northern California Roofing Co. does not warrant that the Site will be uninterrupted, error-free, or free of viruses or other harmful components. We expressly disclaim all warranties, including implied warranties of merchantability, fitness for a particular purpose, and non-infringement.'})}),r.jsx(xa,{title:"6. Limitation of Liability",children:r.jsx("p",{children:"To the fullest extent permitted by law, Northern California Roofing Co. shall not be liable for any indirect, incidental, special, consequential, or punitive damages arising from your use of or inability to use this Site, even if we have been advised of the possibility of such damages. Our total liability to you for any claim arising from or relating to your use of this Site shall not exceed $100."})}),r.jsx(xa,{title:"7. Third-Party Links",children:r.jsx("p",{children:"This Site may contain links to third-party websites for your convenience. We are not responsible for the content, accuracy, or practices of these external sites, and a link does not constitute an endorsement. We encourage you to review the terms and privacy policies of any third-party sites you visit."})}),r.jsx(xa,{title:"8. Indemnification",children:r.jsx("p",{children:"You agree to indemnify and hold harmless Northern California Roofing Co., its officers, directors, employees, and agents from any claims, losses, damages, liabilities, and expenses (including reasonable attorneys' fees) arising from your use of the Site, your violation of these Terms, or your violation of any third-party rights."})}),r.jsx(xa,{title:"9. Governing Law",children:r.jsx("p",{children:"These Terms of Use shall be governed by and construed in accordance with the laws of the State of California, without regard to its conflict of laws principles. Any disputes arising hereunder shall be subject to the exclusive jurisdiction of the state and federal courts located in Solano County, California."})}),r.jsx(xa,{title:"10. Changes to These Terms",children:r.jsx("p",{children:'We reserve the right to modify these Terms of Use at any time. Changes will be effective upon posting to this page with an updated "Last Updated" date. Your continued use of the Site after any changes constitutes your acceptance of the revised Terms.'})}),r.jsxs(xa,{title:"11. Contact Information",children:[r.jsx("p",{children:"If you have questions about these Terms of Use, please contact us:"}),r.jsxs("address",{className:"not-italic bg-gray-50 border border-gray-200 p-5 mt-3 text-sm text-gray-700",children:[r.jsx("strong",{children:"Northern California Roofing Co."}),r.jsx("br",{}),"Attn: Legal Department",r.jsx("br",{}),"Email: ",r.jsx("a",{href:"mailto:[email protected]",className:"text-[#0693E3]",children:"[email protected]"}),r.jsx("br",{}),"Phone: ",r.jsx("a",{href:"tel:7074475655",className:"text-[#0693E3]",children:"707-447-5655"})]})]})]})}),r.jsx("footer",{className:"bg-[#113753] text-white py-8 px-6 text-center text-sm text-gray-300 border-t-4 border-[#0693E3]",children:r.jsxs("div",{className:"container mx-auto",children:[r.jsx("div",{className:"inline-block bg-white rounded-xl px-3 py-1.5 shadow-sm mb-4",children:r.jsx("img",{src:rw,alt:"Northern California Roofing Co.",className:"h-10 object-contain"})}),r.jsxs("p",{children:["© ",new Date().getFullYear()," Northern California Roofing Co. All Rights Reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-white transition-colors","data-testid":"link-footer-privacy-terms",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-white transition-colors","data-testid":"link-footer-terms-terms",children:"Terms of Use"}),r.jsx(Z,{href:"/",className:"hover:text-white transition-colors","data-testid":"link-footer-home-terms",children:"Home"})]})]})})]})}function xa({title:e,children:a}){return r.jsxs("section",{className:"mb-8",children:[r.jsx("h2",{className:"text-[#113753] font-serif font-bold text-xl mb-3 pb-2 border-b border-gray-200",children:e}),r.jsx("div",{className:"text-gray-700 text-sm leading-relaxed space-y-3",children:a})]})}const J9="/logo-color.png";function eV(){return r.jsxs("div",{className:"flex flex-col min-h-[100dvh] font-sans",children:[r.jsx("a",{href:"#main-content",className:"skip-link",children:"Skip to main content"}),r.jsx("header",{className:"bg-white border-b-4 border-secondary shadow-sm",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8 py-4 flex items-center justify-between",children:[r.jsx(Z,{href:"/","aria-label":"Northern California Roofing Co. — Home",children:r.jsx("img",{src:J9,alt:"Northern California Roofing Co.",className:"h-16"})}),r.jsx("nav",{"aria-label":"Breadcrumb",children:r.jsxs("ol",{className:"flex items-center gap-2 text-sm text-gray-500",children:[r.jsx("li",{children:r.jsx(Z,{href:"/",className:"hover:text-secondary transition-colors underline",children:"Home"})}),r.jsx("li",{"aria-hidden":"true",children:r.jsx(IC,{size:14})}),r.jsx("li",{"aria-current":"page",className:"text-primary font-semibold",children:"Accessibility Statement"})]})})]})}),r.jsx("main",{id:"main-content",className:"flex-1 bg-gray-50 py-16",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8 max-w-4xl",children:[r.jsxs("div",{className:"bg-primary text-white px-8 py-10 mb-10 border-l-8 border-secondary",children:[r.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[r.jsx(Jt,{className:"text-secondary shrink-0",size:28,"aria-hidden":"true"}),r.jsx("p",{className:"text-secondary font-bold tracking-widest text-sm uppercase",children:"Legal & Compliance"})]}),r.jsx("h1",{className:"text-4xl font-serif font-bold",children:"Accessibility Statement"}),r.jsx("p",{className:"mt-3 text-gray-300 text-sm",children:"Last reviewed: May 2026"})]}),r.jsxs("div",{className:"bg-white border border-gray-200 p-8 md:p-12 space-y-10 text-gray-700 leading-relaxed",children:[r.jsxs("section",{"aria-labelledby":"
57commitment-heading",children:[r.jsx("h2",{id:"commitment-heading",className:"text-2xl font-serif font-bold text-primary mb-4 pb-2 border-b border-gray-200",children:"Our Commitment to Accessibility"}),r.jsx("p",{children:"Northern California Roofing Co. is committed to ensuring digital accessibility for people with disabilities. We continually improve the user experience for everyone and apply relevant accessibility standards to achieve this."}),r.jsx("p",{className:"mt-4",children:"We believe that every person — regardless of ability — deserves equal access to information about our roofing services. Accessibility is not an afterthought; it is a core part of how we build and maintain this website."})]}),r.jsxs("section",{"aria-labelledby":"standards-heading",children:[r.jsx("h2",{id:"standards-heading",className:"text-2xl font-serif font-bold text-primary mb-4 pb-2 border-b border-gray-200",children:"Conformance Status"}),r.jsxs("p",{children:["This website aims to conform to the ",r.jsx("strong",{children:"Web Content Accessibility Guidelines (WCAG) 2.1 Level AA"}),", published by the World Wide Web Consortium (W3C). These guidelines explain how to make web content more accessible to people with disabilities."]}),r.jsx("p",{className:"mt-4",children:"We have implemented the following measures to support accessibility:"}),r.jsx("ul",{className:"mt-4 space-y-2 list-none",children:["Skip-to-main-content link at the top of every page","Semantic HTML landmarks (header, main, nav, footer) for screen reader navigation","All images include descriptive alternative text","All form fields are labeled and associated with their inputs","All interactive elements are fully keyboard-navigable","Dropdown menus are accessible via keyboard focus","ARIA labels on icon-only buttons and social media links","Slideshow includes a pause/play control (WCAG 2.2.2 — Pause, Stop, Hide)","Visible focus indicators on all interactive elements","Sufficient color contrast ratios for text readability (WCAG 1.4.3)","Text can be resized up to 200% without loss of content (WCAG 1.4.4)","Motion animations respect the prefers-reduced-motion system setting","Phone numbers are clickable tap-to-call links on mobile devices","Touch targets meet the 44×44 pixel minimum (WCAG 2.5.5)","Cookie consent and privacy notices are screen-reader friendly"].map((e,a)=>r.jsxs("li",{className:"flex items-start gap-3",children:[r.jsx("span",{className:"mt-1 w-2 h-2 rounded-full bg-secondary shrink-0","aria-hidden":"true"}),r.jsx("span",{children:e})]},a))})]}),r.jsxs("section",{"aria-labelledby":"limitations-heading",children:[r.jsx("h2",{id:"limitations-heading",className:"text-2xl font-serif font-bold text-primary mb-4 pb-2 border-b border-gray-200",children:"Known Limitations"}),r.jsx("p",{children:"While we strive for full WCAG 2.1 AA conformance, some third-party content embedded on this site (such as financing widgets or external review platforms) may not fully meet these standards. We work with our vendors to address these gaps and monitor updates regularly."})]}),r.jsxs("section",{"aria-labelledby":"technical-heading",children:[r.jsx("h2",{id:"technical-heading",className:"text-2xl font-serif font-bold text-primary mb-4 pb-2 border-b border-gray-200",children:"Technical Approach"}),r.jsxs("p",{children:["This website is built using semantic HTML5, ARIA (Accessible Rich Internet Applications) attributes, and follows the four principles of accessibility — ",r.jsx("strong",{children:"Perceivable, Operable, Understandable, and Robust (POUR)"}),"."]}),r.jsx("p",{className:"mt-4",children:"We test our site using industry-standard tools and manually verify keyboard navigation, screen reader compatibility, and color contrast."})]}),r.jsxs("section",{"aria-labelledby":"feedback-heading",className:"bg-blue-50 border border-blue-200 p-6",children:[r.jsx("h2",{id:"feedback-heading",className:"text-2xl font-serif font-bold text-primary mb-4",children:"Feedback & Contact"}),r.jsxs("p",{className:"mb-4",children:["We welcome your feedback on the accessibility of this website. If you experience any barriers, have difficulty accessing any content, or need information in an alternative format, please contact us — we aim to respond within ",r.jsx("strong",{children:"2 business days"}),"."]}),r.jsxs("div",{className:"space-y-3",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx(Ye,{size:18,className:"text-secondary shrink-0","aria-hidden":"true"}),r.jsxs("div",{children:[r.jsxs("p",{className:"text-sm text-gray-600",children:[r.jsx("a",{href:"tel:7074475655",className:"font-bold text-primary hover:text-secondary underline transition-colors",children:"707-447-5655"}),r.jsx("span",{className:"text-gray-500",children:" (Solano County)"})]}),r.jsxs("p",{className:"text-sm text-gray-600",children:[r.jsx("a",{href:"tel:9169789392",className:"font-bold text-primary hover:text-secondary underline transition-colors",children:"916-978-9392"}),r.jsx("span",{className:"text-gray-500",children:" (Yolo / Sacramento)"})]})]})]}),r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx(rc,{size:18,className:"text-secondary shrink-0","aria-hidden":"true"}),r.jsx("a",{href:"mailto:[email protected]",className:"font-bold text-primary hover:text-secondary underline transition-colors text-sm",children:"[email protected]"})]})]})]}),r.jsxs("section",{"aria-labelledby":"enforcement-heading",children:[r.jsx("h2",{id:"enforcement-heading",className:"text-2xl font-serif font-bold text-primary mb-4 pb-2 border-b border-gray-200",children:"Enforcement Procedure"}),r.jsxs("p",{children:["If you are not satisfied with our response to your accessibility complaint, you may contact the ",r.jsx("strong",{children:"U.S. Department of Justice Civil Rights Division"})," regarding Title III of the Americans with Disabilities Act (ADA), or file a complaint under the ",r.jsx("strong",{children:"California Unruh Civil Rights Act"})," if you are a California resident."]}),r.jsx("p",{className:"mt-4",children:"We are committed to resolving accessibility issues in good faith and will make every reasonable effort to accommodate your needs."})]}),r.jsxs("section",{"aria-labelledby":"review-heading",children:[r.jsx("h2",{id:"review-heading",className:"text-2xl font-serif font-bold text-primary mb-4 pb-2 border-b border-gray-200",children:"Review Schedule"}),r.jsxs("p",{children:["This accessibility statement was last reviewed and updated in ",r.jsx("strong",{children:"May 2026"}),". We review and update this statement at least annually, or whenever significant changes are made to the website."]})]}),r.jsx("div",{className:"pt-4 border-t border-gray-200",children:r.jsx(Z,{href:"/",className:"inline-flex items-center gap-2 text-secondary hover:text-primary underline font-bold transition-colors",children:"← Return to Home"})})]})]})}),r.jsx("footer",{className:"bg-primary text-white py-6 border-t-4 border-secondary",role:"contentinfo",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8 text-center text-sm text-gray-400",children:[r.jsxs("p",{children:["© ",new Date().getFullYear()," Northern California Roofing Co. All Rights Reserved."]}),r.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 mt-3",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-secondary underline transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-secondary underline transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-secondary underline transition-colors",children:"Accessibility"})]})]})})]})}const Ri="Northern California Roofing Co.",nn="https://northerncaliforniaroofing.com",Tp=`${nn}/logo-color.png`,tV="@NCRoofingCo";function dn({title:e,description:a,canonicalPath:i,ogImage:s,ogImageAlt:c,ogType:d="website",article:f,jsonLd:h}){const g=`${nn}${i}`,p=`${e} | ${Ri}`,y=s?s.startsWith("http")?s:`${nn}${s}`:Tp;return r.jsxs(Qw,{children:[r.jsx("title",{children:p}),r.jsx("meta",{name:"description",content:a}),r.jsx("meta",{name:"robots",content:"index, follow"}),r.jsx("link",{rel:"canonical",href:g}),r.jsx("meta",{property:"og:type",content:d}),r.jsx("meta",{property:"og:site_name",content:Ri}),r.jsx("meta",{property:"og:locale",content:"en_US"}),r.jsx("meta",{property:"og:title",content:p}),r.jsx("meta",{property:"og:description",content:a}),r.jsx("meta",{property:"og:url",content:g}),r.jsx("meta",{property:"og:image",content:y}),c&&r.jsx("meta",{property:"og:image:alt",content:c}
57),r.jsx("meta",{property:"og:image:width",content:"1200"}),r.jsx("meta",{property:"og:image:height",content:"630"}),r.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),r.jsx("meta",{name:"twitter:site",content:tV}),r.jsx("meta",{name:"twitter:title",content:p}),r.jsx("meta",{name:"twitter:description",content:a}),r.jsx("meta",{name:"twitter:image",content:y}),c&&r.jsx("meta",{name:"twitter:image:alt",content:c}),f&&r.jsxs(r.Fragment,{children:[r.jsx("meta",{property:"article:published_time",content:f.publishedTime}),r.jsx("meta",{property:"article:author",content:Ri}),r.jsx("meta",{property:"article:section",content:f.section}),f.keywords.map(x=>r.jsx("meta",{property:"article:tag",content:x},x))]}),h&&r.jsx("script",{type:"application/ld+json",children:JSON.stringify(h)})]})}function Xn({headline:e,description:a,url:i,imageUrl:s,imageAlt:c,datePublished:d,keywords:f}){return{"@context":"https://schema.org","@type":"Article",headline:e,description:a,url:i,datePublished:d,dateModified:d,keywords:f.join(", "),image:{"@type":"ImageObject",url:s.startsWith("http")?s:`${nn}${s}`,description:c},author:{"@type":"Organization",name:Ri,url:nn},publisher:{"@type":"Organization",name:Ri,url:nn,logo:{"@type":"ImageObject",url:Tp}},mainEntityOfPage:{"@type":"WebPage","@id":i}}}function aV(){return{"@context":"https://schema.org","@type":["RoofingContractor","LocalBusiness","HomeAndConstructionBusiness"],name:Ri,description:"GAF Master Elite® certified roofing contractor serving Vacaville, Fairfield, Napa, Sacramento, Davis, Vallejo and surrounding Northern California communities since 1990. Residential and commercial roofing — roof replacement, repair, tile, flat, and PVC membrane systems.",url:nn,logo:Tp,image:`${nn}/opengraph.jpg`,telephone:["+17074475655","+19169789392"],email:"[email protected]",address:{"@type":"PostalAddress",streetAddress:"859 Cotting Court, Suite A",addressLocality:"Vacaville",addressRegion:"CA",postalCode:"95688",addressCountry:"US"},geo:{"@type":"GeoCoordinates",latitude:38.3565,longitude:-121.9877},areaServed:[{"@type":"County",name:"Solano County",addressRegion:"CA"},{"@type":"County",name:"Yolo County",addressRegion:"CA"},{"@type":"County",name:"Sacramento County",addressRegion:"CA"},{"@type":"County",name:"Napa County",addressRegion:"CA"},{"@type":"County",name:"Contra Costa County",addressRegion:"CA"},{"@type":"County",name:"Placer County",addressRegion:"CA"}],licenseNumber:"CA Lic. #593448",foundingDate:"1990",priceRange:"$$",openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"07:00",closes:"17:00"}],aggregateRating:{"@type":"AggregateRating",ratingValue:"4.9",reviewCount:"143",bestRating:"5",worstRating:"1"},hasOfferCatalog:{"@type":"OfferCatalog",name:"Roofing Services",itemListElement:[{"@type":"Offer",itemOffered:{"@type":"Service",name:"Roof Replacement",description:"Complete residential and commercial reroof — GAF, Malarkey, CertainTeed, Duro-Last, tile systems."}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Roof Repair",description:"Leak detection, shingle/tile repair, flashing repair, storm damage repair."}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Commercial Roofing",description:"TPO, PVC, and Duro-Last® membrane systems for flat and low-slope commercial properties."}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Tile Roof Services",description:"Concrete and clay tile installation, underlayment replacement, mortar re-bedding."}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Cool Roof Upgrades",description:"Energy Star-rated, high-SRI products that reduce cooling costs. California Title 24 compliant."}}]},sameAs:[nn,"https://www.facebook.com/NorthernCaliforniaRoofing","https://www.instagram.com/norcalroofing","https://www.bbb.org/us/ca/vacaville/profile/roofing-contractors/northern-california-roofing-co-1156-90011136"]}}const nV="/logo-color.png",rV=[{label:"HOME",href:"/"},{label:"ABOUT US",href:"/#about"},{label:"SERVICES",href:"/#services"},{label:"SERVICE AREAS",href:"/#service-areas"},{label:"REVIEWS",href:"/#reviews"},{label:"FINANCING",href:"/#financing"},{label:"BLOG",href:"/blog"},{label:"AWARDS",href:"/awards"},{label:"CONTACT",href:"/#contact"}];function Ba({currentPage:e}){const[a,i]=w.useState(!1);return r.jsxs("header",{className:"bg-[#113753] text-white",children:[r.jsxs("div",{className:"container mx-auto px-4 py-3 flex justify-between items-center",children:[r.jsx("a",{href:"/",children:r.jsx("div",{className:"bg-white rounded-xl px-3 py-1.5 shadow-sm inline-block",children:r.jsx("img",{src:nV,alt:"Northern California Roofing Co. — Home",className:"h-11 object-contain"})})}),r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsxs("nav",{"aria-label":"Primary navigation",className:"hidden lg:flex items-center gap-5 text-xs font-bold tracking-wide",children:[r.jsx("a",{href:"/",className:`hover:text-[#0693E3] transition-colors whitespace-nowrap ${e==="HOME"?"text-[#0693E3]":""}`,children:"HOME"}),r.jsx("a",{href:"/blog",className:`hover:text-[#0693E3] transition-colors whitespace-nowrap ${e==="BLOG"?"text-[#0693E3]":""}`,children:"BLOG"}),r.jsx("a",{href:"/awards",className:`hover:text-[#0693E3] transition-colors whitespace-nowrap ${e==="AWARDS"?"text-[#0693E3]":""}`,children:"AWARDS"}),r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white px-4 py-2 transition-colors whitespace-nowrap",children:"FREE ESTIMATE"})]}),r.jsx("button",{onClick:()=>i(s=>!s),"aria-expanded":a,"aria-controls":"site-menu","aria-label":a?"Close site menu":"Open site menu",className:"text-white p-2 hover:text-[#0693E3] transition-colors",children:a?r.jsx(Wn,{size:26,"aria-hidden":"true"}):r.jsx(xc,{size:26,"aria-hidden":"true"})})]})]}),a&&r.jsxs("nav",{id:"site-menu","aria-label":"Site navigation",className:"bg-[#0c2e44] border-t border-white/10",children:[rV.map(s=>r.jsx("a",{href:s.href,"aria-current":e===s.label?"page":void 0,className:`block px-6 py-3.5 border-b border-white/10 font-bold text-sm transition-colors hover:text-[#0693E3] hover:bg-white/5 ${e===s.label?"text-[#0693E3]":"text-white"}`,onClick:()=>i(!1),children:s.label},s.label)),r.jsx("a",{href:"/#contact",className:"block px-6 py-4 font-bold text-sm bg-[#0693E3] text-white text-center hover:bg-white hover:text-[#113753] transition-colors",onClick:()=>i(!1),children:"FREE ESTIMATE"})]})]})}const Sm=[{citySlug:"vacaville",cityName:"Vacaville",county:"Solano County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-vacaville-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roof Replacement in Vacaville, CA — What Every Homeowner Should Know",metaDescription:"Complete guide to roof replacement in Vacaville, CA. Learn which products handle Sacramento Valley heat, what permits are required, and why GAF Master Elite® certification matters. Free estimates — CA Lic. #593448.",heroImage:"/vacaville-residential-malarkey-highlander-1.jpg",heroImageAlt:"Completed Malarkey Highlander residential roof replacement in Vacaville, CA by Northern California Roofing Co.",category:"Residential Roofing",location:"Vacaville, CA",keywords:["roof replacement Vacaville CA","roofing contractor Vacaville CA","Vacaville CA roofing company","GAF Master Elite Vacaville","Solano County roof replacement","Vacaville roofer","reroof Vacaville CA","best roofer Vacaville"],intro:"Summer temperatures in Vacaville regularly hit 105°F, UV exposure is intense for six months straight, and Diablo 
57wind events arrive without much warning. These conditions determine how long your roof lasts and which materials perform best when you need a replacement. Since 1990, Northern California Roofing Co. has replaced thousands of roofs in Vacaville, Elmira, Leisure Town, and the surrounding Solano County communities. Here's what 35 years of local experience has taught us.",sections:[{heading:"How Vacaville's Climate Affects Your Roof's Lifespan",body:"The Sacramento Valley heat cycle is one of the most demanding environments for roofing materials in California. Three months of temperatures above 95°F cause asphalt shingles to soften, expand, and contract repeatedly — a cycle that accelerates granule loss and shortens service life by years compared to cooler coastal climates. The dry Diablo winds that periodically gust to 50 mph put additional stress on every fastener and seam. For Vacaville homeowners, selecting the right product matters as much as the installation itself.",list:["GAF Timberline HDZ® — StainGuard Plus algae protection, WindProven™ unlimited wind warranty","Malarkey Emerald Premium — NEX polymer asphalt, Class 4 impact rating, smog-reducing granules","CertainTeed Landmark Premium — dual-layer design for superior thermal resistance","Metal standing seam — 50+ year lifespan, inherently Class A fire-rated","Concrete or clay tile — excellent thermal mass, 40–60 year lifespan in our climate"]},{heading:"Permits, Timeline & What to Expect on Reroof Day",body:"Every reroof in Vacaville requires a building permit from the City of Vacaville Building Division. We pull all permits on your behalf — homeowners never deal with permit logistics on our projects. Permits are typically issued within 3–5 business days for standard residential projects. Once we have the permit, most single-family reroofs take 1–3 days. We provide a detailed timeline before starting, protect landscaping and vehicles, and do a magnetic nail sweep plus full debris haul-off before leaving.",list:["Full tear-off to bare decking — no overlays that void warranties","Deck inspection — damaged OSB or plywood boards replaced as needed","Synthetic underlayment across the full deck for moisture protection","New flashings at all valleys, pipes, vents, and chimneys","Manufacturer-spec fastening patterns for Vacaville's wind zone","Magnetic nail sweep and complete debris haul-off on completion day"]},{heading:"GAF Master Elite® Certification — Why It Matters in Vacaville",body:"Northern California Roofing Co. is among fewer than 3% of roofing contractors nationwide to hold GAF Master Elite® certification. This means we're the only type of contractor who can offer the GAF Golden Pledge® Limited Warranty — the strongest residential roofing warranty in North America, covering both materials AND labor for 25 or 50 years. GAF audits Master Elite contractors annually for insurance, licensing, and installation quality. For Vacaville homeowners investing $15,000–$28,000 in a new roof, this warranty protection is significant."},{heading:"Serving All of Vacaville — From Leisure Town to the Elmira Corridor",body:"Our crews work throughout Vacaville's neighborhoods — Alamo Drive Corridor, Browns Valley, Leisure Town, the Nut Tree commercial area, Ulatis Creek, and the rural Elmira corridor. We're fully licensed (CA Lic. #593448), bonded, and insured. We've maintained an A+ BBB rating throughout our 35+ years serving Vacaville. Call us at 707-447-5655 or request your free estimate online."}],faqs:[{q:"What's the average cost of a roof replacement in Vacaville, CA?",a:"Most single-family reroof projects in Vacaville range from $12,000 to $28,000, depending on home size, roof pitch, number of existing layers, product chosen, and whether decking repair is needed. We provide detailed, itemized free estimates with no obligation."},{q:"How long should a new roof last in Vacaville's climate?",a:"A quality composition shingle roof in Vacaville typically lasts 25–35 years with proper ventilation and annual maintenance. Concrete or clay tile can last 40–60 years. Metal roofing commonly exceeds 50 years. Adequate attic ventilation is the single most important factor — without it, heat buildup shortens any product's lifespan by years."},{q:"Does Northern California Roofing Co. serve the Elmira area and rural Solano County?",a:"Yes — we regularly work in Elmira, Dixon, rural Solano County properties, and larger agricultural buildings in the Vacaville corridor. No travel fees for locations within our standard service area."}]},{citySlug:"fairfield",cityName:"Fairfield",county:"Solano County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-fairfield-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Fairfield, CA — A Complete Guide for Solano County Homeowners",metaDescription:"Everything Fairfield, CA homeowners need to know about roof replacement — common local problems, the best shingles for Solano County's climate, HOA requirements, and permit process. Free estimates. CA Lic. #593448.",heroImage:"/suisun-city-malarkey-highlander-reroof-1.jpg",heroImageAlt:"Malarkey Highlander composition roof replacement near Fairfield, CA by Northern California Roofing Co.",category:"Residential Roofing",location:"Fairfield, CA",keywords:["roofing contractor Fairfield CA","Fairfield CA roofing","roof replacement Fairfield CA","Solano County roofer","Fairfield roofing company","best roofer Fairfield CA","Cordelia roofing","Green Valley CA roofer"],intro:"Fairfield is Solano County's largest city, with a housing stock that spans 1960s ranch homes near the Travis Air Force Base corridor to newer subdivisions in Cordelia and Green Valley. Each era of construction brings different roofing challenges — aging underlayments on mid-century homes, HOA color restrictions in newer developments, and wind exposure on the Green Valley ridgeline. Northern California Roofing Co. has served Fairfield homeowners since 1990, and our teams know the city's neighborhoods, building department, and roofing problems better than any other contractor.",sections:[{heading:"Fairfield's Most Common Roofing Problems",body:"Fairfield sits at the edge of the Sacramento Valley where marine air from San Francisco Bay mixes with inland heat. This temperature differential creates humidity swings that accelerate wood rot at fascia boards and soffits. Algae staining is common on 
57north-facing slopes that stay damp longer through winter. The Green Valley and Cordelia hills areas face greater wind exposure than the valley floor, making proper fastening patterns critical.",list:["Granule loss from UV exposure — common on roofs over 15 years old","Algae and moss staining on north-facing slopes near Suisun Bay","Flashing failure at chimneys and skylights — most common leak source","Soffit and fascia wood rot from Bay humidity","Wind damage in the Green Valley and Cordelia gap wind corridors","Missing or cracked ridge cap — second most common leak source"]},{heading:"Best Shingles for Fairfield's Climate",body:"In Fairfield, we most often recommend GAF Timberline HDZ® and Malarkey Vista AR® composition shingles — both combine excellent wind resistance with algae-protection granules that are critical for Fairfield's moisture-influenced winters. For homes in the Green Valley and Cordelia areas, we use products that qualify for GAF's WindProven™ warranty, which provides unlimited wind speed coverage. For upgraded curb appeal, GAF Grand Sequoia® designer shingles are popular in Fairfield's newer neighborhoods."},{heading:"Permits, HOA Requirements & the Fairfield Building Department",body:"All residential reroof projects in Fairfield require a permit from the Fairfield Building Division. We pull all permits as part of every project — you'll never need to visit the building department yourself. Many Fairfield neighborhoods have HOA requirements specifying shingle color ranges, minimum weight, and profile style. We're familiar with the CC&R requirements in Green Valley, Cordelia, and Suisun Valley communities and can confirm compliance before any material is ordered."},{heading:"Serving Fairfield and All of Western Solano County",body:"We serve all of Fairfield — Cordelia, Green Valley, Suisun Valley, the Travis AFB perimeter communities, and downtown Fairfield. Neighboring cities we regularly work in: Suisun City, Vacaville, Benicia, Vallejo, and Dixon. Our Solano County service line is 707-447-5655."}],faqs:[{q:"Do you work near the Travis AFB area of Fairfield?",a:"Yes — we serve homeowners throughout the Travis AFB corridor neighborhoods. For off-base residential properties, there are no special access requirements. We regularly coordinate with military homeowners and property managers in that area."},{q:"What permits are required for a roof replacement in Fairfield?",a:"The Fairfield Building Division requires a roofing permit for any full tear-off and replacement. We pull all permits as part of the project, and the permit fee is included in your project estimate. You don't need to contact the building department yourself."},{q:"Does Northern California Roofing serve the Suisun City area as well?",a:"Yes — Suisun City is part of our standard Solano County service area. We serve Suisun City with no travel surcharge and have completed many projects there, including the project in our hero photo above."}]},{citySlug:"sacramento",cityName:"Sacramento",county:"Sacramento County",phone:"916-978-9392",phoneHref:"tel:9169789392",urlSlug:"roofing-sacramento-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Sacramento, CA — Residential & Commercial Experts",metaDescription:"Northern California Roofing Co. serves Sacramento with residential roof replacement, commercial TPO/PVC flat roofing, and repair services. GAF Master Elite® certified. Free estimates. CA Lic. #593448.",heroImage:"/sacramento-residential-pvc-malarkey-highlander-1.jpg",heroImageAlt:"Malarkey Highlander residential roof replacement in Sacramento, CA by Northern California Roofing Co.",category:"Residential Roofing",location:"Sacramento, CA",keywords:["roofing contractor Sacramento CA","Sacramento CA roofing company","commercial roofing Sacramento","roof replacement Sacramento CA","Sacramento flat roof","Duro-Last Sacramento","Sacramento roofer","Natomas roofing contractor"],intro:"Sacramento is both a major residential market and a significant commercial roofing hub — from the downtown office corridor to the industrial areas of North Sacramento and the residential neighborhoods of Natomas, Midtown, Arden-Arcade, and Land Park. Northern California Roofing Co. has been a trusted Sacramento roofing contractor since 1990, handling everything from single-family composition reroofs to large-scale commercial PVC membrane replacements. Whether you're a homeowner in East Sacramento or a property manager in Arden-Arcade, our licensed crews deliver the quality and documentation your project requires.",sections:[{heading:"Sacramento's Urban Heat Island & What It Means for Your Roof",body:"Sacramento's urban heat island effect means rooftop temperatures on residential and commercial buildings regularly exceed 160°F on a 100°F summer day. This accelerates granule loss on asphalt shingles, increases thermal stress on membrane seams, and puts enormous pressure on attic ventilation systems. Our Sacramento projects always include a free attic ventilation review — inadequate venting is the #1 reason roofs in Sacramento underperform their rated lifespan. We also specify California Title 24-compliant products with high Solar Reflectance Index (SRI) ratings wherever possible to reduce cooling loads."},{heading:"Commercial Roofing in Sacramento — TPO, PVC & Duro-Last®",body:"Sacramento's commercial roofing market is dominated by flat and low-slope buildings — retail strips, office buildings, warehouses, and multi-unit residential properties. Our commercial work in Sacramento focuses on three systems: TPO membrane for cost-effective large-area coverage, Duro-Last® PVC for premium durability and the longest available manufacturer warranties, and modified bitumen for smaller or more complex rooflines. We are a Duro-Last Certified Contractor, which means our installer
57s receive direct factory training and our projects qualify for Duro-Last's 15-year system warranty.",list:["Duro-Last® PVC — single-ply, heat-welded seams, 15-year system warranty","TPO membrane — ENERGY STAR® rated, cost-effective for large commercial spans","Modified bitumen — torch-applied for complex roofline geometries","Elastomeric roof coatings — extend existing flat roof life at fraction of replacement cost","Emergency commercial leak response throughout Sacramento"]},{heading:"Sacramento Residential Roofing — Neighborhoods We Serve",body:"Our residential Sacramento crews work throughout the city — Natomas, Midtown, East Sacramento, Land Park, Arden-Arcade, Pocket/Greenhaven, North Sacramento, and Del Paso Heights. We pull all required permits from the Sacramento Building Division, provide itemized estimates before work begins, and back all work with our written workmanship warranty. Most single-family Sacramento reroofs are completed in 1–3 days."},{heading:"Why Sacramento Property Managers Choose Northern California Roofing",body:"We're the preferred roofing contractor for numerous Sacramento property management companies handling multi-family buildings and commercial portfolios. We provide detailed inspection reports, written specifications, and full documentation required for lender and insurance compliance. Call our Sacramento Valley line at 916-978-9392."}],faqs:[{q:"Do you handle commercial roofing in Sacramento in addition to residential?",a:"Yes — commercial is a significant part of our Sacramento business. We work with property managers, business owners, and developers on TPO, PVC, and modified bitumen flat roofing systems across Sacramento County."},{q:"How does Sacramento's heat affect flat roofs?",a:"Sacramento's summer heat accelerates membrane oxidation and seam stress on flat roofs. We recommend Duro-Last® PVC or white TPO membranes with high SRI ratings — both reflect solar heat effectively and are California Title 24-compliant."},{q:"What neighborhoods in Sacramento do you serve?",a:"We serve all of Sacramento city and county — Natomas, Midtown, East Sacramento, Arden-Arcade, Land Park, North Sacramento, Pocket/Greenhaven, Del Paso Heights, and surrounding communities including Rancho Cordova, Citrus Heights, and Fair Oaks."}]},{citySlug:"davis",cityName:"Davis",county:"Yolo County",phone:"916-978-9392",phoneHref:"tel:9169789392",urlSlug:"roofing-davis-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Cool Roof Installation in Davis, CA — Energy Savings & Title 24 Compliance",metaDescription:"Roofing guide for Davis, CA homeowners — Title 24 cool roof requirements, Duro-Last PVC flat roofing, energy-efficient shingles, and PG&E/SMUD rebates. Northern California Roofing Co. Free estimates. CA Lic. #593448.",heroImage:"/duro-last-pvc-rtech-insulfoam-installation-davis-ca-complete.jpg",heroImageAlt:"Completed Duro-Last PVC white membrane flat roof over R-Tech insulfoam insulation in Davis, CA by Northern California Roofing Co.",category:"Flat / Low-Slope Roofing",location:"Davis, CA",keywords:["cool roof Davis CA","roofing contractor Davis CA","flat roof Davis CA","Title 24 roofing Davis","Duro-Last Davis CA","energy efficient roofing Davis","Yolo County roofing","Davis CA roofer"],intro:"Davis is a university community with a strong commitment to energy efficiency, and California's Title 24 energy code makes energy-conscious roofing a building code requirement for most new work — not just a preference. Northern California Roofing Co. has completed dozens of residential and commercial roofing projects in Davis, from Duro-Last® PVC flat roof replacements in the downtown core to composition shingle reroofs in East Davis, Mace Ranch, and Oeste Ranch. Here's what every Davis homeowner needs to know about products, compliance, and what to expect during installation.",sections:[{heading:"What Is a Cool Roof — And Why Davis Building Code Requires It",body:"A cool roof is any product with a high Solar Reflectance Index (SRI) — meaning it reflects solar radiation instead of absorbing it as heat. California's Title 24 Building Energy Efficiency Standards require cool-roof-compliant products for most commercial roofing and for residential low-slope roofs (pitch below 2:12). For Davis, this typically means white or light-colored TPO or PVC membranes on flat sections, and ENERGY STAR®-rated shingles on pitched sections. Northern California Roofing Co. specifies only Title 24-compliant products for all Davis projects as standard practice.",list:["Duro-Last® PVC — white membrane with 0.73 initial solar reflectance","GAF EverGuard TPO — ENERGY STAR® rated, excellent solar reflectance","Malarkey Ecoasis® — composition shingles with StreakFighter smog-reducing granules","R-Tech insulfoam board — insulation upgrade beneath PVC or TPO membrane","Velux solar tubes — daylighting option that reduces interior lighting loads"]},{heading:"Flat Roof Replacement in Davis — Residential & Commercial",body:"Davis has a large inventory of flat-roof residential and commercial buildings — from 1970s apartment complexes near UC Davis to modern mixed-use buildings downtown. For these projects, Duro-Last® PVC is our top recommendation: factory-fabricated seams reduce on-site labor, heat-welded seams are stronger than adhesives, and the white membrane delivers the best reflectance of any single-ply system. Our completed Davis project (shown above) used R-Tech insulfoam insulation boards under the PVC membrane to achieve R-20+ under-deck insulation — a significant upgrade that pays back in reduced cooling costs within two Sacramento Valley summers."},{heading:"PG&E & SMUD Rebates for Roofing Upgrades in Davis",body:"Davis homeowners and businesses may qualify for energy rebates through PG&E and the Sacramento Municipal Utility District (SMUD) for installing ENERGY STAR®-rated roofing products. We help customers identify qualifying products and provide the documentation needed for rebate applications. UC Davis and the City of Davis sustainability programs occasionally offer additional incentive programs for green building upgrades — our estimators stay current on available programs so you don't have to."},{heading:"Serving Davis and All of Yolo County",body:"We serve Davis and all of Yolo County, including Woodland, West Sacramento, Winters, and Esp
57arto. Our Yolo/Sacramento County service line is 916-978-9392. Davis customers can also visit our Vacaville office at 859 Cotting Court, Suite A — just 20 miles away on I-80."}],faqs:[{q:"Does my Davis roof replacement need to be Title 24 compliant?",a:"For most residential and commercial reroofing in Davis, Title 24 cool-roof requirements apply to low-slope sections with a pitch below 2:12. We specify compliant products for all Davis projects as standard practice — you won't need to research compliance requirements yourself."},{q:"What's the best flat roof material for Davis's summer heat?",a:"Duro-Last® PVC or white TPO membrane with R-Tech insulfoam insulation is our top recommendation for Davis flat roofs. The insulation layer dramatically reduces heat transfer into the building, and the white membrane reflects solar radiation effectively — a combination that pays for itself in reduced cooling costs."},{q:"How long does a flat roof last in Davis?",a:"A properly installed Duro-Last® PVC or TPO flat roof in Davis typically lasts 20–30 years with annual maintenance. The key variables are membrane thickness, seam quality, and whether insulation was installed underneath. We recommend annual drain cleaning and inspection for all Davis flat roofs."}]},{citySlug:"napa",cityName:"Napa",county:"Napa County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-napa-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Tile Roof Replacement & Repair in Napa, CA — Wine Country Roofing Experts",metaDescription:"Expert tile roof replacement and repair in Napa, CA. Clay tile, concrete tile, underlayment replacement, winery roofing, and chimney repair for Napa Valley homes and commercial properties. Free estimates. CA Lic. #593448.",heroImage:"/napa-winery-gaf-composition-reroof-1.jpg",heroImageAlt:"GAF composition reroof on a Napa Valley winery property by Northern California Roofing Co.",category:"Tile Roofing",location:"Napa, CA",keywords:["tile roof Napa CA","roofing contractor Napa CA","Napa Valley roofing","clay tile roof Napa","concrete tile roof Napa","tile roof replacement Napa","winery roofing Napa Valley","Napa CA roofer"],intro:"Napa County's distinctive Mediterranean architecture is dominated by tile roofing — clay tiles on historic downtown homes, concrete tiles on hillside estates, and flat PVC membrane systems on wineries and commercial properties throughout the valley. Northern California Roofing Co. has been installing and repairing tile roofs throughout Napa Valley since 1990. From mortar re-bedding on a 1920s clay tile roof in Old Town Napa to a full concrete tile replacement on a Silverado Trail estate, our tile crews bring the detail that Napa Valley homeowners expect.",sections:[{heading:"Clay Tile vs. Concrete Tile — Which Is Right for Your Napa Home?",body:"Both clay and concrete tile are excellent choices for Napa's Mediterranean climate, but they differ significantly in weight, longevity, and cost. Clay tile is the traditional choice — denser, longer-lasting (60–100 years), heavier, and more expensive. Concrete tile is lighter, more affordable, and still delivers 40–50 years of reliable performance. For most Napa residential replacements, we recommend concrete tile for cost-effectiveness, with clay reserved for historic preservation projects or premium estate applications where authenticity and maximum longevity are priorities.",list:["Clay tile — 60–100 year lifespan, heavier (10–15 lbs/sq ft), premium cost","Concrete tile — 40–50 year lifespan, lighter (9–12 lbs/sq ft), more affordable","Spanish 'S' tile — classic Napa Valley style, available in both materials","Flat tile — cleaner modern aesthetic, common on contemporary Napa estate homes","Lightweight concrete tile — reduced dead load, ideal for pre-2000 framing systems"]},{heading:"Tile Roof Underlayment — The Hidden Factor Behind Napa Leaks",body:"Homeowners often assume that intact tile means a watertight roof. In reality, tile acts as armor — the water barrier is the underlayment beneath. Most underlayment systems installed before 2000 have long surpassed their useful life in Napa's climate, and cracked or delaminated underlayment under intact tile is the most common cause of water intrusion in older Napa homes. Our tile inspections always include an underlayment assessment. For full replacements, we install GAF TigerPaw™ or Polyglass POLYSTICK® high-performance underlayment designed specifically for tile systems."},{heading:"Winery & Commercial Roofing in Napa Valley",body:"Northern California Roofing Co. has completed roofing projects on Napa Valley wineries, tasting rooms, and agricultural structures throughout the valley. Commercial work in Napa typically involves: flat PVC or TPO membrane on production facilities, composition shingles or metal on barrel storage buildings, and tile matching or repair on historic tasting room structures. We understand the operational demands of winery properties and schedule work around harvest season and tasting room hours."},{heading:"Serving All of Napa County",body:"Our North Bay crews serve all of Napa County — Napa City, St. Helena, Calistoga, Yountville, American Canyon, and Pope Valley. We also serve southern Sonoma County communities. Our North Bay service line is 707-447-5655."}],faqs:[{q:"Can you match new tile to my existing Napa clay tile roof?",a:"We can often match clay and concrete tile profiles and colors, though exact matches for discontinued lines can be challenging. We source from multiple manufacturers and will provide tile samples before work begins. For small repairs, matching existing tile is typically possible."},{q:"How do I know if my Napa tile roof underlayment needs replacement?",a:"Signs include water stains on interior ceilings despite intact tile, mold or musty odors in the attic, visible daylight through the decking when viewed from inside, or a roof age over 20 years with original underlayment. Our free inspection includes an attic check 
57specifically for underlayment condition."},{q:"Do you service winery properties in Napa Valley?",a:"Yes — commercial and agricultural roofing is a significant part of our Napa Valley business. We work with winery owners and property managers on flat roof systems, composition reroofs, and historic tile repair, scheduling around operational requirements."}]},{citySlug:"vallejo",cityName:"Vallejo",county:"Solano County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-vallejo-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Vallejo, CA — Bay Moisture, Historic Homes & Long-Term Protection",metaDescription:"Roofing services in Vallejo, CA — algae-resistant shingles for bay moisture, historic Victorian home reroofs, and commercial flat roofing. Northern California Roofing Co. since 1990. Free estimates. CA Lic. #593448.",heroImage:"/pvc-duro-last-membrane-commercial-roofing-solano-county-ca.jpg",heroImageAlt:"Duro-Last PVC commercial membrane flat roof in Solano County near Vallejo, CA — Northern California Roofing Co.",category:"Residential Roofing",location:"Vallejo, CA",keywords:["roofing contractor Vallejo CA","Vallejo CA roofing","roof replacement Vallejo","historic home roofing Vallejo","Solano County roofer","Vallejo roofing company","Hiddenbrooke roofing","bay area roofing contractor Vallejo"],intro:"Vallejo sits at the northern edge of San Pablo Bay — a city with a diverse housing stock, from Victorian-era homes in the historic districts to mid-century bungalows in North Vallejo and newer construction in the Hiddenbrooke community. Bay moisture, marine layer, and occasional strong westerly winds create specific roofing challenges that differ from the inland Sacramento Valley. Since 1990, Northern California Roofing Co. has handled reroof projects throughout Vallejo, including many historic properties that require careful attention to architectural detail and period-appropriate materials.",sections:[{heading:"How Bay Moisture Affects Vallejo Roofs",body:"Vallejo's proximity to the bay means homes experience significantly more year-round moisture than inland cities like Vacaville or Woodland. This produces: faster algae and moss growth on roof surfaces (especially north-facing slopes), higher rates of wood rot at fascia boards and soffits, and more frequent flashing failures as metal components cycle through wider humidity ranges. For Vallejo homes, we always recommend algae-resistant shingle options — GAF Timberline HDZ® with StainGuard Plus or Malarkey Vista AR® — and we include a complete fascia and soffit inspection with every estimate."},{heading:"Historic Homes in Vallejo — Roofing Without Losing Character",body:"Vallejo's historic downtown neighborhoods feature Victorian and Craftsman homes that require thoughtful roofing choices to preserve architectural character. Some properties fall within the city's historic preservation overlay, which affects material and color choices. Our experience with Vallejo's historic housing stock means we know which shingle profiles best replicate the look of original wood shake, how to treat ridge caps on turn-of-the-century rooflines, and how to navigate the city's historic review process. We've completed dozens of reroof projects on Vallejo's Victorian-era homes.",list:["GAF Grand Sequoia® — closest dimensional profile to original hand-split shake","GAF Timberline HDZ® in Weatherwood or Charcoal — popular on mid-century Vallejo homes","Metal standing seam — appropriate for some Craftsman applications","Period-appropriate ridge cap detailing available for all profiles"]},{heading:"Flat Roof & Commercial Roofing in Vallejo",body:"Vallejo's commercial corridors — Sonoma Boulevard, Georgia Street, and the Mare Island waterfront area — include a significant inventory of flat-roof retail and commercial buildings. We handle these with Duro-Last® PVC and TPO membrane systems. We also service multi-family apartment buildings throughout Vallejo, which often have complex rooflines with multiple flat sections and penetrations requiring detailed flashing work."},{heading:"Serving Vallejo and Western Solano County",body:"We serve all of Vallejo including Hiddenbrooke, North Vallejo, Glen Cove, and the historic districts. Nearby cities we regularly work in: Benicia, Rodeo, Hercules, American Canyon, and Fairfield. Solano County service line: 707-447-5655."}],faqs:[{q:"Does bay moisture mean I need a specific type of roof in Vallejo?",a:"Bay moisture primarily calls for algae-resistant shingles and careful flashing work around all penetrations and wall intersections. We recommend GAF Timberline HDZ® with StainGuard Plus or Malarkey Vista AR® for Vallejo's coastal-influenced climate — both are rated for high-moisture environments."},{q:"Can you reroof historic homes in Vallejo's historic districts?",a:"Yes — we have extensive experience with Vallejo's Victorian and Craftsman-era homes. For properties within a historic overlay district, we review any applicable material or color restrictions before finalizing product selection and can assist with historic review applications."},{q:"Do you serve the Hiddenbrooke community in Vallejo?",a:"Yes — we regularly work in Hiddenbrooke, which has HOA roofing requirements. We're familiar with the community's architectural standards and confirm product compliance before work begins."}]},{citySlug:"woodland",cityName:"Woodland",county:"Yolo County",phone:"9
5716-978-9392",phoneHref:"tel:9169789392",urlSlug:"roofing-woodland-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Woodland, CA — Yolo County Residential & Agricultural Experts",metaDescription:"Complete roofing services in Woodland, CA — roof replacement, repair, agricultural building roofing, and metal roofing for Yolo County farms. Northern California Roofing Co. since 1990. Free estimates. CA Lic. #593448.",heroImage:"/malarkey-emerald-premium-composition-reroof-yolo-county-ca.jpg",heroImageAlt:"Aerial drone view of Malarkey Emerald Premium composition reroof in Yolo County CA — Northern California Roofing Co.",category:"Residential Roofing",location:"Woodland, CA",keywords:["roofing contractor Woodland CA","Woodland CA roofing","roof replacement Woodland CA","Yolo County roofer","agricultural roofing Woodland","Woodland CA roofer","Sacramento Valley roofing Woodland","barn roofing Yolo County"],intro:"Woodland is Yolo County's seat — a city of about 60,000 people anchored by agriculture, a historic downtown, and a growing residential base. Like all Sacramento Valley cities, Woodland bakes in summer heat and faces the challenge of keeping roofs intact through years of UV exposure, heavy winter rain, and occasional Diablo wind events. Northern California Roofing Co. has served Woodland homeowners, commercial property owners, and agricultural operations since our founding in 1990. Our Yolo County team is positioned for quick response across all of Woodland.",sections:[{heading:"Woodland's Climate — What It Means for Your Roof's Lifespan",body:"Woodland averages over 250 sunny days per year and summer highs regularly exceed 100°F. This UV load degrades standard asphalt shingles faster than manufacturer lifespans suggest — a 30-year shingle in Woodland may underperform its rating by 5–8 years without adequate attic ventilation and proper product selection. The Sacramento Valley's cold, wet winters with up to 18 inches of annual rainfall mean roof surfaces that aren't properly sealed at valleys, chimneys, and sidewall intersections become leak points within a few seasons."},{heading:"Best Roofing Products for Woodland, CA",body:"For Woodland's hot summers, we recommend products rated for high UV and thermal exposure. Our top picks for Woodland residential projects are Malarkey Emerald Premium (NEX polymer asphalt handles thermal expansion better than standard asphalt), GAF Timberline HDZ® (StainGuard Plus algae protection, excellent wind resistance), and CertainTeed Landmark TL® (dual-layer construction for superior dimensional stability).",list:["Malarkey Emerald Premium — NEX polymer asphalt, Class 4 impact resistance","GAF Timberline HDZ® — StainGuard Plus, WindProven™ unlimited wind warranty","CertainTeed Landmark TL® — dual-layer, 50-year warranty","Metal standing seam — 50+ year lifespan, ideal for agricultural buildings","Duro-Last® PVC — best system for flat commercial and agricultural structures"]},{heading:"Agricultural & Commercial Roofing in Woodland",body:"Woodland's agricultural identity means we regularly handle roofing on farm operation buildings, processing facilities, and agricultural storage structures. Standing-seam metal is our standard recommendation for ag buildings — the long-span panel system handles wide barn bays without intermediate fasteners, sheds water at any pitch, and can last 50+ years with minimal maintenance. We also handle commercial flat roofing on Woodland's retail and industrial buildings along E Street, Main Street, and the Highway 113 commercial corridor."},{heading:"Serving Woodland and Yolo County",body:"We serve all of Woodland — College Park, East Woodland, Spring Lake, and the downtown historic district. We also serve Winters, Knights Landing, Dunnigan, and rural Yolo County. Our Yolo County service line: 916-978-9392."}],faqs:[{q:"Do you handle agricultural building roofing in Woodland?",a:"Yes — we regularly work on farm buildings, processing facilities, and agricultural storage structures in the Woodland area, primarily using standing-seam metal and commercial flat roofing systems. No project is too large for our commercial crews."},{q:"What's the best roofing material for Woodland's hot summers?",a:"We most often recommend Malarkey Emerald Premium or GAF Timberline HDZ® for Woodland residential projects. Both are designed for high UV environments and include algae-resistant granules. Adequate attic ventilation is equally important — we include a ventilation asse
57ssment with every estimate."},{q:"Does Northern California Roofing serve rural Yolo County?",a:"Yes — we serve all of Yolo County, including rural properties, agricultural operations, and smaller communities like Winters, Knights Landing, and Dunnigan. No travel fees for locations within our Yolo County service area."}]},{citySlug:"concord",cityName:"Concord",county:"Contra Costa County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-concord-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Concord, CA — Fire-Resistant Roofs for the Diablo Valley",metaDescription:"Expert roofing in Concord, CA — Class A fire-rated products for Mt. Diablo fire zones, Diablo wind-rated fastening, and energy-efficient shingles for the East Bay. Northern California Roofing Co. Free estimates. CA Lic. #593448.",heroImage:"/gaf-grand-sequoia-shingle-roof-replacement-solano-county-ca.jpg",heroImageAlt:"GAF Grand Sequoia premium shingle roof replacement — Northern California Roofing Co.",category:"Residential Roofing",location:"Concord, CA",keywords:["roofing contractor Concord CA","Concord CA roofing","fire resistant roofing Concord","roof replacement Concord CA","Contra Costa County roofer","Diablo Valley roofing","Class A roofing Concord CA","Clayton CA roofing"],intro:"Concord is Contra Costa County's largest city, and its roofing needs are shaped by two major forces: proximity to the Mt. Diablo State Park wildfire interface and the East Bay's hot, dry summers. The hillside communities of Concord — Clayton Ranch, Lime Ridge, and the areas bordering Clayton — fall within State-Designated High Fire Hazard Severity Zones that require Class A fire-rated roofing by California law. Northern California Roofing Co. serves Concord homeowners with GAF, Malarkey, and metal roofing products built for both fire protection and East Bay durability.",sections:[{heading:"Fire-Resistant Roofing in Concord — What California Law Requires",body:"California Building Code Title 7A (Wildland-Urban Interface) requires Class A fire-rated roofing on all new and replacement roofing in State-Designated High Fire Hazard Severity Zones. In Concord, this affects hillside neighborhoods near Mt. Diablo, the Clayton Road corridor, and properties bordering open space. Class A is the highest fire-resistance rating, and virtually all modern composition shingles, metal panels, and tile products qualify — but not all low-cost products do. We confirm fire-rating compliance for all Concord projects before material selection is finalized.",list:["GAF Timberline HDZ® — Class A fire rated, WindProven™ unlimited wind warranty","Malarkey Emerald Premium — Class A, NEX polymer asphalt, Class 4 impact","Standing-seam metal — inherently Class A, 50+ year lifespan","Concrete tile — Class A, excellent thermal mass for East Bay climate","CertainTeed Landmark Premium — Class A, TL dual-layer design"]},{heading:"Concord's Diablo Wind Events — Why Fastening Patterns Matter",body:"Concord experiences Diablo wind events each fall — dry, northeast winds at 30–60 mph that can gust to 80 mph during extreme events. These winds have caused significant roof damage in Concord in recent years, particularly on older homes with original underlayment. For all Concord projects, we install 6-nail fastening patterns rather than the minimum 4-nail pattern — a simple upgrade that significantly improves wind resistance. We also install starter strips at all rakes and eaves, which is the single most effective measure against wind-driven shingle uplift."},{heading:"Energy-Efficient Roofing for Concord's Hot Summers",body:"Concord summers regularly reach 100°F+, and the East Bay heat dome limits overnight cooling. An energy-efficient roof with high SRI can reduce attic temperatures by 20–30°F compared to standard dark shingles — meaningful savings on cooling costs for a typical Concord home. We recommend ENERGY STAR®-rated shingles in lighter colors and provide free attic ventilation assessments with every estimate — inadequate ventilation is the most overlooked factor in roof performance."},{heading:"Serving Concord and the Diablo Valley",body:"We serve all of Concord — Clayton Ranch, Holbrook Heights, Dana Estates, and the downtown neighborhoods — as well as nearby Clayton, Walnut Creek, Pleasant Hill, and Martinez. Our North Bay/Contra Costa service line is 707-447-5655."}],faqs:[{q:"Does my Concord home need a Class A fire-rated roof?",a:"If your home is in a State-Designated High or Very High Fire Hazard Severity Zone — which includes most of Concord's hillside neighborhoods near Mt. Diablo — yes, California law requires Class A fire-rated roofing for replacements. We verify your property's fire zone status at no charge before recommending products."}
57,{q:"How do Diablo wind events affect roof warranties?",a:"Most manufacturer warranties have specific fastening requirements for wind coverage. We install all Concord roofs to meet the requirements for maximum wind coverage — including GAF's WindProven™ unlimited wind speed warranty where applicable."},{q:"Do you serve Clayton and Pleasant Hill as well as Concord?",a:"Yes. Our Contra Costa crews work throughout the Diablo Valley including Concord, Clayton, Pleasant Hill, Walnut Creek, and Martinez."}]},{citySlug:"elk-grove",cityName:"Elk Grove",county:"Sacramento County",phone:"916-978-9392",phoneHref:"tel:9169789392",urlSlug:"roofing-elk-grove-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roof Replacement in Elk Grove, CA — Experts for Sacramento's Fastest-Growing City",metaDescription:"Roof replacement guide for Elk Grove, CA — when to replace your 1990s–2000s subdivision shingles, HOA color approval, and ENERGY STAR options. Northern California Roofing Co. Free estimates. CA Lic. #593448.",heroImage:"/gaf-charcoal-composition-shingles-roof-replacement-solano-county-ca.jpg",heroImageAlt:"GAF charcoal composition shingle roof replacement by Northern California Roofing Co. — similar to Elk Grove residential projects",category:"Residential Roofing",location:"Elk Grove, CA",keywords:["roof replacement Elk Grove CA","roofing contractor Elk Grove CA","Elk Grove CA roofing","Sacramento County roofer","Laguna roofing contractor","Elk Grove roofer","best roofing company Elk Grove","GAF shingles Elk Grove CA"],intro:"Elk Grove has grown from a small community to Sacramento County's second-largest city in under two decades. That growth means a wide range of housing vintages — 1990s subdivisions in Laguna, early 2000s construction in Stonelake and Elk Grove Village, and newer builds in Cosumnes and Sterling. Northern California Roofing Co. serves the full spectrum of Elk Grove's housing market, from basic composition reroofs on older homes to premium GAF Golden Pledge® installations on newer construction. If you're due for a roof replacement in Elk Grove, here's what to expect.",sections:[{heading:"Elk Grove's Housing Stock — When It's Time to Replace",body:"Elk Grove's rapid expansion means many homes were built in tight construction cycles in the late 1990s and early 2000s — often using builder-grade materials that are now approaching end of life. A 1998 home in Laguna with original composition shingles is typically 25+ years old and showing the signs: granule accumulation in gutters, curling at the edges, flashing corrosion at chimneys. Our most common Elk Grove project is a full tear-off on a late-90s subdivision home, replacing original builder shingles with a premium product that will last another 30–40 years.",list:["Granules accumulating in gutters after rain — sign of advanced shingle wear","Shingle edges curling or cupping — indicates thermal cycling damage","Dark staining or moss on multiple roof faces","Flashing corrosion at chimney, pipes, or skylights","Attic showing daylight through the roof boards","Active leak or water stains on ceiling"]},{heading:"HOA Color Approval in Elk Grove Neighborhoods",body:"Elk Grove's many HOAs have varying restrictions on roofing colors and profiles. We work with the HOA approval process in every neighborhood we serve — from Laguna to Sheldon to Sterling. The most popular shingle colors in Elk Grove in 2025–2026 have been charcoal grey (GAF Charcoal, Malarkey Black Dusk), weathered wood tones (GAF Weatherwood, CertainTeed Heather Blend), and desert tan tones for stucco homes. We provide sample boards and renderings before any work is approved so you can see how the new roof will look on your home."},{heading:"Sacramento Valley Heat & Your Elk Grove Roof",body:"Elk Grove summers regularly exceed 100°F. Adequate attic ventilation is critical — without proper intake at soffit vents and exhaust at ridge or power vents, attic temperatures can reach 160°F+, shortening shingle life by 5–10 years. Every Elk Grove estimate includes a free ventilation asse
57ssment. We also offer ENERGY STAR®-rated shingle options for homeowners looking to reduce cooling costs through their new roof."},{heading:"Serving Elk Grove and South Sacramento County",body:"We serve all of Elk Grove — Laguna, Stonelake, Elk Grove Village, Cosumnes, Sterling, and surrounding areas. We also serve Galt, Rancho Cordova, and the southern Sacramento County corridor. Our Sacramento Valley line: 916-978-9392."}],faqs:[{q:"My Elk Grove home was built in the late 1990s — is it time for a new roof?",a:"Very likely, yes. Most builder-grade composition shingles installed in Elk Grove in the 1995–2005 era are now at or near end of life. Look for: granules in gutters after rain, curling or cupping shingle edges, dark staining on multiple roof faces, or daylight visible in the attic. We offer free inspections with no obligation."},{q:"Does my Elk Grove HOA need to approve my roof replacement?",a:"Most Elk Grove HOAs require prior approval for roof replacement color and material. We handle the HOA submittal process for you and have photo references from previously approved projects in most Elk Grove communities."},{q:"Do you offer financing for roof replacements in Elk Grove?",a:"Yes — we partner with roofing finance lenders to offer flexible payment options for Elk Grove homeowners. Ask about our current programs when you request your estimate."}]},{citySlug:"folsom",cityName:"Folsom",county:"Sacramento County",phone:"916-978-9392",phoneHref:"tel:9169789392",urlSlug:"roofing-folsom-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Tile Roof Replacement in Folsom, CA — Foothills Expertise & HOA-Ready Products",metaDescription:"Tile roof replacement and underlayment refresh in Folsom, CA — Empire Ranch, Broadstone, Iron Point, and Willow Creek. HOA approval handling included. Northern California Roofing Co. Free estimates. CA Lic. #593448.",heroImage:"/napa-tile-hurricane-system-repair-1.jpg",heroImageAlt:"Tile roof underlayment replacement and repair by Northern California Roofing Co. — similar work performed in Folsom, CA",category:"Tile Roofing",location:"Folsom, CA",keywords:["tile roof replacement Folsom CA","roofing contractor Folsom CA","Folsom CA roofing","HOA roofing Folsom","tile roof repair Folsom","Sacramento foothills roofing","El Dorado Hills roofing","Folsom roofer"],intro:"Folsom occupies a unique position at the Sierra Nevada foothills — a city where tile roofing dominates the upscale residential market, Folsom Lake breezes moderate summer heat, and many neighborhoods are governed by active HOAs with specific roofing standards. Northern California Roofing Co. has completed tile roof replacements, underlayment refreshes, and composition reroofs throughout Folsom, Broadstone, Willow Creek, and the El Dorado Hills corridor since 1990. If your Folsom tile roof is leaking, fading, or at end of underlayment life, here's everything you need to know.",sections:[{heading:"When Does a Tile Roof in Folsom Need Replacement?",body:"Tile itself rarely fails — it's the system beneath the tile (underlayment, flashing, and fasteners) that determines when replacement is needed. Most tile roofs installed in Folsom in the 1990s and early 2000s used 2-ply felt underlayment with a rated life of 20–25 years. Those systems are well past their effective life, and delaminated underlayment under intact tile is the most common cause of water intrusion in older Folsom homes. If your Folsom tile roof is more than 20 years old, an underlayment inspection is strongly recommended.",list:["Underlayment failure — most common cause of tile roof leaks in Folsom","Cracked or chipped tile — usually cosmetic, but creates water entry points","Mortar failure at ridge caps — cracks from heat cycling allow water intrusion","Flashing corrosion at chimneys, walls, and plumbing penetrations","Fastener corrosion — older tile fasteners rust and lose holding power over time"]},{heading:"Folsom HOA Tile Roof Requirements",body:"Many of Folsom's premier communities — Willow Creek Estates, Empire Ranch, Broadstone, and Iron Point — have CC&R requirements specifying tile profile, color range, and minimum weight. We maintain a current reference library of community standards for the neighborhoods we work in most frequently. Before finalizing any Folsom tile project, we confirm your community's requirements, present sample options within the approved palette, and manage HOA approval documentation and architectural review submissions on your behalf."},{heading:"Tile-Off Underlayment Replacement — Saving Your Existing Tile",body:"A full underlayment replacement (called a 'tile-off') involves carefully removing all tiles, replacing the underlayment, and reinstalling the original tiles. This is the most cost-effective approach when tile is in good condition. We budget for 5–15% tile replacement to account for breakage during the process — this is normal and expected, and we source matching tile from our supplier library before the job begins so color consistency is maintained."}
57,{heading:"Serving Folsom and the Sacramento Foothills",body:"We serve all of Folsom's neighborhoods — Willow Creek, Empire Ranch, Broadstone, Iron Point, and Natoma Village. We also work regularly in El Dorado Hills, Granite Bay, and Loomis. Our Sacramento foothills service line: 916-978-9392."}],faqs:[{q:"Can you replace only the underlayment on my Folsom tile roof without replacing the tile?",a:"Yes — a tile-off underlayment replacement is one of our most common Folsom services. We remove the tile, replace the underlayment, and reinstall the original tile (budgeting for ~5–15% replacement for breakage). It's significantly more cost-effective than a full tile replacement when the tile itself is in good condition."},{q:"What tile colors are approved in Folsom's HOA communities?",a:"This varies by community. Empire Ranch, Broadstone, and Willow Creek each have different approved palettes. We maintain HOA reference documents for Folsom's major communities and can confirm compliance before any material is ordered — at no extra charge."},{q:"Can you match my existing Folsom tile for a partial repair?",a:"We can often source close matches for discontinued tile lines. Our tile library includes samples from most manufacturers used in Folsom's 1990s–2000s construction era. We bring samples to every estimate appointment so you can see the match before committing."}]},{citySlug:"roseville",cityName:"Roseville",county:"Placer County",phone:"916-978-9392",phoneHref:"tel:9169789392",urlSlug:"roofing-roseville-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Roseville, CA — Placer County's Most Trusted Roofer",metaDescription:"Expert roofing contractor in Roseville, CA — HOA approval management, GAF Golden Pledge® warranty, Westpark, West Roseville, Del Webb, and all Placer County communities. Free estimates. CA Lic. #593448.",heroImage:"/gaf-grand-sequoia-shingle-roof-replacement-solano-county-ca.jpg",heroImageAlt:"GAF Grand Sequoia premium shingle roof replacement by Northern California Roofing Co. — serving Roseville, CA",category:"Residential Roofing",location:"Roseville, CA",keywords:["roofing contractor Roseville CA","Roseville CA roofing","roof replacement Roseville CA","Placer County roofer","Roseville roofing company","GAF Master Elite Roseville","Westpark roofing Roseville","best roofer Roseville CA"],intro:"Roseville is Placer County's largest city and one of the fastest-growing communities in Northern California. Its residential market spans builder-grade tract homes in West Roseville and Westpark to large custom homes in Del Webb and Stoneridge communities. Northern California Roofing Co. has served Roseville homeowners since 1990, and our Placer County estimators know every neighborhood, its HOA requirements, and the building department's permitting process. Here's what sets us apart from other Roseville roofing contractors.",sections:[{heading:"What to Expect from a Roseville Roof Replacement",body:"Roseville's climate is hot and dry in summer (regularly 100°F+) and wet in winter — a thermal cycle that is among the most demanding for composition shingles in California. Products that perform poorly in this cycle blister in summer and absorb moisture in winter, leading to premature failure. We spec shingles for Roseville based on their thermal performance data, not just their warranty length.",list:["Free estimate and inspection — typically within 2–3 business days","Permit from Roseville Building Division — pulled on your behalf","Full tear-off to bare decking — no overlays that void warranties","Deck inspection and repairs included as needed","Synthetic underlayment installation across full deck","Manufacturer-specified fastening for Placer County wind zone","3–5 day project turnaround for standard single-family home"]},{heading:"Roseville HOA Roofing — Managing CC&R Requirements",body:"Roseville has dozens of active HOA communities, each with their own architectural standards. Common requirements we encounter: specific shingle color palettes (usually neutral tones — grey, brown, tan), minimum weight/class requirements, ridge cap style requirements, and prohibition of contrasting accent colors. We manage the HOA approval process completely on your behalf — submitting samples, obtaining approval letters, and maintaining documentation. We've worked in virtually every Roseville HOA community and have pre-approved product selections in most of them."},{heading:"GAF Master Elite® & Golden Pledge® — The Strongest Warranty in Roseville",body:"Fewer than 3% of roofing contractors nationwide hold GAF Master Elite® certification. For Roseville homeowners, this matters because only Master Elite contractors can offer the GAF Golden Pledge® Limited Warranty — 25 or 50 years of coverage for both materials AND labor. GAF audits Master Elite contractors annually for insurance, licensing, and installation quality. Northern California Roofing Co. has held Master Elite status since 2013."},{heading:"Serving Roseville and All of Placer County",body:"We serve all of Roseville — Westpark, West Roseville, Fiddyment Farm, Diamond Oaks, Del Webb Sun City, and Stoneridge — as well as Rocklin, Lincoln, Loomis, Auburn, and surrounding Placer County. Our Sacramento/Placer County line: 916-978-9392."}],faqs:[{q:"What roofing permit does Roseville require?",a:"Roseville Building Division requires a permit for any full roof replacement. We pull all permits as part of the project — you don't need to contact the building department yourself, and the permit cost is included in your estimate."},{q:"Does my Roseville HOA need to pre-approve my new roof?",a:"Most Roseville HOAs require pre-approval for roofing material and color. We handle all HOA submittals and have existing approval documentation for most products in most Roseville communities — this service is included at no extra charge."},{q:"Do you serve Rocklin and Lincoln in addition to Roseville?",a:"Yes — we serve all of Placer County, including Rocklin, Lincoln, Loomis, Auburn, and Granite Bay, all with no travel surcharge."}]},{citySlug:"benicia",cityName:"Benicia",county:"Solano County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-benicia-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing in Benicia, CA — Historic Homes, Carquinez Winds & Bay-Tough Materials",metaDescription:"Expert roofing contractor in Benicia, CA — Carquinez wind-rated fastening, historic Victorian home reroofs, industrial waterfront flat roofing, and HOA products. Free estimates. CA Lic. #593448.",heroImage:"/pvc-duro-last-membrane-commercial-roofing-solano-county-ca.jpg",heroImageAlt:"Duro-Last PVC commercial membrane flat roofing in Solano County — Northern California Roofing Co. serving Benicia, CA",category:"Residential Roofing",location:"Benicia, CA",keywords:["roofing contractor Benicia CA","Benicia CA roofing","roof replacement Benicia","historic home roofing Benicia","Solano County roofer","Benicia roofing company","Carquinez Strait roofing contractor","Benicia CA roofer"],intro:"Benicia is one of California's best-preserved historic cities — a former state capital with a housing stock that includes Victorian, Craftsman, and Colonial Revival homes in its hillside neighborhoods, alongside industrial waterfront structures and modern residential developments on its newer east side. Northern California Roofing Co. has served Benicia homeowners since 1990, and our experience with the city's historic housing stock, its Carquinez Strait wind conditions, and the building department's requirements makes us the trusted choice for roofing in Benicia.",sections:[{heading:"Benicia's Unique Roofing Challenge — Carquinez Strait Winds",body:"Benicia's location on the Carquinez Strait means homes are exposed to some of the strongest sustained winds in Solano County. Strait gap winds regularly exceed 30 mph, with gusts reaching 50+ mph during wind events. This constant load puts unique stress on ridge caps, hip tiles, and flashing — the most common failure points on Benicia roofs. We install 6-nail fastening patterns and reinforced ridge caps for all Benicia projects, use wind-rated underlayment for Benicia's exposure category, and mechanically fasten all pipe boots and flashings rather than relying on caulk alone."},{heading:"Historic Home Roofing in Benicia — Preserving Character",body:"Benicia's historic First Street neighborhood and surrounding hillside communities include dozens of homes with original or period-appropriate roofing details. We work with Benicia homeowners to select composition shingle profiles that replicate the dimensional look of original wood shake — GAF's Grand Sequoia® is our most-used product for historic Benicia homes, as its multi-width, multi-thickness profile most closely mimics hand-split shake texture. For properties with active landmark status, we navigate the Benicia Historic Preservation Commission review process.",list:["GAF Grand Sequoia® — best dimensional profile for historic Benicia Victorians","CertainTeed Landmark Premium — popular for Craftsman bungalows","Period-appropriate ridge cap and hip treatments","Color matching to existing period paint palettes","Historic Commission documentation assistance available"]},{heading:"Industrial & Commercial Roofing in the Benicia Waterfront",body:"The Benicia Industrial Park and waterfront area are home to significant commercial and industrial roofing inventory. We handle TPO and Duro-Last® PVC systems for industrial buildings, with experience in the specific occupancy and access requirements of Benicia's industrial waterfront. We also handle roofing on live-work spaces and converted warehouse properties that have become popular in Benicia's arts community."},{heading:"Serving Benicia and Southern Solano County",body:"Our crews serve all of Benicia — the historic districts, Southampton, and the waterfront neighborhoods. Nearby cities we regularly serve: Vallejo, Martinez, American Canyon, and Hercules. Solano County line: 707-447-5655."}],faqs:[{q:"How do Carquinez Strait winds affect my Benicia roof?",a:"Strait gap winds are significantly stronger in Benicia than in inland Solano County. We account for this with enhanced 6-nail fastening patterns, reinfor
57ced ridge cap installation, and wind-speed-rated products on all Benicia projects."},{q:"Can you work on Benicia's historic homes without damaging architectural details?",a:"Yes — we have extensive experience with Benicia's Victorian and Craftsman housing stock. We use profile-appropriate shingles, protect existing trim and architectural details during work, and take extra care with homes that have historic significance."},{q:"Do you serve the Benicia Industrial Park area for commercial roofing?",a:"Yes — we handle commercial and industrial roofing throughout the Benicia waterfront and industrial park, including TPO and PVC membrane systems for large industrial buildings and waterfront properties."}]},{citySlug:"dixon",cityName:"Dixon",county:"Solano County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-dixon-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Dixon, CA — Small Town Service, Professional Results",metaDescription:"Licensed roofing contractor serving Dixon, CA — residential reroof, repair, and agricultural building roofing. 11 miles from Vacaville, no travel fees. Northern California Roofing Co. since 1990. CA Lic. #593448.",heroImage:"/vacaville-commercial-durolast-pvc-flat-reroof-1.jpg",heroImageAlt:"Duro-Last PVC commercial flat roof installation in Solano County by Northern California Roofing Co. — serving Dixon, CA",category:"Residential Roofing",location:"Dixon, CA",keywords:["roofing contractor Dixon CA","Dixon CA roofing","roof replacement Dixon CA","Solano County roofer Dixon","Dixon CA roofer","small town roofing contractor","I-80 corridor roofing","agricultural roofing Dixon CA"],intro:"Dixon is a community of just over 21,000 on the I-80 corridor between Vacaville and Davis — where longtime homeowners, newer residents, and agricultural operations all need reliable roofing service. Northern California Roofing Co. is headquartered 11 miles east in Vacaville, making Dixon one of our most frequently served communities. Dixon customers get the same licensed, insured, GAF Master Elite® certified crew that serves Solano County's larger cities — with no travel fees and next-day response on most projects.",sections:[{heading:"Dixon's Most Common Roofing Problems",body:"Dixon's housing stock is a mix of older 1960s–1980s ranch homes north of I-80 and newer subdivisions built in the 2000s to the east and south of the downtown core. The older homes frequently have original 3-tab composition shingles that have long passed their useful life. The newer homes are approaching the 20+ year mark where underlayment replacement becomes a consideration.",list:["3-tab shingle failure on pre-2000 homes — granule loss, edge curling","Pipe boot cracking — most common single-point leak source on any Dixon roof","Ridge vent damage from wind events along the I-80 corridor","Sagging gutters pulling fascia away from the roof deck","Agricultural dust and ash staining on lighter-colored roof surfaces"]},{heading:"What's Different About Roofing in a Small Town",body:"Dixon's smaller community means work happens differently than in Sacramento or Fairfield. Permits move faster through a smaller building department. Neighbors notice your work. Reputation travels quickly. We've built our Dixon business on word-of-mouth — our customers refer us to their neighbors, and we take that trust seriously. Every Dixon project gets the same attention as a large Vacaville commercial job: detailed written estimate, permit pulled before work starts, licensed crew, full cleanup before we leave, and a signed warranty in your hands at completion."},{heading:"Agricultural & Rural Property Roofing Near Dixon",body:"Dixon is surrounded by agricultural land, and we regularly handle roofing on farm operation buildings, agricultural storage structures, and rural residential properties. Standing-seam metal is our standard recommendation for farm buildings — the long-span panel system handles wide barn bays, sheds water at any pitch, and can last 50+ years with minimal maintenance. For rural residential properties, we provide the same full-service approach as any suburban project, including permit coordination with Solano County."},{heading:"Serving Dixon and the Western Sacramento Valley",body:"We serve Dixon and surrounding communities including Elmira, Winters, Dunnigan, and rural Yolo and Solano County. No travel fees for Dixon projects. Our Solano County line: 707-447-5655."}],faqs:[{q:"Do you charge a travel fee for Dixon roofing projects?",a:"No — Dixon is part of our standard service area. We're based 11 miles away in Vacaville and serve Dixon with no travel surcharge."},{q:"How quickly can you schedule an estimate in Dixon?",a:"Typically within 2–5 business days. For emergencie
57s — active leaks or storm damage — we prioritize same-day or next-day response."},{q:"Do you handle rural property roofing outside Dixon city limits?",a:"Yes. We regularly work on rural Solano and Yolo County properties, farm buildings, and agricultural structures in the Dixon corridor. Call us at 707-447-5655."}]},{citySlug:"west-sacramento",cityName:"West Sacramento",county:"Yolo County",phone:"916-978-9392",phoneHref:"tel:9169789392",urlSlug:"roofing-west-sacramento-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Flat Roof Replacement in West Sacramento, CA — TPO, PVC & Commercial Experts",metaDescription:"Commercial and residential flat roof replacement in West Sacramento, CA — TPO, Duro-Last PVC, roof coatings, and annual maintenance. Northern California Roofing Co. since 1990. Free estimates. CA Lic. #593448.",heroImage:"/pittsburg-commercial-tpo-roof-maintenance-1.jpg",heroImageAlt:"Commercial TPO flat roof maintenance and repair by Northern California Roofing Co. — serving West Sacramento, CA",category:"Flat / Low-Slope Roofing",location:"West Sacramento, CA",keywords:["flat roof West Sacramento CA","roofing contractor West Sacramento CA","commercial roofing West Sacramento","TPO roofing West Sacramento","Duro-Last West Sacramento","Yolo County flat roofing","West Sacramento roofer","commercial flat roof Sacramento County"],intro:"West Sacramento is a city in transformation — a growing urban center on the west bank of the Sacramento River with a mix of industrial warehouse buildings, commercial corridors, mixed-use developments, and residential neighborhoods from older bungalows to new infill construction. Flat and low-slope roofing dominates West Sacramento's commercial and industrial inventory and is increasingly common in residential infill projects. Northern California Roofing Co. has been the go-to flat roofing contractor for West Sacramento properties since 1990, handling everything from single-story retail to multi-unit apartment complexes.",sections:[{heading:"The Three Flat Roof Systems We Install in West Sacramento",body:"West Sacramento's commercial and industrial flat roof market is served by three systems, and we install all three. TPO (thermoplastic polyolefin) is the most widely specified for new commercial construction and re-roofs — ENERGY STAR® rated, cost-effective, and durable in Sacramento's climate. Duro-Last® PVC is our premium recommendation for building owners who want the longest warranty and the most durable seam system — factory-fabricated to minimize on-site seams, with a 15-year system warranty. Modified bitumen remains appropriate for smaller or more complex rooftop geometries where single-ply isn't ideal.",list:["TPO — ENERGY STAR® rated, excellent value for large flat spans","Duro-Last® PVC — factory-fabricated seams, heat-welded, 15-year system warranty","Modified bitumen — torch-applied for complex geometries","Silicone/elastomeric coatings — extend existing flat roof life by 8–12 years","Tapered insulation systems — correct drainage on improperly sloped flat roofs"]},{heading:"West Sacramento's Mixed-Use & Residential Infill Market",body:"West Sacramento's Bridge District, SACA district, and Washington neighborhood have seen significant residential and mixed-use development. Many new buildings incorporate flat or low-slope roof elements requiring PVC or TPO membrane systems. We work with developers, general contractors, and property owners on new construction flat roofing and re-roofing, providing detailed specifications and installation documentation required for developer and lender compliance."},{heading:"Flat Roof Maintenance in West Sacramento — Why It Matters",body:"Flat roofs that aren't maintained fail early. Sacramento Valley summers create thermal expansion in membrane seams, and standing water from inadequate drain maintenance accelerates membrane degradation. We recommend annual inspections for all West Sacramento flat roofs — a professional inspection typically costs under $300 and can identify issues before they become $15,000+ replacements. We offer annual maintenance agreements for commercial property managers, covering twice-yearly inspection, drain clearing, and minor seam repairs."},{heading:"Serving West Sacramento and Yolo County",body:"We serve all of West Sacramento — the Bridge District, Washington neighborhood, and the industrial 
57corridors along South River Road. We also serve nearby Sacramento, Davis, and Woodland. Our Yolo/Sacramento line: 916-978-9392."}],faqs:[{q:"How long does a TPO flat roof last in West Sacramento?",a:"A properly installed 60-mil TPO flat roof in West Sacramento typically lasts 15–25 years. Higher-grade 80-mil products can last 25+ years. Annual drain maintenance and seam inspections significantly extend service life."},{q:"Can you coat my existing West Sacramento flat roof instead of replacing it?",a:"In some cases, yes. If the existing membrane is structurally sound and properly adhered, a silicone or elastomeric coating can extend its life by 8–12 years at a fraction of replacement cost. We inspect the existing roof before recommending coating vs. full replacement."},{q:"Do you handle residential flat roofs in West Sacramento?",a:"Yes — flat and low-slope residential roofs are common in West Sacramento's bungalow and infill housing stock. We install Duro-Last® PVC and GAF EverGuard TPO on residential low-slope applications as well as commercial buildings."}]},{citySlug:"walnut-creek",cityName:"Walnut Creek",county:"Contra Costa County",phone:"707-447-5655",phoneHref:"tel:7074475655",urlSlug:"roofing-walnut-creek-ca",publishedDate:"2026-06-01",publishedDateDisplay:"June 2026",title:"Roofing Contractor in Walnut Creek, CA — Premium Roofs for the Diablo Valley",metaDescription:"Premium roofing contractor in Walnut Creek, CA — Class A fire-rated roofing for Lime Ridge fire zones, GAF Golden Pledge® warranty, HOA approval management. Northern California Roofing Co. Free estimates. CA Lic. #593448.",heroImage:"/ncr-metal-roof-residential-fire-hazard-zone-vacaville-ca.jpg",heroImageAlt:"Standing-seam metal roof on a residential fire hazard zone home by Northern California Roofing Co. — serving Walnut Creek, CA",category:"Residential Roofing",location:"Walnut Creek, CA",keywords:["roofing contractor Walnut Creek CA","Walnut Creek CA roofing","fire resistant roofing Walnut Creek","roof replacement Walnut Creek CA","Contra Costa County roofer","premium roofing Walnut Creek","Diablo Valley roofing","GAF Master Elite Walnut Creek"],intro:"Walnut Creek is the premium residential and commercial hub of Contra Costa County — a city of custom homes, active HOAs, and high construction standards where homeowners expect the best materials and the cleanest installation. The foothills communities bordering Lime Ridge Open Space and Mt. Diablo State Park sit within California's designated High Fire Hazard Severity Zones, requiring Class A fire-rated roofing by state law. Northern California Roofing Co. brings GAF Master Elite® quality to Walnut Creek, with crews that understand the city's premium market expectations, HOA requirements, and fire zone compliance needs.",sections:[{heading:"Walnut Creek's Fire Zone Roofing Requirements",body:"Walnut Creek's hillside neighborhoods — Northgate, Tice Valley, Rudgear Estates, and communities bordering Lime Ridge — are within State-Designated High Fire Hazard Severity Zones. California Building Code Title 7A requires Class A fire-rated roofing for all new and replacement roofing in these zones. Every product we specify for Walnut Creek hillside homes is Class A rated. We verify each property's fire zone designation before finalizing product specifications — at no charge.",list:["GAF Grand Sequoia® — Class A, premium dimensional shingle for Walnut Creek estates","Metal standing seam — Class A, 50+ year lifespan, maximum fire protection","Concrete tile — Class A, traditional Diablo Valley aesthetic","GAF Timberline HDZ® — Class A, most popular HOA-approved shingle in Walnut Creek","CertainTeed Landmark Premium — Class A, dual-layer, wind-rated"]},{heading:"Premium Roofing Products for Walnut Creek Homeowners",body:"Walnut Creek's residential market demands premium products — and we deliver them. Our most specified products for Walnut Creek include GAF's Grand Sequoia® (large-format, multi-thickness shingle that provides the most realistic wood shake appearance), CertainTeed Landmark Premium TL (dual-layer with superior dimensional stability for East Bay summer heat), and standing-seam metal panels for hillside estates seeking maximum fire protection and longevity. For all Walnut Creek projects, we offer GAF Golden Pledge® warranty coverage — covering both materials and labor for 25–50 years."},{heading:"Walnut Creek HOA Roofing — We Handle the Approval Process",body:"Walnut Creek's many HOA communities — Tice Valley, Northgate, Rudgear, Countrywood, and others — have specific architectural standards for roofing material, color, and profile. We've worked in virtually every Walnut Creek HOA and maintain a current reference library of community standards. We handle the architectural review submittal process completely on your behalf — samples, documentation, and approval tracking — so you don't navigate the HOA process yourself."},{heading:"Serving Walnut Creek and the Diablo Valley",body:"Our crews serve all of Walnut Creek — Northgate, Tice Valley, Larkey Park, and surrounding areas — as well as Pleasant Hill, Lafayette, Orinda, and Danville. Our Contra Costa/North Bay service line: 707-447-5655."}
57],faqs:[{q:"Is my Walnut Creek home in a fire hazard zone?",a:"Many of Walnut Creek's hillside neighborhoods — particularly those bordering Lime Ridge and Mt. Diablo — are in State-Designated High or Very High Fire Hazard Severity Zones. We verify your specific address's designation at no charge as part of every estimate."},{q:"What's the best roofing product for a Walnut Creek hillside estate?",a:"For maximum fire protection and longevity, we recommend standing-seam metal roofing. For a traditional Diablo Valley aesthetic, concrete tile or GAF Grand Sequoia® delivers excellent performance and curb appeal. All options are Class A fire-rated."},{q:"Do you offer GAF Golden Pledge® warranty in Walnut Creek?",a:"Yes — as a GAF Master Elite® contractor, we're one of the few roofers in the Bay Area who can offer Golden Pledge® coverage, which protects both materials AND labor for 25 or 50 years — the strongest residential roofing warranty available."}]}],iV=Object.fromEntries(Sm.map(e=>[e.citySlug,e])),oV=[{slug:"malarkey-emerald-premium-composition-reroof-yolo-county",title:"Malarkey Emerald Premium Composition Reroof — Yolo County, CA",date:"October 2025",location:"Yolo County, CA",excerpt:"Aerial drone footage captures a full residential reroof in progress in Yolo County. We used Malarkey Emerald Premium composition shingles — a top-tier, algae-resistant product built for Northern California's heat and wet winters.",image:"/malarkey-emerald-premium-composition-reroof-yolo-county-ca.jpg",imageAlt:"Aerial drone view of Malarkey Emerald Premium composition reroof in progress in Yolo County CA",category:"Residential Roofing"},{slug:"metal-roofing-fire-hazard-zones-northern-california",title:"Metal Roofing in Fire Hazard Zones — The Smart Choice for Northern California Homeowners",date:"December 2025",location:"Northern California",excerpt:"If your home sits in a High or Very High Fire Hazard Severity Zone, your roof is your first line of defense. Learn why standing-seam metal roofing is the gold standard for wildfire-resilient homes — and what sets it apart from every other material.",image:"/ncr-metal-roof-residential-fire-hazard-zone-vacaville-ca.jpg",imageAlt:"Completed standing-seam metal roof installation on a residential home in a Northern California f
57ire hazard zone",category:"Residential Roofing"},{slug:"duro-last-rtech-insulfoam-flat-roof-davis-ca",title:"Full Low-Slope Roof Replacement in Davis, CA — Duro-Last® PVC Over R-Tech Insulfoam",date:"May 2026",location:"Davis, CA",excerpt:"Before and after a complete flat roof replacement in Davis: R-Tech insulfoam boards laid across the full deck, then Duro-Last® PVC heat-welded over the top. Learn why the insulation layer is the most overlooked upgrade in any low-slope roofing project — and what it means for your energy bills in the Sacramento Valley.",image:"/duro-last-pvc-rtech-insulfoam-installation-davis-ca-complete.jpg",imageAlt:"Completed Duro-Last PVC white membrane flat roof installation in Davis CA with R-Tech insulfoam insulation beneath — Northern California Roofing Co.",category:"Flat / Low-Slope Roofing"},{slug:"malarkey-duro-last-color-match-roof-replacement",title:"One Roof, Two Systems, Perfect Color Match — Malarkey Shingles + Duro-Last® PVC",date:"April 2026",location:"Northern California",excerpt:"A hybrid roof replacement using Malarkey composition shingles on the pitched sections and color-matched Duro-Last® PVC on the flat section — two best-in-class systems that look like one. See how we coordinate the color match and integrate the systems at the transition.",image:"/malarkey-composition-duro-last-pvc-color-match-roof-replacement.jpg",imageAlt:"Completed hybrid roof replacement with Malarkey composition shingles and color-matched Duro-Last PVC flat section — Northern California Roofing Co.",category:"Roof Replacement"},{slug:"tile-roof-chimney-repair-napa-ca",title:"Tile Roof Chimney Repair in Napa — Why the Chimney Is the #1 Leak Point on a Tile Roof",date:"March 2026",location:"Napa, CA",excerpt:"A clay tile chimney repair in Napa — old flashing stripped, waterproof membrane installed, tiles relaid. Learn why chimney-to-roof transitions fail, what a proper repair involves, and the warning signs every tile roof homeowner should watch for.",image:"/tile-roof-chimney-repair-napa-ca.jpg",imageAlt:"Tile roof chimney repair in progress in Napa CA — exposed underlayment, waterproof flashing, and clay tiles ready for reinstallation",category:"Tile Roofing"},{slug:"flat-roof-maintenance-northern-california",title:"Why Flat Roofs Need Regular Maintenance — And What Happens When You Skip It",date:"February 2026",location:"Northern California",excerpt:"A crack along a seam, a torch in hand — this is what deferred flat roof maintenance looks like up close. Learn the six most common flat roof problems, the annual routine that prevents them, and the warning signs every property owner needs to know.",image:"/flat-roof-crack-repair-maintenance-northern-california.jpg",imageAlt:"Technician heat-welding a crack on a flat commercial roof — Northern California Roofing Co. roof repair service",category:"Roof Repair"},{slug:"duro-last-pvc-commercial-roofing-northern-california",title:"Why Duro-Last® PVC Is the Gold Standard for Commercial Flat Roofing in Northern California",date:"April 2026",location:"Northern California",excerpt:"An aerial look at a completed Duro-Last® PVC single-ply commercial roof — custom-fabricated flashings, heat-welded seams, and a reflective white surface that meets California Title 24 Cool Roof requirements. Here's why we've trusted Duro-Last for commercial projects since 2008.",image:"/duro-last-pvc-commercial-roof.jpg",imageAlt:"Aerial drone view of a completed Duro-Last PVC single-ply commercial flat roof with HVAC units — Northern California Roofing Co.",category:"Commercial Roofing"}],iw=[{id:"residential",label:"Residential Roofing",icon:ls},{id:"commercial",label:"Commercial Roofing",icon:Jt},{id:"repair",label:"Roof Repair",icon:ki},{id:"replacement",label:"Roof Replacement",icon:Yc},{id:"gutters",label:"Gutter Services",icon:_n},{id:"solar",label:"Solar Roofing",icon:Vm},{id:"flat",label:"Flat / Low-Slope Roofing",icon:fk},{id:"tile",label:"Tile Roofing",icon:yc}],sV={residential:"Residential Roofing",commercial:"Commercial Roofing",repair:"Roof Repair",replacement:"Roof Replacement",gutters:"Gutter Services",solar:"Solar Roofing",flat:"Flat / Low-Slope Roofing",tile:"Tile Roofing"};function lV({post:e}){return r.jsxs("article",{className:"bg-white shadow-md hover:shadow-xl transition-shadow rounded-sm overflow-hidden flex flex-col",children:[r.jsx(Z,{href:`/blog/${e.slug}`,children:r.jsx("img",{src:e.image,alt:e.imageAlt,className:"w-full h-52 object-cover hover:scale-105 transition-transform duration-300",loading:"lazy"})}),r.jsxs("div",{className:"p-6 flex flex-col flex-1",children:[r.jsxs("div",{className:"flex items-center gap-4 text-xs text-gray-400 mb-3",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," ",e.date]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," ",e.location]})]}),r.jsx("h3",{className:"text-lg font-serif font-bold text-[#113753] mb-3 leading-snug",children:r.jsx(Z,{href:`/blog/${e.slug}`,className:"hover:text-[#0693E3] transition-colors",children:e.title})}),r.jsx("p",{className:"text-gray-600 text-sm flex-1 mb-4",children:e.excerpt}),r.jsxs(Z,{href:`/blog/${e.slug}`,className:"inline-flex items-center gap-2 text-[#0693E3] font-bold text-sm hover:gap-3 transition-all","aria-label":`Read full post: ${e.title}`,children:["READ MORE ",r.jsx(Jo,{size:14,"aria-hidden":"true"})]})]})]})}function cV({label:e}){return r.jsxs("div",{className:"col-span-full flex flex-col items-center justify-center py-14 text-center border-2 border-dashed border-gray-200 rounded-sm bg-white",children:[r.jsx("p",{className:"text-gray-400 font-semibold text-sm uppercase tracking-widest mb-2",children:"Coming Soon"}),r.jsxs("p",{className:"text-gray-500 text-sm max-w-sm",children:["We're working on project spotlights and tips for our ",e," services. Check back soon."]})]})}function dV(){const e=aV();return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:"Roofing Blog — Project Spotlights & Tips",description:"Browse roofing project spotlights, expert tips, and local insights from Northern California Roofing Co. Serving Solano, Yolo, Sacramento & Napa Counties since 1990.",canonicalPath:"/blog",ogType:"website",jsonLd:e}
57),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx("section",{className:"bg-[#113753] text-white py-16 text-center",children:r.jsxs("div",{className:"container mx-auto px-4",children:[r.jsx("p",{className:"text-[#0693E3] font-bold tracking-widest text-sm uppercase mb-3",children:"Project Spotlights & Tips"}),r.jsx("h1",{className:"text-4xl md:text-5xl font-serif font-bold mb-4",children:"Roofing Blog"}),r.jsx("p",{className:"text-lg text-gray-300 max-w-2xl mx-auto",children:"Explore posts by service type — from residential reroofs to commercial flat roofing, gutters, solar, and more."})]})}),r.jsx("nav",{"aria-label":"Blog sections",className:"bg-white border-b border-gray-200 sticky top-0 z-40 shadow-sm",children:r.jsx("div",{className:"container mx-auto px-4",children:r.jsx("ul",{className:"flex gap-0 overflow-x-auto scrollbar-hide",children:iw.map(({id:a,label:i,icon:s})=>r.jsx("li",{children:r.jsxs("a",{href:`#${a}`,className:"flex items-center gap-1.5 px-4 py-3 text-xs font-bold text-[#113753] hover:text-[#0693E3] hover:border-b-2 hover:border-[#0693E3] whitespace-nowrap transition-colors",children:[r.jsx(s,{size:13,"aria-hidden":"true"}),i]})},a))})})}),r.jsx("section",{id:"city-guides","aria-labelledby":"city-guides-heading",className:"py-16 bg-[#113753]",children:r.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[r.jsxs("div",{className:"flex items-center gap-3 mb-8 pb-4 border-b-2 border-[#0693E3]",children:[r.jsx("div",{className:"bg-[#0693E3] text-white p-2 rounded-sm",children:r.jsx(gk,{size:20,"aria-hidden":"true"})}),r.jsx("h2",{id:"city-guides-heading",className:"font-serif text-2xl font-bold text-white",children:"City Roofing Guides"}),r.jsxs("span",{className:"ml-auto text-xs font-bold text-[#0693E3] bg-[#0693E3]/20 px-2 py-1 rounded-full",children:[Sm.length," guides"]})]}),r.jsx("p",{className:"text-gray-300 mb-8 max-w-2xl",children:"Hyper-local roofing guides for every city we serve — climate challenges, best products, permit requirements, HOA considerations, and more."}),r.jsx("div",{className:"grid gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5",children:Sm.map(a=>r.jsxs(Z,{href:`/blog/${a.urlSlug}`,className:"group bg-white/10 hover:bg-[#0693E3] border border-white/20 hover:border-[#0693E3] rounded-sm p-4 transition-all",children:[r.jsxs("div",{className:"flex items-start justify-between gap-2",children:[r.jsxs("div",{children:[r.jsxs("p",{className:"font-bold text-white text-sm group-hover:text-white leading-tight",children:[a.cityName,", CA"]}),r.jsx("p",{className:"text-gray-400 group-hover:text-white/80 text-xs mt-1",children:a.county})]}),r.jsx(Jo,{size:14,className:"text-[#0693E3] group-hover:text-white mt-0.5 shrink-0","aria-hidden":"true"})]}),r.jsx("p",{className:"text-gray-400 group-hover:text-white/70 text-xs mt-3 leading-relaxed line-clamp-2",children:a.category})]},a.citySlug))})]})}),r.jsx("div",{className:"bg-gray-50",children:iw.map(({id:a,label:i,icon:s},c)=>{const d=oV.filter(f=>f.category===sV[a]);return r.jsx("section",{id:a,"aria-labelledby":`section-${a}`,className:`py-16 ${c%2===0?"bg-gray-50":"bg-white"}`,children:r.jsxs("div",{className:"container mx-auto px-4 max-w-6xl",children:[r.jsxs("div",{className:"flex items-center gap-3 mb-8 pb-4 border-b-2 border-[#113753]",children:[r.jsx("div",{className:"bg-[#113753] text-white p-2 rounded-sm",children:r.jsx(s,{size:20,"aria-hidden":"true"})}),r.jsx("h2",{id:`section-${a}`,className:"font-serif text-2xl font-bold text-[#113753]",children:i}),d.length>0&&r.jsxs("span",{className:"ml-auto text-xs font-bold text-[#0693E3] bg-[#0693E3]/10 px-2 py-1 rounded-full",children:[d.length," ",d.length===1?"post":"posts"]})]}),r.jsx("div",{className:"grid gap-8 md:grid-cols-2 lg:grid-cols-3",children:d.length>0?d.map(f=>r.jsx(lV,{post:f},f.slug)):r.jsx(cV,{label:i})})]})},a)})})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}function Qn({src:e,alt:a,objectPosition:i="center"}){return r.jsxs("div",{className:"relative w-full h-64 md:h-80 overflow-hidden bg-[#113753]",children:[r.jsx("div",{className:"absolute inset-0 scale-110","aria-hidden":"true",style:{backgroundImage:`url(${e})`,backgroundSize:"cover",backgroundPosition:i,filter:"blur(18px) brightness(0.45) saturate(0.6)"}}),r.jsx("img",{src:e,alt:a,className:"relative z-10 w-full h-full object-contain",style:{objectPosition:i}})]})}const mh="https://northerncaliforniaroofing.com",ow="Malarkey Emerald Premium Reroof — Yolo County, CA",sw="See our completed Malarkey Emerald Premium composition reroof in Yolo County, CA. Class 4 impact resistance, algae-resistant granules, and a lifetime warranty. Free estimates — CA Lic. #593448.",lw="/malarkey-emerald-premium-composition-reroof-yolo-county-ca.jpg",cw="Aerial drone view of Malarkey Emerald Premium composition reroof in progress in Yolo County CA — Northern California Roofing Co.",dw=["Malarkey Emerald Premium reroof","composition roofing Yolo County CA","residential reroof Davis CA","Woodland CA roofing contractor","Sacramento Valley roofing","Class 4 impact resistant shingles","algae resistant shingles Northern California","Northern California Roofing Co."];function uV(){const e=Xn({headline:ow,description:sw,url:`${mh}/blog/malarkey-emerald-premium-reroof-yolo-county`,imageUrl:`${mh}${lw}`,imageAlt:cw,datePublished:"2025-10-15",keywords:dw});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:ow,description:sw,canonicalPath:"/blog/malarkey-emerald-premium-reroof-yolo-county",ogImage:`${mh}${lw}`,ogImageAlt:cw,ogType:"article",article:{publishedTime:"2025-10-15T00:00:00Z",section:"Residential Roofing",keywords:dw},jsonLd:e}
57),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:"/malarkey-emerald-premium-composition-reroof-yolo-county-ca.jpg",alt:"Aerial drone view of Malarkey Emerald Premium composition reroof in progress in Yolo County CA by Northern California Roofing Co."}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," October 15, 2025"]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," Yolo County, CA"]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:"Project Spotlight"})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:"Malarkey Emerald Premium Composition Reroof — Yolo County, CA"}),r.jsxs("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:["This aerial drone photo captures one of our full residential reroof projects in Yolo County at its mid-point — decking exposed, tear-off complete, and our crew staged for shingle installation. The product chosen for this home was ",r.jsx("strong",{children:"Malarkey Emerald Premium"}),", a high-performance composition shingle built for Northern California's demanding climate."]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Why Malarkey Emerald Premium?"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Malarkey's Emerald Premium line is one of the best impact- and algae-resistant composition shingles on the market. Key advantages for homeowners in Yolo County and the greater Sacramento Valley include:"}),r.jsxs("ul",{className:"list-disc list-inside text-gray-700 space-y-2 mb-6 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Class 4 impact resistance"})," — the highest rating available, ideal for hail and wind-driven debris"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"NEX Polymer Modified Asphalt"})," — Malarkey's proprietary formula that makes shingles more flexible and resistant to cracking in extreme heat"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Smog-reducing granules"})," — StreakFighter technology prevents the black algae staining common in Northern California's wet seasons"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Lifetime limited warranty"})," — backed by Malarkey's manufacturer guarantee and our workmanship warranty"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Energy efficiency"})," — reflective granules help reduce attic heat gain during Sacramento Valley's triple-digit summers"]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Our Reroof Process in Yolo County"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Every reroof we complete follows a proven process developed over 35 years of work across Northern California:"}),r.jsxs("ol",{className:"list-decimal list-inside text-gray-700 space-y-3 mb-6 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Free inspection and estimate"})," — we assess the existing roof, decking condition, and ventilation before recommending products"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Full tear-off"})," — we remove all existing shingle layers down to the decking, inspect and replace any damaged boards"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Underlayment installation"})," — synthetic underlayment is installed across the full deck for moisture protection"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Shingle installation"})," — Malarkey Emerald Premium shingles are installed per manufacturer specs, including proper nailing patterns and starter strips"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Flashing and detail work"}
57)," — all valleys, ridges, pipe boots, and eave edges are sealed and flashed correctly"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Full cleanup"})," — magnetic nail sweeps, debris removal, and a final walkthrough with the homeowner"]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Serving Yolo County and the Sacramento Valley"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"Northern California Roofing Co. has been the trusted roofing contractor for homeowners across Yolo County — including Woodland, Davis, West Sacramento, Winters, and Esparto — since 1990. We're fully licensed, bonded, and insured in California, and we carry a dedicated Yolo/Sacramento phone line for local customers."}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 mt-12 text-center",children:[r.jsx("h3",{className:"text-2xl font-serif font-bold mb-3",children:"Ready for a New Roof?"}),r.jsx("p",{className:"text-gray-300 mb-6",children:"Get a free, no-obligation estimate from Northern California's most trusted roofing contractor."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"GET FREE ESTIMATE"}),r.jsxs("a",{href:"tel:9169789392",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors inline-flex items-center justify-center gap-2",children:[r.jsx(Ye,{size:16,"aria-hidden":"true"})," CALL 916-978-9392"]})]})]})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const ph="https://northerncaliforniaroofing.com",uw="Metal Roofing in Fire Hazard Zones — Northern California",fw="Protect your home with Class A fire-rated standing-seam metal roofing. Serving CAL FIRE hazard zones across Solano, Napa & Sacramento Counties since 1990. Free estimate — CA Lic. #593448.",hw="/ncr-metal-roof-residential-fire-hazard-zone-vacaville-ca.jpg",mw="Standing-seam metal roof installation on a residential home in a Northern California f
57ire hazard zone — Northern California Roofing Co.",pw=["metal roofing fire hazard zone Northern California","standing seam metal roof Vacaville CA","FHSZ roofing Solano County","fire resistant roofing Napa County","Class A fire rated roof","wildfire resilient roofing Sacramento Valley","metal roof contractor Vacaville","Northern California Roofing Co."];function fV(){const e=Xn({headline:uw,description:fw,url:`${ph}/blog/metal-roofing-fire-hazard-zones-northern-california`,imageUrl:`${ph}${hw}`,imageAlt:mw,datePublished:"2025-12-08",keywords:pw});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:uw,description:fw,canonicalPath:"/blog/metal-roofing-fire-hazard-zones-northern-california",ogImage:`${ph}${hw}`,ogImageAlt:mw,ogType:"article",article:{publishedTime:"2025-12-08T00:00:00Z",section:"Residential Roofing",keywords:pw},jsonLd:e}),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:"/ncr-metal-roof-residential-fire-hazard-zone-vacaville-ca.jpg",alt:"Completed standing-seam metal roof installation on a residential home in Northern California f
57ire hazard zone — Northern California Roofing Co.",objectPosition:"top"}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog#residential",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," December 8, 2025"]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," Northern California"]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:"Residential Roofing"}),r.jsxs("span",{className:"bg-red-100 text-red-700 px-2 py-0.5 rounded font-semibold flex items-center gap-1",children:[r.jsx(db,{size:11,"aria-hidden":"true"})," Fire Hazard Zone"]})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:"Metal Roofing in Fire Hazard Zones — The Smart Choice for Northern California Homeowners"}),r.jsx("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:"If your home sits in a High or Very High Fire Hazard Severity Zone (FHSZ) — and in Northern California, many do — your roof is the single most important line of defense against ember intrusion and radiant heat. Standing-seam metal roofing has emerged as the gold standard for wildfire-resilient homes, and it's exactly what we installed on this project. Here's why more homeowners across Solano, Napa, and the surrounding foothills are making the switch."}),r.jsx("div",{className:"bg-red-50 border-l-4 border-red-500 rounded-sm p-5 mb-8",children:r.jsxs("p",{className:"text-red-800 font-semibold text-sm leading-relaxed",children:[r.jsx("strong",{children:"Did you know?"})," CAL FIRE designates large portions of Northern California as High or Very High Fire Hazard Severity Zones. Homes in these zones are legally required to meet stricter roofing standards — and metal roofing exceeds all of them."]})}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Why Metal Roofing Outperforms Every Other Option in Fire Country"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"Not all roofing materials are created equal when it comes to wildfire exposure. Composition shingles, wood shake, and even some tile products can ignite from ember showers — a major cause of home losses in California wildfires. Metal roofing changes that equation entirely."}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5 mb-10",children:[r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(KC,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Class A Fire Rating"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Metal roofing carries the highest possible fire-resistance classification. It won't ignite from direct flame contact or floating embers, and it doesn't spread fire across the roof surface."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(db,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Ember Resistance"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Wildfires travel up to a mile ahead of the fire front via windborne embers. A standing-seam metal roof leaves no gaps, crevices, or vulnerable spots where embers can lodge and ignite."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(ZC,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"50+ Year Lifespan"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"A properly installed metal roof can outlast two or three composition roofs. It handles Northern California's freeze-thaw cycles, summer heat, and winter rains without cracking, warping, or losing granules."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Pm,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Insurance Savings"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Many California homeowners in FHSZ areas have seen significant reductions in their premiums — or regained coverage entirely — after switching to a Class A metal roof. Some insurers now specifically require it."})]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Standing-Seam vs. Exposed-Fastener Metal Roofing"}),r.jsxs("p",{className:"text-gray-700 leading-relaxed mb-4",children:["Not all metal roofs are the same. For fire hazard zones, we recommend and install ",r.jsx("strong",{children:"standing-seam metal roofing"})," — the kind you see in the photo above. Here's why it's the superior choice:"]}),r.jsxs("ul",{className:"list-disc list-inside text-gray-700 space-y-3 mb-6 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"No exp
57osed fasteners"})," — screws and washers are hidden beneath the seams, eliminating the penetration points where water and embers can infiltrate over time"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Floating panel design"})," — panels lock together at raised seams, allowing thermal expansion and contraction without buckling or cracking the roof"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Continuous coverage"})," — no gaps, no overlaps prone to wind lift, no joints where debris can accumulate and become a fire fuel source"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Clean, modern aesthetic"})," — the low-profile standing seam look has become increasingly popular in the foothills and rural Northern California communities"]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"What to Know Before You Install"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Metal roofing requires specific expertise to install correctly. Common mistakes — improper panel alignment, missing closure strips, incorrect flashing at the chimney and valleys — can undermine the fire resistance and weather performance you're paying for. A few things homeowners should understand:"}),r.jsxs("ol",{className:"list-decimal list-inside text-gray-700 space-y-3 mb-6 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Permits are required"})," — roofing in a FHSZ in California requires permits and must comply with your local jurisdiction's fire safety codes, including WUI (Wildland-Urban Interface) construction standards"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Underlayment matters"})," — metal roofing should be installed over a code-compliant fire-rated underlayment, not just standard felt"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Attic vents need protection"})," — even with a metal roof, unprotected soffit and ridge vents are ember entry points; ember-resistant vents should be installed at the same time"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Weight is lighter than you think"})," — modern metal roofing weighs significantly less than tile and typically requires no structural upgrades"]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Serving Fire Hazard Zone Communities Across Northern California"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"Northern California Roofing Co. has been installing metal roofs across Solano, Napa, Yolo, Sacramento, and Lake Counties since 1990. We work regularly in communities that fall within FHSZ designations — including the hills above Vacaville, the Napa foothills, and areas throughout the greater Sacramento Valley. We're fully licensed (CA Lic. #593448), bonded, and insured, and we pull all required permits on every job."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"If you've been told your home is in a fire hazard zone, if your insurer is raising premiums or threatening non-renewal, or if you simply want the most durable and fire-resistant roof available — call us. We'll come out, assess your existing roof, and give you an honest recommendation and a free estimate."}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 mt-12 text-center",children:[r.jsx("h3",{className:"text-2xl font-serif font-bold mb-3",children:"Protect Your Home — Get a Free Metal Roofing Estimate"}),r.jsx("p",{className:"text-gray-300 mb-6",children:"We serve Solano, Napa, Yolo, Sacramento, and surrounding Northern California counties. CA Lic. #593448."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"GET FREE ESTIMATE"}),r.jsxs("a",{href:"tel:7074475655",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors inline-flex items-center justify-center gap-2",children:[r.jsx(Ye,{size:16,"aria-hidden":"true"})," SOLANO: 707-447-5655"]}),r.jsxs("a",{href:"tel:9169789392",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors inline-flex items-center justify-center gap-2",children:[r.jsx(Ye,{size:16,"aria-hidden":"true"})," YOLO/SAC: 916-978-9392"]})]})]})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const gh="https://northerncaliforniaroofing.com",gw="Duro-Last® PVC Commercial Roofing — Northern California",yw="Certified Duro-Last® contractor since 2008. We install PVC single-ply commercial roofing with factory-prefabricated flashings across Solano, Sacramento & Yolo Counties. Free assessment — CA Lic. #593448.",xw="/duro-last-pvc-commercial-roof.jpg",vw="Aerial drone view of completed Duro-Last PVC single-ply commercial flat roof with HVAC units — Northern California Roofing Co.",bw=["Duro-Last PVC commercial roofing Northern California","commercial flat roof contractor Sacramento Valley","single-ply membrane roofing Vacaville CA","Duro-Last certified contractor California","commercial reroof Solano County","PVC roofing warehouse Sacramento","cool roof Title 24 commercial","Northern California Roofing Co."];function hV(){const e=Xn({headline:gw,description:yw,url:`${gh}/blog/duro-last-pvc-commercial-roofing-northern-california`,imageUrl:`${gh}${xw}`,imageAlt:vw,datePublished:"2026-04-07",keywords:bw});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:gw,description:yw,canonicalPath:"/blog/duro-last-pvc-commercial-roofing-northern-california",ogImage:`${gh}${xw}`,ogImageAlt:vw,ogType:"article",article:{publishedTime:"2026-04-07T00:00:00Z",section:"Commercial Roofing",keywords:bw},jsonLd:e}
57),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:"/duro-last-pvc-commercial-roof.jpg",alt:"Aerial drone view of a completed Duro-Last PVC single-ply commercial roofing installation — Northern California Roofing Co."}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog#commercial",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," April 7, 2026"]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," Northern California"]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:"Commercial Roofing"}),r.jsx("span",{className:"bg-emerald-100 text-emerald-700 px-2 py-0.5 rounded font-semibold",children:"Duro-Last® PVC"})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:"Why Duro-Last® PVC Is the Gold Standard for Commercial Flat Roofing in Northern California"}),r.jsx("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:"The aerial shot above tells a story that every facility manager and commercial property owner should see: a pristine white Duro-Last® PVC single-ply membrane stretched across a large commercial rooftop, HVAC equipment set cleanly into custom fabricated flashings, and not a seam out of place. This is what a properly installed Duro-Last roof looks like from above — and it's exactly what we deliver on every commercial project."}),r.jsx("div",{className:"bg-[#0693E3]/10 border-l-4 border-[#0693E3] rounded-sm p-5 mb-8",children:r.jsxs("p",{className:"text-[#113753] font-semibold text-sm leading-relaxed",children:[r.jsx("strong",{children:"Duro-Last® Certified Contractor:"})," Northern California Roofing Co. has been a Duro-Last Certified contractor since 2008. That certification means factory-trained installer
57s, access to prefabricated custom flashings, and a warranty backed by the manufacturer — not just our labor."]})}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"What Is Duro-Last® PVC Roofing?"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Duro-Last is a thermoplastic PVC (polyvinyl chloride) single-ply membrane system — one of the most widely specified commercial roofing products in the country. Unlike built-up roofing (BUR) or modified bitumen systems that are assembled piece by piece on the roof, up to 85% of a Duro-Last roof is prefabricated in a factory to the exact dimensions of your building. That means fewer seams, less on-site labor time, and dramatically higher quality control."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"For flat and low-slope roofs common on commercial buildings, warehouses, retail centers, and industrial facilities throughout the Sacramento Valley and Bay Area, Duro-Last has been a go-to solution for decades. And in our experience, it earns that reputation every time."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-6",children:"Six Reasons Commercial Property Owners Choose Duro-Last"}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5 mb-10",children:[r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(KC,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Superior Watertight Performance"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"PVC is inherently waterproof and chemically resistant. Duro-Last's heat-welded seams are stronger than the membrane itself, eliminating the most common failure point on commercial flat roofs."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(XC,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Energy Efficiency"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"The highly reflective white surface meets ENERGY STAR® and California Title 24 Cool Roof requirements. Buildings in California's hot Central Valley can see meaningful reductions in cooling loads — and lower utility bills — from day one."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx($C,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Minimal Business Disruption"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Because the panels are prefabricated off-site, installation is fast. Less time on your roof means less noise, less mess, and less disruption to your tenants or operations. Many commercial installations are completed in a fraction of the time of traditional systems."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(_n,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Chemical & Grease Resistance"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"PVC resists degradation from ponding water, industrial chemicals, and rooftop grease — a critical advantage for restaurants, food processing facilities, and industrial buildings where other membranes fail prematurely."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Pm,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Long-Term Value"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"With a 15-year or 20-year manufacturer's warranty available (covering both material and labor on qualifying installations), Duro-Last offers an outstanding total cost of ownership. Fewer repairs and a proven lifespan of 20+ years make it one of the smartest commercial roofing investments available."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(ZC,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Custom-Fabricated Flashings"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"HVAC curbs, pipes, drains, and parapet walls are all flashed with factory-made custom pieces — not field-cut patchwork. This precision is why Duro-Last roofs consistently outperform field-fabricated alternatives over the long haul."})]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"What You See in This Photo"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"The aerial image captures one of our completed Duro-Last installations. Notice the uniformly white membrane — that's the reflective PVC surface at work, bouncing solar energy back into the atmosphere rather than transferring it into the building below. The multiple HVAC rooftop units are each integrated 
57with custom-fabricated PVC curb flashings, ensuring a watertight seal at every penetration point."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"The absence of visible seams across the field of the roof is not an accident — it's the result of Duro-Last's prefabrication process. Fewer seams means fewer potential leak points, and that translates directly to lower long-term maintenance costs for the building owner."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Is Duro-Last Right for Your Commercial Building?"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Duro-Last is an excellent fit for nearly any flat or low-slope commercial roof — warehouses, office buildings, retail strips, schools, medical facilities, and more. It can be installed over most existing roof systems (eliminating costly tear-off in many cases) and performs reliably in Northern California's climate extremes: summer heat, wet winters, and the UV intensity of the Sacramento Valley."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"We've been a Duro-Last Certified contractor for over 15 years. Our team has installed Duro-Last systems on buildings of all sizes across Solano, Yolo, Sacramento, and Napa counties. If your commercial roof is aging, leaking, or due for replacement, we'd welcome the conversation."}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 text-center",children:[r.jsx("h3",{className:"text-2xl font-serif font-bold mb-3",children:"Get a Free Commercial Roof Assessment"}),r.jsx("p",{className:"text-gray-300 mb-6 max-w-lg mx-auto text-sm leading-relaxed",children:"We serve commercial properties within 60 miles of Vacaville, CA — including Solano, Yolo, Sacramento, Napa, and Contra Costa counties. Reach out for a no-obligation evaluation."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"REQUEST FREE ESTIMATE"}),r.jsxs("a",{href:"tel:+17074475655",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Solano County: 707-447-5655",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"707-447-5655"]})]})]}),r.jsx("div",{className:"mt-10",children:r.jsxs(Z,{href:"/blog#commercial",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO ALL POSTS"]})})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const yh="https://northerncaliforniaroofing.com",ww="Why Flat Roofs Need Regular Maintenance — Northern California",Cw="Flat roofs are uniquely vulnerable to cracks, ponding water, and seam failures. Learn the maintenance routine that prevents costly repairs — and the warning signs every property owner should know. Serving Vacaville, Sacramento & Solano County.",Sw="/flat-roof-crack-repair-maintenance-northern-california.jpg",xh="Technician using a heat-welding torch to seal a crack on a flat commercial roof — Northern California Roofing Co. roof repair service",jw=["flat roof maintenance Northern California","flat roof repair Vacaville CA","commercial roof maintenance Sacramento Valley","ponding water flat roof Solano County","roof crack repair Yolo County","flat roof inspection contractor","low slope roof maintenance Northern California","Northern California Roofing Co."];function mV(){const e=Xn({headline:ww,description:Cw,url:`${yh}/blog/flat-roof-maintenance-northern-california`,imageUrl:`${yh}${Sw}`,imageAlt:xh,datePublished:"2026-02-12",keywords:jw});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:ww,description:Cw,canonicalPath:"/blog/flat-roof-maintenance-northern-california",ogImage:`${yh}${Sw}`,ogImageAlt:xh,ogType:"article",article:{publishedTime:"2026-02-12T00:00:00Z",section:"Roof Repair",ke
57ywords:jw},jsonLd:e}),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:"/flat-roof-crack-repair-maintenance-northern-california.jpg",alt:xh}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog#repair",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," February 12, 2026"]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," Northern California"]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:"Roof Repair"}),r.jsxs("span",{className:"bg-amber-100 text-amber-700 px-2 py-0.5 rounded font-semibold flex items-center gap-1",children:[r.jsx($o,{size:11,"aria-hidden":"true"})," Flat & Low-Slope Roofs"]})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:"Why Flat Roofs Need Regular Maintenance — And What Happens When You Skip It"}),r.jsx("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:"The photo above captures something we see on flat roofs across Northern California more often than we'd like: a crack running along a seam, a torch in hand, and a repair that could have been avoided with one routine inspection a year. Flat and low-slope roofing systems are workhorses — they protect warehouses, commercial buildings, and apartment complexes year after year — but they demand consistent attention in a way that pitched roofs simply don't."}),r.jsx("div",{className:"bg-amber-50 border-l-4 border-amber-500 rounded-sm p-5 mb-8",children:r.jsxs("p",{className:"text-amber-900 font-semibold text-sm leading-relaxed",children:[r.jsx("strong",{children:"The #1 mistake flat roof owners make:"}),' treating the roof as "out of sight, out of mind." By the time a flat roof leak shows up inside a building, water has typically been sitting on or under the membrane for weeks — and the damage is far more extensive (and expensive) than what a simple maintenance visit would have caught.']})}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Why Flat Roofs Are More Vulnerable Than Pitched Roofs"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Gravity does a lot of heavy lifting on a pitched roof — rain and debris slide right off. Flat and low-slope roofs (anything under a 2:12 pitch) don't have that advantage. Water moves slowly, debris accumulates, and the membrane takes the full brunt of UV exposure, thermal cycling, and foot traffic year after year."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"In Northern California's climate — scorching Sacramento Valley summers, wet winters, and temperature swings that can run 60°F or more in a single day — those stresses are amplified. PVC, TPO, modified bitumen, and built-up roofing all expand and contract with temperature changes. Over time, without maintenance, seams pull apart, flashings lift, and small cracks like the one in our photo become water highways straight into your building."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-6",children:"The Six Most Common Flat Roof Problems We Find"}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5 mb-10",children:[r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(_n,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Ponding Water"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Water that sits for more than 48 hours after rain is a red flag. It adds weight, accelerates membrane degradation, and eventually finds any weak seam or penetration to enter through. Blocked drains are the most common cause."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx($o,{className:"text-amber-500",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Seam & Membrane Cracks"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Exactly what you see in our photo. Thermal exp
57ansion and UV degradation cause seams to separate and the membrane surface to crack — especially at penetrations, curbs, and transitions between materials."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(ki,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Flashing Failures"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Flashings at walls, parapet edges, HVAC curbs, and drains are the most leak-prone spots on any flat roof. They're also the first place to check — and the easiest to re-seal during a routine maintenance visit before they fail."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx($o,{className:"text-amber-500",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Blistering & Bubbling"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Trapped moisture or air beneath the membrane causes blisters. Left alone, they rupture — especially in summer heat — and create open wounds in the roofing system that require immediate repair."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(_n,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Clogged or Damaged Drains"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Flat roofs depend on functional drains and scuppers to move water off. Leaves, debris, and even bird nests can block drains entirely. A single blocked drain can hold thousands of gallons of water — far beyond the roof's designed load."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Pm,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Neglected Penetrations"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Every pipe, conduit, HVAC unit, and exhaust stack that passes through a flat roof is a potential leak point. The sealant and pitch pockets around penetrations dry out and crack over time — and need resealing every few years."})]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"The Annual Flat Roof Maintenance Routine We Recommend"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"For most flat and low-slope roofs, a twice-yearly inspection and maintenance visit — ideally in the fall before the rainy season, and in the spring after it — is the minimum we recommend. Here's what a proper maintenance visit covers:"}),r.jsxs("ol",{className:"list-decimal list-inside text-gray-700 space-y-3 mb-8 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Full membrane inspection"})," — walking the entire surface to identify cracks, blisters, splits, and areas of standing water or discoloration"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Seam and flashing inspection"})," — checking all heat-welded seams, lapped seams, and flashing terminations for separation or lifting"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Drain and scupper cleaning"})," — clearing all debris from drains, scuppers, and gutters to ensure water can evacuate freely"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Penetration resealing"})," — inspecting and resealing pitch pockets, pipe boots, and curb flashings as needed"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Minor repairs on the spot"})," — small cracks and seam separations (like the one in our photo) are heat-welded or patched during the visit, before they become major leaks"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Written report"})," — a maintenance report documenting current conditions and recommended action, useful for warranty records and budget planning"]})]}),r.jsxs("div",{className:"bg-[#113753]/5 border border-[#113753]/20 rounded-sm p-6 mb-10",children:[r.jsx("h3",{className:"font-serif text-xl font-bold text-[#113753] mb-3",children:"What You're Seeing in This Photo"}),r.jsx("p",{className:"text-gray-700 text-sm leading-relaxed",children:"The image shows one of our technicians using a heat-welding torch on a flat roof surface where a crack has developed along a seam. This is a textbook example of a repair that was caught during a rout
57ine inspection — the crack is clean, localized, and straightforward to weld closed. Had this roof gone another 12–18 months without attention, water would have worked beneath the membrane and the repair scope (and cost) would have multiplied. This is precisely why we advocate for annual maintenance agreements: finding and fixing this takes less than an hour. Discovering it after a major leak can mean tearing out insulation, decking, and interior ceilings."})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"How Much Does Flat Roof Maintenance Cost?"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"A routine flat roof maintenance visit costs a fraction of what a single emergency repair costs — and an order of magnitude less than a premature full replacement. As a general benchmark:"}),r.jsxs("ul",{className:"list-disc list-inside text-gray-700 space-y-2 mb-6 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Annual inspection and minor maintenance"})," — significantly less than an emergency leak call-out"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Seam repair / patching"})," — a localized repair like the one shown is quick and inexpensive when caught early"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Emergency leak repair after prolonged neglect"})," — can easily run into thousands of dollars once interior damage is factored in"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Premature full roof replacement"})," — a flat roof that should last 20+ years can be forced into early replacement at the 10–12 year mark without adequate maintenance"]})]}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"The math is simple: a consistent maintenance program pays for itself many times over across the life of the roof."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Warning Signs Your Flat Roof Needs Attention Now"}),r.jsx("div",{className:"space-y-3 mb-10",children:["Water stains on interior ceilings or walls after rain","Visible cracks, splits, or blistering on the roof surface","Standing water that hasn't drained 48+ hours after rain","Loose, lifted, or missing flashing at walls, parapets, or HVAC units","Bubbling, wrinkling, or separation in the membrane","Debris buildup around drains or scuppers","Your roof is 7+ years old and has never been professionally inspected"].map(a=>r.jsxs("div",{className:"flex items-start gap-3 bg-red-50 border border-red-100 rounded-sm p-4",children:[r.jsx($o,{className:"text-red-500 mt-0.5 shrink-0",size:16,"aria-hidden":"true"}),r.jsx("p",{className:"text-gray-700 text-sm",children:a})]},a))}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Serving Flat Roof Owners Across Northern California"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"We maintain and repair flat and low-slope roofing systems of all types — PVC, TPO, EPDM, modified bitumen, and built-up roofing — across Solano, Yolo, Sacramento, and Napa Counties. Whether you manage a single commercial building in Vacaville or a portfolio of properties across the Sacramento Valley, we offer maintenance programs tailored to keep your roofs performing and your warranty coverage intact."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"We're fully licensed (CA Lic. #593448), bonded, and insured. Every maintenance visit is documented and every repair is backed by our workmanship warranty."}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 text-center",children:[r.jsx("h3",{className:"text-2xl font-serif font-bold mb-3",children:"Schedule Your Flat Roof Inspection"}),r.jsx("p",{className:"text-gray-300 mb-6 max-w-lg mx-auto text-sm leading-relaxed",children:"Don't wait for a leak to find out your flat roof needs attention. We serve commercial and residential properties within 60 miles of Vacaville, CA — no-obligation assessments available."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"REQUEST INSPECTION"}),r.jsxs("a",{href:"tel:+17074475655",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Solano County: 707-447-5655",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"707-447-5655"]}),r.jsxs("a",{href:"tel:+19169789392",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Yolo / Sacramento: 916-978-9392",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"916-978-9392"]})]})]}),r.jsx("div",{className:"mt-10",children:r.jsxs(Z,{href:"/blog#repair",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO ALL POSTS"]})})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const vh="https://northerncaliforniaroofing.com",Nw="Tile Roof Chimney Repair — Napa, CA Project Spotlight",Aw="See how we repaired a failing tile roof chimney in Napa, CA — new underlayment, waterproof flashing, and reinstalled clay tiles. Learn why chimney-to-roof transitions are the #1 tile leak point. Free estimates — CA Lic. #593448.",Tw="/tile-roof-chimney-repair-napa-ca.jpg",bh="Tile roof chimney repair in progress in N
57apa CA — exposed underlayment, waterproof flashing, and clay tiles staged for reinstallation — Northern California Roofing Co.",Ew=["tile roof chimney repair Napa CA","clay tile roofing repair Northern California","chimney flashing repair Napa County","tile roof leak repair Vacaville","tile roofing contractor Napa Valley","clay tile reroof Solano County","chimney waterproofing Northern California","Northern California Roofing Co."];function pV(){const e=Xn({headline:Nw,description:Aw,url:`${vh}/blog/tile-roof-chimney-repair-napa-ca`,imageUrl:`${vh}${Tw}`,imageAlt:bh,datePublished:"2026-03-20",keywords:Ew});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:Nw,description:Aw,canonicalPath:"/blog/tile-roof-chimney-repair-napa-ca",ogImage:`${vh}${Tw}`,ogImageAlt:bh,ogType:"article",article:{publishedTime:"2026-03-20T00:00:00Z",section:"Tile Roofing",keywords:Ew},jsonLd:e}),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:"/tile-roof-chimney-repair-napa-ca.jpg",alt:bh,objectPosition:"top"}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog#tile",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," March 20, 2026"]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," Napa, CA"]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:"Tile Roofing"}),r.jsxs("span",{className:"bg-orange-100 text-orange-700 px-2 py-0.5 rounded font-semibold flex items-center gap-1",children:[r.jsx(ki,{size:11,"aria-hidden":"true"})," Chimney Repair"]})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:"Tile Roof Chimney Repair in Napa — Why the Chimney Is the #1 Leak Point on a Tile Roof"}),r.jsx("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:"The photo above is from a repair we completed on a clay tile roof in Napa, CA. You can see the chimney fully exposed — old tiles pulled back, fresh waterproofing membrane visible in blue along the chimney base, and new tiles staged on the roof ready for reinstallation. It's a clean, methodical repair on one of the most common problem areas we encounter on tile roofs throughout Napa and Solano Counties. Here's what this job involved, and why the chimney-to-roof transition demands special attention on any tile roof."}),r.jsx("div",{className:"bg-orange-50 border-l-4 border-orange-500 rounded-sm p-5 mb-8",children:r.jsxs("p",{className:"text-orange-900 font-semibold text-sm leading-relaxed",children:[r.jsx("strong",{children:"Industry fact:"})," The majority of tile roof leaks originate not from the tiles themselves — which are virtually impervious to water — but from the flashing, underlayment, and sealant at transition points like chimneys, skylights, and valleys. A tile that looks fine from the street can be sitting over a failed flashing that's been leaking for years."]})}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"What You're Seeing in This Photo"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Our crew has pulled back the clay tiles on either side of the chimney and removed the old, failed flashing. The blue waterproofing layer visible along the chimney base is a self-adhering modified bitumen membrane — essentially a flexible, watertight boot that seals the junction between the vertical masonry chimney face and the sloped tile roof surface below. This is the critical layer. Without it properly installed and sealed, every rain event sends water behind the chimney and straight into the roof assembly."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"Once the new underlayment and step flashing are set, the clay tiles are relaid in the original pattern and the ridge and hip details are finished. On this Napa home, the tiles were in excellent condition — no replacement needed — so the entire cost of this repair was focused on the flashing and underlayment, which is exactly where the problem was."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Why Chimney Flashing Fails on Tile Roofs"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Tile roofs are renowned for their longevity — clay and concrete tile can last 50 years or more with proper care. But that reputation sometimes creates a false sense of security: homeowners assume that because the tiles look intact, the roof is fine. The tiles are only part of the system. What fails first is almost always the flashing and underlayment at transitions, and chimneys are the most vulnerable spot for several reasons:"}),r.jsxs("ul",{className:"list-disc list-inside text-gray-700 space-y-3 mb-8 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Two different materials meeting at an angle"})," — masonry chimney expands and contracts at a different rate than the roofing assembly, stressing any sealant or flashing at the joint with every temperature cycle"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"High wind and water exposure"})," — chimneys protrude above the roofline and take the full brunt of driven rain from multiple directions, especially during Napa's winter storms"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Sealant degradation"})," — roofing caulk and sealants used around chimney flashings have a finite life, typically 5–10 years in Northern California's UV and heat exposure, after which they crack and allow water infiltration"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Original installation shortcuts"})," — on many older homes, chimney flashing was installed without proper step flashing integration into the tile courses, relying entirely on sealant to do the waterproofing work"]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Debris accumulation"})," — leaves and debris collect against the chimney base, trapping moisture against the flashing and accelerating its deterioration"]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-6",children:"What a Proper Tile 
57Chimney Repair Involves"}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5 mb-10",children:[r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(ki,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Tile Removal & Inspection"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Tiles on both sides of the chimney are carefully removed and set aside. Each tile is inspected for chips, cracks, or color fade. On most jobs, the tiles are reusable — only broken ones need replacement."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Jt,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Old Flashing Removal"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"All existing flashing — base flashing, step flashing, counter flashing, and any sealant — is stripped out completely. We never patch over failed flashing; it comes out entirely."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(_n,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Waterproof Membrane & Step Flashing"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"A self-adhering waterproof membrane is applied to the chimney base (the blue layer visible in our photo), followed by properly lapped metal step flashing integrated into each tile course — the correct method for a permanent watertight seal."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Jt,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Counter Flashing into Mortar"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Counter flashing is cut into the chimney mortar joints and sealed with elastomeric sealant. This locks the flashing to the masonry and creates a second line of defense against water tracking down the chimney face."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(nt,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Tile Reinstallation"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Original tiles are reinstalled in the correct pattern with appropriate mortar or clips per manufacturer spec. Ridge and hip mortar is matched to the existing profile and color as closely as possible."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx($C,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Final Inspection & Water Test"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"We inspect every flashing lap, every tile course, and every sealant termination before we leave. On request, we water-test the chimney area to confirm there are no remaining pathways for infiltration."})]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Signs Your Tile Chimney Needs Attention"}),r.jsx("div",{className:"space-y-3 mb-10",children:["Water stains on interior walls or ceiling near the fireplace after rain","Visible gaps or lifted sections in the flashing around the chimney base","Cracked, crumbling, or missing mortar along the chimney cap or crown","Rust stains running down the chimney face from deteriorating metal flashing","Efflorescence (white mineral deposits) on the chimney masonry — a sign of water infiltration","Tiles near the chimney that rock or are clearly not seated flush","Your tile roof is 15+ years old and the chimney flashing has never been replaced"].map(a=>r.jsxs("div",{className:"flex items-start gap-3 bg-amber-50 border border-amber-100 rounded-sm p-4",children:[r.jsx($o,{className:"text-amber-500 mt-0.5 shrink-0",size:16,"aria-hidden":"true"}),r.jsx("p",{className:"text-gray-700 text-sm",children:a})]},a))}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Clay vs. Concrete Tile — Does It Affect Chimney Repairs?"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"The chimney repair process is essentially the same regardless of whether your roof has clay or concrete tile. The key variables are matching the tile profile (S-curve, flat, barrel, etc.) and sourcing any replacement tiles that match the color of your existing field tile — which can be more challenging on older homes with discontinued products."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"Clay tile, like the terracotta tiles on the Napa home in our photo, is particularly durable and often holds its color well over decades, making it easier to blend replacement pieces. We carry relationships with tile suppliers across California and can usually match or closely approximate discontinued profiles."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Serving Tile Roof Homeowners Across Napa and Northern California"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"Tile roofing is the dominant residential roofing material throughout Napa County, and we've repaired and replaced tile roofs across the Napa Valley, American Canyon, and surrounding areas for over 35 years. Whether you need a targeted chimney repair like this one or a full tile re-roof, our crews are experienced with every major tile profile and manufacturer. We're fully licensed (CA Lic. #593448), bonded, and insured, and we pull all required permits."}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 text-center",children:[r.jsx("h3",{className:"text-2xl font-serif font-bold mb-3",children:"Tile Roof Leaking Near Your Chimney?"}),r.jsx("p",{className:"text-gray-300 mb-6 max-w-lg mx-auto text-sm leading-relaxed",children:"Don't let a flashing failure turn into a structural repair. We serve Napa, Solano, Yolo, and Sacramento Counties — free inspections available within 60 miles of Vacaville, CA."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"GET FREE ESTIMATE"}),r.jsxs("a",{href:"tel:+17074475655",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Solano County: 707-447-5655",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"707-447-5655"]}),r.jsxs("a",{href:"tel:+19169789392",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Yolo / Sacramento: 916-978-9392",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"916-978-9392"]})]})]}),r.jsx("div",{className:"mt-10",children:r.jsxs(Z,{href:"/blog#tile",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO ALL POSTS"]})})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const wh="https://northerncaliforniaroofing.com",Rw="Malarkey Shingles + Duro-Last PVC Color-Matched Roof Replacement",kw="See how we replaced a hybrid roof using Malarkey composition shingles on the pitched sections and color-matched Duro-Last® PVC on the flat section — a seamless, unified look with two best-in-class systems. Serving Northern California since 1990.",Dw="/malarkey-composition-duro-last-pvc-color-match-roof-replacement.jpg",Ch="Completed roof replacement showing Malarkey composition shingles on the pitched section and color-matched Duro-Last PVC on the flat section — Northern California Roofing Co.",Mw=["Malarkey composition shingle roof replacement Northern California","Duro-Last PVC color match flat roof","hybrid roof replacement Sacramento Valley","composition shingle and flat roof combination","residential roof replacement Vacaville CA","Duro-Last color match shingles","full roof replacement Solano County","Northern California Roofing Co."];function gV(){const e=Xn({headline:Rw,description:kw,url:`${wh}/blog/malarkey-duro-last-color-match-roof-replacement`,imageUrl:`${wh}${Dw}`,imageAlt:Ch,datePublished:"2026-04-28",keywords:Mw});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:Rw,description:kw,canonicalPath:"/blog/malarkey-duro-last-color-match-roof-replacement",ogImage:`${wh}${Dw}`,ogImageAlt:Ch,ogType:"article",article:{publishedTime:"2026-04-28T00:00:00Z",section:"Roof Replacement",keywords:Mw},jsonLd:e}
57),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:"/malarkey-composition-duro-last-pvc-color-match-roof-replacement.jpg",alt:Ch,objectPosition:"top"}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog#replacement",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," April 28, 2026"]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," Northern California"]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:"Roof Replacement"}),r.jsxs("span",{className:"bg-violet-100 text-violet-700 px-2 py-0.5 rounded font-semibold flex items-center gap-1",children:[r.jsx(vk,{size:11,"aria-hidden":"true"})," Color-Matched System"]})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:"One Roof, Two Systems, Perfect Color Match — Malarkey Shingles + Duro-Last® PVC"}),r.jsx("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:"Look at the finished roof in our photo and you might not immediately notice that two entirely different roofing systems are on the same building. The pitched sections are covered with Malarkey composition shingles; the flat section running alongside them is Duro-Last® PVC single-ply membrane. What makes this replacement stand out — and what the homeowner specifically requested — is the color match. Duro-Last offers custom PVC colors that can be closely matched to popular shingle palettes, creating a unified appearance across both roof planes. It's one of the most visually cohesive solutions available for homes with mixed roof geometry, and it's something we've perfected over 35 years of roofing in Northern California."}),r.jsx("div",{className:"bg-[#0693E3]/10 border-l-4 border-[#0693E3] rounded-sm p-5 mb-8",children:r.jsxs("p",{className:"text-[#113753] font-semibold text-sm leading-relaxed",children:[r.jsx("strong",{children:"Why this matters:"})," Many homes in the Sacramento Valley, Solano County, and surrounding foothill communities have both pitched and flat (or low-slope) roof sections. Using mismatched products — or the wrong product on each section — leads to premature failures, mismatched aesthetics, and warranty complications. The right approach is selecting the best system for each section and specifying them to work together visually."]})}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"What You're Seeing in This Photo"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"The completed roof shows two sections meeting cleanly at their transition. The upper and main pitched planes are covered with Malarkey composition shingles in a warm charcoal-brown tone — a color that blends naturally into Northern California's hillside and valley landscapes. Running horizontally across the lower section is the Duro-Last PVC membrane, specified in a matching brown that complements the shingle color rather than clashing with it."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:"The transition between the two systems — where the sloped shingle roof meets the flat PVC plane — is cleanly detailed with integrated flashing to ensure watertight performance at the most vulnerable point of the entire assembly. From the street, the roof reads as one cohesive surface. Up close, each section is performing with the system best suited to its geometry."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-6",children:"The Right System for Each Roof Section"}),r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-10",children:[r.jsxs("div",{className:"border-2 border-[#113753]/20 rounded-sm p-6",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[r.jsx(yc,{className:"text-[#113753]",size:22,"aria-hidden":"true"}),r.jsx("h3",{className:"font-serif text-lg font-bold text-[#113753]",children:"Pitched Sections — Malarkey Composition"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed mb-4",children:"For pitched roof planes (anything above roughly 4:12), composition shingles are the optimal choice for performance, cost, and aesthetics. Malarkey's composition line is among the best available for Northern California's climate."}),r.jsxs("ul",{className:"space-y-2 text-sm text-gray-700",children:[r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"NEX Polymer Modified Asphalt — more flexible, more durable than standard asphalt"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"StreakFighter® algae-resistant granules — stays clean through Northern California's wet winters"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"Class 4 impact resistance available — highest rating for hail and wind-driven debris"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"Lifetime limited warranty with enhanced coverage options"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"Wide color palette — dozens of options to suit any home's exterior"})]})]})]}),r.jsxs("div",{className:"border-2 border-[#113753]/20 rounded-sm p-6",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[r.jsx(Jt,{className:"text-[#113753]",size:22,"aria-hidden":"true"}),r.jsx("h3",{className:"font-serif text-lg font-bold text-[#113753]",children:"Flat Sections — Duro-Last® PVC"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed mb-4",children:"For flat and low-slope sections (below 2:12 pitch), Duro-Last PVC is the system we trust most — prefabricated off-site, heat-welded seams, and a manufacturer warranty that covers both material and labor."}),r.jsxs("ul",{className:"space-y-2 text-sm text-gray-700",children:[r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"Custom color matching — PVC can be pigmented to closely match popular shingle palettes"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"Heat-welded seams — stronger than the membrane itself, watertight by design"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"Prefabricated flashings — factory-made details for every penetration and transition"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"15- or 20-year manufacturer's warranty with labor coverage on qualifying installs"})]}),r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:"Certified contractor installation — we've been Duro-Last certified since 2008"})]})]})]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"The Color Match Advantage"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Until recently, homeowners with hybrid roofs had to accept a visual mismatch — a gray or white PVC flat section sitting alongside brown or charcoal composition shingles. The color disconnect was immediately apparent from the street and difficult to work around without painting (which voids most membrane warranties) or respecifying the shingle color."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Duro-Last's custom color program solves this directly. The PVC membrane can be ordered in pigmented colors that closely approximate the primary tone of popular shingle palettes. It's not a pixel-perfect match — the textures are fundamentally different — but the color family alignment means the two sections read as intentionally coordinated rather than as a compromise."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"On this project, we specified the Duro-Last membrane in a brown tone that pulls from the warm undertone in the Malarkey shingle color. Viewed from the driveway or the street, the roof presents as a unified surface. It's a detail that takes planning — we coordinate color selection before ordering either product — but the finished result is exactly what you see in our photo."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"The Transition: Where the Two Systems Meet"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"The most technically demanding part of any hybrid roof replacement is the transition zone — the line where the sloped shingle system terminates and the flat PVC system begins. Get this wrong and it doesn't matter how good each individual system is; the transition will leak."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Our approach integrates the systems at this joint using a purpose-built Duro-Last transition flashing that bonds to the PVC membrane on the flat side and laps beneath the shingle starter course on the sloped side. This creates a positive drainage path — water flows from the slope down onto the flat section and toward the drains — with no exposed edge or seam at the junction."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"Both systems are also covered by their respective warranties independently, and the transition detail is included under the Duro-Last scope. One job, two manufacturers behind it."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Is a Hybrid Roof Replacement Right for Your Home?"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Homes with mixed roof geometry are common throughout Northern California — particularly in communities built in the 1970s through 1990s where ranch-style additions with flat patio covers and garage roofs are attached to main homes with pitched rooflines. If your home has both pitched and flat sections, a hybrid approach using the correct system for each plane is almost always the right answer."}),r.jsxs("ul",{className:"list-disc list-inside text-gray-700 space-y-2 mb-8 pl-2",children:[r.jsx("li",{children:"Using composition shingles on a flat section leads to premature failure — shingles require slope to drain and are not designed for ponding water exposure"}),r.jsx("li",{children:"Using PVC membrane on a steep pitched section is unnecessarily expensive and lacks the proven durability of modern composition products at that slope"}),r.jsx("li",{children:"A properly specified hybrid system gives each section the product it was engineered for — and with color coordination, it doesn't compromise the visual result"})]}),r.jsxs("div",{className:"bg-gray-50 border border-gray-200 rounded-sm p-6 mb-10",children:[r.jsxs("h3",{className:"font-serif text-lg font-bold text-[#113753] mb-4 flex items-center gap-2",children:[r.jsx(Bn,{size:18,className:"text-[#0693E3]","aria-hidden":"true"}),"Good candidates for a hybrid roof replacement"]}),r.jsx("ul",{className:"space-y-3 text-sm text-gray-700",children:["Homes with a flat patio cover, garage, or addition roof attached to a main pitched roof","Roofs where the current flat section is leaking or was improperly shingled at low slope","Homeowners who want a unified appearance across the entire roof without visible system changes","Bu
57ildings where the flat section has HVAC equipment requiring custom curb flashings (Duro-Last handles this factory-fabricated)","Situations where two separate roofing systems are aging simultaneously and a combined replacement saves mobilization cost"].map(a=>r.jsxs("li",{className:"flex items-start gap-2",children:[r.jsx(nt,{size:14,className:"text-[#0693E3] mt-0.5 shrink-0","aria-hidden":"true"}),r.jsx("span",{children:a})]},a))})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Serving Hybrid Roof Homes Across Northern California"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"We're one of the few contractors in the Sacramento Valley region who are both a GAF Master Elite® certified installer (for composition roofing) and a Duro-Last Certified contractor (for PVC single-ply). That dual certification means we can design, specify, and install both systems under a single contract — one crew, one warranty conversation, one point of accountability. We serve residential and commercial properties throughout Solano, Yolo, Sacramento, Napa, and Contra Costa Counties from our base in Vacaville. CA Lic. #593448."}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 text-center",children:[r.jsx("h3",{className:"text-2xl font-serif font-bold mb-3",children:"Get a Free Hybrid Roof Replacement Estimate"}),r.jsx("p",{className:"text-gray-300 mb-6 max-w-lg mx-auto text-sm leading-relaxed",children:"If your home has both pitched and flat roof sections, we'll assess both systems together and give you a comprehensive replacement plan — including color coordination options."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"REQUEST FREE ESTIMATE"}),r.jsxs("a",{href:"tel:+17074475655",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Solano County: 707-447-5655",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"707-447-5655"]}),r.jsxs("a",{href:"tel:+19169789392",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Yolo / Sacramento: 916-978-9392",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"916-978-9392"]})]})]}),r.jsx("div",{className:"mt-10",children:r.jsxs(Z,{href:"/blog#replacement",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO ALL POSTS"]})})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const Sh="https://northerncaliforniaroofing.com",Ow="Duro-Last® PVC + R-Tech Insulfoam Flat Roof — Davis, CA",Pw="A complete low-slope roof replacement in Davis, CA using Duro-Last® PVC membrane over R-Tech insulfoam board insulation. See the before and after, and learn why insulation is the most overlooked upgrade in any flat roof project. CA Lic. #593448.",Vw="/duro-last-pvc-rtech-insulfoam-installation-davis-ca-complete.jpg",jh="Completed Duro-Last PVC white membrane flat roof installation in Davis CA with R-Tech insulfoam insulation beneath — Northern California Roofing Co.",Lw=["Duro-Last PVC flat roof Davis CA","R-Tech insulfoam flat roof insulation","low slope roofing Davis California","flat roof replacement Yolo County","insulated flat roof Sacramento Valley","Duro-Last certified contractor Northern California","flat roof insulation upgrade Davis CA","Northern California Roofing Co."];function yV(){const e=Xn({headline:Ow,description:Pw,url:`${Sh}/blog/duro-last-rtech-insulfoam-flat-roof-davis-ca`,imageUrl:`${Sh}${Vw}`,imageAlt:jh,datePublished:"2026-05-14",keywords:Lw});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:Ow,description:Pw,canonicalPath:"/blog/duro-last-rtech-insulfoam-flat-roof-davis-ca",ogImage:`${Sh}${Vw}`,ogImageAlt:jh,ogType:"article",article:{publishedTime:"2026-05-14T00:00:00Z",section:"Flat / Low-Slope Roofing",keywords:Lw},jsonLd:e}
57),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:"/duro-last-pvc-rtech-insulfoam-installation-davis-ca-complete.jpg",alt:jh}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog#flat",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," May 14, 2026"]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," Davis, CA"]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:"Flat / Low-Slope Roofing"}),r.jsxs("span",{className:"bg-sky-100 text-sky-700 px-2 py-0.5 rounded font-semibold flex items-center gap-1",children:[r.jsx(yc,{size:11,"aria-hidden":"true"})," Duro-Last® + R-Tech"]})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:"Full Low-Slope Roof Replacement in Davis, CA — Duro-Last® PVC Over R-Tech Insulfoam"}),r.jsx("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:"Two photos tell the complete story of this flat roof replacement in Davis: the first shows the R-Tech insulfoam panels laid tight across the entire deck, creating a continuous thermal barrier before a single inch of membrane goes down. The second shows the finished result — a pristine white Duro-Last® PVC membrane, heat-welded seams invisible from above, a single drain centered and sealed, and a roof that will outperform its predecessor by decades. This is what a properly specified low-slope roof replacement looks like, and the insulation layer underneath is the part most owners never see but always feel in their energy bills."}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 mb-10",children:[r.jsxs("figure",{children:[r.jsx("img",{src:"/duro-last-pvc-rtech-insulfoam-installation-davis-ca-insulation.jpg",alt:"R-Tech insulfoam board insulation panels installed on flat roof deck in Davis CA prior to Duro-Last PVC membrane installation",className:"w-full h-56 object-cover rounded-sm",loading:"lazy"}),r.jsx("figcaption",{className:"text-xs text-gray-400 mt-2 text-center",children:"Step 1 — R-Tech insulfoam boards fully laid across the deck"})]}),r.jsxs("figure",{children:[r.jsx("img",{src:"/duro-last-pvc-rtech-insulfoam-installation-davis-ca-complete.jpg",alt:"Completed Duro-Last PVC white single-ply membrane flat roof installation in Davis CA with center drain",className:"w-full h-56 object-cover rounded-sm",loading:"lazy"}),r.jsx("figcaption",{className:"text-xs text-gray-400 mt-2 text-center",children:"Step 2 — Duro-Last® PVC membrane fully installed and welded"})]})]}),r.jsx("div",{className:"bg-[#0693E3]/10 border-l-4 border-[#0693E3] rounded-sm p-5 mb-8",children:r.jsxs("p",{className:"text-[#113753] font-semibold text-sm leading-relaxed",children:[r.jsx("strong",{children:"Davis, CA climate note:"})," Davis sits in the heart of the Sacramento Valley where summer temperatures regularly exceed 100°F. A flat roof without continuous insulation beneath the membrane transfers tremendous heat into the building below. R-Tech insulfoam directly addresses this — improving comfort, reducing HVAC load, and helping the property meet California's Title 24 energy code requirements."]})}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"What Is R-Tech Insulfoam and Why Does It Matter?"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"R-Tech is a brand of expanded polystyrene (EPS) rigid foam insulation board manufactured by Insulfoam, specifically engineered for roofing applications. Unlike fiberglass batts or spray foam, EPS board insulation is dimensionally stable, moisture-resistant, and compatible with single-ply membrane systems like Duro-Last PVC. On flat roofs, it's installed directly over the existing deck (or new decking) before the membrane goes down, creating a continuous thermal envelope beneath the waterproofing layer."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-6",children:`The R in "R-Tech" refers to its thermal resistance value — R-Tech panels are available in multiple thicknesses, each delivering a specific R-value per inch. For this Davis project, we specified the board thickness required to meet Title 24 minimums while optimizing for the property's existing parapet height, which limits how much total assembly thickness can be added before drainage slopes are affected.`}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-6",children:"Why We Recommend This System for Sacramento Valley Flat Roofs"}),r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5 mb-10",children:[r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Mk,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Thermal Performance"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"EPS board insulation significantly reduces heat transfer through the roof assembly in both directions — keeping buildings cooler in triple-digit Sacramento Valley summers and warmer in wet winter nights. The result is a measurable reduction in HVAC runtime and energy cost."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(XC,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Title 24 Compliance"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"California's Title 24 Building Energy Efficiency Standards require a minimum insulation R-value on low-slope roof replacements. R-Tech board insulation, combined with the reflective Duro-Last white membrane, reliably meets and typically exceeds these requirements without complex system modifications."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(_n,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Moisture Resistance"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Unlike fiberglass insulation, EPS board does not absorb water or lose its R-value when exp
57osed to moisture. If the membrane is ever compromised in the future, the insulation beneath remains intact and continues to perform — it won't become a saturated, moldy mass that requires full tear-off."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(Jt,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Structural Compatibility"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"R-Tech EPS board is lightweight — far less than polyiso or concrete roof decks — and adds minimal dead load to the structure. It can typically be installed over existing roof decks without a structural engineering review, unlike some heavier insulation systems."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(yc,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Slope Correction Capability"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"Tapered EPS board — cut with a slight pitch across its thickness — can be used to create or improve drainage slope on truly flat decks where water historically ponded. This addresses one of the most common long-term flat roof problems without modifying the structural deck."})]}),r.jsxs("div",{className:"bg-gray-50 rounded-sm p-5 border border-gray-100",children:[r.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[r.jsx(nt,{className:"text-[#0693E3]",size:20,"aria-hidden":"true"}),r.jsx("h3",{className:"font-bold text-[#113753]",children:"Duro-Last System Compatibility"})]}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:"R-Tech EPS board is fully compatible with Duro-Last PVC membrane and approved under Duro-Last's system specifications. Using an approved insulation substrate protects the full manufacturer's warranty on the membrane — a detail that matters when you're expecting 20+ years of performance."})]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"The Installation Sequence on This Davis Project"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"After tear-off and deck inspection, the installation on this Davis property followed a clean three-phase sequence:"}),r.jsxs("ol",{className:"list-decimal list-inside text-gray-700 space-y-4 mb-8 pl-2",children:[r.jsxs("li",{children:[r.jsx("strong",{children:"Deck preparation"})," — the existing deck was inspected for soft spots and deteriorated sections. Any compromised decking was replaced before insulation went down. A clean, solid substrate is essential for long-term performance of both the insulation and the membrane above it."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"R-Tech insulfoam installation"})," — panels were laid in a staggered pattern (like brickwork) to eliminate continuous seam lines. This staggering prevents thermal bridging across panel joints and distributes the load evenly across the deck. You can see the tight, clean fit of the panels in the first photo — no gaps, no compressed edges."]}),r.jsxs("li",{children:[r.jsx("strong",{children:"Duro-Last PVC membrane installation"})," — prefabricated Duro-Last panels, sized to this roof's exact dimensions, were rolled out over the insulation and heat-welded at every seam. The single center drain was integrated with a factory-prefabricated Duro-Last drain flashing, creating a watertight seal at the most vulnerable penetration point. The completed surface you see in the second photo is the result — uniform, reflective, and welded solid."]})]}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"What the White Membrane Does for a Davis Building"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:"Davis averages over 260 sunny days per year. A dark or aged roof membrane absorbs a significant portion of that solar energy and transfers it directly into the building — driving up cooling costs throughout the long summer season. Duro-Last's white PVC membrane reflects the majority of solar radiation back into the atmosphere (typical solar reflectance of 0.87 or higher), dramatically reducing the surface temperature of the roof and the heat load on the building below."}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"Combined with the R-Tech insulation beneath, this system addresses heat from two directions: reflection at the surface and resistance through the assembly. It's the most effective combination available for low-slope roofing in a high-heat climate like the Sacramento Valley, and it's why both products carry ENERGY STAR® ratings and meet California's Title 24 Cool Roof requirements."}),r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:"Serving Low-Slope Roof Owners in Davis and Yolo County"}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-8",children:"Davis and the greater Yolo County area are well within our primary service territory. We've completed flat and low-slope roofing projects throughout Woodland, West Sacramento, Winters, Dixon, and surrounding communities — residential and commercial alike. As a Duro-Last Certified contractor since 2008, we have access to the full Duro-Last system including prefabricated flashings, custom colors, and manufacturer-backed warranty programs. CA Lic. #593448."}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 text-center",children:[r.jsx("h3",{className:"text-2xl font-serif font-bold mb-3",children:"Get a Free Flat Roof Replacement Estimate"}),r.jsx("p",{className:"text-gray-300 mb-6 max-w-lg mx-auto text-sm leading-relaxed",children:"Serving Davis, Woodland, West Sacramento, Vacaville, and all of Yolo and Solano Counties. We'll assess your existing deck and specify the right insulation thickness and membrane system for your building."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"REQUEST FREE ESTIMATE"}),r.jsxs("a",{href:"tel:+17074475655",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Solano County: 707-447-5655",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"707-447-5655"]}),r.jsxs("a",{href:"tel:+19169789392",className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors flex items-center justify-center gap-2","aria-label":"Call Yolo / Sacramento: 916-978-9392",children:[r.jsx(Ye,{size:15,"aria-hidden":"true"}),"916-978-9392"]})]})]}),r.jsx("div",{className:"mt-10",children:r.jsxs(Z,{href:"/blog#flat",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO ALL POSTS"]})})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const Fw="/logo-color.png",zw=[{src:"/ncr-award-gaf-master-elite-certificate.jpg",alt:"GAF Master Elite Weather Stopper Roofing Contractor certificate – Northern California Roofing Co., member since 1998",title:"GAF Master Elite® Roofing Contractor",year:"Member Since 1998",category:"GAF"},{src:"/ncr-award-gaf-master-elite-2024.jpg",alt:"GAF Master Elite Excellence Award 2024 – Northern California Roofing Co.",title:"GAF Master Elite® Excellence Award",year:"2024",category:"GAF"},{src:"/ncr-award-gaf-master-elite-2023.jpg",alt:"GAF Master Elite Excellence Award 2023 – Northern California Roofing Co.",title:"GAF Master Elite® Excellence Award",year:"2023",category:"GAF"},{src:"/ncr-award-gaf-master-elite-2022.jpg",alt:"GAF Master Elite Excellence Award 2022 – Northern California Roofing Co.",title:"GAF Master Elite® Excellence Award",year:"2022",category:"GAF"},{src:"/ncr-award-gaf-master-elite-2021.jpg",alt:"GAF Master Elite Excellence Award 2021 – Northern California Roofing Co.",title:"GAF Master Elite® Excellence Award",year:"2021",category:"GAF"},{src:"/ncr-award-gaf-master-commercial-contractor.jpg",alt:"GAF Master Commercial Roofing Contractor plaque – Northern California Roofing Co., certified since 2008",title:"GAF Master Commercial Roofing Contractor",year:"Certified Since 2008",category:"GAF Commercial"},{src:"/ncr-award-gaf-certified-commercial-2024.jpg",alt:"GAF Certified Commercial Roofing Contractor Award 2024 – Northern California Roofing Co.",title:"GAF Certified Commercial Contractor",year:"2024",category:"GAF Commercial"},{src:"/ncr-award-gaf-certified-commercial-2023.jpg",alt:"GAF Certified Commercial Roofing Contractor Award 2023 – Northern California Roofing Co.",title:"GAF Certified Commercial Contractor",year:"2023",category:"GAF Commercial"},{src:"/ncr-award-gaf-certified-commercial-2022.jpg",alt:"GAF Certified Commercial Roofing Contractor Award 2022 – Northern California Roofing Co.",title:"GAF Certified Commercial Contractor",year:"2022",category:"GAF Commercial"},{src:"/ncr-award-duro-last-elite-contractor-2022.jpg",alt:"Duro-Last Elite Contractor 2022 plaque – Northern California Roofing Co., outstanding in workmanship",title:"Duro-Last® Elite Contractor",year:"2022",category:"Duro-Last"},{src:"/ncr-award-duro-last-outstanding-achievement-2022.jpg",alt:"Duro-Last Outstanding Achievement Award 2022 – Northern California Roofing Co.",title:"Duro-Last® Outstanding Achievement",year:"2022",category:"Duro-Last"},{src:"/ncr-award-duro-last-outstanding-achievement-2023.jpg",alt:"Duro-Last Outstanding Achievement Award 2023 – Northern California Roofing Co.",title:"Duro-Last® Outstanding Achievement",year:"2023",category:"Duro-Last"},{src:"/ncr-award-duro-last-outstanding-achievement-2024.jpg",alt:"Duro-Last Outstanding Achievement Award 2024 – Northern California Roofing Co.",title:"Duro-Last® Outstanding Achievement",year:"2024",category:"Duro-Last"},{src:"/ncr-award-duro-last-elite-contractor.jpg",alt:"Duro-Last Elite Contractor award plaque – Northern California Roofing Co.",title:"Duro-Last® Elite Contractor",year:"2024",category:"Duro-Last"},{src:"/ncr-award-malarkey-certified-premium-contractor.jpg",alt:"Malarkey Certified Premium Contractor certificate – Northern California Roofing Co.",title:"Malarkey Certified Premium Contractor",year:"2017–2027",category:"Malarkey"},{src:"/ncr-award-iko-shieldpro-plus-certified-contractor.jpg",alt:"IKO ShieldPRO Plus Certified Re
57sidential Roofing Contractor certificate – Northern California Roofing Co., 2013",title:"IKO ShieldPRO Plus™ Certified Contractor",year:"2013",category:"IKO"},{src:"/ncr-award-gaf-master-elite-trophy-2013.jpg",alt:"GAF Master Elite Excellence Award 2013 trophy – Northern California Roofing Co. Vacaville office",title:"GAF Master Elite® Excellence Award",year:"2013",category:"GAF"},{src:"/ncr-award-gaf-master-elite-trophy-2014.jpg",alt:"GAF Master Elite Excellence Award 2014 trophy – Northern California Roofing Co. Vacaville office",title:"GAF Master Elite® Excellence Award",year:"2014",category:"GAF"},{src:"/ncr-award-gaf-master-elite-trophy-2015.jpg",alt:"GAF Master Elite Excellence Award 2015 trophy – Northern California Roofing Co. Vacaville office",title:"GAF Master Elite® Excellence Award",year:"2015",category:"GAF"},{src:"/ncr-award-gaf-master-elite-trophy-2017.jpg",alt:"GAF Master Elite Excellence Award 2017 trophy – Northern California Roofing Co. Vacaville office",title:"GAF Master Elite® Excellence Award",year:"2017",category:"GAF"},{src:"/ncr-award-gaf-master-elite-trophy-2018.jpg",alt:"GAF Master Elite Excellence Award 2018 trophy – Northern California Roofing Co. Vacaville office",title:"GAF Master Elite® Excellence Award",year:"2018",category:"GAF"},{src:"/ncr-award-gaf-master-elite-double-excellence-2020.jpg",alt:"GAF Master Elite Double Excellence Award 2020 – Training Excellence & Installation Excellence – Northern California Roofing Co.",title:"GAF Master Elite® Double Excellence Award",year:"2020",category:"GAF"},{src:"/ncr-award-gaf-presidents-club-step-slope-2013.jpg",alt:"GAF President's Club Step-Slope Award Winner 2013 – Northern California Roofing Co. Vacaville",title:"GAF President's Club® Step-Slope Award",year:"2013",category:"GAF"},{src:"/ncr-award-gaf-presidents-club-step-slope-2019.jpg",alt:"GAF President's Club Step-Slope Award Winner 2019 – Northern California Roofing Co. Vacaville",title:"GAF President's Club® Step-Slope Award",year:"2019",category:"GAF"},{src:"/ncr-award-gaf-presidents-club-star-trophy.jpg",alt:"GAF President's Club crystal star trophy – Northern California Roofing Co. award display",title:"GAF President's Club® Award",year:"Excellence Award",category:"GAF"},{src:"/ncr-award-gaf-presidents-club-trophies-display.jpg",alt:"GAF President's Club trophies on display at Northern California Roofing Co. Vacaville office",title:"GAF President's Club® Trophies",year:"Multiple Years",category:"GAF"}],Hw=[{src:"/northern-california-roofing-vacaville-office-awards-since-1990.jpg",alt:"Northern California Roofing Co. Vacaville office award wall – contractor awards displayed since 1990",caption:"Our Vacaville office award wall — representing over 34 years of excellence in roofing."},{src:"/northern-california-roofing-duro-last-elite-contractor-awards.jpg",alt:"Northern California Roofing Co. Duro-Last Elite Contractor awards on display",caption:"Duro-Last Elite Contractor awards on display at our Vacaville headquarters."},{src:"/ncr-awards-office-commercial-display.jpg",alt:"Northern California Roofing Co. commercial roofing awards in main office",caption:"Commercial roofing awards proudly displayed in our main office."},{src:"/ncr-awards-office-vacaville-display.jpg",alt:"Northern California Roofing Co. Vacaville main office award display",caption:"A full view of our award display at the Vacaville office."}];function xV(){const[e,a]=w.useState(!1),[i,s]=w.useState(null),c=(y,x)=>{s({index:x,pool:y})},d=()=>s(null),f=()=>{i&&s({...i,index:(i.index-1+i.pool.length)%i.pool.length})},h=()=>{i&&s({...i,index:(i.index+1)%i.pool.length})},g=y=>{y.key==="Escape"&&d(),y.key==="ArrowLeft"&&f(),y.key==="ArrowRight"&&h()},p=i?i.pool[i.index]:null;return r.jsxs("div",{className:"min-h-screen bg-white font-sans",onKeyDown:g,tabIndex:-1,children:[r.jsxs("header",{className:"sticky top-0 z-50 bg-white shadow-md",children:[r.jsxs("div",{className:"container mx-auto px-4 py-3 flex justify-between items-center",children:[r.jsx(Z,{href:"/","aria-label":"Northern California Roofing Co. – Home",children:r.jsx("img",{src:Fw,alt:"Northern California Roofing Co.",className:"h-16 md:h-20"})}),r.jsxs("nav",{"aria-label":"Primary navigation",className:"hidden lg:flex items-center gap-6 font-bold text-[13px] text-[#113753] tracking-wide",children:[r.jsx(Z,{href:"/",className:"hover:text-[#0693E3] transition-colors whitespace-nowrap",children:"HOME"}),r.jsx("a",{href:"/#about",className:"hover:text-[#0693E3] transition-colors whitespace-nowrap",children:"ABOUT US"}),r.jsx("a",{href:"/#services",className:"hover:text-[#0693E3] transition-colors whitespace-nowrap",children:"SERVICES"}),r.jsx("a",{href:"/#service-areas",className:"hover:text-[#0693E3] transition-colors whitespace-nowrap",children:"SERVICE AREAS"}),r.jsx("a",{href:"/#reviews",className:"hover:text-[#0693E3] transition-colors whitespace-nowrap",children:"REVIEWS"}),r.jsx("a",{href:"/#financing",className:"hover:text-[#0693E3] transition-colors whitespace-nowrap",children:"FINANCING"}),r.jsx("a",{href:"/#contact",className:"hover:text-[#0693E3] transition-colors whitespace-nowrap",children:"CONTACT"}),r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-[#113753] text-white font-bold px-4 py-2 text-xs whitespace-nowrap transition-colors",children:"ONLINE FORM FILL"})]}),r.jsx("button",{className:"lg:hidden text-[#113753]",onClick:()=>a(!e),"aria-expanded":e,"aria-controls":"awards-mobile-menu","aria-label":e?"Close navigation menu":"Open navigation menu",children:e?r.jsx(Wn,{size:28,"aria-hidden":"true"}):r.jsx(xc,{size:28,"aria-hidden":"true"})})]}),e&&r.jsxs("nav",{id:"awards-mobile-menu","aria-label":"Mobile navigation",className:"lg:hidden bg-white border-t border-gray-100 shadow-xl flex flex-col",children:[r.jsx(Z,{href:"/",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"HOME"}),r.jsx("a",{href:"/#about",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"ABOUT US"}),r.jsx("a",{href:"/#services",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"SERVICES"}),r.jsx("a",{href:"/#service-areas",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"SERVICE AREAS"}),r.jsx("a",{href:"/#reviews",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"REVIEWS"}),r.jsx("a",{href:"/#financing",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"FINANCING"}),r.jsx(Z,{href:"/blog",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"BLOG"}),r.jsx(Z,{href:"/awards",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#0693E3]","aria-current":"page",onClick:()=>a(!1),children:"AWARDS"}),r.jsx("a",{href:"/#contact",className:"px-6 py-4 border-b border-gray-100 font-bold text-[#113753]",onClick:()=>a(!1),children:"CONTACT"})]})]}),r.jsx("section",{className:"bg-[#113753] text-white py-16 md:py-20",children:r.jsxs("div",{className:"container mx-auto px-4 text-center",children:[r.jsx("p",{className:"text-[#0693E3] font-bold tracking-widest text-sm uppercase mb-3",children:"Recognized Excellence"}),r.jsx("h1",{className:"font-serif text-4xl md:text-5xl font-bold mb-4",children:"Awards & Certifications"}),r.jsx("p",{className:"text-white/80 max-w-2xl mx-auto text-lg",children:"Northern California Roofing Co. has earned some of the roofing industry's most prestigious designations — year after year, for over three decades."})]})}),r.jsx("section",{className:"py-14 bg-gray-50 border-b border-gray-200",children:r.jsxs("div",{className:"container mx-auto px-4 max-w-4xl text-center",children:[r.jsx("h2",{className:"font-serif text-3xl font-bold text-[#113753] mb-4",children:"What These Certifications Mean for You"}),r.jsxs("p",{className:"text-gray-700 text-lg leading-relaxed mb-6",children:["Earning a GAF Master Elite® certification places us in the top ",r.jsx("strong",{children:"2% of roofing contractors"})," in North America. It requires passing rigorous training, maintaining proper licensing and insurance, and a proven track record of excellence. As a GAF Master Elite® contractor, we can offer the ",r.jsx("strong",{children:"Golden Pledge® Limited Warranty"})," — GAF's best workmanship warranty, available only through Master Elite roofers."]}),r.jsxs("p",{className:"text-gray-700 text-lg leading-relaxed",children:["Our ",r.jsx("strong",{children:"Duro-Last® Elite Contractor"})," designation means we're factory-certified in Duro-Last's custom-prefabricated PVC membrane systems — the preferred choice for commercial flat roofing. Less than 5% of roofing contractors nationwide hold this certification."]})]})}),r.jsx("section",{className:"py-16","aria-labelledby":"awards-heading",children:r.jsxs("div",{className:"container mx-auto px-4",children:[r.jsx("h2",{id:"awards-heading",className:"font-serif text-3xl font-bold text-[#113753] text-center mb-2",children:"Our Award Certificates"}),r.jsx("p",{className:"text-center text-gray-500 mb-10",children:"Click any certificate to enlarge"}),r.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-4 md:gap-6",children:zw.map((y,x)=>r.jsxs("button",{onClick:()=>c(zw,x),className:"group relative overflow-hidden rounded-lg shadow-md hover:shadow-xl transition-shadow duration-300 bg-white focus:outline-none focus-visible:ring-4 focus-visible:ring-[#0693E3]","aria-label":`View ${y.title} ${y.year} certificate`,children:[r.jsx("img",{src:y.src,alt:y.alt,className:"w-full aspect-[3/4] object-cover group-hover:scale-105 transition-transform duration-300",loading:"lazy"}),r.jsxs("div",{className:"absolute inset-0 bg-gradient-to-t from-black/70 via-trans
57parent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex flex-col justify-end p-3",children:[r.jsx("span",{className:"text-white font-bold text-xs leading-tight",children:y.title}),r.jsx("span",{className:"text-[#0693E3] text-xs font-semibold",children:y.year})]}),r.jsxs("div",{className:"p-3 text-center border-t border-gray-100",children:[r.jsx("p",{className:"font-bold text-[#113753] text-xs leading-tight",children:y.title}),r.jsx("p",{className:"text-[#0693E3] text-xs font-semibold",children:y.year})]})]},x))})]})}),r.jsx("section",{className:"py-16 bg-gray-50","aria-labelledby":"office-photos-heading",children:r.jsxs("div",{className:"container mx-auto px-4",children:[r.jsx("h2",{id:"office-photos-heading",className:"font-serif text-3xl font-bold text-[#113753] text-center mb-2",children:"Award Wall at Our Vacaville Office"}),r.jsx("p",{className:"text-center text-gray-500 mb-10",children:"Decades of achievement on display — come see for yourself"}),r.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-6 max-w-4xl mx-auto",children:Hw.map((y,x)=>r.jsxs("button",{onClick:()=>c(Hw,x),className:"group relative overflow-hidden rounded-lg shadow-md hover:shadow-xl transition-shadow duration-300 bg-white focus:outline-none focus-visible:ring-4 focus-visible:ring-[#0693E3]","aria-label":`View photo: ${y.caption}`,children:[r.jsx("img",{src:y.src,alt:y.alt,className:"w-full aspect-video object-cover group-hover:scale-105 transition-transform duration-300",loading:"lazy"}),r.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/70 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-end p-4",children:r.jsx("span",{className:"text-white text-sm font-semibold text-left",children:y.caption})})]},x))})]})}),r.jsx("section",{className:"py-14 bg-[#113753] text-white text-center",children:r.jsxs("div",{className:"container mx-auto px-4 max-w-2xl",children:[r.jsx("h2",{className:"font-serif text-3xl font-bold mb-4",children:"Ready to Work with Award-Winning Roofers?"}),r.jsx("p",{className:"text-white/80 mb-8 text-lg",children:"Serving Vacaville, Davis, Woodland, Fairfield, Napa, Vallejo, Sacramento, and the greater Northern California region."}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"tel:7074475655",className:"inline-block bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-4 transition-colors",children:"SOLANO: 707-447-5655"}),r.jsx("a",{href:"tel:9169789392",className:"inline-block bg-white/10 hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-4 border border-white/30 transition-colors",children:"YOLO/SAC: 916-978-9392"}),r.jsx("a",{href:"/#contact",className:"inline-block bg-transparent hover:bg-[#0693E3] text-white font-bold px-8 py-4 border-2 border-[#0693E3] transition-colors",children:"GET A FREE ESTIMATE"})]})]})}),r.jsx("footer",{className:"bg-gray-900 text-gray-400 py-8 text-center text-sm",children:r.jsxs("div",{className:"container mx-auto px-4",children:[r.jsx("div",{className:"inline-block bg-white rounded-xl px-4 py-2 mb-4 shadow-sm",children:r.jsx("img",{src:Fw,alt:"Northern California Roofing Co.",className:"h-10 object-contain"})}),r.jsxs("p",{className:"mb-2",children:[r.jsx("a",{href:"tel:7074475655",className:"hover:text-white transition-colors",children:"707-447-5655"})," · ",r.jsx("a",{href:"tel:9169789392",className:"hover:text-white transition-colors",children:"916-978-9392"})]}),r.jsx("p",{className:"mb-4",children:"CA Contractor License #593448 · Vacaville, CA"}),r.jsxs("div",{className:"flex flex-wrap justify-center gap-4 text-xs",children:[r.jsx(Z,{href:"/",className:"hover:text-white transition-colors",children:"Home"}),r.jsx(Z,{href:"/awards",className:"hover:text-white transition-colors",children:"Awards"}),r.jsx(Z,{href:"/blog",className:"hover:text-white transition-colors",children:"Blog"}),r.jsx(Z,{href:"/privacy-policy",className:"hover:text-white transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-white transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-white transition-colors",children:"Accessibility"})]}),r.jsxs("p",{className:"mt-4 text-xs",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]})]})}),i&&p&&r.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":"Award image viewer",className:"fixed inset-0 z-[100] bg-black/90 flex items-center justify-center p-4",onClick:d,children:[r.jsx("button",{className:"absolute top-4 right-4 text-white hover:text-[#0693E3] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-white",onClick:d,"aria-label":"Close image viewer",children:r.jsx(Wn,{size:32})}),i.pool.length>1&&r.jsxs(r.Fragment,{children:[r.jsx("button",{className:"absolute left-4 top-1/2 -translate-y-1/2 text-white hover:text-[#0693E3] transition-colors bg-black/40 rounded-full p-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-white",onClick:y=>{y.stopPropagation(),f()},"aria-label":"Previous image",children:r.jsx(IR,{size:32})}),r.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-white hover:text-[#0693E3] transition-colors bg-black/40 rounded-full p-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-white",onClick:y=>{y.stopPropagation(),h()},"aria-label":"Next image",children:r.jsx(IC,{size:32})})]}),r.jsxs("div",{className:"max-w-3xl w-full",onClick:y=>y.stopPropagation(),children:[r.jsx("img",{src:p.src,alt:p.alt,className:"w-full max-h-[80vh] object-contain rounded-lg"}),"caption"in p&&p.caption&&r.jsx("p",{className:"text-white/70 text-sm text-center mt-3",children:p.caption}),"title"in p&&p.title&&r.jsxs("p",{className:"text-white/70 text-sm text-center mt-3",children:[p.title," — ",p.year]}
57),r.jsxs("p",{className:"text-gray-500 text-xs text-center mt-2",children:[i.index+1," / ",i.pool.length]})]})]})]})}const Nh="ncr_cookie_consent";function vV(){const[e,a]=w.useState(!1);w.useEffect(()=>{if(!localStorage.getItem(Nh)){const d=setTimeout(()=>a(!0),800);return()=>clearTimeout(d)}},[]);const i=()=>{localStorage.setItem(Nh,"accepted"),a(!1)},s=()=>{localStorage.setItem(Nh,"declined"),a(!1)};return r.jsx(mm,{children:e&&r.jsx(ua.div,{initial:{y:120,opacity:0},animate:{y:0,opacity:1},exit:{y:120,opacity:0},transition:{duration:.4,ease:"easeOut"},className:"fixed bottom-0 left-0 right-0 z-[9999] bg-white border-t-4 border-[#0693E3] shadow-2xl",role:"dialog","aria-label":"Cookie and Privacy Consent","data-testid":"cookie-consent-banner",children:r.jsx("div",{className:"container mx-auto px-4 md:px-8 py-5",children:r.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center gap-5",children:[r.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[r.jsx(Jt,{className:"text-[#0693E3] shrink-0 mt-1",size:22}),r.jsxs("div",{children:[r.jsx("p",{className:"text-sm font-bold text-[#113753] mb-1",children:"California Privacy Notice (CIPA / CCPA)"}),r.jsxs("p",{className:"text-xs text-gray-600 leading-relaxed",children:["This website may use cookies and similar technologies to enhance your experience and analyze site usage. Under the California Invasion of Privacy Act (CIPA) and the California Consumer Privacy Act (CCPA), California residents have the right to know what personal information is collected and how it is used. By clicking ",r.jsx("strong",{children:'"Accept"'}),", you consent to our use of cookies and data collection practices as described in our"," ",r.jsx(Z,{href:"/privacy-policy",className:"text-[#0693E3] underline hover:text-[#113753] transition-colors","data-testid":"link-privacy-policy-banner",children:"Privacy Policy"}),". You may decline non-essential cookies by clicking ",r.jsx("strong",{children:'"Decline"'}),"."]})]})]}),r.jsxs("div",{className:"flex items-center gap-3 shrink-0",children:[r.jsx("button",{onClick:s,"data-testid":"button-cookie-decline",className:"text-xs font-bold text-gray-500 hover:text-gray-800 border border-gray-300 px-4 py-2 transition-colors",children:"Decline"}),r.jsx("button",{onClick:i,"data-testid":"button-cookie-accept",className:"text-xs font-bold text-white bg-[#0693E3] hover:bg-[#113753] px-5 py-2 transition-colors",children:"Accept"}),r.jsx("button",{onClick:s,"aria-label":"Close banner","data-testid":"button-cookie-close",className:"text-gray-400 hover:text-gray-700 transition-colors ml-1",children:r.jsx(Wn,{size:18})})]})]})})})})}const bV=[{name:"Vacaville",slug:"vacaville",county:"Solano County",zips:["95688","95687","95696"],population:"105,000",distanceMiles:0,coordinates:{lat:38.3565,lng:-121.9877},neighborhoods:["Alamo Drive Corridor","Browns Valley","Leisure Town","Elmira","Nut Tree Area","Ulatis Creek"],nearbyCities:[{name:"Fairfield",slug:"fairfield"},{name:"Dixon",slug:"dixon"},{name:"Davis",slug:"davis"},{name:"Woodland",slug:"woodland"},{name:"Napa",slug:"napa"}],climate:"Vacaville sits in the northern Sacramento Valley, where summers are long and hot — regularly reaching 100–108°F — while winters bring moderate rainfall between November and March. The city experiences the Diablo winds, which can drive wildfires and accelerate wear on roofing materials.",roofingChallenges:"Extreme UV exposure during long, dry summers degrades asphalt shingles faster than coastal areas. High temperatures cause thermal expansion in roofing materials, leading to cracking and curling over time. Wildfire ember risk in surrounding foothill areas has also increased demand for Class A fire-rated roofing products.",commonRoofTypes:["Composition shingles","Tile (concrete and clay)","TPO flat roofing","Metal roofing","PVC commercial membrane"],metaDescription:"Northern California Roofing Co. — Vacaville's trusted roofing contractor since 1990. GAF Master Elite certified. Roof replacement, repair & commercial roofing. CA Lic. #593448. Free estimates.",heroTagline:"Vacaville's Most Trusted Roofing Contractor Since 1990",introP1:"Northern California Roofing Co. has called Vacaville home since 1990 — over three decades of serving homeowners and businesses right here in Solano County. As a GAF Master Elite® certified contractor, we're among the top 3% of roofing professionals nationwide, delivering premium installation quality backed by the strongest manufacturer warranties available.",introP2:"Whether you need a complete roof replacement after years of Sacramento Valley heat exposure, a targeted repair on a tile roof, or a commercial TPO or Duro-Last PVC membrane system, our Vacaville-based crews handle every project from inspection through final cleanup. We pull all required permits, carry full liability insurance, and back every job with our workmanship warranty.",localExpertisePoints:["Over 35 years of roofing Vacaville homes — we know local building codes inside out","Class A fire-rated products available for WUI (Wildland-Urban Interface) zone properties","Emergency storm repair response for wind and rain damage events","Duro-Last Certified contractor for commercial flat and low-slope roofing","GAF Timberline HDZ® and Grand Sequoia® shingles for maximum curb appeal","Free attic ventilation asse
57ssment with every full roof replacement estimate"],faqs:[{q:"How much does a roof replacement cost in Vacaville, CA?",a:"Roof replacement costs in Vacaville typically range from $12,000 to $28,000 for a standard single-family home, depending on roof size, pitch, material choice, and any necessary decking repairs. We provide detailed, itemized free estimates so you know exactly what you're paying for before work begins."},{q:"What roofing materials are best for Vacaville's hot climate?",a:"For Vacaville's extreme summer heat, we recommend GAF Timberline HDZ® or Malarkey Emerald Premium shingles with high solar reflectance ratings. Concrete or clay tile is also excellent for longevity in our climate. Metal roofing provides outstanding durability and energy efficiency. All options are available in Class A fire-rated versions — critical for our area."},{q:"Does Northern California Roofing Co. offer financing?",a:"Yes — we partner with multiple lenders to offer flexible financing options for qualified homeowners. This includes low-interest plans and deferred payment options. Ask about our current financing programs when you request your free estimate."},{q:"How long does a roof replacement take in Vacaville?",a:"Most residential roof replacements in Vacaville are completed in 1–3 days, depending on the size of the home and the materials chosen. We work efficiently to minimize disruption, and our crews handle all debris removal and cleanup before leaving your property."},{q:"Is Northern California Roofing Co. licensed and insured?",a:"Absolutely. We hold CA Contractor License #593448 and carry full liability insurance and workers' compensation coverage. We've maintained an A+ rating with the Better Business Bureau throughout our 35+ years in business in Vacaville and Solano County."}],imageSlots:[{src:"/vacaville-commercial-durolast-pvc-flat-reroof-1.jpg",alt:"Duro-Last PVC flat roof installation on downtown Vacaville commercial building — crew working on white membrane — Northern California Roofing Co.",caption:"Duro-Last PVC Flat Roof — Downtown Vacaville",category:"Commercial Roofing"},{src:"/vacaville-commercial-durolast-pvc-flat-reroof-2.jpg",alt:"Duro-Last PVC membrane seaming in progress on Vacaville commercial flat roof — roofing crew visible",caption:"PVC Membrane Installation in Progress — Vacaville",category:"Commercial Roofing"},{src:"/vacaville-commercial-durolast-pvc-flat-reroof-3.jpg",alt:"Completed white Duro-Last PVC flat roof surface on Vacaville commercial property, viewed from rooftop",caption:"Completed Duro-Last Flat Roof — Vacaville Commercial",category:"Commercial Roofing"},{src:"/vacaville-commercial-durolast-pvc-flat-reroof-4.jpg",alt:"Pyramid skylight curb detail on Duro-Last PVC commercial flat roof in downtown Vacaville CA",caption:"Skylight Curb Flashing Detail — Duro-Last PVC",category:"Commercial Roofing"},{src:"/vacaville-residential-malarkey-highlander-1.jpg",alt:"Completed Malarkey Highlander composition shingle reroof on Vacaville residential home — Northern California Roofing Co.",caption:"Malarkey Highlander® Reroof — Vacaville Residence",category:"Residential Roofing"},{src:"/vacaville-residential-malarkey-highlander-2.jpg",alt:"Malarkey Highlander shingles with roof vents — residential reroof in Vacaville CA",caption:"Malarkey Highlander® with Roof Vents — Vacaville",category:"Residential Roofing"},{src:"/vacaville-residential-malarkey-highlander-3.jpg",alt:"Overhead view of completed Malarkey Highlander composition shingle roof on Vacaville home showing full coverage",caption:"Malarkey Highlander® Complete — Vacaville",category:"Residential Roofing"}]},{name:"Fairfield",slug:"fairfield",county:"Solano County",zips:["94533","94534","94535"],population:"120,000",distanceMiles:12,coordinates:{lat:38.2494,lng:-122.04},neighborhoods:["Cordelia","Green Valley","Rancho Solano","Cement Hill","Dover Avenue","Air Base Parkway Corridor"],nearbyCities:[{name:"Vacaville",slug:"vacaville"},{name:"Vallejo",slug:"vallejo"},{name:"Benicia",slug:"benicia"},{name:"Dixon",slug:"dixon"},{name:"Concord",slug:"concord"}],climate:"Fairfield is known for strong Delta winds that funnel through the Carquinez Strait gap, making it one of the windiest cities in California. Summers are hot and dry (95–105°F) while winters are mild with moderate rainfall. The wind-to-solar exposure combination accelerates wear on roofing systems compared to less exposed inland areas.",roofingChallenges:"Persistent Delta winds are the defining roofing challenge in Fairfield — they lift shingles, crack ridge caps, and drive moisture under flashing over time. Travis Air Force Base's proximity means commercial and government-facility roofing work follows strict spec compliance standards. UV degradation and wind uplift resistance are top priorities in every Fairfield roofing project.",commonRoofTypes:["Composition shingles (wind-rated)","Concrete tile","Standing-seam metal","TPO and PVC commercial membrane","Modified bitumen"],metaDescription:"Expert roofing contractor serving Fairfield, CA since 1990. GAF Master Elite certified. Residential & commercial roof replacement, repair and new construction. CA Lic. #593448. Free estimates.",heroTagline:"Fairfield's Premier Roofing Contractor — Trusted Since 1990",introP1:"Northern California Roofing Co. has been the go-to roofing contractor for Fairfield homeowners and businesses for over 35 years. From the newer subdivisions in Rancho Solano and Green Valley to established neighborhoods near downtown, we've replaced and repaired thous
57ands of roofs throughout Solano County's largest city.",introP2:"Fairfield's notorious Delta winds demand wind-rated installation techniques and materials. Our crews are trained specifically for high-wind-zone installations, using enhanced nailing patterns, sealed starter strips, and wind-uplift-rated shingle products. Whether you need a residential reroof or a large commercial membrane system, we deliver the quality and documentation that Fairfield's climate demands.",localExpertisePoints:["Wind-rated installation methods standard on every Fairfield project — not optional upgrades","Experienced with commercial and government facility roofing requirements near Travis AFB","GAF WeatherBlocker® Pro Plus enhanced starter strip for added wind resistance","Free storm damage assessment for wind and rain event claims","Serving Cordelia, Rancho Solano, Green Valley, and all Fairfield neighborhoods","Same-week scheduling available for active leak repairs"],faqs:[{q:"Why are Fairfield roofs so susceptible to wind damage?",a:"Fairfield sits in a natural wind corridor where Pacific air funnels through the Carquinez Strait and across the Suisun Marsh. This creates persistent winds that can exceed 40 mph regularly, lifting shingles, cracking ridge caps, and damaging flashing over time. Wind-rated installation techniques — including enhanced fastening patterns and sealed starter strips — are standard on all our Fairfield projects."},{q:"How do I know if my Fairfield home needs a new roof vs. a repair?",a:"Signs that lean toward full replacement include: shingles that are curling, cracking, or missing granules across large areas; multiple layers already on the roof; age over 20 years for composition shingles; or widespread wind damage. We provide free, no-obligation inspections and give you an honest assessment — we'll tell you if a targeted repair can extend your roof's life rather than pushing for a full replacement."},{q:"Does Northern California Roofing Co. handle commercial roofing in Fairfield?",a:"Yes — we're a Duro-Last Certified contractor and handle TPO, PVC, and modified bitumen systems for commercial and industrial properties throughout Fairfield. We have experience with the documentation and inspection requirements for commercial projects, including government-adjacent facilities near Travis AFB."},{q:"What's the best shingle for Fairfield's wind and heat?",a:"We most often recommend GAF Timberline HDZ® (Class H wind rating — 130 mph) or Malarkey Emerald Premium shingles for Fairfield homes. Both carry excellent wind warranties and are available with high solar reflectance ratings for our hot summers. We can show you samples and pricing at your free in-home estimate."},{q:"How long will a new roof last in Fairfield's climate?",a:"A properly installed premium composition shingle roof in Fairfield should last 30–40 years with routine maintenance. Concrete tile can last 50+ years. Metal roofing often exceeds 50 years. The key is proper installation — including adequate ventilation and high-quality underlayment — which we include as standard on every job."}],imageSlots:[{src:"/suisun-city-malarkey-highlander-reroof-1.jpg",alt:"Completed Malarkey Highlander composition shingle reroof in Suisun City CA — skylights and ridge cap visible — Northern California Roofing Co.",caption:"Malarkey Highlander® Reroof — Suisun City (Solano County)",category:"Residential Roofing"},{src:"/suisun-city-malarkey-highlander-reroof-2.jpg",alt:"Malarkey Highlander shingles with plumbing vent boot on completed Suisun City residential reroof — Northern California Roofing Co.",caption:"Malarkey Highlander® Complete — Suisun City",category:"Residential Roofing"},{alt:"Commercial roofing project in Fairfield CA near Travis AFB",caption:"Commercial Project — Fairfield"}]},{name:"Sacramento",slug:"sacramento",county:"Sacramento County",zips:["95814","95816","95817","95818","95820","95822","95823","95825","95826","95827","95828","95831","95832","95833","95834","95835","95838","95841","95842"],population:"530,000",distanceMiles:38,coordinates:{lat:38.5816,lng:-121.4944}
57,neighborhoods:["Midtown","East Sacramento","Land Park","Curtis Park","Pocket","Oak Park","Natomas","Arden-Arcade","Elk Grove (south)","Rancho Cordova (east)"],nearbyCities:[{name:"Elk Grove",slug:"elk-grove"},{name:"West Sacramento",slug:"west-sacramento"},{name:"Folsom",slug:"folsom"},{name:"Roseville",slug:"roseville"},{name:"Davis",slug:"davis"}],climate:"Sacramento's Central Valley climate features some of the most extreme summer heat in California, with temperatures routinely reaching 105–112°F in July and August. Winters are mild with moderate rainfall between November and March. The combination of extreme UV, thermal cycling, and periodic heavy rain events puts significant stress on all roofing systems.",roofingChallenges:"Extreme summer heat is the dominant challenge for Sacramento roofs — asphalt shingles with low solar reflectance absorb heat that drives interior temperatures up and causes premature granule loss. Older Midtown and East Sacramento neighborhoods have aging Craftsman and Victorian homes requiring careful material matching and historic-appropriate products. Flat and low-slope roofs on commercial and residential properties require proper drainage engineering to handle periodic heavy rain.",commonRoofTypes:["Composition shingles","Concrete and clay tile","Flat TPO / PVC membrane","Metal roofing","Modified bitumen (commercial)"],metaDescription:"Northern California Roofing Co. — licensed Sacramento roofing contractor since 1990. GAF Master Elite certified. Roof replacement, repair, tile & commercial roofing for all Sacramento neighborhoods. CA Lic. #593448.",heroTagline:"Sacramento's Experienced Roofing Contractor — GAF Master Elite Certified",introP1:"Serving Sacramento and the greater Sacramento metro since 1990, Northern California Roofing Co. understands the unique demands that California's capital city places on roofing systems. From the historic Craftsman bungalows of East Sacramento and Midtown to the newer tile-roofed subdivisions in Natomas and the South Area, we've completed thousands of successful roofing projects across every Sacramento neighborhood.",introP2:"Sacramento's extreme summer heat demands roofing solutions engineered for longevity under intense UV exposure. As a GAF Master Elite® certified contractor — a designation held by fewer than 3% of roofing contractors nationwide — we install products with the highest solar reflectance ratings available, extending roof life and reducing cooling costs for Sacramento homeowners and businesses.",localExpertisePoints:["Experience with Sacramento's historic neighborhoods and period-appropriate roofing materials","High solar reflectance (cool roof) products that meet Sacramento's Title 24 energy code","Familiar with Sacramento County building and permit requirements","Commercial flat roofing for Sacramento's extensive retail, office, and industrial building stock","Storm damage assessment and insurance claim support for hail and wind events","Serving all 96 ZIP codes in the Sacramento metro area"],faqs:[{q:"What roofing materials work best in Sacramento's extreme heat?",a:"For Sacramento's 105°F+ summers, we recommend products with high solar reflectance (SRI) ratings — specifically GAF Timberline Cool Series, Malarkey Emerald Premium with NEX® polymer-modified asphalt, or concrete/clay tile, which naturally insulates against heat transfer. These products can reduce attic temperatures significantly and lower air conditioning costs. We also always recommend upgrading to a premium underlayment and ensuring proper attic ventilation on every Sacramento project."},{q:"How much does roof replacement cost in Sacramento?",a:"In Sacramento, residential roof replacement typically runs $11,000–$30,000+ depending on square footage, pitch, material, and any decking or structural repairs needed. Tile roofs cost more than composition shingles but last significantly longer. We provide detailed, itemized free estimates so Sacramento homeowners can compare options and make an informed decision."},{q:"Do you work in historic Sacramento neighborhoods like Midtown and East Sac?",a:"Yes — we have extensive experience with the older homes found in Midtown, East Sacramento, Land Park, Curtis Park, and Oak Park. Many of these homes have character-defining roof details that require careful attention. We work with period-appropriate materials and colors, and we understand the permit requirements for homes in designated historic districts."},{q:"How do I find a reputable roofing contractor in Sacramento?",a:"Look for a contractor with a valid CA Contractor License (ours is #593448), at least a decade of local experience, manufacturer certifications like GAF Master Elite®, and verifiable reviews. Northern California Roofing Co. has served the Sacramento area since 1990, carries full insurance, and maintains an A+ BBB rating. We provide references from completed Sacramento projects on request."},{q:"Can you repair a leaking roof in Sacramento quickly?",a:"Yes — for active leaks, we prioritize same-week scheduling and can often accommodate next-d
57ay emergency repairs for Sacramento customers. We assess the full scope of the issue, provide a detailed repair estimate, and complete work efficiently to prevent further interior water damage."}],imageSlots:[{alt:"Sacramento residential reroof with Malarkey Highlander shingles and PVC flat roof by Northern California Roofing Co.",caption:"Residential Reroof — Malarkey Highlander + PVC Flat",src:"/sacramento-residential-pvc-malarkey-highlander-1.jpg",category:"Residential Roofing"},{alt:"PVC flat roof and Malarkey Highlander shingle transition detail on Sacramento home",caption:"Shingle / Flat Roof Transition Detail — Sacramento",src:"/sacramento-residential-pvc-malarkey-highlander-2.jpg",category:"Residential Roofing"},{alt:"Tile roof repair in East Sacramento California",caption:"Tile Roof — East Sacramento"},{alt:"Commercial flat roof installation in Sacramento CA",caption:"Commercial Flat Roof — Sacramento"}]},{name:"Davis",slug:"davis",county:"Yolo County",zips:["95616","95618"],population:"68,000",distanceMiles:30,coordinates:{lat:38.5449,lng:-121.7405},neighborhoods:["South Davis","North Davis","East Davis","West Davis","Mace Ranch","Wildhorse","University District"],nearbyCities:[{name:"Sacramento",slug:"sacramento"},{name:"Woodland",slug:"woodland"},{name:"West Sacramento",slug:"west-sacramento"},{name:"Vacaville",slug:"vacaville"},{name:"Dixon",slug:"dixon"}],climate:"Davis sits in the Yolo County agricultural plain with a hot Mediterranean climate — summers frequently exceed 100°F with very low humidity, and winters are mild with moderate rainfall. The flat terrain offers little shelter from wind, and the area experiences occasional Diablo wind events that can cause roofing damage.",roofingChallenges:"As a university city with a strong sustainability culture, Davis homeowners increasingly seek energy-efficient, cool-roof products and materials with recycled content. The flat agricultural terrain means roofs are highly exposed to UV radiation with no shade relief. Older university-era housing stock from the 1950s–1980s often has original roofing materials past their service life.",commonRoofTypes:["Composition shingles","Concrete tile","TPO flat membrane","Cool-roof rated products","Metal roofing"],metaDescription:"Trusted roofing contractor serving Davis, CA since 1990. GAF Master Elite certified. Residential & commercial roof replacement, cool-roof upgrades, repairs. Yolo County experts. CA Lic. #593448.",heroTagline:"Davis, CA Roofing Experts — Energy-Efficient Solutions Since 1990",introP1:"Northern California Roofing Co. has been serving Davis homeowners and businesses since 1990, working across every neighborhood from South Davis and Mace Ranch to the University District and Wildhorse. We understand that Davis residents value quality craftsmanship, energy efficiency, and straightforward dealing — and that's exactly how we've built our reputation over 35+ years in Yolo County.",introP2:"We completed a notable Duro-Last® PVC flat roof replacement in Davis in 2024, featuring R-Tech insulation board for dramatically improved energy performance — a project that exemplifies our approach to low-slope residential and commercial roofing in the Davis area. Whether your Davis home needs a composition shingle reroof, a tile repair, or an energy-efficient commercial membrane system, our licensed crews deliver quality results every time.",localExpertisePoints:["Familiar with Davis building permit requirements and Yolo County inspection processes","Cool-roof certified products available — meeting California Title 24 energy standards","Duro-Last Certified for residential and commercial flat/low-slope roofing","Experienced with university-era housing stock from the 1960s–1980s","Detailed written scopes of work — no surprises for our detail-oriented Davis clients","Serving all Davis neighborhoods including Wildhorse, Mace Ranch, and West Davis"],faqs:[{q:"What are the best cool-roof options for a Davis home?",a:"For Davis's extreme summer heat, we recommend products with a high Solar Reflectance Index (SRI). Top choices include GAF Timberline Cool Series shingles, Malarkey Emerald Premium with NEX® asphalt technology, or a full tile system in a light color. For flat or low-slope roofs, white TPO or PVC membranes provide excellent solar reflectance. We walk every Davis homeowner through the energy s
57avings comparison at their free estimate."},{q:"How much does a roof replacement cost in Davis, CA?",a:"Davis roof replacements typically range from $11,500 to $26,000 for a standard single-family home, depending on square footage, slope, material, and the condition of the existing decking. We provide detailed, itemized estimates so you have complete transparency before any work begins."},{q:"Can you repair a flat or low-slope roof in Davis?",a:"Absolutely — flat and low-slope roofing is one of our specialties. We're a Duro-Last Certified contractor and handle TPO, PVC, and modified bitumen repairs and replacements for Davis residential and commercial properties. We assess the condition of the entire membrane system before recommending repair vs. replacement."},{q:"How long does a new roof last in Davis's climate?",a:"Premium composition shingles typically last 30–40 years in Davis with proper installation and ventilation. Concrete tile lasts 50+ years. A Duro-Last PVC flat roof carries a 15-year manufacturer warranty and often exceeds 20–25 years in service. We ensure every Davis installation includes proper attic ventilation — critical to achieving these lifespans in our hot climate."},{q:"Do you pull permits for Davis roofing work?",a:"Yes — we pull all required permits for every Davis roofing project, as required by City of Davis and Yolo County building codes. We manage the permit process from application through final inspection, and all work is performed to current California Building Code standards. Beware of contractors who suggest skipping permits — it can affect your homeowner's insurance and home resale."}],imageSlots:[{alt:"Roof replacement in Davis CA by Northern California Roofing Co.",caption:"Recent Davis Roof Replacement"},{alt:"Flat roof installation in Davis California using Duro-Last PVC membrane",caption:"Duro-Last Flat Roof — Davis"},{alt:"Composition shingle reroof on Davis CA home",caption:"Shingle Reroof — Davis Neighborhood"}]},{name:"Napa",slug:"napa",county:"Napa County",zips:["94558","94559"],population:"80,000",distanceMiles:35,coordinates:{lat:38.2975,lng:-122.2869},neighborhoods:["Westwood Hills","Browns Valley","Alta Heights","Old Town Napa","Silverado Highlands","South Napa"],nearbyCities:[{name:"Vacaville",slug:"vacaville"},{name:"Vallejo",slug:"vallejo"},{name:"Fairfield",slug:"fairfield"},{name:"Benicia",slug:"benicia"}],climate:'Napa benefits from a cooler Mediterranean climate moderated by marine air flowing through the Petaluma Gap and San Pablo Bay. Summers are warm (85–98°F) rather than extreme, and winters bring meaningful rainfall (26"+ annually). The wine country hills experience occasional wildfire risk and wind events that can damage roofing.',roofingChallenges:"Napa's older downtown and hillside neighborhoods have premium housing stock where roofing aesthetics, material quality, and historic appropriateness are paramount. The 2014 Napa earthquake highlighted the importance of properly attached roofing systems. Wine country fog and morning moisture cycling can accelerate moss and algae growth on north-facing roof slopes.",commonRoofTypes:["Concrete and clay tile","Composition shingles","Wood shake (replacement)","Metal roofing","Slate-look composites"],metaDescription:"Northern California Roofing Co. — Napa's trusted roofing contractor since 1990. Tile, composition & metal roofing for wine country homes. GAF Master Elite certified. CA Lic. #593448. Free estimates.",heroTagline:"Napa Valley Roofing Experts — Quality Craftsmanship Since 1990",introP1:"Napa's wine country setting attracts homeowners who expect the same premium quality in their roofing as in every other aspect of their property. Northern California Roofing Co. has been delivering exactly that to Napa County since 1990, working on everything from Old Town Victorian restorations to high-end estate reroofs in Westwood Hills and Silverado Highlands.",introP2:"We understand that a Napa roof is often a statement as much as it is protection. Our team is experienced with the premium materials — including concrete S-tile, clay barrel tile, natural slate-look composites, and standing-seam metal — that Napa's upscale residential market demands. Every project is completed to exacting standards with full permit compliance and manufacturer warranty registration.",localExpertisePoints:["Experienced with Napa County's premium housing stock and high-end material requirements","Clay and concrete tile specialists — proper mortar bedding, flashing, and underlayment","Algae-resistant and moss-resistant products for Napa's fog-influenced north slopes","Class A fire-rated roofing for hillside WUI zone properties throughout Napa County","Knowledgeable about Napa County building department permit requirements","Serving Old Town Napa, Browns Valley, Westwood Hills, Alta Heights, and all Napa neighborhoods"],faqs:[{q:"What roofing is best for Napa wine country homes?",a:"Napa's upscale residential market most commonly uses concrete or clay tile for longevity and Mediterranean aesthetics, premium composition shingles like Malarkey Emerald or GAF Grand Sequoia for a traditional look, or standing-seam metal for modern homes. For hillside properties, we always re
57commend Class A fire-rated products. We provide a detailed material comparison at every free estimate."},{q:"How do you handle roof moss and algae in Napa's climate?",a:"Napa's morning fog creates ideal conditions for moss and algae growth on north-facing and shaded roof slopes. We install algae-resistant shingles (GAF StainGuard Plus or Malarkey's algae-resistant formulas), apply zinc or copper strips at the ridge, and recommend a professional roof cleaning before reroofing to ensure proper adhesion of new materials."},{q:"Can you repair or replace a tile roof in Napa?",a:"Yes — tile roofing is our specialty. We repair broken, slipped, and cracked concrete and clay tiles throughout Napa County, re-bed mortar on ridges, replace damaged underlayment under tile fields, and re-flash around chimneys and penetrations. When repair is no longer cost-effective, we provide full tile re-roof replacements using quality tile products with manufacturer warranties."},{q:"Is Northern California Roofing Co. familiar with Napa County building codes?",a:"Yes — we've been pulling permits and completing inspections with the Napa County Building Division for over 30 years. We understand the local requirements for re-roofing including title 24 energy compliance, seismic attachment requirements for tile, and WUI fire resistance requirements for properties in the hills."},{q:"How does Napa's 2014 earthquake history affect roofing?",a:"The 2014 South Napa earthquake reminded homeowners of the importance of properly attached roofing systems. For tile roofs, we use seismically compliant installation methods including positive mechanical fastening and compliant underlayment systems per current CBC requirements — not just mortar bedding, which can fail in seismic events."}],imageSlots:[{src:"/napa-hoa-pvc-flat-reroof-1.jpg",alt:"Completed PVC flat roof overlay on HOA community building in Napa CA — Northern California Roofing Co.",caption:"PVC Flat Roof Overlay — Napa HOA",category:"Commercial Roofing"},{src:"/napa-hoa-pvc-flat-reroof-2.jpg",alt:"Aerial view of PVC overlay flat roof installation on HOA complex in Napa CA, showing adjoining tile roofs",caption:"HOA PVC Overlay Complete — Napa",category:"Commercial Roofing"},{src:"/napa-hoa-pvc-flat-reroof-3.jpg",alt:"New white PVC flat roof section completed on Napa HOA residential complex — Northern California Roofing Co.",caption:"PVC Flat Section Completed — Napa HOA",category:"Commercial Roofing"},{src:"/napa-hoa-pvc-flat-reroof-4.jpg",alt:"Overview of Napa HOA property showing new white PVC flat roof adjacent to existing cedar shake roof sections",caption:"PVC Flat Roof Overlay Overview — Napa HOA",category:"Commercial Roofing"},{src:"/napa-winery-gaf-composition-reroof-1.jpg",alt:"Completed GAF composition shingle reroof on Napa Valley winery building — Northern California Roofing Co.",caption:"GAF Composition Reroof — Napa Winery",category:"Winery / Agricultural"},{src:"/napa-winery-gaf-composition-reroof-2.jpg",alt:"GAF underlayment installation in progress on Napa winery composition shingle reroof",caption:"GAF Underlayment Installation — Napa Winery",category:"Winery / Agricultural"},{src:"/napa-winery-gaf-composition-reroof-3.jpg",alt:"Mid-installation view of GAF composition shingle reroof on Napa Valley winery, showing underlayment and shingle courses",caption:"Shingle Installation in Progress — Napa Winery",category:"Winery / Agricultural"},{src:"/napa-winery-gaf-composition-reroof-4.jpg",alt:"Completed GAF composition shingle roof on Napa winery with skylights — Northern California Roofing Co.",caption:"GAF Composition Complete with Skylights — Napa Winery",category:"Winery / Agricultural"},{src:"/napa-tile-hurricane-system-repair-1.jpg",alt:"Clay tile roof repair using Hurricane rib system in Napa County — tile removal and underlayment visible with skylight opening",caption:"Clay Tile Repair — Hurricane System — Napa County",category:"Tile Roof Repair"},{src:"/napa-tile-hurricane-system-repair-2.jpg",alt:"Completed clay tile roof with Hurricane attachment system and new skylight flashing in Napa County hills",caption:"Clay Tile Reroof Complete — Napa County Hillside",category:"Tile Roof Repair"},{src:"/napa-durolast-tan-pvc-flat-overlay-1.jpg",alt:"Tan Duro-Last PVC flat roof overlay installation in progress on Napa County property — Northern California Roofing Co.",caption:"Tan Duro-Last PVC Flat Overlay — Napa County",category:"Flat Roof Overlay"},{src:"/napa-durolast-tan-pvc-flat-overlay-2.jpg",alt:"Completed tan Duro-Last PVC flat roof overlay on Napa County hillside property with mountain and forest views",caption:"Duro-Last PVC Overlay Complete — Napa Hills",category:"Flat Roof Overlay"}]},{name:"Vallejo",slug:"vallejo",county:"Solano County",zips:["94589","94590","94591","94592"],population:"125,000",distanceMiles:28,coordinates:{lat:38.1041,lng:-122.2566},neighborhoods:["Glen Cove","Hiddenbrooke","Northgate","South Vallejo","Casa Grande","Downtown Vallejo","Carquinez Highlands"],nearbyCities:[{name:"Benicia",slug:"benicia"},{name:"Fairfield",slug:"fairfield"},{name:"Napa",slug:"napa"},{name:"Concord",slug:"concord"},{name:"Vacaville",slug:"vacaville"}],climate:"Vallejo sits at the northern edge of San Pablo Bay, where marine air and bay fog create higher humidity and more moderate temperatures than inland Solano County cities. Summers are warm (85–95°F) rather than extreme, but the persistent marine moisture and salt air from the bay contribute to accelerated wear on roofing materials, especially metal components.",roofingChallenges:"Bay fog and marine air mean Vallejo roofs are exposed to higher humidity cycles than inland areas, promoting moss, algae, and lichen growth — especially on north-facing slopes and in shaded areas. Older housing stock in South Vallejo and downtown neighborhoods often has original roofing materials from the 1960s–1980s past their service life. Carquinez Strait winds add wind uplift risk.",commonRoofTypes:["Composition shingles","Concrete tile","Modified bitumen (flat)","Metal roofing","TPO membrane"],metaDescription:"Trusted roofing contractor serving Vallejo, CA since 1990. Full-service residential and commercial roofing — replacement, repair & storm damage response. Solano County experts. CA Lic. #593448.",heroTagline:"Vallejo's Trusted Roofing Contractor — Serving Solano County Since 1990",introP1:"Northern California Roofing Co. has served Vallejo homeowners and businesses for over 35 years, working across every neighborhood from the Hiddenbrooke master-planned community to the historic homes of downtown Vallejo and the hillside properties of Carquinez Highlands. We're familiar with the specific challenges that Vallejo's bay-adjacent climate creates for roofing systems.",introP2:"Vallejo's bay moisture and marine air require roofing products with proven resistance to algae, moss, and humidity cycling. We install algae-resistant shingle products, use high-quality synthetic underlayments that resist moisture, and apply proper ventilation solutions to keep attic humidity in check. Our licensed crews are experienced with both Vallejo's older housing stock and newer construction throughout Hiddenbrooke and Glen Cove.",localExpertisePoints:["Algae and moss-resistant product selection — critical for Vallejo's bay moisture climate","Experienced with Vallejo's older housing stock and varied architectural styles","High-quality synthetic underlayments for superior moisture resistance","Wind-uplift rated systems for bay-facing properties near the Carquinez Strait","Commercial roofing services for Vallejo's industrial and retail building stock","Serving Glen Cove, Hiddenbrooke, Northgate, Casa Grande, and all Vallejo neighborhoods"],faqs:[{q:"Why does my Vallejo roof have moss and algae growth?",a:"Vallejo's bay fog and marine air create elevated humidity on roof surfaces, especially on north-facing slopes and areas shaded by trees. This moisture supports moss, algae, and lichen growth that can shorten roof life. We install algae-resistant shingle products (GAF StainGuard Plus, Malarkey algae-resistant formulas) and recommend zinc or copper strip treatments at the ridge as long-term preventive solutions."},{q:"How much does a roof replacement cost in Vallejo, CA?",a:"Vallejo roof replacements typically range from $11,000 to $26,000 for a standard single-family home, depending on size, pitch, material, and condition of the existing decking. Homes with multiple layers of old roofing may incur tear-off costs. We provide fully itemized free estimates so there are no surprises."},{q:"What's the best roofing for Vallejo's bay climate?",a:"For Vallejo, we recommend algae-resistant composition shingles (GAF Timberline with StainGuard Plus® or Malarkey Emerald Premium) as the best balance of durability, aesthetics, and value. For homes with significant shade exposure, concrete tile with a quality underlayment is an excellent long-term option. We always include proper attic ventilation in Vallejo projects to manage interior moisture."},{q:"Do you respond to storm damage in Vallejo?",a:"Yes — we offer priority scheduling for storm damage assessment and emergency repairs following wind, rain, and hail events. We document the damage thoroughly for insurance claims and work directly with major insurance carriers to facilitate the process. Emergency tarping is available for active leak situations."},{q:"How long has Northern California Roofing Co. served Vallejo?",a:"We've been serving Vallejo and Solano County since 1990 — over 35 years of local experience. We're fully licensed (CA Lic. #593448), bonded, and insured, maintain an A+ BBB rating, and are a GAF Master Elite® certified contractor. Our history of completed Vallejo projects is available as references upon request."}],imageSlots:[{alt:"Roof replacement in Vallejo CA by Northern California Roofing Co.",caption:"Vallejo Residential Reroof"},{alt:"Composition shingle installation in Vallejo California",caption:"Shingle Installation — Vallejo"},{alt:"Commercial roofing project in Vallejo CA",caption:"Commercial Roofing — Vallejo"}]},{name:"Woodland",slug:"woodland",county:"Yolo County",zips:["95695","95776"],population:"62,000",distanceMiles:32,coordinates:{lat:38.6785,lng:-121.7733},neighborhoods:["East Woodland","West Woodland","Gibson Ranch","Spring Lake","Gum Avenue District","Beamer Park"],nearbyCities:[{name:"Davis",slug:"davis"},{name:"Sacramento",slug:"sacramento"},{name:"West Sacramento",slug:"west-sacramento"},{name:"Vacaville",slug:"vacaville"},{name:"Dixon",slug:"dixon"}],climate:"Woodland sits in the heart of Yolo County's agricultural plain, with a classic Sacramento Valley climate — very hot, dry summers (100–108°F) and mild winters with moderate rainfall. The flat terrain offers full sun exposure with no topographic wind protection, contributing to significant UV wear on roofing materials over time.",roofingChallenges:"Extreme summer heat and year-round 
57UV exposure are the primary roofing challenges in Woodland. Older downtown-area homes from the early 20th century often have aging roofing systems and decorative architectural details requiring careful matching. Newer Spring Lake and Gibson Ranch subdivisions feature composition shingle and concrete tile roofs approaching their mid-life maintenance window.",commonRoofTypes:["Composition shingles","Concrete tile","Wood shake replacement","Metal roofing","Modified bitumen (flat commercial)"],metaDescription:"Northern California Roofing Co. — Woodland's trusted roofing contractor since 1990. Residential & commercial roof replacement and repair. Yolo County experts. GAF Master Elite certified. CA Lic. #593448.",heroTagline:"Woodland, CA Roofing Specialists — Over 35 Years of Local Service",introP1:"From the historic Victorian homes near downtown Woodland to the newer subdivisions of Spring Lake and Gibson Ranch, Northern California Roofing Co. has been the trusted roofing contractor for Yolo County homeowners and businesses since 1990. Our crews are familiar with every Woodland neighborhood and the specific roofing challenges that come with each era of construction.",introP2:"Woodland's agricultural setting means full-sun exposure across most of the city, making cool-roof products and proper attic ventilation especially important for both roof longevity and home energy efficiency. We install products rated for Northern California's heat zone, ensure every project includes a full ventilation assessment, and back all work with our written workmanship warranty.",localExpertisePoints:["Over 35 years serving Woodland and Yolo County homeowners","Experience with Woodland's historic housing stock and architectural details","Cool-roof rated products for Woodland's extreme summer heat","Serving Spring Lake, Gibson Ranch, East and West Woodland neighborhoods","Commercial roofing for Woodland's agricultural and industrial building stock","All permits pulled and inspections managed for Woodland/Yolo County projects"],faqs:[{q:"How much does roof replacement cost in Woodland, CA?",a:"Woodland roof replacements typically range from $11,000 to $25,000 depending on home size, roof pitch, material selection, and whether any decking replacement is needed. We provide detailed, itemized free estimates. Financing options are available for qualifying homeowners."},{q:"What's the best roofing material for Woodland's hot climate?",a:"For Woodland's 100°F+ summers, we recommend high solar reflectance (cool roof) products. Top options include Malarkey Emerald Premium, GAF Timberline Cool Series, or concrete tile in a lighter color. Proper attic ventilation is equally important — a roof that breathes will outlast one that traps heat by many years."},{q:"Do you work on historic homes in downtown Woodland?",a:"Yes — we have experience with Woodland's Victorian and Craftsman-era homes, including matching historical shingle profiles and colors, working around decorative trim and cornice details, and navigating the permit requirements for older structures. We treat these properties with the care their architectural character deserves."},{q:"Can Northern California Roofing handle commercial roofing in Woodland?",a:"Yes — we handle commercial flat and low-slope roofing throughout Woodland and Yolo County, including TPO, PVC (Duro-Last® certified), and modified bitumen systems for agricultural buildings, warehouses, retail, and office space."},{q:"How quickly can you start a roofing project in Woodland?",a:"We typically schedule estimates within 2–4 business days of your call and can begin most residential projects within 2–4 weeks of contract signing, depending on material lead times and current workload. For emergency leak repairs, we prioritize same-week response."}],imageSlots:[{alt:"Roof replacement in Woodland CA by Northern California Roofing Co.",caption:"Woodland Residential Reroof"},{alt:"Composition shingle installation in Woodland California",caption:"Shingle Installation — Woodland"},{alt:"Commercial roofing project in Woodland Yolo County CA",caption:"Commercial Roofing — Woodland"}]},{name:"Concord",slug:"concord",county:"Contra Costa County",zips:["94518","94519","94520","94521","94522"],population:"130,000",distanceMiles:52,coordinates:{lat:37.978,lng:-122.0311},neighborhoods:["Clayton Valley","Holbrook Heights","Turtle Creek","Sun Terrace","Ygnacio Valley","Dana Hills","Pine Hollow"],nearbyCities:[{name:"Walnut Creek",slug:"walnut-creek"},{name:"Vallejo",slug:"vallejo"},{name:"Benicia",slug:"benicia"},{name:"Martinez",slug:"vacaville"},{name:"Fairfield",slug:"fairfield"}],climate:"Concord sits in the inland Contra Costa valley, protected from bay fog by the Oakland Hills but exposed to significant summer heat — reaching 95–105°F during heat waves. Mount Diablo influences local wind patterns, and the city receives moderate rainfall in winter. The inland valley location means hotter summers and cooler winters than bay-front Contra Costa cities.",roofingChallenges:"Concord's housing stock spans several decades, from 1950s–1970s ranch-style homes to 1990s–2000s tile-roofed subdivisions. Many composition shingle roofs from this era are approaching or past their service life. The inland heat puts thermal stress on roofing systems, and Diablo 
57wind events can cause wind uplift damage. Seismic activity in the East Bay area is also a consideration for tile attachment methods.",commonRoofTypes:["Composition shingles","Concrete tile","Flat TPO/PVC membrane","Metal roofing","Modified bitumen"],metaDescription:"Northern California Roofing Co. — serving Concord, CA and Contra Costa County since 1990. GAF Master Elite certified. Residential & commercial roofing. Free estimates. CA Lic. #593448.",heroTagline:"Concord's Trusted Roofing Contractor — Contra Costa County Experts",introP1:"Northern California Roofing Co. has been serving Concord and Contra Costa County homeowners since 1990, providing expert roof replacement, repair, and commercial roofing services across the region. From the established neighborhoods of Ygnacio Valley and Clayton Valley to newer development in Pine Hollow and Turtle Creek, we know Concord's diverse housing stock well.",introP2:"Concord's mix of mid-century ranch homes and 1990s–2000s subdivision construction means our crews regularly work with both composition shingle systems on older homes and concrete tile on newer properties. We bring the same GAF Master Elite® certified quality and Duro-Last commercial expertise to every Concord project, regardless of size.",localExpertisePoints:["Experienced with Concord's diverse housing stock from 1950s ranch homes to modern construction","Seismically compliant tile installation methods per current CBC requirements","Wind-rated products and fastening for Diablo wind exposure","Commercial roofing throughout Concord's office and industrial 
57corridors","Familiar with Contra Costa County building permit requirements","Serving Clayton Valley, Ygnacio Valley, Pine Hollow, and all Concord neighborhoods"],faqs:[{q:"What type of roof is most common in Concord, CA?",a:"Concord has a mix of roofing types depending on the era of construction. Homes built in the 1950s–1980s typically have composition shingles (many now overdue for replacement). Homes built in the 1990s–2000s often have concrete tile. We service both systems and can advise on whether repair or full replacement makes the most sense for your specific Concord property."},{q:"How much does a new roof cost in Concord, CA?",a:"Roof replacement in Concord typically ranges from $12,000 to $28,000 for a standard single-family home, depending on square footage, pitch, material choice, and any needed decking repairs. We provide fully itemized free estimates for all Concord projects."},{q:"Does Northern California Roofing serve all of Contra Costa County?",a:"Yes — in addition to Concord, we serve Walnut Creek, Martinez, Pleasant Hill, Pittsburg, Antioch, Brentwood, Oakley, and the broader Contra Costa County area. Our crews regularly work throughout the East Bay region."},{q:"Are you familiar with Concord's building permit requirements?",a:"Yes — we have extensive experience with Contra Costa County and City of Concord building permit requirements for re-roofing. We manage the entire permit process from application through final inspection and ensure all work meets current California Building Code standards."},{q:"Do you handle insurance claims for storm-damaged roofs in Concord?",a:"Yes — we work with homeowners on insurance claims for wind, hail, and storm damage throughout Contra Costa County. We provide detailed written assessments and documentation suitable for insurance submissions, and we have experience working with all major carriers serving the Concord area."}],imageSlots:[{src:"/pittsburg-commercial-tpo-roof-maintenance-1.jpg",alt:"TPO flat roof maintenance and repair in progress on commercial building in Pittsburg CA — Northern California Roofing Co.",caption:"TPO Flat Roof Maintenance — Pittsburg (Contra Costa County)",category:"Commercial Roofing"},{src:"/pittsburg-commercial-tpo-roof-maintenance-2.jpg",alt:"TPO membrane patch repair completed on commercial flat roof in Pittsburg CA",caption:"TPO Membrane Patch Repair — Pittsburg",category:"Commercial Roofing"},{src:"/pittsburg-commercial-tpo-roof-maintenance-3.jpg",alt:"HVAC curb flashing and TPO membrane detail on commercial flat roof maintenance project in Pittsburg CA",caption:"HVAC Curb Flashing Detail — TPO Roof — Pittsburg",category:"Commercial Roofing"},{alt:"Roof replacement in Concord CA by Northern California Roofing Co.",caption:"Concord Residential Reroof"},{alt:"Tile roof installation in Concord California Contra Costa County",caption:"Tile Roof — Concord"}]},{name:"Elk Grove",slug:"elk-grove",county:"Sacramento County",zips:["95624","95757","95758","95759"],population:"180,000",distanceMiles:47,coordinates:{lat:38.4088,lng:-121.3716},neighborhoods:["Laguna","Laguna West","Stonelake","Elk Grove Village","Sheldon","Sterling Meadows","Poppy Ridge"],nearbyCities:[{name:"Sacramento",slug:"sacramento"},{name:"Folsom",slug:"folsom"},{name:"Roseville",slug:"roseville"},{name:"Davis",slug:"davis"},{name:"West Sacramento",slug:"west-sacramento"}],climate:"Elk Grove shares the Sacramento Valley's extreme summer heat — regularly reaching 105–110°F — with mild winters and moderate rainfall. As one of Sacramento's largest and fastest-growing suburbs, the city is characterized by newer construction featuring concrete tile roofs, which are common in its many HOA-governed planned communities.",roofingChallenges:"Concrete and clay tile roofing dominates in Elk Grove's planned communities, requiring experienced tile contractors for repairs and replacements. The extreme heat causes tile underlayment to deteriorate faster than the tile itself, and many Elk Grove homes built in the early 2000s are now entering the underlayment replacement phase. HOA color and material requirements must be followed precisely.",commonRoofTypes:["Concrete tile","Clay tile","Composition shingles","Cool-roof rated products","TPO flat membrane"],metaDescription:"Trusted roofing contractor in Elk Grove, CA. Tile roof specialists — underlayment replacement, full reroof, repair. GAF Master Elite & Duro-Last certified. CA Lic. #593448. Free estimates.",heroTagline:"Elk Grove's Tile Roofing Specialists — Expert Reroof & Repair",introP1:"Elk Grove is one of the fastest-growing cities in California, and Northern California Roofing Co. has served its homeowners since 1990 — before many of today's planned communities were even built. We're familiar with every major Elk Grove development, from the older Elk Grove Village neighborhoods to the newer Stonelake, Sterling Meadows, and Poppy Ridge communities, and we understand the HOA and builder requirements each area involves.",introP2:"Concrete tile roofing requires a specialized contractor — one who understands proper underlayment systems, tile mortar bedding, ridge and hip construction, and flashing details that differ significantly from composition shingle work. Our crews are experienced tile installer
57s who treat every Elk Grove tile project with the technical precision it demands, backed by manufacturer warranties and our own workmanship guarantee.",localExpertisePoints:["Concrete and clay tile specialists — underlayment replacement without full tear-off available","Familiar with Elk Grove HOA color palettes and material approval requirements","Experience with Sacramento County permit requirements for tile re-roofing","Early 2000s construction expertise — we know what's under those roofs","Serving Laguna, Stonelake, Sterling Meadows, Sheldon, and all Elk Grove areas","Cool-roof rated tile products available for Title 24 compliance"],faqs:[{q:"My Elk Grove tile roof is leaking but the tiles look fine — what's happening?",a:"This is extremely common in Elk Grove homes built in the late 1990s and 2000s. While the concrete tiles themselves can last 50+ years, the underlayment beneath them has a shorter service life — typically 20–25 years. When the underlayment degrades, the roof leaks even though the tiles appear intact. We perform underlayment replacement by carefully removing the tiles, installing new high-performance underlayment, and relaying the original tiles — a cost-effective solution versus a full tile replacement."},{q:"Does my HOA need to approve a new roof in Elk Grove?",a:"Most Elk Grove HOA-governed communities require homeowner architectural review approval before re-roofing. We provide material samples, color chips, and manufacturer data sheets to support your HOA submission, and we only use products that match approved color palettes. We've worked with most of the major Elk Grove HOAs and know the typical requirements."},{q:"How much does tile roof underlayment replacement cost in Elk Grove?",a:"Tile underlayment replacement in Elk Grove typically ranges from $8,000–$18,000 depending on the roof size and tile condition. This is significantly less than a full tile replacement and restores leak protection for another 20+ years on roofs with tiles in good condition. We assess tile condition as part of our free inspection."},{q:"Who is the best tile roofing contractor in Elk Grove?",a:"We believe Northern California Roofing Co. is the best choice for Elk Grove tile roofing — and we'll back that up with our 35+ year history, GAF Master Elite certification, A+ BBB rating, and dozens of completed projects right in your neighborhood. We invite you to call us for a free estimate and ask for local references."},{q:"How long does a tile roof last in Elk Grove's heat?",a:"Concrete and clay tile themselves can last 50–75 years in Elk Grove's climate. The limiting factor is typically the underlayment beneath the tile, which has a 20–25 year service life. With an underlayment replacement at the appropriate interval, your tile roof can protect your home for many decades."}],imageSlots:[{alt:"Tile roof replacement in Elk Grove CA by Northern California Roofing Co.",caption:"Tile Reroof — Elk Grove"},{alt:"Concrete tile underlayment replacement in Elk Grove California",caption:"Underlayment Replacement — Elk Grove"},{alt:"New tile roof installation in Elk Grove CA planned community",caption:"New Tile Roof — Elk Grove Community"}]},{name:"Folsom",slug:"folsom",county:"Sacramento County",zips:["95630","95762"],population:"82,000",distanceMiles:52,coordinates:{lat:38.678,lng:-121.1761},neighborhoods:["Empire Ranch","Willow Creek","Broadstone","Iron Point","Folsom Ranch","Prairie Oaks","Briggs Ranch"],nearbyCities:[{name:"Sacramento",slug:"sacramento"},{name:"Elk Grove",slug:"elk-grove"},{name:"Roseville",slug:"roseville"},{name:"Davis",slug:"davis"},{name:"West Sacramento",slug:"west-sacramento"}],climate:"Folsom's foothill location brings intense summer heat — frequently reaching 105–110°F — combined with greater temperature variation than the valley floor. The proximity to the Sierra Nevada foothills means occasional significant storm events, and the American River corridor can create localized wind and moisture conditions. Steeper terrain in many neighborhoods means higher-pitched roofs than typical valley construction.",roofingChallenges:"Folsom's high-value housing stock in communities like Empire Ranch and Broadstone demands premium materials and meticulous installation. Steeper roof pitches mean higher material and labor costs. High summer temperatures accelerate wear on all roofing systems, and HOA requirements in Folsom's many planned communities specify exact material and color standards. The Gold Country location also brings greater wildfire ember risk than valley cities.",commonRoofTypes:["Composition shingles (premium)","Concrete tile","Slate-look composites","Metal roofing","Cool-roof rated products"],metaDescription:"Expert roofing contractor serving Fols
57om, CA. Premium composition shingles, tile, and metal roofing for Folsom's upscale communities. GAF Master Elite certified. CA Lic. #593448. Free estimates.",heroTagline:"Folsom's Premier Roofing Contractor — Premium Quality for Gold Country Homes",introP1:"Folsom's upscale communities demand roofing contractors who match their standards for quality and professionalism. Northern California Roofing Co. has been meeting that standard for Folsom homeowners since 1990, completing projects in Empire Ranch, Broadstone, Willow Creek, Iron Point, and across the city's many HOA-governed neighborhoods. We understand the permit requirements, HOA approval processes, and material standards that Folsom roofing projects demand.",introP2:"The foothill location and higher-pitched roofs common in Folsom require specialized installation techniques and safety equipment. Our experienced crews work safely and efficiently on steep slopes, and we carry the additional insurance coverage that high-pitch work requires. Every Folsom project is completed to manufacturer specifications and backed by both factory and workmanship warranties.",localExpertisePoints:["Experienced with Folsom's high-value housing stock and premium material requirements","Steep-slope installation expertise with proper safety systems","Familiar with Folsom HOA approval processes and color/material requirements","Class A fire-rated products — important for Folsom's wildfire ember zone designation","Serving Empire Ranch, Broadstone, Iron Point, Willow Creek, Folsom Ranch, and all Folsom neighborhoods","Sacramento County permit compliance and inspection management"],faqs:[{q:"What are the best roofing materials for Folsom homes?",a:"For Folsom's combination of extreme heat, wildfire risk, and high aesthetic standards, we recommend GAF Grand Sequoia® or Timberline UHDZ® shingles (Class A fire rated, Class H wind rated), Malarkey Emerald Premium, or premium concrete tile. Metal roofing is gaining popularity in Folsom for its longevity and fire resistance. We'll present the full cost/benefit comparison at your free estimate."},{q:"Does my Folsom HOA need to approve a new roof?",a:"Most of Folsom's planned communities require HOA architectural review before re-roofing. We assist with the submission process by providing material samples, manufacturer data sheets, and color matching documentation. We're familiar with the requirements of Folsom's major community HOAs and ensure all our work uses only approved products."},{q:"How much does roof replacement cost in Folsom, CA?",a:"Folsom roof replacements typically range from $14,000 to $35,000 depending on home size, roof pitch (steeper Folsom roofs cost more), material selection, and access considerations. Our detailed free estimates provide full cost transparency before any commitment."},{q:"Is Folsom in a wildfire risk zone for roofing purposes?",a:"Parts of Folsom and the surrounding El Dorado Hills area are designated as Wildland-Urban Interface (WUI) zones with heightened wildfire ember risk. For these properties, we specifically recommend Class A fire-rated roofing products — including fire-rated composition shingles, concrete tile, and metal roofing — which provide the highest level of fire resistance available."},{q:"Do you service Folsom Ranch and other newer Folsom developments?",a:"Yes — we work throughout all of Folsom's newer communities including Folsom Ranch, Prairie Oaks, and Briggs Ranch, as well as the established neighborhoods of Empire Ranch, Broadstone, and Iron Point. We're accustomed to the HOA documentation and builder warranty crossover issues common in newer Folsom construction."}],imageSlots:[{alt:"Premium roof replacement in Folsom CA by Northern California Roofing Co.",caption:"Premium Reroof — Folsom"},{alt:"GAF Grand Sequoia shingle installation in Folsom California",caption:"GAF Grand Sequoia — Folsom Hills"},{alt:"Steep slope roofing project in Folsom CA planned community",caption:"Steep-Slope Installation — Folsom"}]},{name:"Roseville",slug:"roseville",county:"Placer County",zips:["95661","95677","95678","95747"],population:"148,000",distanceMiles:53,coordinates:{lat:38.7521,lng:-121.288},neighborhoods:["Westpark","Woodcreek","Diamond Oaks","Sun City Roseville","Fiddyment Farm","Crocker Ranch","West Roseville"],nearbyCities:[{name:"Folsom",slug:"folsom"},{name:"Sacramento",slug:"sacramento"},{name:"Elk Grove",slug:"elk-grove"},{name:"Davis",slug:"davis"}],climate:"Roseville's Placer County foothill location brings hot summers (100–108°F) with greater humidity variation than the Sacramento Valley floor. The city sits at slightly higher elevation than Sacramento, creating somewhat cooler evening temperatures. Winter storms occasionally bring significant rain events that test roof drainage systems.",roofingChallenges:"Roseville's rapid growth since the 1990s means large concentrations of same-era housing stock — many concrete tile roofs installed in the early 2000s are now entering the critical underlayment replacement window. Placer County's higher-value housing market demands premium materials and meticulous HOA compliance. The active seismic region also requires proper tile fastening methods.",commonRoofTypes:["Concrete tile","Composition shingles (premium)","Co
57ol-roof rated products","Metal roofing","Clay tile"],metaDescription:"Northern California Roofing Co. — expert roofing contractor in Roseville, CA. Tile specialists, GAF Master Elite certified. Serving Westpark, Fiddyment Farm, Sun City & all Roseville communities. CA Lic. #593448.",heroTagline:"Roseville's Trusted Roofing Experts — Placer County Specialists",introP1:"Roseville has grown dramatically since the 1990s, and Northern California Roofing Co. has served its homeowners throughout that growth — from the original Diamond Oaks and Woodcreek communities to the newer Westpark, Fiddyment Farm, and West Roseville developments. We understand Placer County's permit requirements, the various HOA standards across Roseville's communities, and the specific roofing needs of each era of construction.",introP2:"Concrete tile is the dominant roofing system in most of Roseville's planned communities, and our tile crews are among the most experienced in the region. Whether your Roseville home needs an underlayment replacement, a full tile reroof, a targeted repair, or a new composition shingle system, we deliver the quality and warranty coverage that Placer County homeowners expect.",localExpertisePoints:["Tile roofing specialists — the dominant system in Roseville's planned communities","Underlayment-only replacement available — preserve your existing tiles","Familiar with Roseville, Placer County, and HOA permit and approval requirements","Active adult community experience including Sun City Roseville","Serving Westpark, Fiddyment Farm, Diamond Oaks, Woodcreek, and all Roseville neighborhoods","Cool-roof rated products meeting Placer County Title 24 energy requirements"],faqs:[{q:"My Roseville tile roof leaks but the tiles look intact — what's wrong?",a:"This is a very common issue in Roseville homes built in the late 1990s and early 2000s. The concrete tiles themselves last 50+ years, but the underlayment beneath them typically lasts 20–25 years. When the underlayment fails, water penetrates beneath the tiles and into the structure. We specialize in tile underlayment replacement — removing the tiles carefully, installing new premium underlayment, and relaying your original tiles at significantly lower cost than a full replacement."},{q:"How much does tile underlayment replacement cost in Roseville?",a:"In Roseville, tile underlayment replacement runs approximately $8,000–$20,000 depending on roof size, tile type (flat vs. S-tile vs. barrel), and the condition of the tiles and decking. This is typically 40–60% less than a full tile replacement and extends roof life by 20+ years. We assess tile condition during your free inspection."},{q:"Does Sun City Roseville have specific roofing requirements?",a:"Yes — Sun City Roseville (a Del Webb active adult community) has an HOA with specific material, color, and approval requirements for re-roofing. We're familiar with the submission process and required documentation. We use only HOA-approved products and provide all necessary support for the approval process at no extra charge."},{q:"How do you compare to local Roseville roofing contractors?",a:"Northern California Roofing Co. brings 35+ years of experience, GAF Master Elite® certification (top 3% of contractors nationally), a Duro-Last commercial certification, an A+ BBB rating, and a track record of thousands of completed projects throughout Placer and Sacramento Counties. We're fully licensed (CA Lic. #593448), bonded, and insured, and we provide references from Roseville projects on request."},{q:"Do you work in the newer Westpark and Fiddyment Farm communities?",a:"Yes — we work throughout all of Roseville's communities including Westpark, Fiddyment Farm, Crocker Ranch, and West Roseville, as well as the established communities of Diamond Oaks, Woodcreek, and Sun City. We know the typical HOA requirements for each community."}],imageSlots:[{alt:"Tile roof replacement in Roseville CA by Northern California Roofing Co.",caption:"Tile Reroof — Roseville"},{alt:"Concrete tile underlayment replacement in Roseville California Placer County",caption:"Underlayment Replacement — Roseville"},{alt:"Roof installation in Roseville CA HOA community",caption:"HOA Community — Roseville"}]},{name:"Benicia",slug:"benicia",county:"Solano County",zips:["94510"],population:"28,000",distanceMiles:25,coordinates:{lat:38.0494,lng:-122.1608},neighborhoods:["Arsenal District","Downtown Historic District","East Benicia","West Benicia","Southampton"],nearbyCities:[{name:"Vallejo",slug:"vallejo"},{name:"Fairfield",slug:"fairfield"},{name:"Concord",slug:"concord"},{name:"Vacaville",slug:"vacaville"},{name:"Napa",slug:"napa"}],climate:"Benicia sits directly on the Carquinez Strait, creating a uniquely windy and moisture-rich microclimate. The strait funnels consistent winds from the Delta, and morning fog from San Pablo Bay is common. Temperatures are moderate year-round (55–90°F) compared to inland cities, but the persistent moisture and salt air create accelerated wear on roofing materials.",roofingChallenges:"Wind is the defining roofing challenge in Benicia — the Carquinez Strait creates persistent high-wind conditions that require wind-rated installation methods and materials on every project. The historic downtown and Arsenal district have 19th and early 20th century structures with period-appropriate roofing requirements. Salt air and humidity from the strait accelerate deterioration of metal roofing components, flashing, and fasteners.",commonRoofTypes:["Composition shingles (wind-rated)","Flat modified bitumen","Metal roofing (marine-grade fasteners)","Concrete tile","Wood shake replacement"],metaDescription:"Roofing contractor serving Benicia, CA since 1990. Wind-rated installation for Carquinez Strait exposure. Historic district experience. Residential & commercial. CA Lic. #593448. Free estimates.",heroTagline:"Benicia Roofing Specialists — Built for Carquinez Strait Wind Exposure",introP1:"Benicia's position on the Carquinez Strait creates s
57ome of the most demanding wind exposure conditions for roofing in Solano County. Northern California Roofing Co. has been serving Benicia homeowners since 1990, bringing wind-rated installation expertise and marine-environment material knowledge to every project — from the historic Victorian homes of the Arsenal District to the modern homes of Southampton and East Benicia.",introP2:"We treat every Benicia roofing project with the heightened attention that its unique environmental conditions demand. Wind-uplift-rated fastening patterns, sealed starter strips, high-quality synthetic underlayments, and marine-grade metal components are standard — not upgrades — on our Benicia installations. Our goal is a roof that outlasts the warranty in one of Solano County's most challenging roofing environments.",localExpertisePoints:["Wind-uplift rated installation methods standard for all Benicia projects","Marine-grade fasteners and flashing for salt-air corrosion resistance","Historic district experience — Arsenal and Downtown Benicia preservation-sensitive work","Moisture-resistant underlayments for Benicia's high humidity marine environment","Serving Southampton, East Benicia, West Benicia, and the historic downtown","Same-week emergency response for wind damage events"],faqs:[{q:"Why is wind damage so common on Benicia roofs?",a:"Benicia's location on the Carquinez Strait places it directly in the path of Delta winds that regularly exceed 30–40 mph. These sustained winds gradually work shingles loose, crack ridge caps, and damage flashing. For Benicia homes, we specify wind-rated shingles (Class H — 130 mph) with enhanced nailing patterns and sealed starter strip — a significant upgrade from standard valley-area installation."},{q:"Do you work on historic homes in Benicia's downtown and Arsenal district?",a:"Yes — we have experience with Benicia's historic Victorian and Craftsman-era homes, including period-appropriate material selection, navigation of historic district permit requirements, and careful work around decorative architectural elements. We treat Benicia's historic building stock with the respect it deserves."},{q:"What roofing materials hold up best to Benicia's wind and moisture?",a:"For Benicia's wind and marine air combination, we recommend Class H wind-rated composition shingles (GAF Timberline HDZ® or Malarkey Emerald Premium), marine-grade metal components, and high-quality synthetic underlayments. For flat roofs, TPO or modified bitumen with tapered insulation is ideal. We'll walk you through the best options for your specific property at your free estimate."},{q:"How much does roof replacement cost in Benicia, CA?",a:"Benicia roof replacements typically range from $12,000 to $27,000 for a standard single-family home. Wind-rated installation adds modest cost compared to standard methods, but it's essential for durability in Benicia's environment. We provide fully itemized estimates with no hidden charges."},{q:"Does Northern California Roofing Co. handle salt-air corrosion issues on Benicia roofs?",a:"Yes — salt air from the Carquinez Strait accelerates corrosion on standard metal roofing components, flashing, and fasteners. We specify hot-dipped galvanized or stainless steel fasteners, and aluminum or painted steel flashing rather than standard galvanized products, on all Benicia projects to resist salt-air corrosion."}],imageSlots:[{alt:"Roof replacement in Benicia CA Carquinez Strait by Northern California Roofing Co.",caption:"Benicia Residential Reroof"},{alt:"Wind-rated shingle installation in Benicia California",caption:"Wind-Rated Installation — Benicia"},{alt:"Historic home roofing in Benicia CA Arsenal district",caption:"Historic District — Benicia"}]},{name:"Dixon",slug:"dixon",county:"Solano County",zips:["95620"],population:"22,000",distanceMiles:14,coordinates:{lat:38.4457,lng:-121.8227},neighborhoods:["Homestead","Parkway Estates","Heritage","Town Center","North Dixon","West Dixon"],nearbyCities:[{name:"Vacaville",slug:"vacaville"},{name:"Davis",slug:"davis"},{name:"Woodland",slug:"woodland"},{name:"Fairfield",slug:"fairfield"},{name:"West Sacramento",slug:"west-sacramento"}],climate:"Dixon sits in a flat agricultural plain between Vacaville and Davis, exposed to Sacramento Valley heat (100–108°F) and the Delta winds that funnel through the gap between the coastal hills. The combination of extreme summer heat and wind exposure makes Dixon one of the more demanding roofing environments in Solano County.",roofingChallenges:"Dixon's small-city scale means we serve as the go-to roofing contractor for both residential and agricultural/commercial properties throughout the area. Wind exposure from the adjacent Montezuma Hills wind farm corridor can be significant. The agricultural economy means many commercial projects involve warehouse and processing facility flat roofing in addition to standard residential work.",commonRoofTypes:["Composition shingles","Metal roofing (agr
57icultural)","Flat TPO/PVC membrane","Concrete tile","Modified bitumen"],metaDescription:"Local roofing contractor serving Dixon, CA and Solano County since 1990. Residential, commercial & agricultural roofing. Free estimates. CA Lic. #593448. Northern California Roofing Co.",heroTagline:"Dixon's Trusted Local Roofing Contractor — Solano County Since 1990",introP1:"Northern California Roofing Co. has served Dixon homeowners, businesses, and agricultural property owners since 1990. As the closest major roofing contractor to Dixon's Solano County location, we're the team Dixon residents call for both routine maintenance and emergency storm repairs — and we respond quickly because we're just down the road in Vacaville.",introP2:"Dixon's agricultural community means we regularly handle everything from standard residential composition shingle reroofs to large commercial and agricultural building flat roofing projects. Our crews are experienced with the full range of roofing systems used in the Dixon area, and our proximity means faster response times and lower travel costs than contractors based in Sacramento or the Bay Area.",localExpertisePoints:["Based in nearby Vacaville — faster response times for Dixon projects","Agricultural and commercial building roofing experience","Wind-rated products for Dixon's exposed wind corridor location","Serving Homestead, Parkway Estates, Heritage, and all Dixon neighborhoods","Residential and commercial permits for Solano County/City of Dixon","Emergency storm repair response — same-week scheduling"],faqs:[{q:"Why should I choose Northern California Roofing Co. for my Dixon roof?",a:"We're your local Solano County contractor — based in Vacaville just 14 miles away, we've served Dixon since 1990. That means we know the local climate, understand Solano County permit requirements, and can respond quickly for both estimates and emergency repairs. We're fully licensed (CA Lic. #593448), GAF Master Elite® certified, and maintain an A+ BBB rating."},{q:"What types of roofing do you handle in Dixon?",a:"We handle all residential roofing (composition shingles, tile, metal), commercial flat roofing (TPO, PVC Duro-Last, modified bitumen), and agricultural building roofing (standing-seam metal, metal panels) throughout the Dixon area. Whatever your roofing need in Solano County, we have the crew and the certifications for it."},{q:"How much does a new roof cost in Dixon, CA?",a:"Residential roof replacements in Dixon typically range from $10,500 to $22,000 for a standard home. Commercial and agricultural projects vary widely by size and system type. We provide free, detailed estimates for all Dixon projects with full cost transparency."},{q:"Do Dixon roofs suffer wind damage?",a:"Yes — Dixon's flat terrain and proximity to the Montezuma Hills wind corridor means 
57significant wind events are common. We specify wind-rated shingles and enhanced fastening patterns as standard on all Dixon projects. After major wind events, we offer priority assessment scheduling for Dixon customers."},{q:"Can you handle agricultural building roofing in the Dixon area?",a:"Yes — we've completed roofing projects on agricultural facilities throughout the Yolo/Solano county agricultural plain, including warehouses, processing facilities, and equipment storage buildings. Standing-seam metal and low-slope membrane systems are common for these projects, and we're experienced with both."}],imageSlots:[{alt:"Roof replacement in Dixon CA Solano County by Northern California Roofing Co.",caption:"Dixon Residential Reroof"},{alt:"Composition shingle installation in Dixon California",caption:"Shingle Installation — Dixon"},{alt:"Commercial roofing project near Dixon CA",caption:"Commercial Project — Dixon Area"}]},{name:"West Sacramento",slug:"west-sacramento",county:"Yolo County",zips:["95605","95691"],population:"55,000",distanceMiles:34,coordinates:{lat:38.5799,lng:-121.5297},neighborhoods:["Broderick","Bryte","Southport","Riverview","Bridge District","The Barn District"],nearbyCities:[{name:"Sacramento",slug:"sacramento"},{name:"Davis",slug:"davis"},{name:"Woodland",slug:"woodland"},{name:"Elk Grove",slug:"elk-grove"},{name:"Dixon",slug:"dixon"}],climate:"West Sacramento occupies the Yolo County side of the Sacramento River, sharing the Sacramento Valley's extreme summer heat. The river corridor creates slightly higher humidity and s
57ome low-level fog in winter mornings. The city's mix of older residential neighborhoods and industrial/commercial districts creates a diverse range of roofing project types.",roofingChallenges:"West Sacramento's older residential neighborhoods (Broderick, Bryte) have housing stock from the 1940s–1970s that often has multiple layers of aging roofing. The growing Southport residential area features newer construction with modern roofing systems. The city's significant commercial and industrial building stock creates strong demand for commercial flat and low-slope roofing. Sacramento River proximity means periodic heavy rain and moisture management is critical.",commonRoofTypes:["Composition shingles","Flat TPO/PVC/modified bitumen","Metal (commercial)","Concrete tile (newer areas)","Built-up roofing (older commercial)"],metaDescription:"Expert roofing contractor in West Sacramento, CA. Residential & commercial flat roofing specialists. Serving Southport, Broderick, Bryte, and all West Sacramento neighborhoods. CA Lic. #593448.",heroTagline:"West Sacramento Roofing Experts — Residential & Commercial Specialists",introP1:"West Sacramento is a city of contrasts — from the historic working-class neighborhoods of Broderick and Bryte to the growing Southport residential communities and the expanding Bridge District commercial corridor. Northern California Roofing Co. has served this diverse city since 1990, providing residential reroofs, commercial flat roofing, and repair services across every West Sacramento neighborhood and business district.",introP2:"The mix of older residential housing stock and extensive commercial and industrial facilities in West Sacramento makes roofing experience and versatility essential. Our crews handle everything from a composition shingle reroof on a 1960s Broderick bungalow to a full TPO or Duro-Last membrane system on a large West Sacramento commercial facility — with the same quality standard and workmanship warranty on every project.",localExpertisePoints:["Commercial flat roofing specialists for West Sacramento's extensive industrial corridor","Experienced with older Broderick and Bryte residential housing stock","Duro-Last Certified for commercial and industrial flat roofing systems","Familiar with Yolo County permit requirements for West Sacramento projects","Serving Southport, Broderick, Bryte, Riverview, Bridge District, and all West Sacramento areas","Free comprehensive roof inspection for commercial property owners"],faqs:[{q:"What type of roofing is most common in West Sacramento?",a:"West Sacramento has two main roofing profiles: older residential neighborhoods (Broderick, Bryte) primarily have composition shingle roofs, many with multiple aging layers. The commercial and industrial districts use flat and low-slope systems — TPO, modified bitumen, and built-up roofing (BUR). Newer Southport residential areas have composition shingles and some tile."},{q:"Do you handle commercial and industrial roofing in West Sacramento?",a:"Yes — commercial and industrial roofing is a major part of our West Sacramento work. We're a Duro-Last Certified contractor and install TPO, PVC, and modified bitumen systems for West Sacramento's warehouses, retail centers, and industrial facilities. We handle projects of all sizes and provide detailed scope documentation for property managers and owners."},{q:"My West Sacramento commercial roof has ponding water — what should I do?",a:"Ponding water (water that remains on a flat roof more than 48 hours after rain) accelerates membrane degradation significantly. We assess your current drainage system, identify low points and drain issues, and provide solutions ranging from drain repair and tapered insulation installation to full membrane replacement if needed. Call us for a free commercial roof assessment."},{q:"How much does roof replacement cost in West Sacramento?",a:"Residential roof replacements in West Sacramento typically run $10,500–$24,000. Commercial projects vary widely by size and system — a thorough on-site assessment is required for accurate commercial pricing. We provide detailed proposals for both residential and commercial projects."},{q:"How quickly can you respond for a leaking roof in West Sacramento?",a:"We prioritize same-week scheduling for active leaks throughout the Sacramento metro area including West Sacramento. For commercial properties with active water intrusion, we offer emergency response to prevent interior damage and business disruption. Call us at 916-978-9392 for Yolo/Sacramento area emergency service."}],imageSlots:[{alt:"Roof replacement in West Sacramento CA by Northern California Roofing Co.",caption:"West Sacramento Residential Reroof"},{alt:"Commercial flat roof installation in West Sacramento California",caption:"Commercial Flat Roof — West Sacramento"},{alt:"TPO membrane roofing on West Sacramento industrial building",caption:"TPO Commercial Membrane — West Sacramento"}]},{name:"Walnut Creek",slug:"walnut-creek",county:"Contra Costa County",zips:["94595","94596","94597","94598"],population:"70,000",distanceMiles:55,coordinates:{lat:37.9101,lng:-122.0652},neighborhoods:["Northgate","Larkey Park","Tice Valley","Rossmoor","Saranap","Castle Hill","Lakewood"],nearbyCities:[{name:"Concord",slug:"concord"},{name:"Vallejo",slug:"vallejo"},{name:"Benicia",slug:"benicia"},{name:"Fairfield",slug:"fairfield"},{name:"Napa",slug:"napa"}],climate:"Walnut Creek sits in the protected Contra Costa Valley behind the Oakland Hills, creating a warmer and drier microclimate than bay-front cities. Summers reach 95–105°F with low humidity, and winters are mild with moderate rainfall. The valley location provides some protection from bay winds but creates heat island effects in summer.",roofingChallenges:"Walnut Creek's affluent housing market demands the highest-quality materials and most meticulous installation — homeowners expect premium results and the credentials to back them up. The large Rossmoor retirement community presents unique HOA requirements and an older housing stock from the 1960s–1980s. Seismic activity in the East Bay area requires seismically compliant fastening on tile roofs.",commonRoofTypes:["Composition shingles (premium)","Concrete and clay tile","Slate-look composites","Metal roofing","Cool-roof products"],metaDescription:"Northern California Roofing Co. — premium roofing contractor serving Walnut Creek, CA. GAF Master Elite certified. Tile, composition & metal roofing for Contra Costa County's most discerning homeowners. CA Lic. #593448.",heroTagline:"Walnut Creek's Premium Roofing Contractor — GAF Master Elite Certified",introP1:"Walnut Creek homeowners expect premium quality — from the upscale neighborhoods of Castle Hill and Tice Valley to the distinctive Rossmoor retirement community. Northern California Roofing Co. delivers exactly that, backed by GAF Master Elite® certification, over 35 years of regional experience, and a track record of excellence across Contra Costa County's most discerning residential market.",introP2:"We match the premium standard that Walnut Creek's housing market demands — providing superior materials, meticulous installation, and thorough post-job cleanup on every project. Our detailed written proposals specify every material and process so Walnut Creek homeowners know exactly what they're receiving. We back all work with both manufacturer and workmanship warranties and provide references from completed Walnut Creek projects upon request.",localExpertisePoints:["Premium materials standard — GAF Grand Sequoia, Malarkey Emerald, and slate-look composites","Experience with Rossmoor HOA requirements and documentation","Seismically compliant tile installation per 
57current CBC requirements","Familiar with Contra Costa County permit requirements","Serving Northgate, Tice Valley, Castle Hill, Rossmoor, Lakewood, and all Walnut Creek neighborhoods","Detailed written proposals with full material specifications"],faqs:[{q:"What are the best roofing materials for Walnut Creek homes?",a:"For Walnut Creek's premium housing market, we most often recommend GAF Grand Sequoia® or Timberline UHDZ® shingles, Malarkey Emerald Premium, premium concrete tile, or slate-look composites like Malarkey Legacy. For modern architecture, standing-seam metal is increasingly popular. We provide a thorough material comparison — including cost, warranty, aesthetics, and longevity — at your free in-home estimate."},{q:"Do you work with Rossmoor HOA requirements in Walnut Creek?",a:"Yes — we have experience with the Golden Rain Foundation (Rossmoor HOA) approval requirements for re-roofing. We provide all necessary documentation, material samples, and color matching information for HOA submissions and are familiar with the typical approval timeline and requirements for Rossmoor properties."},{q:"How much does a premium roof replacement cost in Walnut Creek?",a:"Premium roof replacements in Walnut Creek typically range from $14,000 to $38,000+ depending on home size, pitch, material choice, and access considerations. We provide detailed, fully itemized estimates with no hidden charges. Financing options are available for qualifying homeowners."},{q:"Can you match the existing tile color and style on my Walnut Creek home?",a:"In most cases, yes — we have access to current-production and discontinued tile profiles through our supplier network. For existing tile repairs, we bring samples to match color and profile. For full reroofs where an exact match is needed, we identify the original manufacturer and product before proceeding."},{q:"Is Northern California Roofing Co. the right choice for a high-value Walnut Creek home?",a:"Our credentials speak for themselves: GAF Master Elite® certification (top 3% of contractors nationally), Duro-Last Certified, A+ BBB rating, 35+ years in business, and thousands of completed projects. We carry the insurance coverage and licensing (CA Lic. #593448) required for high-value properties, and we provide references from completed Walnut Creek and Contra Costa County projects."}],imageSlots:[{alt:"Premium roof replacement in Walnut Creek CA by Northern California Roofing Co.",caption:"Premium Reroof — Walnut Creek"},{alt:"Tile roof installation in Walnut Creek California Contra Costa County",caption:"Tile Installation — Walnut Creek"},{alt:"GAF Grand Sequoia shingle installation in Walnut Creek CA",caption:"GAF Grand Sequoia — Walnut Creek"}]}],Pt=e=>bV.find(a=>a.slug===e),wV={vacaville:{introP3:"From simple shingle repairs to full commercial Duro-Last PVC membrane systems, every Northern California Roofing project in Vacaville is managed by a dedicated project coordinator who keeps you informed at every stage. We supply all required permits, schedule city inspections, register your manufacturer warranty, and walk you through the completed work before collecting final payment. That's what 35 years of doing business the right way looks like.",testimonials:[{name:"Mike T.",neighborhood:"Leisure Town",project:"Full composition shingle reroof",text:"After 20 years our shingles were shot. NCR replaced the entire roof in one day — on time, professional, and the cleanup was immaculate. Our neighbors have already asked for their number."},{name:"Sarah & Jim K.",neighborhood:"Browns Valley",project:"GAF Timberline HDZ® replacement",text:"We got three quotes. NCR's proposal was the most detailed and they were the only contractor who pulled permits without being asked. They finished ahead of schedule. Absolutely 5 stars."},{name:"Robert M.",neighborhood:"Alamo Drive Corridor",project:"Commercial Duro-Last flat roof",text:"Commercial flat roof replacement on our office building — Duro-Last system, completed on schedule, zero issues two years later. I've already referred them to two other business owners."}],products:[{name:"GAF Timberline HDZ®",description:"Class H wind resistance (130 mph), StainGuard Plus® algae protection, 130-year manufacturer warranty.",benefit:"Engineered for Vacaville's Diablo 
57wind exposure and intense UV summers."},{name:"Malarkey Emerald Premium®",description:"NEX® polymer-modified asphalt, Class 4 impact resistance, high solar reflectance index.",benefit:"Stays cooler under Vacaville's 100°F+ summer heat — reduces attic temps and energy costs."},{name:"Duro-Last® PVC Membrane",description:"100% factory-fabricated seams, 15-year manufacturer warranty, wind-uplift tested.",benefit:"The gold standard for commercial flat roofing in Vacaville — zero seam failures in our track record."}],extraFaqs:[{q:"Is Vacaville in a wildfire risk zone for roofing purposes?",a:"Parts of Vacaville and the surrounding hills are designated Wildland-Urban Interface (WUI) zones with elevated wildfire ember risk. For these properties, we specifically recommend Class A fire-rated products — fire-rated composition shingles, concrete tile, or metal roofing — which provide the highest level of fire resistance. We can advise whether your specific property address falls within a WUI zone during your free inspection."},{q:"What is a GAF Master Elite® contractor and why does it matter?",a:"GAF Master Elite® is the highest tier in GAF's contractor certification program — fewer than 3% of roofing contractors in the country qualify. Requirements include a valid license, adequate insurance, a proven reputation, and continuing education. As a GAF Master Elite contractor, Northern California Roofing Co. can offer the GAF Golden Pledge® Limited Warranty — the strongest warranty GAF offers — with coverage on both materials and workmanship for up to 25 years."},{q:"Do I need a permit to replace my roof in Vacaville?",a:"Yes — City of Vacaville building codes require a permit for a full roof replacement. We pull all required permits on every project, schedule the necessary inspections, and ensure the work passes final sign-off before we consider the job complete. Beware of contractors who suggest skipping permits — an unpermitted re-roof can affect your homeowner's insurance coverage and complicate your home sale."}]},fairfield:{introP3:"Fairfield homeowners and business owners consistently tell us the same thing: they chose Northern California Roofing because we showed up when we said we would, delivered what our proposal specified, and left the property cleaner than we found it. We've completed projects across every Fairfield neighborhood — from Rancho Solano and Green Valley to Cordelia and the Air Base Parkway corridor — and we stand behind every one of them.",testimonials:[{name:"Jennifer W.",neighborhood:"Rancho Solano",project:"Wind damage repair",text:"NCR assessed the wind damage to our roof within days and repaired everything correctly the first time. Honest about what needed doing — no upselling. Exactly what you want in a contractor."},{name:"David P.",neighborhood:"Green Valley",project:"Full composition reroof — HOA compliant",text:"HOA-compliant reroof finished in 2 days. NCR matched the required shingle color exactly, pulled all permits, and the crew was clean and professional. I'd hire them again without hesitation."},{name:"Tom & Lisa R.",neighborhood:"Cordelia",project:"Pre-rainy season reroof",text:"Needed to get the roof done before the rains. NCR got us on the schedule quickly, the crew worked efficiently, and everything was cleaned up spotlessly. The new roof looks amazing."}],products:[{name:"GAF Timberline HDZ® — Class H Wind",description:"130 mph wind resistance, LayerLock® nailing zone, StainGuard Plus® UV-blocking granules.",benefit:"The right shingle for Fairfield's Delta wind corridor — wind-rated installation is non-negotiable here."},{name:"GAF WeatherBlocker™ Pro Plus Starter Strip",description:"Factory-applied adhesive sealant, specifically engineered to resist wind uplift at the most vulnerable roof edge.",benefit:"Standard on every Fairfield project — extra protection where Delta winds do the most damage."},{name:"Duro-Last® PVC Commercial System",description:"Pre-fabricated roof system with factory-welded seams, reflective white membrane, 20-year warranty.",benefit:"Ideal for Fairfield's commercial, retail, and government-adjacent facilities near Travis AFB."}],extraFaqs:[{q:"How do Fairfield's Delta winds affect my roof's lifespan?",a:"Fairfield regularly experiences sustained winds of 25–40+ mph through the Carquinez Strait and Suisun Marsh corridor. These winds gradually work under shingle edges, lift ridge caps, and drive water under flashing. Over time, this can cut a roof's effective life b
57y 30–40% compared to a less exposed location. Wind-rated installation techniques — enhanced fastening patterns, sealed starter strips, and proper ridge cap installation — significantly improve wind resistance. We include these as standard on every Fairfield project."},{q:"What should I do immediately after my Fairfield roof is wind-damaged?",a:"First, document the damage with photos before making any temporary repairs. Then call your insurance company to file a claim — most policies cover wind damage. Contact us for a detailed, written damage assessment that supports your insurance submission. We can also provide emergency tarping to prevent further water intrusion while you work through the claims process. Do not allow a contractor to start work before your adjuster has assessed the damage."},{q:"Is overlay (roofing over existing shingles) a good option in Fairfield?",a:"Overlay — applying new shingles directly over existing ones — is legal in California as long as there is only one existing layer and the decking is structurally sound. However, in Fairfield's wind-prone environment, we generally recommend tear-off rather than overlay. Overlay adds weight but does not allow inspection of the decking for damage or rot, and doesn't provide the clean surface needed for optimal wind-rated installation. We assess every roof individually and give you an honest recommendation."}]},napa:{introP3:"Napa County's construction culture has always placed a premium on quality and longevity — and Northern California Roofing has matched that standard for over 35 years. Whether your project involves historic preservation requirements in Old Town Napa, seismic compliance for hillside tile systems, or simply finding the right tile profile to match a 1990s Mediterranean home, our crews bring the specialized knowledge and pride of workmanship that Napa property owners expect.",testimonials:[{name:"Patricia L.",neighborhood:"Westwood Hills",project:"Clay tile reroof — Mediterranean estate",text:"NCR matched our original clay tile profile and color exactly. The detail work around chimneys and dormers is flawless. You can tell immediately that these are craftsmen who take pride in their work — not just roofers."},{name:"Kevin & Ana M.",neighborhood:"Browns Valley",project:"Post-earthquake tile inspection and repair",text:"After the 2014 earthquake, NCR found and fixed tile issues we didn't even know about. They understand seismic requirements for tile attachment better than any other contractor we've worked with in Napa."},{name:"George T.",neighborhood:"Alta Heights",project:"GAF Grand Sequoia® reroof — hillside property",text:"Premium composition shingle reroof on our hillside home. GAF Grand Sequoia in a cedar tone — looks better than the original. Class A fire-rated, which is mandatory up here. Excellent work."}],products:[{name:"Boral Roofing Clay Tile",description:"Authentic fired clay in barrel, S-tile, and flat profiles. 50+ year lifespan, Class A fire rated, UV-stable glaze colors.",benefit:"The authentic wine country material — correct profiles and colors for Napa's Mediterranean and Spanish Colonial architecture."},{name:"GAF Grand Sequoia® Shingles",description:"LayerLock® technology, Class A fire, Class H wind, deep shadow lines for dimensional appearance.",benefit:"The premium composition choice for Napa homes where appearance and longevity are equally important."},{name:"Malarkey Legacy® Composite Slate",description:"Rubberized asphalt, authentic slate texture, Class 4 impact resistance, 130-year warranty.",benefit:"Natural slate appearance with modern durability — ideal for Napa's premium hillside properties."}],extraFaqs:[{q:"Does Northern California Roofing work in Napa's historic downtown neighborhoods?",a:"Yes — we have experience with the historic Victorian, Craftsman, and commercial buildings in Old Town Napa and the surrounding historic neighborhoods. We understand the permit requirements for structures in or adjacent to Napa's historic districts, including requirements for material matching and preservation of character-defining features. We've completed reroofing projects on historic Napa properties that required custom material sourcing and close coordination with the City's planning department."}
57,{q:"How does Napa's earthquake history affect tile roof requirements?",a:"The 2014 South Napa earthquake (Mw 6.0) caused significant tile roof damage throughout the county, reminding Napa property owners of the importance of proper tile installation. Modern California Building Code (CBC) requires tile roofs to use mechanical fastening — not just mortar bedding — in seismically active zones. We install all Napa tile roofs to current CBC seismic requirements, including positive mechanical fastening with screws and compliant underlayment systems. If you have an older tile roof with only mortar bedding, we recommend a free inspection."},{q:"What is the best roofing solution for wildfire protection in the Napa hills?",a:"For Napa hillside properties in WUI (Wildland-Urban Interface) fire hazard zones, we recommend concrete or clay tile (Class A, inherently non-combustible), GAF Timberline HDZ® or Grand Sequoia® shingles with Class A fire rating, or standing-seam metal roofing. We also recommend Class A-rated underlayment, ridge vent screening to prevent ember entry, and maintaining clear gutters and roof surfaces free of debris. During your free estimate, we'll identify whether your property's location requires specific fire-resistance standards."}]},vallejo:{introP3:"Vallejo's bay-adjacent location means we approach every roofing project here with an understanding of the marine environment's demands — from the algae-promoting humidity of the bay fog to the accelerated corrosion of standard metal components in salt air. Our Vallejo crews carry the right materials, use marine-grade fasteners and flashing where appropriate, and select underlayments rated for high-moisture environments as standard practice.",testimonials:[{name:"Monica S.",neighborhood:"Hiddenbrooke",project:"Algae-resistant shingle reroof",text:"Our north-facing slope had severe moss and algae growth. NCR recommended the right algae-resistant shingle system and executed the reroof flawlessly. Two years later — not a trace of growth. That's the difference the right product makes."},{name:"Danny P.",neighborhood:"Glen Cove",project:"Full tear-off replacement — 3 layers",text:"NCR identified that our 30-year-old roof had 3 layers — tear-off was the only responsible option. They were upfront about it, priced it fairly, and delivered an excellent result. No surprises."},{name:"Carol B.",neighborhood:"Casa Grande",project:"Emergency wind repair",text:"Called on Monday after a wind event. Assessed Tuesday, fully repaired by Thursday. That's how emergency roofing service should work. Incredibly grateful for the fast response and honest repair."}],products:[{name:"GAF Timberline CS® with StainGuard Plus®",description:"Cool-series shingles with algae-resistant granules, Energy Star rated, available in multiple colors.",benefit:"Addresses Vallejo's two biggest challenges: bay-air algae growth and UV degradation — in one product."},{name:"GAF Deck-Armor™ Breathable Underlayment",description:"Synthetic underlayment with vapor management — allows moisture to escape from the deck while blocking liquid water.",benefit:"Critical for Vallejo's marine air environment — prevents deck rot caused by trapped moisture."},{name:"GAF EverGuard® TPO Membrane",description:"Reinforced TPO for flat and low-slope applications. Heat-welded seams, Energy Star reflective surface.",benefit:"Reliable commercial-grade flat roofing for Vallejo's waterfront and industrial district properties."}],extraFaqs:[{q:"How does salt air from San Pablo Bay affect Vallejo roofing materials?",a:"Salt air from San Pablo Bay and the Carquinez Strait accelerates corrosion on standard metal roofing components — including flashing, drip edge, ridge vents, and fasteners. Standard galvanized steel begins to rust in marine environments within 5–10 years. We specify hot-dipped galvanized or stainless steel fasteners and aluminum or factory-coated steel flashing on all Vallejo projects as a standard practice, not an upgrade. For properties within direct sight of the bay, we may recommend stainless steel throughout."},{q:"Is moss and algae on my Vallejo roof a serious problem?",a:"Yes — moss and algae are more than cosmetic issues. Moss retains moisture against the shingle surface, accelerating granule loss and reducing the asphalt's UV resistance. Heavy moss growth can lift shingles at the edges, allowing water infiltration. Algae creates discoloration that reduces reflectance and curb appeal. In Vallejo's marine environment, uncontrolled growth can reduce a shingle roof's effective life b
57y 5–10 years. We recommend algae-resistant shingles and zinc or copper strip treatments at the ridge as long-term preventive measures."},{q:"What neighborhoods in Vallejo does Northern California Roofing serve?",a:"We serve all Vallejo neighborhoods including Glen Cove, Hiddenbrooke, Northgate, South Vallejo, Casa Grande, Downtown Vallejo, Carquinez Highlands, and the surrounding Benicia and Fairfield corridor. Our Vacaville headquarters is close enough to guarantee prompt service throughout Solano County — we treat Vallejo customers with the same responsiveness as our local Vacaville clients."}]},davis:{introP3:"Davis has a well-deserved reputation for holding businesses to a higher standard — and Northern California Roofing has always welcomed that standard. We've completed roofing projects throughout the Davis community including residential reroofs in Wildhorse and Mace Ranch, flat-roof replacements on commercial and mixed-use properties near downtown, and the Duro-Last R-Tech system installation documented in our blog. Every Davis project receives the same meticulous attention to detail and complete permit documentation.",testimonials:[{name:"Professor Allen K.",neighborhood:"Wildhorse",project:"Duro-Last flat roof on residential addition",text:"As a UC Davis faculty member, I appreciate precision and documentation. NCR provided a detailed written scope, pulled permits, completed inspections, and executed flawlessly. The Duro-Last system on our addition is exactly what was specified. Exceptional company."},{name:"Karen & Jim W.",neighborhood:"Mace Ranch",project:"Cool-roof composition shingle reroof",text:"We prioritized energy efficiency. NCR walked us through cool-roof products that qualify for utility rebates. Our summer cooling bills dropped meaningfully after the re-roof. That's real value beyond just a new roof."},{name:"Ben T.",neighborhood:"North Davis",project:"Composition reroof — 1960s ranch",text:"They found rot in two decking boards and documented everything before proceeding — no surprises, no extra charges beyond the agreed scope. Honest company doing honest work. Exactly what Davis expects."}],products:[{name:"GAF Timberline Cool Series®",description:"Energy Star certified, high Solar Reflectance Index (SRI), available in a range of colors.",benefit:"Reduces attic temperatures by 15–20°F during Davis's 100°F summers — meaningful energy savings for homeowners."},{name:"Duro-Last® PVC System with R-Tech Insulation",description:"Factory-fabricated PVC membrane with rigid polyiso insulation board — complete thermal barrier.",benefit:"The best-performing flat/low-slope system for Davis's climate — superior R-value and zero seam failures in our track record."},{name:"Malarkey Emerald Premium® with NEX® Technology",description:"Recycled tire rubber content, polymer-modified asphalt, high reflectance, Class 4 impact.",benefit:"Aligns with Davis's sustainability values while delivering class-leading durability and energy performance."}],extraFaqs:[{q:"Does Northern California Roofing have experience with flat roofs in Davis?",a:"Yes — flat and low-slope roofing is one of our core specialties. We completed a notable Duro-Last PVC flat roof installation in Davis featuring R-Tech insulation board in 2024 — you can read about it on our blog. We're a Duro-Last Certified Contractor and regularly complete TPO, PVC, and modified bitumen projects on Davis residential additions, commercial buildings, and mixed-use properties. Flat roofs require a specialist — improper installation leads to ponding water, seam failures, and premature replacement."},{q:"Are cool-roof products required by California code in Davis?",a:"California's Title 24 energy code requires cool-roof rated products (meeting specific Solar Reflectance and Thermal Emittance minimums) for re-roofing projects in many California climate zones, including the Davis area (Climate Zone 12). We ensure every Davis re-roofing project uses compliant products and include the required Title 24 documentation with our permit package. Some utility companies also offer rebates for cool-roof installations — ask us about current programs during your estimate."},{q:"What makes Northern California Roofing the right choice for Davis homeowners?",a:"Davis homeowners value transparency, quality, and honest dealing — and that's been our operating model since 1990. We provide detailed, itemized written proposals with no vague line items. We pull all permits (never skip them). We use qual
57ity materials with real manufacturer warranties. We don't subcontract your job to an unknown crew. And if something isn't right, we come back and fix it — no argument, no charge. Our 35+ year track record and A+ BBB rating reflect those values."}]},woodland:{introP3:"Woodland's agricultural heritage means many properties here include both residential structures and working agricultural buildings — and Northern California Roofing has the crew capacity and product knowledge to handle both. From a composition shingle reroof on a downtown Victorian to a standing-seam metal roof on a Yolo County warehouse, we approach every project with the same licensed, insured, and warranted quality that Woodland homeowners and property owners deserve.",testimonials:[{name:"Sandra H.",neighborhood:"Spring Lake",project:"GAF Timberline reroof — HOA community",text:"Beautiful new roof. NCR matched the HOA color requirement perfectly, handled the permit, and the crew cleaned up immaculately. Very professional from the first call to the final walkthrough."},{name:"Phil & Donna R.",neighborhood:"East Woodland",project:"Complex Victorian reroof",text:"Our Victorian had multiple valleys, dormers, and turrets. NCR's crew navigated all of it with clear expertise. The result is stunning — neighbors have stopped to ask who did our roof. We couldn't be more pleased."},{name:"James T.",neighborhood:"Gibson Ranch",project:"Commercial property reroof",text:"Commercial reroof on our Yolo County investment property. Modified bitumen flat system, on budget, on schedule. NCR's commercial work is as professional as their residential — I'll use them for all my properties."}],products:[{name:"GAF Timberline Cool Series®",description:"Energy Star rated, Class A fire, Class H wind, high Solar Reflectance Index rating.",benefit:"Essential for Woodland's flat, fully-exposed terrain where roofs face maximum UV load during 108°F+ summers."},{name:"Malarkey Emerald Premium® Shingles",description:"NEX® polymer-modified asphalt, 130-year limited warranty, SBS-modified for greater flexibility.",benefit:"Handles Woodland's extreme thermal cycling (cold winters to blazing summers) better than standard asphalt."},{name:"GAF Deck-Armor™ Breathable Roof Deck Protection",description:"Synthetic, breathable underlayment with 30-year limited warranty.",benefit:"Allows moisture vapor to escape from Woodland attics — important during summer heat buildup in our climate."}],extraFaqs:[{q:"Does Northern California Roofing handle agricultural building roofing in the Woodland area?",a:"Yes — we complete roofing projects on agricultural and commercial buildings throughout Yolo County, including equipment storage barns, processing facilities, and warehouses. Standing-seam metal and low-slope membrane systems (TPO, Duro-Last PVC) are common for these applications. Agricultural buildings often have large, simple roof planes that are efficient to complete, and we provide competitive pricing for farm and agricultural property owners in the Woodland area."},{q:"What is the best time of year to replace a roof in Woodland?",a:"In Woodland's climate, the ideal window is March through October — dry weather, manageable temperatures, and enough lead time before the November–March rainy season. Summer scheduling fills up quickly, so we recommend contacting us in spring for summer or early fall installation. If your roof has active leaks or damage, we prioritize repairs year-round regardless of season and can often provide same-week emergency service."},{q:"How does Northern California Roofing handle Woodland's older Victorian homes?",a:"Woodland has a beautiful collection of Victorian and Craftsman-era homes that require roofing contractors with experience in older construction. We're comfortable with the complex framing, decorative details, and non-standard profiles found on historic Woodland homes. We source period-appropriate materials — including dimensional shingles in classic profiles, copper flashing for chimneys and valleys, and specialty ridge caps — and we take extra care around decorative cornices, gable ornaments, and other architectural elements that define these homes' character."}]},sacramento:{introP3:"Sacramento's diversity of neighborhoods means our crews have completed roofing projects across virtually every era of California residential construction — from 1900s Midtown Victorians requiring careful material matching and historic sensitivity, to 1960s ranch-style homes in Arden-Arcade needing practical, durable composition systems, to 2000s tile-roofed subdivisions in Natomas approaching their underlayment replacement window. Whatever your Sacramento address, we know 
57what's under your roof and how to replace it properly.",testimonials:[{name:"Maria G.",neighborhood:"East Sacramento",project:"Historic Craftsman reroof — period materials",text:"Our 1920s Craftsman needed materials that matched the neighborhood character. NCR spec'd GAF Grand Sequoia in cedar tone. The house looks the way it always should have. Historically appropriate and beautifully done."},{name:"Derek & Sue N.",neighborhood:"Land Park",project:"GAF Master Elite quality reroof",text:"We got 5 quotes. The reason we chose NCR was their GAF Master Elite certification and the detail of their proposal. That certification isn't marketing — it's a real quality difference. Our new roof is proof."},{name:"Leslie C.",neighborhood:"Natomas",project:"Commercial strip mall TPO reroof",text:"Commercial reroof on an occupied strip mall. NCR minimized disruption to tenants, kept the schedule, and delivered a perfect result. These guys clearly have experience with occupied commercial buildings."}],products:[{name:"GAF Timberline Cool Series® — Energy Star",description:"High SRI rating, reduces roof surface temps by 40–60°F vs. standard shingles. Available in 20+ colors.",benefit:"Critical for Sacramento's 110°F summers — significantly reduces cooling load and attic heat buildup."},{name:"CertainTeed Landmark PRO®",description:"Triple-layer laminated architectural shingle with StreakFighter® algae protection. 50-year warranty.",benefit:"Premium choice for Sacramento's historic neighborhoods requiring dimensional depth and period-appropriate profiles."},{name:"Boral TruExterior® Slate",description:"Engineered composite slate — looks authentic, weighs far less than natural slate, Class A fire rated.",benefit:"Ideal for Sacramento Craftsman and Victorian restorations requiring historic-appropriate materials without structural concerns."}],extraFaqs:[{q:"Does Northern California Roofing pull permits for Sacramento roofing projects?",a:"Yes — we pull all required permits from the City of Sacramento or Sacramento County (depending on your address) for every re-roofing project. This includes Title 24 energy compliance documentation, which Sacramento requires for most re-roofing work. We manage the entire permit process from application through final inspection. We strongly discourage using any contractor who suggests skipping permits — an unpermitted roof can void your homeowner's insurance and create disclosure obligations when you sell."},{q:"What's the difference between a composition shingle and a tile roof in Sacramento's climate?",a:"Both are appropriate for Sacramento's climate when properly installed. Premium composition shingles (30–40 year lifespan) cost less upfront, install faster, and are easier to repair. Concrete and clay tile (50–75+ year lifespan) costs more but dramatically outlasts shingles and provides better thermal mass for temperature regulation. In Sacramento's HOA-governed communities, tile is often required by community standards. We present a complete comparison — including total lifecycle cost — at every Sacramento estimate so you can make an informed decision."},{q:"Does Northern California Roofing handle commercial roofing in Sacramento?",a:"Yes — we're a Duro-Last Certified contractor and complete TPO, PVC, and modified bitumen flat and low-slope roofing projects throughout the Sacramento metro area. We have experience with occupied commercial properties, tenant coordination, phased projects to minimize business disruption, and the documentation requirements for commercial roofing in Sacramento County. We handle projects ranging from small retail suites to large industrial facilities."}]},"elk-grove":{introP3:"Elk Grove's newer communities typically come with HOA oversight and builder-warranty crossover periods that can make roofing decisions more complex than in older neighborhoods. Northern California Roofing navigates this terrain expertly — we understand the documentation HOAs require, know how to identify which party bears responsibility for manufacturer vs. builder defects, and provide the written assessments needed for HOA submissions and warranty claims. Our Elk Grove clients consistently tell us the process was smoother than they expected.",testimonials:[{name:"Frank M.",neighborhood:"Laguna",project:"Tile underlayment replacement — tiles preserved",text:"Our tile roof was leaking but tiles looked fine. NCR correctly diagnosed the underlayment failure, carefully removed and relaid all tiles, and the cost was half of a full replacement. Every drop gone. Brilliant work."},{name:"Yolanda T.",neighborhood:"Stonelake",project:"Full tile reroof — HOA approved",text:"My HOA required specific documentation, color matching, and an inspection. NCR handled all of it and the HOA approved on the first submission. No back-and-forth, no delays. That's the kind of experience everyone should have."},{name:"Robert & Kim H.",neighborhood:"Sterling Meadows",project:"Full tile reroof — 3,000 sq ft",text:"A large crew, incredibly efficie
57nt, done in two days. They coordinated perfectly with our HOA and the workmanship is flawless. This is clearly a company that does tile roofing every single day."}],products:[{name:"Boral Duralite™ Concrete Tile",description:"Lightweight concrete tile — 40% lighter than standard concrete tile. Class A fire, Class H wind.",benefit:"Reduces structural load on Elk Grove's newer homes — important when replacing heavier original tile systems."},{name:"GAF Liberty™ Self-Adhering Underlayment",description:"Self-adhering modified bitumen underlayment for tile applications. Ice & water shield performance.",benefit:"Superior underlayment protection for Elk Grove's tile re-roofing — outperforms felt 30 in longevity."},{name:"GAF Timberline HDZ® in Earth Tones",description:"Architectural composition shingle in desert sand, weathered wood, and barkwood color families.",benefit:"Matches many Elk Grove HOA palettes when full tile replacement is desired — fraction of tile's cost."}],extraFaqs:[{q:"How do I know if my Elk Grove tile roof needs underlayment replacement or full tile replacement?",a:"The key question is the condition of your tiles. If tiles are largely intact — no widespread cracking, breakage, or color fading — underlayment-only replacement is typically the most cost-effective path. We carefully remove a sample section of tiles during inspection to assess the underlayment condition, check for deck rot, and evaluate the tiles themselves. If tiles are in serviceable condition, we relay them over new underlayment. If tiles are significantly degraded, full replacement makes more sense. We provide an honest assessment — not a sales pitch."},{q:"My Elk Grove home was built in 2001 — should I be thinking about a new roof?",a:"Early 2000s Elk Grove construction is squarely in the critical roofing window. The concrete tiles on these homes typically last 50+ years, but the underlayment beneath them — usually 20-30 lb felt — has a 20–25 year service life. Many 2001–2006 Elk Grove homes are now experiencing first-time leaks due to underlayment failure even though their tiles look fine. We recommend a free inspection for any Elk Grove home in that vintage — catching underlayment failure before it causes interior water damage is far less expensive than repairing the consequences."},{q:"How long does a tile underlayment replacement take in Elk Grove?",a:"A typical Elk Grove single-story tile underlayment replacement (1,800–2,400 sq ft) takes 2–3 days with our full crew. Two-story homes with more complex roof geometry may take 3–4 days. We work efficiently to minimize disruption, and we carefully handle your existing tiles throughout the process. Most homeowners are pleasantly surprised by how quickly the job is completed."}]},concord:{introP3:"Concord's location near Mount Diablo and the East Bay hills creates a distinct roofing environment where wind exposure, seismic activity, and wildfire risk all need to be considered alongside standard climate factors. Northern California Roofing has been addressing these specific challenges for Contra Costa County homeowners since 1990 — selecting products for wind uplift resistance, installing tile systems with seismically compliant fastening, and recommending Class A fire-rated products for properties in elevated fire-hazard zones.",testimonials:[{name:"Angela K.",neighborhood:"Ygnacio Valley",project:"Composition reroof — 1970s ranch",text:"NCR found rotted fascia during inspection and replaced it before laying new shingles — documentation included, no surprise charges. That's the kind of thoroughness that shows a contractor is doing things right."},{name:"Mario T.",neighborhood:"Clayton Valley",project:"Class A fire / Class H wind reroof",text:"Wind and fire risk are real concerns in our area near Mount Diablo. NCR spec'd exactly the right products. Peace of mind from the right roofing solution is absolutely worth the investment."},{name:"Donna & Bill S.",neighborhood:"Pine Hollow",project:"Correction reroof after prior contractor failures",text:"We'd had endless leaks from a prior contractor. NCR corrected their work and reroofed the rest of the house. The difference in quality and professionalism is night and day. Should have called NCR first."}],products:[{name:"GAF Timberline HDZ® — Class H Wind",description:"Class A fire, Class H wind (130 mph), LayerLock® technology, StainGuard Plus® algae protection.",benefit:"The appropriate spec for Concord's Diablo 
57wind exposure — manufacturer-backed wind warranty included."},{name:"Boral Concrete Tile — S-Profile",description:"Classic S-tile profile, Class A fire, Class H wind, ICC-ES certified for seismic zones.",benefit:"Correct for Concord's 1990s–2000s construction aesthetic — installed with seismically compliant fastening."},{name:"GAF EverGuard Extreme® TPO",description:"Premium commercial TPO with enhanced puncture resistance and heat-welded seams.",benefit:"Ideal for Concord's extensive commercial and industrial building stock along the I-680 and Highway 4 corridors."}],extraFaqs:[{q:"What roofing issues are most common in Concord's older ranch-style homes?",a:"Concord's 1950s–1970s ranch homes most often present with aged composition shingles that have lost most of their protective granules, allowing UV to directly degrade the asphalt. We also commonly find: multiple layers of old roofing (requiring full tear-off), inadequate attic ventilation (reducing the new roof's lifespan), deteriorated pipe flashings, and in some cases, original wood plank decking that needs replacing with modern OSB or plywood. Our free inspection covers all of these systematically."},{q:"Is Concord in a fire hazard zone that requires special roofing?",a:"Parts of Concord and eastern Contra Costa County — particularly areas near Mount Diablo and the Clayton Valley foothills — are designated as High or Very High Fire Hazard Severity Zones (FHSZ). For homes in these zones, California building code requires Class A fire-rated roofing for re-roofing. We verify your property's fire hazard designation and specify appropriate materials as a standard part of our Concord proposals."},{q:"How does Northern California Roofing compare to local Concord roofing companies?",a:"We bring 35+ years of regional experience, GAF Master Elite® certification, Duro-Last commercial certification, an A+ BBB rating, and a proven track record throughout Contra Costa County. We're fully licensed (CA Lic. #593448), carry full liability insurance and workers' compensation, and provide itemized written proposals. We invite you to compare our credentials and request references from completed Concord projects. We believe the comparison will speak for itself."}]},"walnut-creek":{introP3:"Walnut Creek's real estate market is one of the most discerning in the East Bay — homeowners here have high expectations, and they should. Northern California Roofing has served Walnut Creek's most demanding clients for over 35 years, completing premium roof replacements that meet both the aesthetic and technical standards the market expects. Our detailed written proposals, use of top-tier materials, and meticulous project execution reflect the premium standard that Walnut Creek properties deserve.",testimonials:[{name:"Richard A.",neighborhood:"Tice Valley",project:"GAF Grand Sequoia® complete reroof",text:"We have a high-value home and were particular about who touched our roof. NCR's GAF Master Elite certification, their proposal detail, and their work quality all matched our expectations precisely. Exceptional company."},{name:"Jennifer M.",neighborhood:"Castle Hill",project:"Tile reroof with upgraded underlayment",text:"NCR matched our original tile exactly — the color and profile are indistinguishable from new. The permit paperwork and warranty registration were all handled perfectly. That's a company that takes care of the details."},{name:"Stephen & Carol W.",neighborhood:"Rossmoor",project:"Rossmoor HOA-compliant reroof",text:"Rossmoor HOA compliance is non-negotiable. NCR knew the GRF requirements, submitted all the right documentation, and did beautiful work. We've already recommended them to three of our neighbors."}],products:[{name:"GAF Grand Sequoia® Shingles",description:"LayerLock® technology, Class A fire, Class H wind, deep dimensional profile — GAF's flagship residential shingle.",benefit:"The premium composition choice for Walnut Creek's high-value residential market — appearance and longevity in one product."},{name:"Boral Premium S-Tile and Flat Tile",description:"Mediterranean and Spanish profiles in a full range of premium glazed and through-body color options.",benefit:"Correct profiles and colors for Walnut Creek's Mediterranean, Spanish Colonial, and Tuscan-influenced architecture."},{name:"Malarkey Legacy® Composite Slate",description:"Authentic slate texture, rubberized asphalt, Class 4 impact, available in 12 natural stone colors.",benefit:"Natural slate appearance with modern durability and Class 4 impact resistance for Walnut Creek's premium homes."}],extraFaqs:[{q:"What is the GAF Golden Pledge® warranty and can I get it in Walnut Creek?",a:"The GAF Golden Pledge® Limited Warranty is the strongest roofing warranty available — it c
57overs both GAF materials and workmanship for up to 25 years, and GAF backs it directly. Only GAF Master Elite® certified contractors (the top 3% nationally) can offer this warranty, and Northern California Roofing is certified to do so. For Walnut Creek homeowners, the Golden Pledge provides exceptional peace of mind — if anything goes wrong with materials or installation within the coverage period, GAF resolves it directly."},{q:"How should I choose between composition shingles, tile, and metal for my Walnut Creek home?",a:"The right choice depends on your home's architecture, your budget, your timeline of ownership, and your HOA requirements. Premium composition shingles (GAF Grand Sequoia, Malarkey Legacy) offer the best value for homes where a 30–40 year lifespan is sufficient. Concrete or clay tile offers 50–75+ year lifespan with excellent aesthetics for Mediterranean and Spanish-style homes. Standing-seam metal is gaining popularity for its 50+ year lifespan and clean modern aesthetic. We provide a thorough side-by-side comparison — cost, warranty, lifespan, and appearance — at your free in-home estimate."},{q:"Is Northern California Roofing familiar with Walnut Creek's seismic zone considerations?",a:"Yes — the East Bay is in a highly active seismic zone, and tile roofing in particular requires seismically compliant installation methods per the California Building Code. We use positive mechanical fastening (screws) and compliant underlayment systems on all Walnut Creek tile installations — not just mortar bedding, which can fail in seismic events. For existing tile roofs installed prior to current seismic code requirements, we recommend a free inspection to assess compliance."}]}},Bw={vacaville:[{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Cedar Cask"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Pacific Drift"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Sienna Blend"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Pacific Drift"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Highlander",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander",color:"Ivory Mist"},{manufacturer:"Malarkey",product:"Highlander",color:"Burlwood"},{manufacturer:"Malarkey",product:"Highlander Nex",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander Cool",color:"Riverstone Grey"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Stone Grey"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Charcoal"},{manufacturer:"GAF",product:"HDZ RS",color:"Charcoal"},{manufacturer:"GAF",product:"Timberline Reflector Series",color:"Charcoal"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Silver Birch"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Solaris Graphite"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Georgetown Grey"},{manufacturer:"CertainTeed",product:"Presidential TL",color:"Aged Bark"},{manufacturer:"CertainTeed",product:"Landmark",color:"Platinum Solaris"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"},{manufacturer:"Boral Tile",product:"Saxony 900",color:"Charcoal Brown Blend"}],fairfield:[{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Sandy Shale"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Cedar Cask"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Pacific Drift"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Cedar Cask"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Highlander",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander Nex",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander",color:"Sienna Blend"},{manufacturer:"Malarkey",product:"Highlander",color:"Burlwood"},{manufacturer:"Malarkey",product:"Highlander Cool",color:"Riverstone Grey"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Aged Chestnut"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Charcoal"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Copper Canyon"},{manufacturer:"GAF",product:"Timberline RS",color:"Sandalwood"},{manufacturer:"CertainTeed",product:"Landmark",color:"Resawn Shake"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"},{manufacturer:"Westlake",product:"Swift Guard",color:"Saxony"}],sacramento:[{manufacturer:"Malarkey",product:"Highlander",color:"Ivory Mist"},{manufacturer:"Malarkey",product:"Highlander",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander",color:"Sienna Blend"},{manufacturer:"Malarkey",product:"Highlander",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Highlander Nex",color:"Golden Amber"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Burlwood"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Pacific Drift"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Vista",color:"Silverwood"},{manufacturer:"GAF",product:"Timberline HDZ",color:"Sandalwood"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Golden Amber"},{manufacturer:"GAF",product:"Timberline",color:"Charcoal"},{manufacturer:"GAF",product:"HDZ RS",color:"Birchwood"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Resawn Shake"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Heather Blend"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"}],davis:[{manufacturer:"Malarkey",product:"Ecoasis",color:"Silverwood"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Willowwood"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Willow Wood"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Pacific Drift"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Golden Amber"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Pacific Drift"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Burlwood"},{manufacturer:"Malarkey",product:"Highlander Nex",color:"Ivory Mist"},{manufacturer:"Malarkey",product:"Highlander",color:"Ivory Mist"},{manufacturer:"Malarkey",product:"Highlander Cool",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Highlander",color:"Moonlit Black"},{manufacturer:"GAF",product:"HDZ RS",color:"Charcoal"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Coastal Slate"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Aged Chestnut"},{manufacturer:"CertainTeed",product:"Landmark Pro Solaris",color:"Weatherwood"},{manufacturer:"CertainTeed",product:"Solaris",color:"Resawn Shake"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"}],napa:[{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Cedar Cask"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Willow Wood"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Burlwood"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Sienna Blend"},{manufacturer:"Malarkey",product:"Highlander",color:"Midnight Black"},{manufacturer:"Malarkey",product:"Highlander Nex",color:"Midnight Black"},{manufacturer:"Malarkey",product:"Highlander",color:"Natural Wood"},{manufacturer:"Malarkey",product:"Highlander Cool",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Vista",color:"Storm Grey"},{manufacturer:"Malarkey",product:"Vista",color:"Moonlit Black"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Charcoal"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Moire Black"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"Dark Grey"},{manufacturer:"Duro-Last",product:"PVC Membrane 60 Mil",color:"Tan"},{manufacturer:"Taylor Metals",product:"Versa Span 24 Gauge",color:"Dark Bronze"},{manufacturer:"Taylor Metals",product:"Kynar 24 Gauge",color:"Forest Green"},{manufacturer:"Taylor Metals",product:"Kynar 24 Gauge",color:"Zinc Grey"}],vallejo:[{manufacturer:"Malarkey",product:"Highlander Nex",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander Nex",color:"Midnight Black"},{manufacturer:"Malarkey",product:"Highlander",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander",color:"White"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Willow Wood"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Burlwood"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Burlwood"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Stone Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Willow Wood"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Vista",color:"Natural Wood"},{manufacturer:"Malarkey",product:"Vista Cool",color:"Moonlit Black"},{manufacturer:"GAF",product:"Timberline",color:"Birchwood"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"},{manufacturer:"Duro-Last",product:"PVC Membrane 60 Mil",color:"White"}],woodland:[{manufacturer:"Malarkey",product:"Ecoasis",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Sienna Blend"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Sienna Blend"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Pacific Drift"},{manufacturer:"GAF",product:"HDZ RS",color:"Charcoal"},{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Charcoal"},{manufacturer:"Duro-Last & GAF",product:"50 MIL PVC & Timberline HDZ RS",color:"White & Hickory"}],concord:[{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Willowwood"}],"elk-grove":[{manufacturer:"Malarkey",product:"Ecoasis",color:"Moonlit Black"}],folsom:[{manufacturer:"Malarkey",product:"Highlander",color:"Silverwood"}],roseville:[{manufacturer:"GAF",product:"Timberline HDZ RS",color:"Coastal Slate"},{manufacturer:"Concrete Tile & Duro-Last",product:"PVC Membrane 50 Mil",color:"White"}],benicia:[{manufacturer:"Malarkey",product:"Highlander Nex",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander",color:"Silverwood"},{manufacturer:"Malarkey",product:"Highlander",color:"Ivory Mist"},{manufacturer:"Malarkey",product:"Highlander Cool",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Burlwood"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Desert Brush"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Pacific Drift"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Burlwood"},{manufacturer:"Malarkey",product:"Vista",color:"Riverstone Grey"},{manufacturer:"Malarkey",product:"Vista Cool",color:"Moonlit Black"},{manufacturer:"GAF",product:"Grand Sequoia",color:"Forest Brown"},{manufacturer:"GAF",product:"Timberline RS",color:"Stone Grey"},{manufacturer:"Duro-Last",product:"PVC Membrane 60 Mil",color:"Tan"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"Brown"}],dixon:[{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Moonlit Black"},{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Black Dusk"},{manufacturer:"Malarkey",product:"Ecoasis",color:"Coastal Grey"},{manufacturer:"Malarkey",product:"Highlander Nex",color:"Ivory Mist"},{manufacturer:"Malarkey",product:"Highlander",color:"Ivory Mist"},{manufacturer:"Malarkey",product:"Vista",color:"Sienna Blend"},{manufacturer:"GAF",product:"HDZ RS",color:"Sagewood"},{manufacturer:"GAF",product:"HDZ RS",color:"Charcoal"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Silver Birch"}],"west-sacramento":[{manufacturer:"Malarkey",product:"Ecoasis Nex",color:"Burlwood"},{manufacturer:"CertainTeed",product:"Landmark Solaris",color:"Resawn Shake"},{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"}],"walnut-creek":[{manufacturer:"Duro-Last",product:"PVC Membrane 50 Mil",color:"White"}]},CV="/logo-color.png",SV="707-447-5655",qw="916-978-9392",jV=[{icon:r.jsx(ls,{size:28}),title:"Roof Replacement",desc:"Complete residential and commercial reroof — GAF, Malarkey, CertainTeed, Duro-Last, and concrete/clay tile systems."},{icon:r.jsx(ki,{size:28}),title:"Roof Repair",desc:"Leak detection, shingle/tile replacement, flashing repair, valley repair, and targeted repairs that stop damage before it spreads."},{icon:r.jsx(zR,{size:28}),title:"Commercial Roofing",desc:"TPO, PVC, and Duro-Last® PVC membrane systems for flat and low-slope commercial, retail, and industrial properties."},{icon:r.jsx(Vm,{size:28}),title:"Cool Roof Upgrades",desc:"Energy Star–rated, high-SRI products that reduce attic temps 15–20°F and lower cooling costs. California Title 24 compliant."},{icon:r.jsx(_n,{size:28}),title:"Storm Damage Repair",desc:"Priority response for wind, hail, and rain events. Detailed written damage assessments for insurance claims."},{icon:r.jsx(Yc,{size:28}),title:"Tile Roof Services",desc:"Concrete and clay tile installation, underlayment-only replacement (preserve existing tiles), mortar re-bedding, and complete reroof."}],NV=[{icon:r.jsx(JR,{size:24}),title:"Free Inspection & Assessment",desc:"We inspect your roof thoroughly — decking, flashing, ventilation, gutters — and document everything with photos."},{icon:r.jsx(Yc,{size:24}),title:"Detailed Written Estimate",desc:"Itemized scope of work with material specifications, warranties, and timeline. No vague line items, no surprise costs."},{icon:r.jsx(qR,{size:24}),title:"Material Selection",desc:"We present product options suited to your home, climate, and budget — including HOA samples and color matching if needed."},{icon:r.jsx(ls,{size:24}),title:"Professional Installation",desc:"Our licensed, W-2 crews complete your project to 
57manufacturer specifications. We pull all permits and schedule all inspections."},{icon:r.jsx(LR,{size:24}),title:"Final Walkthrough & Warranty",desc:"We walk the finished project with you, register your manufacturer warranty, and provide all documentation before collecting payment."}],AV=[{label:"GAF Master Elite®",sub:"Top 3% of contractors nationwide"},{label:"Duro-Last Certified",sub:"Since 2008 — flat roofing specialists"},{label:"A+ BBB Rating",sub:"35+ years of accredited business"},{label:"CA Lic. #593448",sub:"Licensed, bonded & insured"}];function TV({q:e,a,index:i}){const[s,c]=w.useState(!1);return r.jsxs("div",{className:"border border-gray-200",children:[r.jsxs("button",{className:"w-full flex justify-between items-center px-5 py-4 text-left font-bold text-primary hover:bg-gray-50 transition-colors",onClick:()=>c(d=>!d),"aria-expanded":s,id:`faq-q-${i}`,"aria-controls":`faq-a-${i}`,children:[r.jsx("span",{children:e}),s?r.jsx(YC,{size:18,className:"shrink-0 text-secondary"}):r.jsx(ss,{size:18,className:"shrink-0 text-secondary"})]}),s&&r.jsx("div",{id:`faq-a-${i}`,role:"region","aria-labelledby":`faq-q-${i}`,className:"px-5 pb-4 text-gray-600 text-sm leading-relaxed border-t border-gray-100 pt-3",children:a})]})}function Ww({slot:e,i:a,city:i}){return e.src?r.jsxs("figure",{className:"overflow-hidden group",children:[r.jsx("img",{src:e.src,alt:e.alt,className:"w-full aspect-video object-cover group-hover:scale-105 transition-transform duration-300",loading:a===0?"eager":"lazy",width:600,height:338}),r.jsx("figcaption",{className:"bg-primary text-white text-xs font-bold px-3 py-2 text-center",children:e.caption})]}):r.jsxs("div",{className:"bg-gray-100 border-2 border-dashed border-gray-300 aspect-video flex flex-col items-center justify-center p-6 text-center",role:"img","aria-label":e.alt,children:[r.jsx("div",{className:"text-gray-400 mb-3","aria-hidden":"true",children:r.jsxs("svg",{width:"40",height:"40",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1,children:[r.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),r.jsx("circle",{cx:"8.5",cy:"8.5",r:"1.5"}),r.jsx("path",{d:"m21 15-5-5L5 21"})]})}),r.jsx("p",{className:"text-sm font-bold text-gray-500",children:e.caption}),r.jsxs("p",{className:"text-xs text-gray-400 mt-1",children:[i,", CA"]})]})}function Vt({city:e}){const a="https://northerncaliforniaroofing.com",i=`${a}/roofing-${e.slug}-ca`,s=wV[e.slug],c=s?[...e.faqs,...s.extraFaqs]:e.faqs,d=e.county.includes("Yolo")||e.county.includes("Sacramento")||e.county.includes("Placer")?qw:SV,f=d===qw?"tel:9169789392":"tel:7074475655",h={"@context":"https://schema.org","@type":["RoofingContractor","LocalBusiness","HomeAndConstructionBusiness"],name:"Northern California Roofing Co.",description:`GAF Master Elite® certified roofing contractor serving ${e.name}, CA and surrounding ${e.county} communities since 1990. Residential and commercial roof replacement, repair, and flat roofing systems.`,url:a,logo:`${a}/logo-color.png`,image:`${a}/opengraph.jpg`,telephone:["+17074475655","+19169789392"],email:"[email protected]",address:{"@type":"PostalAddress",streetAddress:"859 Cotting Court, Suite A",addressLocality:"Vacaville",addressRegion:"CA",postalCode:"95688",addressCountry:"US"},areaServed:[{"@type":"City",name:e.name,containedInPlace:{"@type":"AdministrativeArea",name:e.county}}],geo:{"@type":"GeoCoordinates",latitude:e.coordinates.lat,longitude:e.coordinates.lng},licenseNumber:"CA Lic. #593448",foundingDate:"1990",priceRange:"$$",openingHoursSpecification:[{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday"],opens:"07:00",closes:"17:00"}],aggregateRating:{"@type":"AggregateRating",ratingValue:"4.9",reviewCount:"143",bestRating:"5",worstRating:"1"},hasOfferCatalog:{"@type":"OfferCatalog",name:`Roofing Services in ${e.name}, CA`,itemListElement:[{"@type":"Offer",itemOffered:{"@type":"Service",name:"Roof Replacement",description:`Complete residential and commercial reroof in ${e.name}, CA — GAF, Malarkey, CertainTeed, Duro-Last, and tile systems.`}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Roof Repair",description:`Leak detection, shingle/tile repair, flashing repair, and storm damage repair in ${e.name}, CA.`}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Commercial Roofing",description:`TPO, PVC, and Duro-Last® PVC membrane systems for flat and low-slope commercial properties in ${e.name}, CA.`}},{"@type":"Offer",itemOffered:{"@type":"Service",name:"Tile Roof Services",description:`Concrete and clay tile installation, underlayment replacement, and mortar re-bedding in ${e.name}, CA.`}}]},sameAs:[a]},g={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:a},{"@type":"ListItem",position:2,name:"Service Areas",item:`${a}/#service-areas`},{"@type":"ListItem",position:3,name:`Roofing in ${e.name}, CA`,item:i}]},p={"@context":"https://schema.org","@type":"FAQPage",mainEntity:c.map(({q:x,a:b})=>
57({"@type":"Question",name:x,acceptedAnswer:{"@type":"Answer",text:b}}))},y=s?{"@context":"https://schema.org","@type":"RoofingContractor",name:"Northern California Roofing Co.",review:s.testimonials.map(x=>({"@type":"Review",author:{"@type":"Person",name:x.name},reviewRating:{"@type":"Rating",ratingValue:"5",bestRating:"5"},reviewBody:x.text,name:x.project}))}:null;return r.jsxs(r.Fragment,{children:[r.jsxs(Qw,{children:[r.jsx("title",{children:`${e.name} Roofing Contractor | Northern California Roofing Co.`}),r.jsx("meta",{name:"description",content:e.metaDescription}),r.jsx("link",{rel:"canonical",href:i}),r.jsx("meta",{property:"og:title",content:`${e.name} Roofing Contractor | Northern California Roofing Co.`}),r.jsx("meta",{property:"og:description",content:e.metaDescription}),r.jsx("meta",{property:"og:url",content:i}),r.jsx("meta",{property:"og:type",content:"website"}),r.jsx("meta",{property:"og:image",content:`${a}/logo-color.png`}),r.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),r.jsx("meta",{name:"twitter:title",content:`${e.name} Roofing Contractor | Northern California Roofing Co.`}),r.jsx("meta",{name:"twitter:description",content:e.metaDescription}),r.jsx("script",{type:"application/ld+json",children:JSON.stringify(h)}),r.jsx("script",{type:"application/ld+json",children:JSON.stringify(g)}),r.jsx("script",{type:"application/ld+json",children:JSON.stringify(p)}),y&&r.jsx("script",{type:"application/ld+json",children:JSON.stringify(y)})]}),r.jsxs("div",{className:"flex flex-col min-h-[100dvh]",children:[r.jsx("a",{href:"#main-content",className:"skip-link",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"HOME"}),r.jsxs("section",{className:"relative bg-primary text-white pt-24 pb-16 md:pt-32 md:pb-24 overflow-hidden","aria-label":`Roofing services in ${e.name}, CA`,children:[r.jsx("div",{className:"absolute inset-0 bg-[url('/gaf-grand-sequoia-shingle-roof-replacement-solano-county-ca.jpg')] bg-cover bg-center opacity-20 pointer-events-none","aria-hidden":"true"}),r.jsxs("div",{className:"relative container mx-auto px-4 md:px-8",children:[r.jsxs("nav",{"aria-label":"Breadcrumb",className:"mb-6 text-sm text-white/60 flex items-center gap-1 flex-wrap",children:[r.jsx(Z,{href:"/",className:"hover:text-secondary transition-colors",children:"Home"}),r.jsx("span",{"aria-hidden":"true",children:"/"}),r.jsx(Z,{href:"/#service-areas",className:"hover:text-secondary transition-colors",children:"Service Areas"}),r.jsx("span",{"aria-hidden":"true",children:"/"}),r.jsxs("span",{className:"text-white",children:[e.name,", CA"]})]}),r.jsxs("div",{className:"max-w-3xl",children:[r.jsxs("p",{className:"text-secondary font-bold tracking-widest text-sm uppercase mb-3",children:[e.county," · ",e.distanceMiles===0?"Headquarters City":`~${e.distanceMiles} miles from Vacaville`]}),r.jsxs("h1",{className:"font-serif text-4xl md:text-5xl lg:text-6xl font-bold mb-4 leading-tight",children:["Roofing Contractor",r.jsx("br",{}),"in ",e.name,", CA"]}),r.jsx("p",{className:"text-lg md:text-xl text-white/85 mb-8 max-w-2xl",children:e.heroTagline}),r.jsxs("div",{className:"flex flex-wrap gap-4",children:[r.jsxs("a",{href:f,className:"inline-flex items-center gap-2 bg-secondary hover:bg-white hover:text-primary text-white font-bold px-8 py-4 transition-colors","aria-label":`Call Northern California Roofing Co. at ${d}`,children:[r.jsx(Ye,{size:18,"aria-hidden":"true"}),"Call ",d]}),r.jsxs(Z,{href:"/#estimate",className:"inline-flex items-center gap-2 border-2 border-white hover:bg-white hover:text-primary text-white font-bold px-8 py-4 transition-colors",children:["Free Estimate ",r.jsx(Jo,{size:18,"aria-hidden":"true"})]})]})]})]})]}),r.jsx("div",{className:"bg-secondary text-white py-3",children:r.jsx("div",{className:"container mx-auto px-4 md:px-8",children:r.jsxs("div",{className:"flex flex-wrap justify-center gap-x-8 gap-y-2 text-sm font-bold text-center",children:[r.jsx("span",{children:"✓ GAF Master Elite® Certified"}),r.jsx("span",{children:"✓ Duro-Last Certified Contractor"}),r.jsx("span",{children:"✓ A+ BBB Rating"}),r.jsxs("span",{children:["✓ Serving ",e.name," Since 1990"]}),r.jsx("span",{children:"✓ Free Estimates"})]})})}),r.jsxs("main",{id:"main-content",children:[r.jsx("section",{className:"py-16 bg-white","aria-labelledby":"intro-heading",children:r.jsx("div",{className:"container mx-auto px-4 md:px-8",children:r.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-12 items-start",children:[r.jsxs("div",{children:[r.jsxs("h2",{id:"intro-heading",className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-5",children:["Your Trusted ",e.name," Roofing Experts"]}
57),r.jsx("p",{className:"text-gray-600 mb-4 leading-relaxed",children:e.introP1}),r.jsx("p",{className:"text-gray-600 mb-4 leading-relaxed",children:e.introP2}),s?.introP3&&r.jsx("p",{className:"text-gray-600 mb-6 leading-relaxed",children:s.introP3}),r.jsxs("div",{className:"flex flex-wrap gap-4 mt-6",children:[r.jsxs("a",{href:f,className:"inline-flex items-center gap-2 bg-primary hover:bg-secondary text-white font-bold px-6 py-3 transition-colors",children:[r.jsx(Ye,{size:16,"aria-hidden":"true"})," ",d]}),r.jsx(Z,{href:"/#estimate",className:"inline-flex items-center gap-2 border-2 border-primary hover:bg-primary hover:text-white text-primary font-bold px-6 py-3 transition-colors",children:"Get Free Estimate"})]})]}),r.jsx("div",{className:"grid grid-cols-2 gap-4",children:AV.map(x=>r.jsxs("div",{className:"bg-gray-50 border border-gray-200 p-5 text-center",children:[r.jsx("div",{className:"w-10 h-10 bg-secondary rounded-full flex items-center justify-center mx-auto mb-3",children:r.jsx(Bn,{size:20,className:"text-white","aria-hidden":"true"})}),r.jsx("div",{className:"font-bold text-primary text-sm",children:x.label}),r.jsx("div",{className:"text-gray-500 text-xs mt-1",children:x.sub})]},x.label))})]})})}),Bw[e.slug]?.length>0&&r.jsx("section",{className:"py-16 bg-primary","aria-labelledby":"neighbors-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-10",children:[r.jsx("p",{className:"text-secondary font-bold text-sm uppercase tracking-widest mb-3",children:"Real Local Projects"}),r.jsxs("h2",{id:"neighbors-heading",className:"font-serif text-3xl md:text-4xl font-bold text-white mb-4",children:["Look at Your ",e.name," Neighbors"]}),r.jsxs("p",{className:"text-white/75 max-w-2xl mx-auto text-lg",children:["Below is a sample of roofing projects we've completed in ",e.name," and the surrounding area — just a portion of our many completed jobs here. Every entry shows the manufacturer, product line, and color chosen by that homeowner."]})]}),r.jsx("div",{className:"overflow-x-auto rounded-sm shadow-lg",children:r.jsxs("table",{className:"w-full text-sm","aria-label":`Sample of recent roofing projects in ${e.name}`,children:[r.jsx("thead",{children:r.jsxs("tr",{className:"bg-secondary text-white",children:[r.jsx("th",{className:"text-left px-5 py-4 font-bold text-base uppercase tracking-wide",children:"Manufacturer"}),r.jsx("th",{className:"text-left px-5 py-4 font-bold text-base uppercase tracking-wide",children:"Product"}),r.jsx("th",{className:"text-left px-5 py-4 font-bold text-base uppercase tracking-wide",children:"Color"})]})}),r.jsx("tbody",{children:Bw[e.slug].map((x,b)=>r.jsxs("tr",{className:b%2===0?"bg-white":"bg-gray-50",children:[r.jsx("td",{className:"px-5 py-3 font-semibold text-primary border-b border-gray-100",children:x.manufacturer}),r.jsx("td",{className:"px-5 py-3 text-gray-700 border-b border-gray-100",children:x.product}),r.jsx("td",{className:"px-5 py-3 text-gray-600 border-b border-gray-100",children:x.color})]},b))})]})}),r.jsxs("p",{className:"text-white/50 text-xs mt-5 text-center",children:["A partial listing of completed ",e.name,"-area projects — manufacturer, product, and color only. No addresses or personal information displayed."]})]})}),r.jsx("section",{className:"py-16 bg-gray-50","aria-labelledby":"services-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-12",children:[r.jsxs("h2",{id:"services-heading",className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-3",children:["Roofing Services in ",e.name,", CA"]}),r.jsxs("p",{className:"text-gray-600 max-w-2xl mx-auto",children:["Full-service residential and commercial roofing — from emergency repairs to complete system replacements — serving all of ",e.county,"."]})]}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:jV.map(x=>r.jsxs(ua.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.4},className:"bg-white border border-gray-200 p-6 hover:border-secondary hover:shadow-md transition-all group",children:[r.jsx("div",{className:"text-secondary mb-4 group-hover:scale-110 transition-transform inline-block","aria-hidden":"true",children:x.icon}),r.jsx("h3",{className:"font-bold text-primary text-lg mb-2",children:x.title}),r.jsx("p",{className:"text-gray-600 text-sm leading-relaxed",children:x.desc})]},x.title))})]})}),r.jsx("section",{className:"py-16 bg-primary text-white","aria-labelledby":"process-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-12",children:[r.jsx("h2",{id:"process-heading",className:"font-serif text-3xl md:text-4xl font-bold mb-3",children:"How We Work — Our 5-Step Process"}),r.jsxs("p",{className:"text-white/80 max-w-2xl mx-auto",children:["Every ",e.name," roofing project follows the same proven process — no shortcuts, no surprises."]})]}),r.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 ga
57p-6",children:NV.map((x,b)=>r.jsxs("div",{className:"text-center",children:[r.jsxs("div",{className:"relative inline-flex items-center justify-center w-14 h-14 bg-secondary rounded-full mb-4",children:[r.jsx("span",{className:"text-white","aria-hidden":"true",children:x.icon}),r.jsx("span",{className:"absolute -top-1 -right-1 w-5 h-5 bg-white text-primary rounded-full text-xs font-bold flex items-center justify-center",children:b+1})]}),r.jsx("h3",{className:"font-bold text-white text-sm mb-2",children:x.title}),r.jsx("p",{className:"text-white/70 text-xs leading-relaxed",children:x.desc})]},x.title))})]})}),r.jsx("section",{className:"py-16 bg-white","aria-labelledby":"gallery-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-10",children:[r.jsxs("h2",{id:"gallery-heading",className:"font-serif text-3xl font-bold text-primary mb-3",children:["Our Work in ",e.name]}),r.jsxs("p",{className:"text-gray-600 max-w-xl mx-auto",children:["Recent roofing projects completed by our crews in ",e.name," and the surrounding ",e.county," area."]})]}),(()=>{if(!e.imageSlots.some(C=>C.category)){const C=e.imageSlots.length>=4?"grid-cols-2 lg:grid-cols-4":"grid-cols-1 md:grid-cols-3";return r.jsx("div",{className:`grid gap-4 ${C}`,children:e.imageSlots.map((A,E)=>r.jsx(Ww,{slot:A,i:E,city:e.name},E))})}const b={},j=[];e.imageSlots.forEach(C=>{const A=C.category??"Other";b[A]||(b[A]=[],j.push(A)),b[A].push(C)});let N=0;return r.jsx("div",{className:"space-y-12",children:j.map(C=>{const A=b[C],E=A.length>=4?"grid-cols-2 lg:grid-cols-4":A.length===3?"grid-cols-1 sm:grid-cols-3":"grid-cols-1 sm:grid-cols-2";return r.jsxs("div",{children:[r.jsxs("div",{className:"flex items-center gap-4 mb-5",children:[r.jsx("h3",{className:"font-serif text-xl font-bold text-primary whitespace-nowrap",children:C}),r.jsx("div",{className:"flex-1 h-px bg-gray-200","aria-hidden":"true"})]}),r.jsx("div",{className:`grid gap-4 ${E}`,children:A.map(R=>{const k=N++;return r.jsx(Ww,{slot:R,i:k,city:e.name},k)})})]},C)})})})()]})}),s?.testimonials&&r.jsx("section",{className:"py-16 bg-gray-50","aria-labelledby":"testimonials-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-12",children:[r.jsxs("h2",{id:"testimonials-heading",className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-3",children:["What ",e.name," Customers Are Saying"]}),r.jsxs("p",{className:"text-gray-600 max-w-xl mx-auto",children:["Real feedback from homeowners and business owners throughout ",e.name," and ",e.county,"."]})]}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:s.testimonials.map(x=>r.jsxs(ua.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.4},className:"bg-white border border-gray-200 p-6 flex flex-col gap-4",children:[r.jsx("div",{className:"flex gap-1","aria-label":"5 out of 5 stars",children:[...Array(5)].map((b,j)=>r.jsx(Bn,{size:16,className:"text-secondary fill-secondary","aria-hidden":"true"},j))}),r.jsxs("blockquote",{className:"text-gray-600 text-sm leading-relaxed italic flex-1",children:[r.jsx(Ak,{size:16,className:"inline text-secondary mr-1","aria-hidden":"true"}),x.text]}),r.jsxs("div",{className:"border-t border-gray-100 pt-3",children:[r.jsx("div",{className:"font-bold text-primary text-sm",children:x.name}),r.jsxs("div",{className:"text-gray-500 text-xs",children:[x.neighborhood," · ",x.project]})]})]},x.name))})]})}),r.jsx("section",{className:"py-16 bg-primary text-white","aria-labelledby":"expertise-heading",children:r.jsx("div",{className:"container mx-auto px-4 md:px-8",children:r.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-12 items-start",children:[r.jsxs("div",{children:[r.jsxs("h2",{id:"expertise-heading",className:"font-serif text-3xl md:text-4xl font-bold mb-5",children:[e.name," Roofing — Local Climate Expertise"]}),r.jsx("p",{className:"text-white/80 mb-4 leading-relaxed",children:e.climate}),r.jsx("p",{className:"text-white/80 mb-6 leading-relaxed",children:e.roofingChallenges}),r.jsxs("div",{className:"mt-4",children:[r.jsxs("p",{className:"text-secondary font-bold text-sm uppercase tracking-widest mb-3",children:["Common roof types in ",e.name,":"]}),r.jsx("div",{className:"flex flex-wrap gap-2",children:e.commonRoofTypes.map(x=>r.jsx("span",{className:"bg-white/10 border border-white/20 text-white text-sm px-3 py-1",children:x},x))})]})]}),r.jsxs("div",{children:[r.jsxs("p",{className:"text-secondary font-bold text-sm uppercase tracking-widest mb-4",children:["Our ",e.name," expertise:"]}),r.jsx("ul",{className:"space-y-3",children:e.localExpertisePoints.map(x=>r.jsxs("li",{className:"flex items-start gap-3",children:[r.jsx(nt,{size:18,className:"text-secondary shrink-0 mt-0.5","aria-hidden":"true"}),r.jsx("span",{className:"text-white/85 text-sm leading-relaxed",children:x})]},x))})]})]})})}),s?.products&&r.jsx("section",{className:"py-16 bg-white","aria-labelledby":"products-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-12",children:[r.jsxs("h2",{id:"products-heading",className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-3",children:["Top Roofing Products for ",e.name,"'s Climate"]}),r.jsxs("p",{className:"text-gray-600 max-w-2xl mx-auto",children:["Not every roofing product performs equally in ",e.name,"'s specific climate conditions. These are the systems we most often recommend based on 35+ years of local experience."]})]}),r.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:s.products.map(x=>r.jsxs("div",{className:"border border-gray-200 p-6 hover:border-secondary hover:shadow-sm transition-all",children:[r.jsx("div",{className:"w-8 h-8 bg-secondary/10 rounded-full flex items-center justify-center mb-4",children:r.jsx(Jt,{size:16,className:"text-secondary","aria-hidden":"true"})}),r.jsx("h3",{className:"font-bold text-primary text-base mb-2",children:x.name}),r.jsx("p",{className:"text-gray-500 text-sm mb-3 leading-relaxed",children:x.description}),r.jsxs("p",{className:"text-secondary text-sm font-bold leading-relaxed border-t border-gray-100 pt-3",children:["Why we recommend it: ",x.benefit]})]},x.name))})]})}),r.jsx("section",{className:"py-16 bg-gray-50","aria-labelledby":"why-ncr-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"text-center mb-12",children:[r.jsxs("h2",{id:"why-ncr-heading",className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-3",children:["Why ",e.name," Homeowners Choose Northern California Roofing"]}),r.jsxs("p",{className:"text-gray-600 max-w-2xl mx-auto",children:["Serving ",e.name," and ",e.county," since 1990 — over 35 years of proven quality and local expertise."]})]}),r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8 mb-12",children:[r.jsxs("div",{className:"text-center bg-white border border-gray-200 py-8 px-4",children:[r.jsx("div",{className:"font-serif text-5xl font-bold text-secondary mb-2",children:"35+"}),r.jsx("div",{className:"font-bold text-primary",children:"Years in Business"}),r.jsx("div",{className:"text-gray-500 text-sm mt-1",children:"Founded in Vacaville, CA — 1990"})]}),r.jsxs("div",{className:"text-center bg-white border border-gray-200 py-8 px-4",children:[r.jsx("div",{className:"font-serif text-5xl font-bold text-secondary mb-2",children:"3%"}),r.jsx("div",{className:"font-bold text-primary",children:"GAF Master Elite®"}),r.jsx("div",{className:"text-gray-500 text-sm mt-1",children:"Top 3% of roofing contractors in the country"})]}),r.jsxs("div",{className:"text-center bg-white border border-gray-200 py-8 px-4",children:[r.jsx("div",{className:"font-serif text-5xl font-bold text-secondary mb-2",children:"A+"}),r.jsx("div",{className:"font-bold text-primary",children:"BBB Rating"}),r.jsx("div",{className:"text-gray-500 text-sm mt-1",children:"Better Business Bureau — accredited since 1990"})]})]}),r.jsxs("div",{className:"bg-white border border-gray-200 p-8 grid grid-cols-1 md:grid-cols-2 gap-8",children:[r.jsxs("div",{children:[r.jsxs("h3",{className:"font-bold text-primary text-lg mb-4 flex items-center gap-2",children:[r.jsx(Jt,{size:20,className:"text-secondary","aria-hidden":"true"}),"Licenses & Certifications"]}),r.jsxs("ul",{className:"space-y-2 text-sm text-gray-600",children:[r.jsxs("li",{className:"flex items-center gap-2",children:[r.jsx(nt,{size:15,className:"text-secondary","aria-hidden":"true"})," California Contractor License #593448"]}),r.jsxs("li",{className:"flex items-center gap-2",children:[r.jsx(nt,{size:15,className:"text-secondary","aria-hidden":"true"})," GAF Master Elite® Certified — GAF Golden Pledge® Warranty eligible"]}),r.jsxs("li",{className:"flex items-center gap-2",children:[r.jsx(nt,{size:15,className:"text-secondary","aria-hidden":"true"})," Duro-Last® Certified Contractor since 2008"]}),r.jsxs("li",{className:"flex items-center gap-2",children:[r.jsx(nt,{size:15,className:"text-secondary","aria-hidden":"true"})," CertainTeed SELECT ShingleMaster™"]}),r.jsxs("li",{className:"flex items-center gap-2",children:[r.jsx(nt,{size:15,className:"text-secondary","aria-hidden":"true"})," Malarkey Roofing Products Certified Installer"]}),r.jsxs("li",{className:"flex items-center gap-2",children:[r.jsx(nt,{size:15,className:"text-secondary","aria-hidden":"true"})," Full General Liability & Workers' Compensation Insurance"]}),r.jsxs("li",{className:"flex items-center gap-2",children:[r.jsx(nt,{size:15,className:"text-secondary","aria-hidden":"true"})," A+ Better Business Bureau Rating"]})]})]}),r.jsxs("div",{children:[r.jsxs("h3",{className:"font-bold text-primary text-lg mb-4 flex items-center gap-2",children:[r.jsx(At,{size:20,className:"text-secondary","aria-hidden":"true"}),e.name," Neighborhoods We Serve"]}),r.jsx("ul",{className:"space-y-1.5 text-sm text-gray-600 columns-2",children:e.neighborhoods.map(x=>r.jsxs("li",{className:"flex items-center gap-1.5 break-inside-avoid",children:[r.jsx("span",{className:"w-1.5 h-1.5 bg-secondary rounded-full shrink-0","aria-hidden":"true"}),x]},x))}),e.zips.length>0&&r.jsxs("p",{className:"text-xs text-gray-400 mt-4",children:["ZIP c
57odes served: ",e.zips.join(", ")," and surrounding areas"]})]})]})]})}),r.jsx("section",{className:"py-16 bg-white","aria-labelledby":"faq-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8 max-w-3xl",children:[r.jsxs("div",{className:"text-center mb-10",children:[r.jsxs("h2",{id:"faq-heading",className:"font-serif text-3xl md:text-4xl font-bold text-primary mb-3",children:["Frequently Asked Questions — ",e.name," Roofing"]}),r.jsxs("p",{className:"text-gray-600",children:["Answers to the most common questions from ",e.name," homeowners and business owners about roofing."]})]}),r.jsx("div",{className:"space-y-2",children:c.map((x,b)=>r.jsx(TV,{q:x.q,a:x.a,index:b},b))})]})}),r.jsx("section",{className:"py-12 bg-gray-50","aria-labelledby":"nearby-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsx("h2",{id:"nearby-heading",className:"font-serif text-2xl font-bold text-primary mb-6 text-center",children:"Also Serving These Nearby Cities"}),r.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.nearbyCities.map(x=>r.jsxs(Z,{href:`/roofing-${x.slug}-ca`,className:"inline-flex items-center gap-2 border border-primary/30 hover:border-secondary hover:text-secondary text-primary text-sm font-bold px-4 py-2 transition-colors",children:[r.jsx(At,{size:13,"aria-hidden":"true"}),"Roofing in ",x.name,", CA"]},x.name)),r.jsx(Z,{href:"/#service-areas",className:"inline-flex items-center gap-2 border border-gray-300 hover:border-secondary hover:text-secondary text-gray-600 text-sm font-bold px-4 py-2 transition-colors",children:"View All Service Areas →"})]})]})}),r.jsx("section",{className:"py-10 bg-white border-t border-gray-100",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8 text-center",children:[r.jsx("p",{className:"text-sm text-gray-500 mb-2",children:"Want to learn more before you call?"}),r.jsxs(Z,{href:`/blog/roofing-${e.slug}-ca`,className:"inline-flex items-center gap-2 bg-primary text-white hover:bg-secondary font-bold px-6 py-3 transition-colors text-sm",children:["Read Our Complete ",e.name," Roofing Guide ",r.jsx(Jo,{size:15,"aria-hidden":"true"})]})]})}),r.jsx("section",{className:"py-16 bg-secondary text-white","aria-labelledby":"cta-heading",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8 text-center",children:[r.jsxs("h2",{id:"cta-heading",className:"font-serif text-3xl md:text-4xl font-bold mb-4",children:["Ready for Your Free ",e.name," Roofing Estimate?"]}),r.jsxs("p",{className:"text-white/85 max-w-xl mx-auto mb-8 text-lg",children:["No obligation. No pressure. Just an honest assessment from Northern California's most trusted roofing contractor — serving ",e.name," since 1990."]}),r.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[r.jsxs("a",{href:f,className:"inline-flex items-center gap-2 bg-white text-secondary hover:bg-primary hover:text-white font-bold px-8 py-4 transition-colors","aria-label":`Call Northern California Roofing Co. at ${d}`,children:[r.jsx(Ye,{size:18,"aria-hidden":"true"}),"Call ",d]}),r.jsxs(Z,{href:"/#estimate",className:"inline-flex items-center gap-2 border-2 border-white hover:bg-white hover:text-secondary text-white font-bold px-8 py-4 transition-colors",children:["Submit Online Request ",r.jsx(Jo,{size:18,"aria-hidden":"true"})]})]})]})})]}),r.jsx("footer",{className:"bg-primary text-white py-10",children:r.jsxs("div",{className:"container mx-auto px-4 md:px-8",children:[r.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-start gap-8 mb-8",children:[r.jsxs("div",{children:[r.jsx("div",{className:"bg-white rounded-xl px-3 py-1.5 shadow-sm inline-block mb-3",children:r.jsx("img",{src:CV,alt:"Northern California Roofing Co.",className:"h-12 object-contain",width:160,height:48})}),r.jsxs("p",{className:"text-gray-400 text-sm max-w-xs",children:["Serving ",e.name," and Northern California since 1990.",r.jsx("br",{}),"CA Lic. #593448"]})]}),r.jsxs("div",{className:"grid grid-cols-2 gap-x-16 gap-y-2 text-sm text-gray-300",children:[r.jsxs("div",{children:[r.jsx("div",{className:"font-bold text-white mb-2",children:"Contact"}),r.jsx("a",{href:"tel:7074475655",className:"block hover:text-secondary transition-colors",children:"707-447-5655 (Solano/Bay)"}),r.jsx("a",{href:"tel:9169789392",className:"block hover:text-secondary transition-colors",children:"916-978-9392 (Yolo/Sac)"}),r.jsx("a",{href:"mailto:[email protected]",className:"block hover:text-secondary transition-colors mt-1",children:"[email protected]"})]}),r.jsxs("div",{children:[r.jsx("div",{className:"font-bold text-white mb-2",children:"Office"}),r.jsxs("address",{className:"not-italic text-gray-400 text-sm leading-relaxed",children:["859 Cotting Court, Suite A",r.jsx("br",{}),"Vacaville, CA 95688"]})]})]})]}),r.jsxs("div",{className:"border-t border-white/20 pt-6 text-center text-gray-400 text-xs",children:[r.jsxs("p",{children:["© ",new Date().getFullYear()," Northern California Roofing Co. All Rights Reserved."]}),r.jsxs("div",{className:"flex flex-wrap justify-center gap-x-4 gap-y-1 mt-2",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-secondary transition-colors underline",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-secondary transition-colors underline",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-secondary transition-colors underline",children:"Accessibility"}),r.jsx(Z,{href:"/#service-areas",className:"hover:text-secondary transition-colors underline",children:"Service Areas"})]})]})]})})]})]})}function EV(){const e=Pt("vacaville");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function RV(){const e=Pt("fairfield");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function kV(){const e=Pt("sacramento");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function DV(){const e=Pt("davis");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function MV(){const e=Pt("napa");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function OV(){const e=Pt("vallejo");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function PV(){const e=Pt("woodland");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function VV(){const e=Pt("concord");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}
57function LV(){const e=Pt("elk-grove");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function FV(){const e=Pt("folsom");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function zV(){const e=Pt("roseville");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function HV(){const e=Pt("benicia");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function BV(){const e=Pt("dixon");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function qV(){const e=Pt("west-sacramento");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}function WV(){const e=Pt("walnut-creek");return e?r.jsx(Vt,{city:e}):r.jsx(Tt,{})}const Ah="https://northerncaliforniaroofing.com";function Rt({citySlug:e}){const a=iV[e];if(!a)return null;const i=`/blog/${a.urlSlug}`,s=`${Ah}${i}`,c=Xn({headline:a.title,description:a.metaDescription,url:s,imageUrl:`${Ah}${a.heroImage}`,imageAlt:a.heroImageAlt,datePublished:a.publishedDate,keywords:a.keywords});return r.jsxs("div",{className:"min-h-screen bg-white font-sans",children:[r.jsx(dn,{title:a.title,description:a.metaDescription,canonicalPath:i,ogImage:`${Ah}${a.heroImage}`,ogImageAlt:a.heroImageAlt,ogType:"article",article:{publishedTime:`${a.publishedDate}T00:00:00Z`,section:a.category,keywords:a.keywords},jsonLd:c}),r.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 bg-[#0693E3] text-white px-4 py-2 z-50 rounded",children:"Skip to main content"}),r.jsx(Ba,{currentPage:"BLOG"}),r.jsxs("main",{id:"main-content",children:[r.jsx(Qn,{src:a.heroImage,alt:a.heroImageAlt}),r.jsxs("article",{className:"container mx-auto px-4 max-w-3xl py-14",children:[r.jsxs(Z,{href:"/blog",className:"inline-flex items-center gap-2 text-[#0693E3] text-sm font-bold mb-8 hover:gap-3 transition-all",children:[r.jsx(Ot,{size:14,"aria-hidden":"true"})," BACK TO BLOG"]}),r.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-xs text-gray-400 mb-4",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(ln,{size:12,"aria-hidden":"true"})," ",a.publishedDateDisplay]}),r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(At,{size:12,"aria-hidden":"true"})," ",a.location]}),r.jsx("span",{className:"bg-[#0693E3]/10 text-[#0693E3] px-2 py-0.5 rounded font-semibold",children:a.category})]}),r.jsx("h1",{className:"text-3xl md:text-4xl font-serif font-bold text-[#113753] mb-6 leading-tight",children:a.title}),r.jsx("p",{className:"text-gray-700 text-lg leading-relaxed mb-8",children:a.intro}),a.sections.map((d,f)=>r.jsxs("div",{children:[r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mt-10 mb-4",children:d.heading}),r.jsx("p",{className:"text-gray-700 leading-relaxed mb-4",children:d.body}),d.list&&r.jsx("ul",{className:"list-disc list-inside text-gray-700 space-y-2 mb-6 pl-2",children:d.list.map((h,g)=>r.jsx("li",{dangerouslySetInnerHTML:{__html:h.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>")}},g))})]},f)),a.faqs.length>0&&r.jsxs("div",{className:"mt-12",children:[r.jsx("h2",{className:"text-2xl font-serif font-bold text-[#113753] mb-6",children:"Frequently Asked Questions"}),r.jsx("dl",{className:"space-y-6",children:a.faqs.map((d,f)=>r.jsxs("div",{className:"border-b border-gray-200 pb-6",children:[r.jsx("dt",{className:"font-bold text-[#113753] mb-2",children:d.q}),r.jsx("dd",{className:"text-gray-700 leading-relaxed",children:d.a})]},f))})]}),r.jsxs("div",{className:"bg-[#113753] text-white rounded-sm p-8 mt-12 text-center",children:[r.jsxs("h3",{className:"text-2xl font-serif font-bold mb-3",children:["Ready for a Free ",a.cityName," Roofing Estimate?"]}),r.jsxs("p",{className:"text-gray-300 mb-6",children:["No obligation. Just an honest assessment from ",a.cityName,"'s most trusted roofing contractor — serving ",a.
57county," since 1990."]}),r.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[r.jsx("a",{href:"/#contact",className:"bg-[#0693E3] hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors",children:"GET FREE ESTIMATE"}),r.jsxs("a",{href:a.phoneHref,className:"border border-white hover:bg-white hover:text-[#113753] text-white font-bold px-8 py-3 transition-colors inline-flex items-center justify-center gap-2",children:[r.jsx(Ye,{size:16,"aria-hidden":"true"})," CALL ",a.phone]})]})]}),r.jsxs("div",{className:"mt-8 pt-6 border-t border-gray-200 text-center",children:[r.jsxs("p",{className:"text-sm text-gray-500 mb-2",children:["See our work in ",a.cityName]}),r.jsxs(Z,{href:`/roofing-${a.citySlug}-ca`,className:"inline-flex items-center gap-2 text-[#0693E3] font-bold text-sm hover:gap-3 transition-all",children:["View ",a.cityName," Roofing Services →"]})]})]})]}),r.jsxs("footer",{className:"bg-[#113753] text-white py-10 text-center text-sm",children:[r.jsxs("p",{className:"text-gray-400",children:["© ",new Date().getFullYear()," Northern California Roofing Co. All rights reserved."]}),r.jsxs("div",{className:"flex justify-center gap-6 mt-3 text-gray-400",children:[r.jsx(Z,{href:"/privacy-policy",className:"hover:text-[#0693E3] transition-colors",children:"Privacy Policy"}),r.jsx(Z,{href:"/terms-of-use",className:"hover:text-[#0693E3] transition-colors",children:"Terms of Use"}),r.jsx(Z,{href:"/accessibility",className:"hover:text-[#0693E3] transition-colors",children:"Accessibility"})]})]})]})}const _V=new kE;function GV(){return r.jsxs(nE,{children:[r.jsx(be,{path:"/",component:Z9}),r.jsx(be,{path:"/awards",component:xV}),r.jsx(be,{path:"/blog",component:dV}),r.jsx(be,{path:"/blog/malarkey-emerald-premium-composition-reroof-yolo-county",component:uV}),r.jsx(be,{path:"/blog/metal-roofing-fire-hazard-zones-northern-california",component:fV}),r.jsx(be,{path:"/blog/duro-last-pvc-commercial-roofing-northern-california",component:hV}),r.jsx(be,{path:"/blog/flat-roof-maintenance-northern-california",component:mV}),r.jsx(be,{path:"/blog/tile-roof-chimney-repair-napa-ca",component:pV}),r.jsx(be,{path:"/blog/malarkey-duro-last-color-match-roof-replacement",component:gV}),r.jsx(be,{path:"/blog/duro-last-rtech-insulfoam-flat-roof-davis-ca",component:yV}),r.jsx(be,{path:"/privacy-policy",component:X9}),r.jsx(be,{path:"/terms-of-use",component:Q9}),r.jsx(be,{path:"/accessibility",component:eV}),r.jsx(be,{path:"/roofing-vacaville-ca",component:EV}),r.jsx(be,{path:"/roofing-fairfield-ca",component:RV}),r.jsx(be,{path:"/roofing-sacramento-ca",component:kV}),r.jsx(be,{path:"/roofing-davis-ca",component:DV}),r.jsx(be,{path:"/roofing-napa-ca",component:MV}),r.jsx(be,{path:"/roofing-vallejo-ca",component:OV}),r.jsx(be,{path:"/roofing-woodland-ca",component:PV}),r.jsx(be,{path:"/roofing-concord-ca",component:VV}),r.jsx(be,{path:"/roofing-elk-grove-ca",component:LV}),r.jsx(be,{path:"/roofing-folsom-ca",component:FV}),r.jsx(be,{path:"/roofing-roseville-ca",component:zV}),r.jsx(be,{path:"/roofing-benicia-ca",component:HV}),r.jsx(be,{path:"/roofing-dixon-ca",component:BV}),r.jsx(be,{path:"/roofing-west-sacramento-ca",component:qV}),r.jsx(be,{path:"/roofing-walnut-creek-ca",component:WV}),r.jsx(be,{path:"/blog/roofing-vacaville-ca",component:()=>r.jsx(Rt,{citySlug:"vacaville"})}),r.jsx(be,{path:"/blog/roofing-fairfield-ca",component:()=>r.jsx(Rt,{citySlug:"fairfield"})}),r.jsx(be,{path:"/blog/roofing-sacramento-ca",component:()=>r.jsx(Rt,{citySlug:"sacramento"})}),r.jsx(be,{path:"/blog/roofing-davis-ca",component:()=>r.jsx(Rt,{citySlug:"davis"})}),r.jsx(be,{path:"/blog/roofing-napa-ca",component:()=>r.jsx(Rt,{citySlug:"napa"})}),r.jsx(be,{path:"/blog/roofing-vallejo-ca",component:()=>r.jsx(Rt,{citySlug:"vallejo"})}),r.jsx(be,{path:"/blog/roofing-woodland-ca",component:()=>r.jsx(Rt,{citySlug:"woodland"})}),r.jsx(be,{path:"/blog/roofing-concord-ca",component:()=>r.jsx(Rt,{citySlug:"concord"})}),r.jsx(be,{path:"/blog/roofing-elk-grove-ca",component:()=>r.jsx(Rt,{citySlug:"elk-grove"})}),r.jsx(be,{path:"/blog/roofing-folsom-ca",component:()=>r.jsx(Rt,{citySlug:"folsom"})}),r.jsx(be,{path:"/blog/roofing-roseville-ca",component:()=>r.jsx(Rt,{citySlug:"roseville"})}),r.jsx(be,{path:"/blog/roofing-benicia-ca",component:()=>r.jsx(Rt,{citySlug:"benicia"})}),r.jsx(be,{path:"/blog/roofing-dixon-ca",component:()=>r.jsx(Rt,{citySlug:"dixon"})}),r.jsx(be,{path:"/blog/roofing-west-sacramento-ca",component:()=>r.jsx(Rt,{citySlug:"west-sacramento"})}),r.jsx(be,{path:"/blog/roofing-walnut-creek-ca",component:()=>r.jsx(Rt,{citySlug:"walnut-creek"})}),r.jsx(be,{component:Tt})]})}function UV(){return r.jsx(ME,{client:_V,children:r.jsxs(uM,{children:[r.jsxs(sC,{base:"/".replace(/\/$/,""),children:[r.jsx(GV,{}),r.jsx(vV,{})]}),r.jsx(k3,{})]})})}cT.createRoot(document.getElementById("root")).render(r.jsx(Zw,{children:r.jsx(UV,{})}));

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.