vendor: 5,872 bytes, lines 1-9
1function R1(t,s){for(var l=0;l<s.length;l++){const o=s[l];if(typeof o!="string"&&!Array.isArray(o)){for(const c in o)if(c!=="default"&&!(c in t)){const u=Object.getOwnPropertyDescriptor(o,c);u&&Object.defineProperty(t,c,u.get?u:{enumerable:!0,get:()=>o[c]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))o(c);new MutationObserver(c=>{for(const u of c)if(u.type==="childList")for(const m of u.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&o(m)}).observe(document,{childList:!0,subtree:!0});function l(c){const u={};return c.integrity&&(u.integrity=c.integrity),c.referrerPolicy&&(u.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?u.credentials="include":c.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function o(c){if(c.ep)return;c.ep=!0;const u=l(c);fetch(c.href,u)}})();function eb(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var ag={exports:{}},$l={};/** 2 * @license React 3 * react-jsx-runtime.production.js 4 * 5 * Copyright (c) Meta Platforms, Inc. and affiliates. 6 * 7 * This source code is licensed under the MIT license found in the 8 * LICENSE file in the root directory of this source tree. 9 */var Dv;function A1(){if(Dv)return $l;Dv=1;var t=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function l(o,c,u){var m=null;if(u!==void 0&&(m=""+u),c.key!==void 0&&(m=""+c.key),"key"in c){u={};for(var f in c)f!=="key"&&(u[f]=c[f])}else u=c;return c=u.ref,{$$typeof:t,type:o,key:m,ref:c!==void 0?c:null,props:u}}return $l.Fragment=s,$l.jsx=l,$l.jsxs=l,$l}var _v;function H1(){return _v||(_v=1,ag.exports=A1()),ag.exports}var n=H1(),Yr=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},w1={setTimeout:(t,s)=>setTimeout(t,s),clearTimeout:t=>clearTimeout(t),setInterval:(t,s)=>setInterval(t,s),clearInterval:t=>clearInterval(t)},E1=class{#t=w1;#e=!1;setTimeoutProvider(t){this.#t=t}setTimeout(t,s){return this.#t.setTimeout(t,s)}clearTimeout(t){this.#t.clearTimeout(t)}setInterval(t,s){return this.#t.setInterval(t,s)}clearInterval(t){this.#t.clearInterval(t)}},zr=new E1;function L1(t){setTimeout(t,0)}var qr=typeof window>"u"||"Deno"in globalThis;function wt(){}function M1(t,s){return typeof t=="function"?t(s):t}function Ag(t){return typeof t=="number"&&t>=0&&t!==1/0}function tb(t,s){return Math.max(t+(s||0)-Date.now(),0)}function ir(t,s){return typeof t=="function"?t(s):t}function Ha(t,s){return typeof t=="function"?t(s):t}function Ov(t,s){const{type:l="all",exact:o,fetchStatus:c,predicate:u,queryKey:m,stale:f}=t;if(m){if(o){if(s.queryHash!==im(m,s.options))return!1}else if(!ri(s.queryKey,m))return!1}if(l!=="all"){const p=s.isActive();if(l==="active"&&!p||l==="inactive"&&p)return!1}return!(typeof f=="boolean"&&s.isStale()!==f||c&&c!==s.state.fetchStatus||u&&!u(s))}function Cv(t,s){const{exact:l,status:o,predicate:c,mutationKey:u}=t;if(u){if(!s.options.mutationKey)return!1;if(l){if(or(s.options.mutationKey)!==or(u))return!1}else if(!ri(s.options.mutationKey,u))return!1}return!(o&&s.state.status!==o||c&&!c(s))}function im(t,s){return(s?.queryKeyHashFn||or)(t)}function or(t){return JSON.stringify(t,(s,l)=>Hg(l)?Object.keys(l).sort().reduce((o,c)=>(o[c]=l[c],o),{}):l)}function ri(t,s){return t===s?!0:typeof t!=typeof s?!1:t&&s&&typeof t=="object"&&typeof s=="object"?Object.keys(s).every(l=>ri(t[l],s[l])):!1}var D1=Object.prototype.hasOwnProperty;function om(t,s){if(t===s)return t;const l=Vv(t)&&Vv(s);if(!l&&!(Hg(t)&&Hg(s)))return s;const c=(l?t:Object.keys(t)).length,u=l?s:Object.keys(s),m=u.length,f=l?new Array(m):{};let p=0;for(let h=0;h<m;h++){const b=l?h:u[h],v=t[b],S=s[b];if(v===S){f[b]=v,(l?h<c:D1.call(t,b))&&p++;continue}if(v===null||S===null||typeof v!="object"||typeof S!="object"){f[b]=S;continue}const T=om(v,S);f[b]=T,T===v&&p++}return c===m&&p===c?t:f}function si(t,s){if(!s||Object.keys(t).length!==Object.keys(s).length)return!1;for(const l in t)if(t[l]!==s[l])return!1;return!0}function Vv(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function Hg(t){if(!Fv(t))return!1;const s=t.constructor;if(s===void 0)return!0;const l=s.prototype;return!(!Fv(l)||!l.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(t)!==Object.prototype)}function Fv(t){return Object.prototype.toString.call(t)==="[object Object]"}function _1(t){return new Promise(s=>{zr.setTimeout(s,t)})}function wg(t,s,l){return typeof l.structuralSharing=="function"?l.structuralSharing(t,s):l.structuralSharing!==!1?om(t,s):s}function O1(t,s,l=0){const o=[...t,s];return l&&o.length>l?o.slice(1):o}function C1(t,s,l=0){const o=[s,...t];return l&&o.length>l?o.slice(0,-1):o}var pa=Symbol();function ab(t,s){return!t.queryFn&&s?.initialPromise?()=>s.initialPromise:!t.queryFn||t.queryFn===pa?()=>Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)):t.queryFn}function nb(t,s){return typeof t=="function"?t(...s):!!t}var V1=class extends Yr{#t;#e;#a;constructor(){super(),this.#a=t=>{if(!qr&&window.addEventListener){const s=()=>t();return window.addEventListener("visibilitychange",s,!1),()=>{window.removeEventListener("visibilitychange",s)}}}}onSubscribe(){this.#e||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(t){this.#a=t,this.#e?.(),this.#e=t(s=>{typeof s=="boolean"?this.setFocused(s):this.onFocus()})}setFocused(t){this.#t!==t&&(this.#t=t,this.onFocus())}onFocus(){const t=this.isFocused();
9this.listeners.forEach(s=>{s(t)})}isFocused(){return typeof this.#t=="boolean"?this.#t:globalThis.document?.visibilityState!=="hidden"}},cm=new V1;function Eg(){let t,s;const l=new Promise((c,u)=>{t=c,s=u});l.status="pending",l.catch(()=>{});function o(c){Object.assign(l,c),delete l.resolve,delete l.reject}return l.resolve=c=>{o({status:"fulfilled",value:c}),t(c)},l.reject=c=>{o({status:"rejected",reason:c}),s(c)},l}function F1(t){let s;if(t.then(l=>(s=l,l),wt)?.catch(wt),s!==void 0)return{data:s}}function J1(t){return t}function Jv(t,s,l){if(typeof s!="object"||s===null)return;const o=t.getMutationCache(),c=t.getQueryCache(),u=l?.defaultOptions?.deserializeData??t.getDefaultOptions().hydrate?.deserializeData??J1,m=s.mutations||[],f=s.queries||[];m.forEach(({state:p,...h})=>{o.build(t,{...t.getDefaultOptions().hydrate?.mutations,...l?.defaultOptions?.mutations,...h},p)}),f.forEach(({queryKey:p,state:h,queryHash:b,meta:v,promise:S,dehydratedAt:T})=>{const A=S?F1(S):void 0,y=h.data===void 0?A?.data:h.data,R=y===void 0?y:u(y);let L=c.get(b);const _=L?.state.status==="pending",F=L?.state.fetchStatus==="fetching";if(L){const $=A&&T!==void 0&&T>L.state.dataUpdatedAt;if(h.dataUpdatedAt>L.state.dataUpdatedAt||$){const{fetchStatus:P,...U}=h;L.setState({...U,data:R})}}else L=c.build(t,{...t.getDefaultOptions().hydrate?.queries,...l?.defaultOptions?.queries,queryKey:p,queryHash:b,meta:v},{...h,data:R,fetchStatus:"idle",status:R!==void 0?"success":h.status});S&&!_&&!F&&(T===void 0||T>L.state.dataUpdatedAt)&&L.fetch(void 0,{initialPromise:Promise.resolve(S).then(u)})})}var G1=L1;function z1(){let t=[],s=0,l=f=>{f()},o=f=>{f()},c=G1;const u=f=>{s?t.push(f):c(()=>{l(f)})},m=()=>{const f=t;t=[],f.length&&c(()=>{o(()=>{f.forEach(p=>{l(p)})})})};return{batch:f=>{let p;s++;try{p=f()}finally{s--,s||m()}return p},batchCalls:f=>(...p)=>{u(()=>{f(...p)})},schedule:u,setNotifyFunction:f=>{l=f},setBatchNotifyFunction:f=>{o=f},setScheduler:f=>{c=f}}}var mt=z1(),q1=class extends Yr{#t=!0;#e;#a;constructor(){super(),this.#a=t=>{if(!qr&&window.addEventListener){const s=()=>t(!0),l=()=>t(!1);return window.addEventListener("online",s,!1),window.addEventListener("offline",l,!1),()=>{window.removeEventListener("online",s),window.removeEventListener("offline",l)}}}}onSubscribe(){this.#e||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(t){this.#a=t,this.#e?.(),this.#e=t(this.setOnline.bind(this))}setOnline(t){this.#t!==t&&(this.#t=t,this.listeners.forEach(l=>{l(t)}))}isOnline(){return this.#t}},cc=new q1;function P1(t){return Math.min(1e3*2**t,3e4)}function rb(t){return(t??"online")==="online"?cc.isOnline():!0}var Lg=class extends Error{constructor(t){super("CancelledError"),this.revert=t?.revert,this.silent=t?.silent}};function sb(t){let s=!1,l=0,o;const c=Eg(),u=()=>c.status!=="pending",m=y=>{if(!u()){const R=new Lg(y);S(R),t.onCancel?.(R)}},f=()=>{s=!0},p=()=>{s=!1},h=()=>cm.isFocused()&&(t.networkMode==="always"||cc.isOnline())&&t.canRun(),b=()=>rb(t.networkMode)&&t.canRun(),v=y=>{u()||(o?.(),c.resolve(y))},S=y=>{u()||(o?.(),c.reject(y))},T=()=>new Promise(y=>{o=R=>{(u()||h())&&y(R)},t.onPause?.()}).then(()=>{o=void 0,u()||t.onContinue?.()}),A=()=>{if(u())return;let y;const R=l===0?t.initialPromise:void 0;try{y=R??t.fn()}catch(L){y=Promise.reject(L)}Promise.resolve(y).then(v).catch(L=>{if(u())return;const _=t.retry??(qr?0:3),F=t.retryDelay??P1,$=typeof F=="function"?F(l,L):F,P=_===!0||typeof _=="number"&&l<_||typeof _=="function"&&_(l,L);if(s||!P){S(L);return}l++,t.onFail?.(l,L),_1($).then(()=>h()?void 0:T()).then(()=>{s?S(L):A()})})};return{promise:c,status:()=>c.status,cancel:m,continue:()=>(o?.(),c),cancelRetry:f,continueRetry:p,canStart:b,start:()=>(b()?A():T().then(A),c)}}var lb=class{#t;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Ag(this.gcTime)&&(this.#t=zr.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(qr?1/0:300*1e3))}clearGcTimeout(){this.#t&&(zr.clearTimeout(this.#t),this.#t=void 0)}},B1=class extends lb{#t;#e;#a;#r;#n;#s;#i;constructor(t){super(),this.#i=!1,this.#s=t.defaultOptions,this.setOptions(t.options),this.observers=[],this.#r=t.client,this.#a=this.#r.getQueryCache(),this.queryKey=t.queryKey,this.queryHash=t.queryHash,this.#t=Gv(this.options),this.state=t.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#n?.promise}setOptions(t){if(this.options={...this.#s,...t},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const s=Gv(this.options);s.data!==void 0&&(this.setData(s.data,{updatedAt:s.dataUpdatedAt,manual:!0}),this.#t=s)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#a.remove(this)}setData(t,s){const l=wg(this.state.data,t,this.options);return this.#l({data:l,type:"success",dataUpdatedAt:s?.updatedAt,manual:s?.manual}),l}setState(t,s){this.#l({type:"setState",state:t,setStateOptions:s})}cancel(t){const s=this.#n?.promise;
vendor: 18,313 bytes, line 9
9return this.#n?.cancel(t),s?s.then(wt).catch(wt):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#t)}isActive(){return this.observers.some(t=>Ha(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===pa||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>ir(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!tb(this.state.dataUpdatedAt,t)}onFocus(){this.observers.find(s=>s.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#n?.continue()}onOnline(){this.observers.find(s=>s.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#n?.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),this.#a.notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(s=>s!==t),this.observers.length||(this.#n&&(this.#i?this.#n.cancel({revert:!0}):this.#n.cancelRetry()),this.scheduleGc()),this.#a.notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#l({type:"invalidate"})}async fetch(t,s){if(this.state.fetchStatus!=="idle"&&this.#n?.status()!=="rejected"){if(this.state.data!==void 0&&s?.cancelRefetch)this.cancel({silent:!0});else if(this.#n)return this.#n.continueRetry(),this.#n.promise}if(t&&this.setOptions(t),!this.options.queryFn){const f=this.observers.find(p=>p.options.queryFn);f&&this.setOptions(f.options)}const l=new AbortController,o=f=>{Object.defineProperty(f,"signal",{enumerable:!0,get:()=>(this.#i=!0,l.signal)})},c=()=>{const f=ab(this.options,s),h=(()=>{const b={client:this.#r,queryKey:this.queryKey,meta:this.meta};return o(b),b})();return this.#i=!1,this.options.persister?this.options.persister(f,h,this):f(h)},m=(()=>{const f={fetchOptions:s,options:this.options,queryKey:this.queryKey,client:this.#r,state:this.state,fetchFn:c};return o(f),f})();this.options.behavior?.onFetch(m,this),this.#e=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==m.fetchOptions?.meta)&&this.#l({type:"fetch",meta:m.fetchOptions?.meta}),this.#n=sb({initialPromise:s?.initialPromise,fn:m.fetchFn,onCancel:f=>{f instanceof Lg&&f.revert&&this.setState({...this.#e,fetchStatus:"idle"}),l.abort()},onFail:(f,p)=>{this.#l({type:"failed",failureCount:f,error:p})},onPause:()=>{this.#l({type:"pause"})},onContinue:()=>{this.#l({type:"continue"})},retry:m.options.retry,retryDelay:m.options.retryDelay,networkMode:m.options.networkMode,canRun:()=>!0});try{const f=await this.#n.start();if(f===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(f),this.#a.config.onSuccess?.(f,this),this.#a.config.onSettled?.(f,this.state.error,this),f}catch(f){if(f instanceof Lg){if(f.silent)return this.#n.promise;if(f.revert){if(this.state.data===void 0)throw f;return this.state.data}}throw this.#l({type:"error",error:f}),this.#a.config.onError?.(f,this),this.#a.config.onSettled?.(this.state.data,f,this),f}finally{this.scheduleGc()}}#l(t){const s=l=>{switch(t.type){case"failed":return{...l,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...l,fetchStatus:"paused"};case"continue":return{...l,fetchStatus:"fetching"};case"fetch":return{...l,...ib(l.data,this.options),fetchMeta:t.meta??null};case"success":const o={...l,data:t.data,dataUpdateCount:l.dataUpdateCount+1,dataUpdatedAt:t.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#e=t.manual?o:void 0,o;case"error":const c=t.error;return{...l,error:c,errorUpdateCount:l.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:l.fetchFailureCount+1,fetchFailureReason:c,fetchStatus:"idle",status:"error"};case"invalidate":return{...l,isInvalidated:!0};case"setState":return{...l,...t.state}}};this.state=s(this.state),mt.batch(()=>{this.observers.forEach(l=>{l.onQueryUpdate()}),this.#a.notify({query:this,type:"updated",action:t})})}};function ib(t,s){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:rb(s.networkMode)?"fetching":"paused",...t===void 0&&{error:null,status:"pending"}}}function Gv(t){const s=typeof t.initialData=="function"?t.initialData():t.initialData,l=s!==void 0,o=l?typeof t.initialDataUpdatedAt=="function"?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:s,dataUpdateCount:0,dataUpdatedAt:l?o??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:l?"success":"pending",fetchStatus:"idle"}}var pi=class extends Yr{constructor(t,s){super(),this.options=s,this.#t=t,this.#l=null,this.#i=Eg(),this.bindMethods(),this.setOptions(s)}#t;#e=void 0;#a=void 0;#r=void 0;#n;#s;#i;#l;#m;#u;#g;#c;#d;#o;#p=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#e.addObserver(this),zv(this.#e,this.options)?this.#f():this.updateResult(),this.#b())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Mg(this.#e,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Mg(this.#e,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#k(),this.#j(),this.#e.removeObserver(this)}setOptions(t){const s=this.options,l=this.#e;if(this.options=this.#t.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof Ha(this.options.enabled,this.#e)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#y(),this.#e.setOptions(this.options),s._defaulted&&!si(this.options,s)&&this.#t.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#e,observer:this});const o=this.hasListeners();o&&qv(this.#e,l,this.options,s)&&this.#f(),this.updateResult(),o&&(this.#e!==l||Ha(this.options.enabled,this.#e)!==Ha(s.enabled,this.#e)||ir(this.options.staleTime,this.#e)!==ir(s.staleTime,this.#e))&&this.#h();const c=this.#v();o&&(this.#e!==l||Ha(this.options.enabled,this.#e)!==Ha(s.enabled,this.#e)||c!==this.#o)&&this.#x(c)}getOptimisticResult(t){const s=this.#t.getQueryCache().build(this.#t,t),l=this.createResult(s,t);return Q1(this,l)&&(this.#r=l,this.#s=this.options,this.#n=this.#e.state),l}getCurrentResult(){return this.#r}trackResult(t,s){return new Proxy(t,{get:(l,o)=>(this.trackProp(o),s?.(o),o==="promise"&&!this.options.experimental_prefetchInRender&&this.#i.status==="pending"&&this.#i.reject(new Error("experimental_prefetchInRender feature flag is not enabled")),Reflect.get(l,o))})}trackProp(t){this.#p.add(t)}getCurrentQuery(){return this.#e}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const s=this.#t.defaultQueryOptions(t),l=this.#t.getQueryCache().build(this.#t,s);return l.fetch().then(()=>this.createResult(l,s))}fetch(t){return this.#f({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#f(t){this.#y();let s=this.#e.fetch(this.options,t);return t?.throwOnError||(s=s.catch(wt)),s}#h(){this.#k();const t=ir(this.options.staleTime,this.#e);if(qr||this.#r.isStale||!Ag(t))return;const l=tb(this.#r.dataUpdatedAt,t)+1;this.#c=zr.setTimeout(()=>{this.#r.isStale||this.updateResult()},l)}#v(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#e):this.options.refetchInterval)??!1}#x(t){this.#j(),this.#o=t,!(qr||Ha(this.options.enabled,this.#e)===!1||!Ag(this.#o)||this.#o===0)&&(this.#d=zr.setInterval(()=>{(this.options.refetchIntervalInBackground||cm.isFocused())&&this.#f()},this.#o))}#b(){this.#h(),this.#x(this.#v())}#k(){this.#c&&(zr.clearTimeout(this.#c),this.#c=void 0)}#j(){this.#d&&(zr.clearInterval(this.#d),this.#d=void 0)}createResult(t,s){const l=this.#e,o=this.options,c=this.#r,u=this.#n,m=this.#s,p=t!==l?t.state:this.#a,{state:h}=t;let b={...h},v=!1,S;if(s._optimisticResults){const V=this.hasListeners(),re=!V&&zv(t,s),W=V&&qv(t,l,s,o);(re||W)&&(b={...b,...ib(h.data,t.options)}),s._optimisticResults==="isRestoring"&&(b.fetchStatus="idle")}let{error:T,errorUpdatedAt:A,status:y}=b;S=b.data;let R=!1;if(s.placeholderData!==void 0&&S===void 0&&y==="pending"){let V;c?.isPlaceholderData&&s.placeholderData===m?.placeholderData?(V=c.data,R=!0):V=typeof s.placeholderData=="function"?s.placeholderData(this.#g?.state.data,this.#g):s.placeholderData,V!==void 0&&(y="success",S=wg(c?.data,V,s),v=!0)}if(s.select&&S!==void 0&&!R)if(c&&S===u?.data&&s.select===this.#m)S=this.#u;else try{this.#m=s.select,S=s.select(S),S=wg(c?.data,S,s),this.#u=S,this.#l=null}catch(V){this.#l=V}this.#l&&(T=this.#l,S=this.#u,A=Date.now(),y="error");const L=b.fetchStatus==="fetching",_=y==="pending",F=y==="error",$=_&&L,P=S!==void 0,M={status:y,fetchStatus:b.fetchStatus,isPending:_,isSuccess:y==="success",isError:F,isInitialLoading:$,isLoading:$,data:S,dataUpdatedAt:b.dataUpdatedAt,error:T,errorUpdatedAt:A,failureCount:b.fetchFailureCount,failureReason:b.fetchFailureReason,errorUpdateCount:b.errorUpdateCount,isFetched:b.dataUpdateCount>0||b.errorUpdateCount>0,isFetchedAfterMount:b.dataUpdateCount>p.dataUpdateCount||b.errorUpdateCount>p.errorUpdateCount,isFetching:L,isRefetching:L&&!_,isLoadingError:F&&!P,isPaused:b.fetchStatus==="paused",isPlaceholderData:v,isRefetchError:F&&P,isStale:dm(t,s),refetch:this.refetch,promise:this.#i,isEnabled:Ha(s.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const V=oe=>{M.status==="error"?oe.reject(M.error):M.data!==void 0&&oe.resolve(M.data)},re=()=>{const oe=this.#i=M.promise=Eg();V(oe)},W=this.#i;switch(W.status){case"pending":t.queryHash===l.queryHash&&V(W);break;case"fulfilled":(M.status==="error"||M.data!==W.value)&&re();break;case"rejected":(M.status!=="error"||M.error!==W.reason)&&re();break}}return M}updateResult(){const t=this.#r,s=this.createResult(this.#e,this.options);if(this.#n=this.#e.state,this.#s=this.options,this.#n.data!==void 0&&(this.#g=this.#e),si(s,t))return;this.#r=s;const l=()=>{if(!t)return!0;const{notifyOnChangeProps:o}=this.options,c=typeof o=="function"?o():o;if(c==="all"||!c&&!this.#p.size)return!0;const u=new Set(c??this.#p);return this.options.throwOnError&&u.add("error"),Object.keys(this.#r).some(m=>{const f=m;return this.#r[f]!==t[f]&&u.has(f)})};this.#S({listeners:l()})}#y(){const t=this.#t.getQueryCache().build(this.#t,this.options);if(t===this.#e)return;const s=this.#e;this.#e=t,this.#a=t.state,this.hasListeners()&&(s?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#b()}#S(t){mt.batch(()=>{t.listeners&&this.listeners.forEach(s=>{s(this.#r)}),this.#t.getQueryCache().notify({query:this.#e,type:"observerResultsUpdated"})})}};function U1(t,s){return Ha(s.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&s.retryOnMount===!1)}function zv(t,s){return U1(t,s)||t.state.data!==void 0&&Mg(t,s,s.refetchOnMount)}function Mg(t,s,l){if(Ha(s.enabled,t)!==!1&&ir(s.staleTime,t)!=="static"){const o=typeof l=="function"?l(t):l;return o==="always"||o!==!1&&dm(t,s)}return!1}function qv(t,s,l,o){return(t!==s||Ha(o.enabled,t)===!1)&&(!l.suspense||t.state.status!=="error")&&dm(t,l)}function dm(t,s){return Ha(s.enabled,t)!==!1&&t.isStaleByTime(ir(s.staleTime,t))}function Q1(t,s){return!si(t.getCurrentResult(),s)}function dc(t){return{onFetch:(s,l)=>{const o=s.options,c=s.fetchOptions?.meta?.fetchMore?.direction,u=s.state.data?.pages||[],m=s.state.data?.pageParams||[];let f={pages:[],pageParams:[]},p=0;const h=async()=>{let b=!1;const v=A=>{Object.defineProperty(A,"signal",{enumerable:!0,get:()=>(s.signal.aborted?b=!0:s.signal.addEventListener("abort",()=>{b=!0}),s.signal)})},S=ab(s.options,s.fetchOptions),T=async(A,y,R)=>{if(b)return Promise.reject();if(y==null&&A.pages.length)return Promise.resolve(A);const _=(()=>{const U={client:s.client,queryKey:s.queryKey,pageParam:y,direction:R?"backward":"forward",meta:s.options.meta};return v(U),U})(),F=await S(_),{maxPages:$}=s.options,P=R?C1:O1;return{pages:P(A.pages,F,$),pageParams:P(A.pageParams,y,$)}};if(c&&u.length){const A=c==="backward",y=A?ob:Dg,R={pages:u,pageParams:m},L=y(o,R);f=await T(R,L,A)}else{const A=t??u.length;do{const y=p===0?m[0]??o.initialPageParam:Dg(o,f);if(p>0&&y==null)break;f=await T(f,y),p++}while(p<A)}return f};s.options.persister?s.fetchFn=()=>s.options.persister?.(h,{client:s.client,queryKey:s.queryKey,meta:s.options.meta,signal:s.signal},l):s.fetchFn=h}}}function Dg(t,{pages:s,pageParams:l}){const o=s.length-1;return s.length>0?t.getNextPageParam(s[o],s,l[o],l):void 0}function ob(t,{pages:s,pageParams:l}){return s.length>0?t.getPreviousPageParam?.(s[0],s,l[0],l):void 0}function I1(t,s){return s?Dg(t,s)!=null:!1}function K1(t,s){return!s||!t.getPreviousPageParam?!1:ob(t,s)!=null}var cb=class extends pi{constructor(t,s){super(t,s)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(t){super.setOptions({...t,behavior:dc()})}getOptimisticResult(t){return t.behavior=dc(),super.getOptimisticResult(t)}fetchNextPage(t){return this.fetch({...t,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(t){return this.fetch({...t,meta:{fetchMore:{direction:"backward"}}})}createResult(t,s){const{state:l}=t,o=super.createResult(t,s),{isFetching:c,isRefetching:u,isError:m,isRefetchError:f}=o,p=l.fetchMeta?.fetchMore?.direction,h=m&&p==="forward",b=c&&p==="forward",v=m&&p==="backward",S=c&&p==="backward";return{...o,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:I1(s,l.data),hasPreviousPage:K1(s,l.data),isFetchNextPageError:h,isFetchingNextPage:b,isFetchPreviousPageError:v,isFetchingPreviousPage:S,isRefetchError:f&&!h&&!v,isRefetching:u&&!b&&!S}}},Y1=class extends lb{#t;#e;#a;#r;constructor(t){super(),this.#t=t.client,this.mutationId=t.mutationId,this.#a=t.mutationCache,this.#e=[],this.state=t.state||db(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){this.#e.includes(t)||(this.#e.push(t),this.clearGcTimeout(),this.#a.notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){this.#e=this.#e.filter(s=>s!==t),this.scheduleGc(),this.#a.notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#a.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(t){const s=()=>{this.#n({type:"continue"})},l={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=sb({fn:()=>this.options.mutationFn?this.options.mutationFn(t,l):Promise.reject(new Error("No mutationFn found")),onFail:(u,m)=>{this.#n({type:"failed",failureCount:u,error:m})},onPause:()=>{this.#n({type:"pause"})},onContinue:s,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#a.canRun(this)});const o=this.state.status==="pending",c=!this.#r.canStart();try{if(o)s();else{this.#n({type:"pending",variables:t,isPaused:c}),await this.#a.config.onMutate?.(t,this,l);const m=await this.options.onMutate?.(t,l);m!==this.state.context&&this.#n({type:"pending",context:m,variables:t,isPaused:c})}const u=await this.#r.start();return await this.#a.config.onSuccess?.(u,t,this.state.context,this,l),await this.options.onSuccess?.(u,t,this.state.context,l),await this.#a.config.onSettled?.(u,null,this.state.variables,this.state.context,this,l),await this.options.onSettled?.(u,null,t,this.state.context,l),this.#n({type:"success",data:u}),u}catch(u){try{throw await this.#a.config.onError?.(u,t,this.state.context,this,l),await this.options.onError?.(u,t,this.state.context,l),await this.#a.config.onSettled?.(void 0,u,this.state.variables,this.state.context,this,l),await this.options.onSettled?.(void 0,u,t,this.state.context,l),u}finally{this.#n({type:"error",error:u})}}finally{this.#a.runNext(this)}}#n(t){const s=l=>{switch(t.type){case"failed":return{...l,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...l,isPaused:!0};case"continue":return{...l,isPaused:!1};case"pending":return{...l,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...l,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...l,data:void 0,error:t.error,failureCount:l.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=s(this.state),mt.batch(()=>{this.#e.forEach(l=>{l.onMutationUpdate(t)}),this.#a.notify({mutation:this,type:"updated",action:t})})}};function db(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var X1=class extends Yr{constructor(t={}){super(),this.config=t,this.#t=new Set,this.#e=new Map,this.#a=0}#t;#e;#a;build(t,s,l){const o=new Y1({client:t,mutationCache:this,mutationId:++this.#a,options:t.defaultMutationOptions(s),state:l});return this.add(o),o}add(t){this.#t.add(t);const s=Fo(t);if(typeof s=="string"){const l=this.#e.get(s);l?l.push(t):this.#e.set(s,[t])}this.notify({type:"added",mutation:t})}remove(t){if(this.#t.delete(t)){const s=Fo(t);if(typeof s=="string"){const l=this.#e.get(s);if(l)if(l.length>1){const o=l.indexOf(t);o!==-1&&l.splice(o,1)}else l[0]===t&&this.#e.delete(s)}}this.notify({type:"removed",mutation:t})}canRun(t){const s=Fo(t);if(typeof s=="string"){const o=this.#e.get(s)?.find(c=>c.state.status==="pending");return!o||o===t}else return!0}runNext(t){const s=Fo(t);return typeof s=="string"?this.#e.get(s)?.find(o=>
9o!==t&&o.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){mt.batch(()=>{this.#t.forEach(t=>{this.notify({type:"removed",mutation:t})}),this.#t.clear(),this.#e.clear()})}getAll(){return Array.from(this.#t)}find(t){const s={exact:!0,...t};return this.getAll().find(l=>Cv(s,l))}findAll(t={}){return this.getAll().filter(s=>Cv(t,s))}notify(t){mt.batch(()=>{this.listeners.forEach(s=>{s(t)})})}resumePausedMutations(){const t=this.getAll().filter(s=>s.state.isPaused);return mt.batch(()=>Promise.all(t.map(s=>s.continue().catch(wt))))}};function Fo(t){return t.options.scope?.id}var $1=class extends Yr{#t;#e=void 0;#a;#r;constructor(s,l){super(),this.#t=s,this.setOptions(l),this.bindMethods(),this.#n()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(s){const l=this.options;this.options=this.#t.defaultMutationOptions(s),si(this.options,l)||this.#t.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#a,observer:this}),l?.mutationKey&&this.options.mutationKey&&or(l.mutationKey)!==or(this.options.mutationKey)?this.reset():this.#a?.state.status==="pending"&&this.#a.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#a?.removeObserver(this)}onMutationUpdate(s){this.#n(),this.#s(s)}getCurrentResult(){return this.#e}reset(){this.#a?.removeObserver(this),this.#a=void 0,this.#n(),this.#s()}mutate(s,l){return this.#r=l,this.#a?.removeObserver(this),this.#a=this.#t.getMutationCache().build(this.#t,this.options),this.#a.addObserver(this),this.#a.execute(s)}#n(){const s=this.#a?.state??db();this.#e={...s,isPending:s.status==="pending",isSuccess:s.status==="success",isError:s.status==="error",isIdle:s.status==="idle",mutate:this.mutate,reset:this.reset}}#s(s){mt.batch(()=>{if(this.#r&&this.hasListeners()){const l=this.#e.variables,o=this.#e.context,c={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};s?.type==="success"?(this.#r.onSuccess?.(s.data,l,o,c),this.#r.onSettled?.(s.data,null,l,o,c)):s?.type==="error"&&(this.#r.onError?.(s.error,l,o,c),this.#r.onSettled?.(void 0,s.error,l,o,c))}this.listeners.forEach(l=>{l(this.#e)})})}};function Pv(t,s){const l=new Set(s);return t.filter(o=>!l.has(o))}function Z1(t,s,l){const o=t.slice(0);return o[s]=l,o}var W1=class extends Yr{#t;#e;#a;#r;#n;#s;#i;#l;#m=[];constructor(t,s,l){super(),this.#t=t,this.#r=l,this.#a=[],this.#n=[],this.#e=[],this.setQueries(s)}onSubscribe(){this.listeners.size===1&&this.#n.forEach(t=>{t.subscribe(s=>{this.#d(t,s)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#n.forEach(t=>{t.destroy()})}setQueries(t,s){this.#a=t,this.#r=s,mt.batch(()=>{const l=this.#n,o=this.#c(this.#a);this.#m=o,o.forEach(b=>b.observer.setOptions(b.defaultedQueryOptions));const c=o.map(b=>b.observer),u=c.map(b=>b.getCurrentResult()),m=l.length!==c.length,f=c.some((b,v)=>b!==l[v]),p=m||f,h=p?!0:u.some((b,v)=>{const S=this.#e[v];return!S||!si(b,S)});!p&&!h||(p&&(this.#n=c),this.#e=u,this.hasListeners()&&(p&&(Pv(l,c).forEach(b=>{b.destroy()}),Pv(c,l).forEach(b=>{b.subscribe(v=>{this.#d(b,v)})})),this.#o()))})}getCurrentResult(){return this.#e}getQueries(){return this.#n.map(t=>t.getCurrentQuery())}getObservers(){return this.#n}getOptimisticResult(t,s){const l=this.#c(t),o=l.map(c=>c.observer.getOptimisticResult(c.defaultedQueryOptions));return[o,c=>this.#g(c??o,s),()=>this.#u(o,l)]}#u(t,s){return s.map((l,o)=>{const c=t[o];return l.defaultedQueryOptions.notifyOnChangeProps?c:l.observer.trackResult(c,u=>{s.forEach(m=>{m.observer.trackProp(u)})})})}#g(t,s){return s?((!this.#s||this.#e!==this.#l||s!==this.#i)&&(this.#i=s,this.#l=this.#e,this.#s=om(this.#s,s(t))),this.#s):t}#c(t){const s=new Map(this.#n.map(o=>[o.options.queryHash,o])),l=[];return t.forEach(o=>{const c=this.#t.defaultQueryOptions(o),u=s.get(c.queryHash);u?l.push({defaultedQueryOptions:c,observer:u}):l.push({defaultedQueryOptions:c,observer:new pi(this.#t,c)})}),l}#d(t,s){const l=this.#n.indexOf(t);l!==-1&&(this.#e=Z1(this.#e,l,s),this.#o())}#o(){if(this.hasListeners()){const t=this.#s,s=this.#u(this.#e,this.#m),l=this.#g(s,this.#r?.combine);t!==l&&mt.batch(()=>
vendor: 14,723 bytes, lines 9-17
9{this.listeners.forEach(o=>{o(this.#e)})})}}},e2=class extends Yr{constructor(t={}){super(),this.config=t,this.#t=new Map}#t;build(t,s,l){const o=s.queryKey,c=s.queryHash??im(o,s);let u=this.get(c);return u||(u=new B1({client:t,queryKey:o,queryHash:c,options:t.defaultQueryOptions(s),state:l,defaultOptions:t.getQueryDefaults(o)}),this.add(u)),u}add(t){this.#t.has(t.queryHash)||(this.#t.set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const s=this.#t.get(t.queryHash);s&&(t.destroy(),s===t&&this.#t.delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){mt.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return this.#t.get(t)}getAll(){return[...this.#t.values()]}find(t){const s={exact:!0,...t};return this.getAll().find(l=>Ov(s,l))}findAll(t={}){const s=this.getAll();return Object.keys(t).length>0?s.filter(l=>Ov(t,l)):s}notify(t){mt.batch(()=>{this.listeners.forEach(s=>{s(t)})})}onFocus(){mt.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){mt.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},t2=class{#t;#e;#a;#r;#n;#s;#i;#l;constructor(t={}){this.#t=t.queryCache||new e2,this.#e=t.mutationCache||new X1,this.#a=t.defaultOptions||{},this.#r=new Map,this.#n=new Map,this.#s=0}mount(){this.#s++,this.#s===1&&(this.#i=cm.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#t.onFocus())}),this.#l=cc.subscribe(async t=>{t&&(await this.resumePausedMutations(),this.#t.onOnline())}))}unmount(){this.#s--,this.#s===0&&(this.#i?.(),this.#i=void 0,this.#l?.(),this.#l=void 0)}isFetching(t){return this.#t.findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return this.#e.findAll({...t,status:"pending"}).length}getQueryData(t){const s=this.defaultQueryOptions({queryKey:t});return this.#t.get(s.queryHash)?.state.data}ensureQueryData(t){const s=this.defaultQueryOptions(t),l=this.#t.build(this,s),o=l.state.data;return o===void 0?this.fetchQuery(t):(t.revalidateIfStale&&l.isStaleByTime(ir(s.staleTime,l))&&this.prefetchQuery(s),Promise.resolve(o))}getQueriesData(t){return this.#t.findAll(t).map(({queryKey:s,state:l})=>{const o=l.data;return[s,o]})}setQueryData(t,s,l){const o=this.defaultQueryOptions({queryKey:t}),u=this.#t.get(o.queryHash)?.state.data,m=M1(s,u);if(m!==void 0)return this.#t.build(this,o).setData(m,{...l,manual:!0})}setQueriesData(t,s,l){return mt.batch(()=>this.#t.findAll(t).map(({queryKey:o})=>[o,this.setQueryData(o,s,l)]))}getQueryState(t){const s=this.defaultQueryOptions({queryKey:t});return this.#t.get(s.queryHash)?.state}removeQueries(t){const s=this.#t;mt.batch(()=>{s.findAll(t).forEach(l=>{s.remove(l)})})}resetQueries(t,s){const l=this.#t;return mt.batch(()=>(l.findAll(t).forEach(o=>{o.reset()}),this.refetchQueries({type:"active",...t},s)))}cancelQueries(t,s={}){const l={revert:!0,...s},o=mt.batch(()=>this.#t.findAll(t).map(c=>c.cancel(l)));return Promise.all(o).then(wt).catch(wt)}invalidateQueries(t,s={}){return mt.batch(()=>(this.#t.findAll(t).forEach(l=>{l.invalidate()}),t?.refetchType==="none"?Promise.resolve():this.refetchQueries({...t,type:t?.refetchType??t?.type??"active"},s)))}refetchQueries(t,s={}){const l={...s,cancelRefetch:s.cancelRefetch??!0},o=mt.batch(()=>this.#t.findAll(t).filter(c=>!c.isDisabled()&&!c.isStatic()).map(c=>{let u=c.fetch(void 0,l);return l.throwOnError||(u=u.catch(wt)),c.state.fetchStatus==="paused"?Promise.resolve():u}));return Promise.all(o).then(wt)}fetchQuery(t){const s=this.defaultQueryOptions(t);s.retry===void 0&&(s.retry=!1);const l=this.#t.build(this,s);return l.isStaleByTime(ir(s.staleTime,l))?l.fetch(s):Promise.resolve(l.state.data)}prefetchQuery(t){return this.fetchQuery(t).then(wt).catch(wt)}fetchInfiniteQuery(t){return t.behavior=dc(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then(wt).catch(wt)}ensureInfiniteQueryData(t){return t.behavior=dc(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return cc.isOnline()?this.#e.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#t}getMutationCache(){return this.#e}getDefaultOptions(){return this.#a}setDefaultOptions(t){this.#a=t}setQueryDefaults(t,s){this.#r.set(or(t),{queryKey:t,defaultOptions:s})}getQueryDefaults(t){const s=[...this.#r.values()],l={};return s.forEach(o=>{ri(t,o.queryKey)&&Object.assign(l,o.defaultOptions)}),l}setMutationDefaults(t,s){this.#n.set(or(t),{mutationKey:t,defaultOptions:s})}getMutationDefaults(t){const s=[...this.#n.values()],l={};return s.forEach(o=>{ri(t,o.mutationKey)&&Object.assign(l,o.defaultOptions)}),l}defaultQueryOptions(t){if(t._defaulted)return t;const s={...this.#a.queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return s.queryHash||(s.queryHash=im(s.queryKey,s)),s.refetchOnReconnect===void 0&&(s.refetchOnReconnect=s.networkMode!=="always"),s.throwOnError===void 0&&(s.throwOnError=!!s.suspense),!s.networkMode&&s.persister&&(s.networkMode="offlineFirst"),s.queryFn===pa&&(s.enabled=!1),s}defaultMutationOptions(t){return t?._defaulted?t:{...this.#a.mutations,...t?.mutationKey&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){this.#t.clear(),this.#e.clear()}},ng={exports:{}},Ce={};/** 10 * @license React 11 * react.production.js 12 * 13 * Copyright (c) Meta Platforms, Inc. and affiliates. 14 * 15 * This source code is licensed under the MIT license found in the 16 * LICENSE file in the root directory of this source tree. 17 */var Bv;function a2(){if(Bv)return Ce;Bv=1;var t=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),m=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),v=Symbol.for("react.activity"),S=Symbol.iterator;function T(H){return H===null||typeof H!="object"?null:(H=S&&H[S]||H["@@iterator"],typeof H=="function"?H:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,R={};function L(H,I,q){this.props=H,this.context=I,this.refs=R,this.updater=q||A}L.prototype.isReactComponent={},L.prototype.setState=function(H,I){if(typeof H!="object"&&typeof H!="function"&&H!=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,H,I,"setState")},L.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function _(){}_.prototype=L.prototype;function F(H,I,q){this.props=H,this.context=I,this.refs=R,this.updater=q||A}var $=F.prototype=new _;$.constructor=F,y($,L.prototype),$.isPureReactComponent=!0;var P=Array.isArray;function U(){}var M={H:null,A:null,T:null,S:null},V=Object.prototype.hasOwnProperty;function re(H,I,q){var K=q.ref;return{$$typeof:t,type:H,key:I,ref:K!==void 0?K:null,props:q}}function W(H,I){return re(H.type,I,H.props)}function oe(H){return typeof H=="object"&&H!==null&&H.$$typeof===t}function le(H){var I={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(q){return I[q]})}var ue=/\/+/g;function de(H,I){return typeof H=="object"&&H!==null&&H.key!=null?le(""+H.key):I.toString(36)}function ge(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(U,U):(H.status="pending",H.then(function(I){H.status==="pending"&&(H.status="fulfilled",H.value=I)},function(I){H.status==="pending"&&(H.status="rejected",H.reason=I)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function E(H,I,q,K,ie){var he=typeof H;(he==="undefined"||he==="boolean")&&(H=null);var ae=!1;if(H===null)ae=!0;else switch(he){case"bigint":case"string":case"number":ae=!0;break;case"object":switch(H.$$typeof){case t:case s:ae=!0;break;case b:return ae=H._init,E(ae(H._payload),I,q,K,ie)}}if(ae)return ie=ie(H),ae=K===""?"."+de(H,0):K,P(ie)?(q="",ae!=null&&(q=ae.replace(ue,"$&/")+"/"),E(ie,I,q,"",function(Fe){return Fe})):ie!=null&&(oe(ie)&&(ie=W(ie,q+(ie.key==null||H&&H.key===ie.key?"":(""+ie.key).replace(ue,"$&/")+"/")+ae)),I.push(ie)),1;ae=0;var Se=K===""?".":K+":";if(P(H))for(var De=0;De<H.length;De++)K=H[De],he=Se+de(K,De),ae+=E(K,I,q,he,ie);else if(De=T(H),typeof De=="function")for(H=De.call(H),De=0;!(K=H.next()).done;)K=K.value,he=Se+de(K,De++),ae+=E(K,I,q,he,ie);else if(he==="object"){if(typeof H.then=="function")return E(ge(H),I,q,K,ie);throw I=String(H),Error("Objects are not valid as a React child (found: "+(I==="[object Object]"?"object with keys {"+Object.keys(H).join(", ")+"}":I)+"). If you meant to render a collection of children, use an array instead.")}return ae}function z(H,I,q){if(H==null)return H;var K=[],ie=0;return E(H,K,"","",function(he){return I.call(q,he,ie++)}),K}function C(H){if(H._status===-1){var I=H._result;I=I(),I.then(function(q){(H._status===0||H._status===-1)&&(H._status=1,H._result=q)},function(q){(H._status===0||H._status===-1)&&(H._status=2,H._result=q)}),H._status===-1&&(H._status=0,H._result=I)}if(H._status===1)return H._result.default;throw H._result}var ce=typeof reportError=="function"?reportError:function(H){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var I=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof H=="object"&&H!==null&&typeof H.message=="string"?String(H.message):String(H),error:H});if(!window.dispatchEvent(I))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",H);return}console.error(H)},je={map:z,forEach:function(H,I,q){z(H,function(){I.apply(this,arguments)},q)},count:function(H){var I=0;return z(H,function(){I++}),I},toArray:function(H){return z(H,function(I){return I})||[]},only:function(H){if(!oe(H))throw Error("React.Children.only expected to receive a single React element child.");return H}};return Ce.Activity=v,Ce.Children=je,Ce.Component=L,Ce.Fragment=l,Ce.Profiler=c,Ce.PureComponent=F,Ce.StrictMode=o,Ce.Suspense=p,Ce.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=M,Ce.__COMPILER_RUNTIME={__proto__:null,c:function(H){return M.H.useMemoCache(H)}},Ce.cache=function(H){return function(){return H.apply(null,arguments)}},Ce.cacheSignal=function(){return null},Ce.cloneElement=function(H,I,q){if(H==null)throw Error("The argument must be a React element, but you passed "+H+".");var K=y({},H.props),ie=H.key;if(I!=null)for(he in I.key!==void 0&&(ie=""+I.key),I)!V.call(I,he)||he==="key"||he==="__self"||he==="__source"||he==="ref"&&I.ref===void 0||(K[he]=I[he]);var he=arguments.length-2;if(he===1)K.children=q;else if(1<he){for(var ae=Array(he),Se=0;Se<he;Se++)ae[Se]=arguments[Se+2];K.children=ae}return re(H.type,ie,K)},Ce.createContext=function(H){return H={$$typeof:m,_currentValue:H,_currentValue2:H,_threadCount:0,Provider:null,Consumer:null},H.Provider=H,H.Consumer={$$typeof:u,_context:H},H},Ce.createElement=function(H,I,q){var K,ie={},he=null;if(I!=null)for(K in I.key!==void 0&&(he=""+I.key),I)V.call(I,K)&&K!=="key"&&K!=="__self"&&K!=="__source"&&(ie[K]=I[K]);var ae=arguments.length-2;if(ae===1)ie.children=q;else if(1<ae){for(var Se=Array(ae),De=0;De<ae;De++)Se[De]=arguments[De+2];ie.children=Se}if(H&&H.defaultProps)for(K in ae=H.defaultProps,ae)ie[K]===void 0&&(ie[K]=ae[K]);return re(H,he,ie)},Ce.createRef=function(){return{current:null}},Ce.forwardRef=function(H){return{$$typeof:f,render:H}},Ce.isValidElement=oe,Ce.lazy=function(H){return{$$typeof:b,_payload:{_status:-1,_result:H},_init:C}},Ce.memo=function(H,I){return{$$typeof:h,type:H,compare:I===void 0?null:I}},Ce.startTransition=function(H){var I=M.T,q={};M.T=q;try{var K=H(),ie=M.S;ie!==null&&ie(q,K),typeof K=="object"&&K!==null&&typeof K.then=="function"&&K.then(U,ce)}catch(he){ce(he)}finally{I!==null&&q.types!==null&&(I.types=q.types),M.T=I}},Ce.unstable_useCacheRefresh=function(){return M.H.useCacheRefresh()},Ce.use=function(H){return M.H.use(H)},Ce.useActionState=function(H,I,q){return M.H.useActionState(H,I,q)},Ce.useCallback=function(H,I){return M.H.useCallback(H,I)},Ce.useContext=function(H){return M.H.useContext(H)},Ce.useDebugValue=function(){},Ce.useDeferredValue=function(H,I){return M.H.useDeferredValue(H,I)},Ce.useEffect=function(H,I){return M.H.useEffect(H,I)},Ce.useEffectEvent=function(H){return M.H.useEffectEvent(H)},Ce.useId=function(){return M.H.useId()},Ce.useImperativeHandle=function(H,I,q){return M.H.useImperativeHandle(H,I,q)},Ce.useInsertionEffect=function(H,I){return M.H.useInsertionEffect(H,I)},Ce.useLayoutEffect=function(H,I){return M.H.useLayoutEffect(H,I)},Ce.useMemo=function(H,I){return M.H.useMemo(H,I)},Ce.useOptimistic=function(H,I){return M.H.useOptimistic(H,I)},Ce.useReducer=function(H,I,q){return M.H.useReducer(H,I,q)},Ce.useRef=function(H){return M.H.useRef(H)},Ce.useState=function(H){return M.H.useState(H)},Ce.useSyncExternalStore=function(H,I,q){return M.H.useSyncExternalStore(H,I,q)},Ce.useTransition=function(){return M.H.useTransition()},Ce.version="19.2.1",Ce}var Uv;function kc(){return Uv||(Uv=1,ng.exports=a2()),ng.exports}var k=kc();const se=eb(k),jc=R1({__proto__:null,default:se},[k]);var ub=k.createContext(void 0),Xs=t=>{const s=k.useContext(ub);if(t)return t;if(!s)throw new Error("No QueryClient set, use QueryClientProvider to set one");return s},n2=({client:t,children:s})=>(k.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),n.jsx(ub.Provider,{value:t,children:s})),gb=k.createContext(!1),mb=()=>k.useContext(gb);gb.Provider;function r2(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var s2=k.createContext(r2()),fb=()=>k.useContext(s2),pb=(t,s)=>{(t.suspense||t.throwOnError||t.experimental_prefetchInRender)&&(s.isReset()||(t.retryOnMount=!1))},hb=t=>{k.useEffect(()=>{t.clearReset()},[t])},vb=({result:t,errorResetBoundary:s,throwOnError:l,query:o,suspense:c})=>t.isError&&!s.isReset()&&!t.isFetching&&o&&(c&&t.data===void 0||nb(l,[t.error,o])),um=(t,s)=>s.state.data===void 0,xb=t=>{if(t.suspense){const l=c=>c==="static"?c:Math.max(c??1e3,1e3),o=t.staleTime;t.staleTime=typeof o=="function"?(...c)=>l(o(...c)):l(o),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},bb=(t,s)=>t.isLoading&&t.isFetching&&!s,_g=(t,s)=>t?.suspense&&s.isPending,uc=(t,s,l)=>s.fetchOptimistic(t).catch(()=>{l.clearReset()});function kb({queries:t,...s},l){const o=Xs(l),c=mb(),u=fb(),m=k.useMemo(()=>t.map(y=>{const R=o.defaultQueryOptions(y);return R._optimisticResults=c?"isRestoring":"optimistic",R}),[t,o,c]);m.forEach(y=>{xb(y),pb(y,u)}),hb(u);const[f]=k.useState(()=>new W1(o,m,s)),[p,h,b]=f.getOptimisticResult(m,s.combine),v=!c&&s.subscribed!==!1;
17k.useSyncExternalStore(k.useCallback(y=>v?f.subscribe(mt.batchCalls(y)):wt,[f,v]),()=>f.getCurrentResult(),()=>f.getCurrentResult()),k.useEffect(()=>{f.setQueries(m,s)},[m,s,f]);const T=p.some((y,R)=>_g(m[R],y))?p.flatMap((y,R)=>{const L=m[R];if(L){const _=new pi(o,L);if(_g(L,y))return uc(L,_,u);bb(y,c)&&uc(L,_,u)}return[]}):[];if(T.length>0)throw Promise.all(T);const A=p.find((y,R)=>{const L=m[R];return L&&vb({result:y,errorResetBoundary:u,throwOnError:L.throwOnError,query:o.getQueryCache().get(L.queryHash),suspense:L.suspense})});if(A?.error)throw A.error;return h(b())}function yc(t,s,l){const o=mb(),c=fb(),u=Xs(l),m=u.defaultQueryOptions(t);u.getDefaultOptions().queries?._experimental_beforeQuery?.(m),m._optimisticResults=o?"isRestoring":"optimistic",xb(m),pb(m,c),hb(c);const f=!u.getQueryCache().get(m.queryHash),[p]=k.useState(()=>new s(u,m)),h=p.getOptimisticResult(m),b=!o&&t.subscribed!==!1;if(k.useSyncExternalStore(k.useCallback(v=>{const S=b?p.subscribe(mt.batchCalls(v)):wt;return p.updateResult(),S},[p,b]),()=>p.getCurrentResult(),()=>p.getCurrentResult()),k.useEffect(()=>{p.setOptions(m)},[m,p]),_g(m,h))throw uc(m,p,c);if(vb({result:h,errorResetBoundary:c,throwOnError:m.throwOnError,query:u.getQueryCache().get(m.queryHash),suspense:m.suspense}))throw h.error;return u.getDefaultOptions().queries?._experimental_afterQuery?.(m,h),m.experimental_prefetchInRender&&!qr&&bb(h,o)&&(f?uc(m,p,c):u.getQueryCache().get(m.queryHash)?.promise)?.catch(wt).finally(()=>{p.updateResult()}),m.notifyOnChangeProps?h:p.trackResult(h)}function l2(t,s){return yc(t,pi,s)}function i2(t,s){return yc({...t,enabled:!0,suspense:!0,throwOnError:um,placeholderData:void 0},pi,s)}function o2(t,s){return yc({...t,enabled:!0,suspense:!0,throwOnError:um},cb,s)}function c2(t,s){return kb({...t,queries:t.queries.map(l=>({...l,suspense:!0,throwOnError:um,enabled:!0,placeholderData:void 0}))},s)}function d2(t,s){const l=Xs(s);l.getQueryState(t.queryKey)||l.prefetchQuery(t)}function u2(t,s){const l=Xs(s);l.getQueryState(t.queryKey)||l.prefetchInfiniteQuery(t)}var g2=({children:t,options:s={},state:l,queryClient:o})=>{const c=Xs(o),u=k.useRef(s);u.current=s;const m=k.useMemo(()=>{if(l){if(typeof l!="object")return;const f=c.getQueryCache(),p=l.queries||[],h=[],b=[];for(const v of p){const S=f.get(v.queryHash);S?(v.state.dataUpdatedAt>S.state.dataUpdatedAt||v.promise&&S.state.status!=="pending"&&S.state.fetchStatus!=="fetching"&&v.dehydratedAt!==void 0&&v.dehydratedAt>S.state.dataUpdatedAt)&&b.push(v):h.push(v)}if(h.length>0&&Jv(c,{queries:h},u.current),b.length>0)return b}},[c,l]);return k.useEffect(()=>{m&&Jv(c,{queries:m},u.current)},[c,m]),t};function m2(t,s){const l=Xs(s),[o]=k.useState(()=>new $1(l,t));k.useEffect(()=>{o.setOptions(t)},[o,t]);const c=k.useSyncExternalStore(k.useCallback(m=>o.subscribe(mt.batchCalls(m)),[o]),()=>o.getCurrentResult(),()=>o.getCurrentResult()),u=k.useCallback((m,f)=>{o.mutate(m,f).catch(wt)},[o]);if(c.error&&nb(o.options.throwOnError,[c.error]))throw c.error;return{...c,mutate:u,mutateAsync:c.mutate}}function f2(t,s){return yc(t,cb,s)}function Pr(t){return!!t&&!Array.isArray(t)&&typeof t=="object"}const p2=typeof Symbol=="function"&&!!Symbol.asyncIterator;function jb(t){return p2&&Pr(t)&&Symbol.asyncIterator in t}var h2=Object.create,yb=Object.defineProperty,v2=Object.getOwnPropertyDescriptor,Sb=Object.getOwnPropertyNames,x2=Object.getPrototypeOf,b2=Object.prototype.hasOwnProperty,hi=(t,s)=>function(){return s||(0,t[Sb(t)[0]])((s={exports:{}}).exports,s),s.exports},k2=(t,s,l,o)=>{if(s&&typeof s=="object"||typeof s=="function")for(var c=Sb(s),u=0,m=c.length,f;u<m;u++)f=c[u],!b2.call(t,f)&&f!==l&&yb(t,f,{get:(p=>s[p]).bind(null,f),enumerable:!(o=v2(s,f))||o.enumerable});return t},Sc=(t,s,l)=>(l=t!=null?h2(x2(t)):{},k2(yb(l,"default",{value:t,enumerable:!0}),t));const Nb=()=>{},Qv=t=>{Object.freeze&&Object.freeze(t)};function Tb(t,s,l){var o;const c=s.join(".");return(o=l[c])!==null&&o!==void 0||(l[c]=new Proxy(Nb,{get(u,m){if(!(typeof m!="string"||m==="then"))return Tb(t,[...s,m],l)},apply(u,m,f){const p=s[s.length-1];let h={args:f,path:s};
17return p==="call"?h={args:f.length>=2?[f[1]]:[],path:s.slice(0,-1)}:p==="apply"&&(h={args:f.length>=2?f[1]:[],path:s.slice(0,-1)}),Qv(h.args),Qv(h.path),t(h)}})),l[c]}const Nc=t=>Tb(t,[],Object.create(null)),gm=t=>new Proxy(Nb,{get(s,l){if(l!=="then")return t(l)}});var Rb=hi({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(t,s){function l(o){"@babel/helpers - typeof";return s.exports=l=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},s.exports.__esModule=!0,s.exports.default=s.exports,l(o)}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}}),j2=hi({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(t,s){var l=Rb().default;function o(c,u){if(l(c)!="object"||!c)return c;var m=c[Symbol.toPrimitive];if(m!==void 0){var f=m.call(c,u||"default");if(l(f)!="object")return f;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(c)}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),y2=hi({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(t,s){var l=Rb().default,o=j2();function c(u){var m=o(u,"string");return l(m)=="symbol"?m:m+""}s.exports=c,s.exports.__esModule=!0,s.exports.default=s.exports}}),Ab=hi({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(t,s){var l=y2();function o(c,u,m){return(u=l(u))in c?Object.defineProperty(c,u,{value:m,enumerable:!0,configurable:!0,writable:!0}):c[u]=m,c}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),mm=hi({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(t,s){var l=Ab();function o(u,m){var f=Object.keys(u);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(u);m&&(p=p.filter(function(h){return Object.getOwnPropertyDescriptor(u,h).enumerable})),f.push.apply(f,p)}return f}function c(u){for(var m=1;m<arguments.length;m++){var f=arguments[m]!=null?arguments[m]:{};m%2?o(Object(f),!0).forEach(function(p){l(u,p,f[p])}):Object.getOwnPropertyDescriptors?Object.defineProperties(u,Object.getOwnPropertyDescriptors(f)):o(Object(f)).forEach(function(p){Object.defineProperty(u,p,Object.getOwnPropertyDescriptor(f,p))})}return u}s.exports=c,s.exports.__esModule=!0,s.exports.default=s.exports}});Sc(mm());Sc(Ab());var Jo=Sc(mm());function S2(t,s){if("error"in t){const o=s.deserialize(t.error);return{ok:!1,error:(0,Jo.default)((0,Jo.default)({},t),{},{error:o})}}return{ok:!0,result:(0,Jo.default)((0,Jo.default)({},t.result),(!t.result.type||t.result.type==="data")&&{type:"data",data:s.deserialize(t.result.data)})}}var rg=class extends Error{constructor(){super("Unable to transform response from server")}};function N2(t,s){let l;try{l=S2(t,s)}catch{throw new rg}if(!l.ok&&(!Pr(l.error.error)||typeof l.error.error.code!="number"))throw new rg;if(l.ok&&!Pr(l.result))throw new rg;return l}Sc(mm());function Tc(t){const s={subscribe(l){let o=null,c=!1,u=!1,m=!1;function f(){if(o===null){m=!0;return}u||(u=!0,typeof o=="function"?o():o&&o.unsubscribe())}return o=t({next(p){var h;c||(h=l.next)===null||h===void 0||h.call(l,p)},error(p){var h;c||(c=!0,(h=l.error)===null||h===void 0||h.call(l,p),f())},complete(){var p;c||(c=!0,(p=l.complete)===null||p===void 0||p.call(l),f())}}),m&&f(),{unsubscribe:f}},pipe(...l){return l.reduce(T2,s)}};return s}function T2(t,s){return s(t)}function R2(t){const s=new AbortController;return new Promise((o,c)=>{let u=!1;function m(){u||(u=!0,f.unsubscribe())}s.signal.addEventListener("abort",()=>{c(s.signal.reason)});const f=t.subscribe({next(p){u=!0,o(p),m()},error(p){c(p)},complete(){s.abort(),m()}})})}var A2=Object.create,Hb=Object.defineProperty,H2=Object.getOwnPropertyDescriptor,wb=Object.getOwnPropertyNames,w2=Object.getPrototypeOf,E2=Object.prototype.hasOwnProperty,mr=(t,s)=>function(){return s||(0,t[wb(t)[0]])((s={exports:{}}).exports,s),s.exports},L2=(t,s,l,o)=>{if(s&&typeof s=="object"||typeof s=="function")for(var c=wb(s),u=0,m=c.length,f;u<m;u++)f=c[u],!E2.call(t,f)&&f!==l&&Hb(t,f,{get:(p=>s[p]).bind(null,f),enumerable:!(o=H2(s,f))||o.enumerable});return t},Xr=(t,s,l)=>(l=t!=null?A2(w2(t)):{}
17,L2(s||!t||!t.__esModule?Hb(l,"default",{value:t,enumerable:!0}):l,t)),M2=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectWithoutPropertiesLoose.js"(t,s){function l(o,c){if(o==null)return{};var u={};for(var m in o)if({}.hasOwnProperty.call(o,m)){if(c.includes(m))continue;u[m]=o[m]}return u}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}}),D2=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectWithoutProperties.js"(t,s){var l=M2();function o(c,u){if(c==null)return{};var m,f,p=l(c,u);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(c);for(f=0;f<h.length;f++)m=h[f],u.includes(m)||{}.propertyIsEnumerable.call(c,m)&&(p[m]=c[m])}return p}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),Eb=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(t,s){function l(o){"@babel/helpers - typeof";return s.exports=l=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},s.exports.__esModule=!0,s.exports.default=s.exports,l(o)}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}}),_2=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(t,s){var l=Eb().default;function o(c,u){if(l(c)!="object"||!c)return c;var m=c[Symbol.toPrimitive];if(m!==void 0){var f=m.call(c,u||"default");if(l(f)!="object")return f;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(c)}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),O2=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(t,s){var l=Eb().default,o=_2();function c(u){var m=o(u,"string");return l(m)=="symbol"?m:m+""}s.exports=c,s.exports.__esModule=!0,s.exports.default=s.exports}}),C2=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(t,s){var l=O2();function o(c,u,m){return(u=l(u))in c?Object.defineProperty(c,u,{value:m,enumerable:!0,configurable:!0,writable:!0}):c[u]=m,c}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),vi=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(t,s){var l=C2();function o(u,m){var f=Object.keys(u);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(u);m&&(p=p.filter(function(h){return Object.getOwnPropertyDescriptor(u,h).enumerable})),f.push.apply(f,p)}return f}function c(u){for(var m=1;m<arguments.length;m++){var f=arguments[m]!=null?arguments[m]:{};m%2?o(Object(f),!0).forEach(function(p){l(u,p,f[p])}):Object.getOwnPropertyDescriptors?Object.defineProperties(u,Object.getOwnPropertyDescriptors(f)):o(Object(f)).forEach(function(p){Object.defineProperty(u,p,Object.getOwnPropertyDescriptor(f,p))})}return u}s.exports=c,s.exports.__esModule=!0,s.exports.default=s.exports}}),V2=Xr(D2(),1),Iv=Xr(vi(),1);const F2=["cursor","direction"];function Ya(t,s,l){const o=t.flatMap(c=>c.split("."));if(!s&&(!l||l==="any"))return o.length?[o]:[];if(l==="infinite"&&Pr(s)&&("direction"in s||"cursor"in s)){const{cursor:c,direction:u}=s,m=(0,V2.default)(s,F2);return[o,{input:m,type:"infinite"}]}return[o,(0,Iv.default)((0,Iv.default)({},typeof s<"u"&&s!==pa&&{input:s}),l&&l!=="any"&&{type:l})]}function Zo(t){return Ya(t,void 0,"any")}var J2=Object.create,Lb=Object.defineProperty,G2=Object.getOwnPropertyDescriptor,Mb=Object.getOwnPropertyNames,z2=Object.getPrototypeOf,q2=Object.prototype.hasOwnProperty,en=(t,s)=>function(){return s||(0,t[Mb(t)[0]])((s={exports:{}}).exports,s),s.exports},P2=(t,s,l,o)=>{if(s&&typeof s=="object"||typeof s=="function")for(var c=Mb(s),u=0,m=c.length,f;u<m;u++)f=c[u],!q2.call(t,f)&&f!==l&&Lb(t,f,{get:(p=>s[p]).bind(null,f),enumerable:!(o=G2(s,f))||o.enumerable});return t},vt=(t,s,l)=>(l=t!=null?J2(z2(t)):{}
17,P2(s||!t||!t.__esModule?Lb(l,"default",{value:t,enumerable:!0}):l,t)),Db=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(t,s){function l(o){"@babel/helpers - typeof";return s.exports=l=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},s.exports.__esModule=!0,s.exports.default=s.exports,l(o)}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}}),B2=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(t,s){var l=Db().default;function o(c,u){if(l(c)!="object"||!c)return c;var m=c[Symbol.toPrimitive];if(m!==void 0){var f=m.call(c,u||"default");if(l(f)!="object")return f;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(c)}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),U2=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(t,s){var l=Db().default,o=B2();function c(u){var m=o(u,"string");return l(m)=="symbol"?m:m+""}s.exports=c,s.exports.__esModule=!0,s.exports.default=s.exports}}),$r=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(t,s){var l=U2();function o(c,u,m){return(u=l(u))in c?Object.defineProperty(c,u,{value:m,enumerable:!0,configurable:!0,writable:!0}):c[u]=m,c}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),Fa=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(t,s){var l=$r();function o(u,m){var f=Object.keys(u);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(u);m&&(p=p.filter(function(h){return Object.getOwnPropertyDescriptor(u,h).enumerable})),f.push.apply(f,p)}return f}function c(u){for(var m=1;m<arguments.length;m++){var f=arguments[m]!=null?arguments[m]:{};m%2?o(Object(f),!0).forEach(function(p){l(u,p,f[p])}):Object.getOwnPropertyDescriptors?Object.defineProperties(u,Object.getOwnPropertyDescriptors(f)):o(Object(f)).forEach(function(p){Object.defineProperty(u,p,Object.getOwnPropertyDescriptor(f,p))})}return u}s.exports=c,s.exports.__esModule=!0,s.exports.default=s.exports}});function Q2(t){return s=>{let l=0,o=null;const c=[];function u(){o||(o=s.subscribe({next(f){for(const h of c){var p;(p=h.next)===null||p===void 0||p.call(h,f)}},error(f){for(const h of c){var p;(p=h.error)===null||p===void 0||p.call(h,f)}},complete(){for(const p of c){var f;(f=p.complete)===null||f===void 0||f.call(p)}}}))}function m(){if(l===0&&o){const f=o;o=null,f.unsubscribe()}}return Tc(f=>(l++,c.push(f),u(),{unsubscribe(){l--,m();const p=c.findIndex(h=>h===f);p>-1&&c.splice(p,1)}}))}}function I2(t){let s=t;const l=[],o=m=>{s!==void 0&&m.next(s),l.push(m)},c=m=>{l.splice(l.indexOf(m),1)},u=Tc(m=>(o(m),()=>{c(m)}));return u.next=m=>{if(s!==m){s=m;for(const f of l)f.next(m)}},u.get=()=>s,u}function K2(t){return Tc(s=>{function l(c=0,u=t.op){const m=t.links[c];if(!m)throw new Error("No more links to execute - did you forget to add an ending link?");return m({op:u,next(p){return l(c+1,p)}})}return l().subscribe(s)})}var Go=vt($r(),1),Js=vt(Fa(),1);function Y2(t){return t instanceof li}function X2(t){return Pr(t)&&Pr(t.error)&&typeof t.error.code=="number"&&typeof t.error.message=="string"}function $2(t,s){return typeof t=="string"?t:Pr(t)&&typeof t.message=="string"?t.message:s}var li=class Wo extends Error{constructor(s,l){var o,c;const u=l?.cause;super(s,{cause:u}),(0,Go.default)(this,"cause",void 0),(0,Go.default)(this,"shape",void 0),(0,Go.default)(this,"data",void 0),(0,Go.default)(this,"meta",void 0),this.meta=l?.meta,this.cause=u,this.shape=l==null||(o=l.result)===null||o===void 0?void 0:o.error,this.data=l==null||(c=l.result)===null||c===void 0?void 0:c.error.data,this.name="TRPCClientError",Object.setPrototypeOf(this,Wo.prototype)}static from(s,l={}){const o=s;return Y2(o)?(l.meta&&(o.meta=(0,Js.default)((0,Js.default)({},o.meta),l.meta)),o):X2(o)?new Wo(o.error.message,(0,Js.default)((0,Js.default)({},l),{},{result:o})):new Wo($2(o,"Unknown error"),(0,Js.default)((0,Js.default)({},l),{},{cause:o}))}};function Z2(t){const s=t;return s?"input"in s?s:{input:s,output:s}:{input:{serialize:l=>l,deserialize:l=>l},output:{serialize:l=>l,deserialize:l=>l}}}const Kv=t=>typeof t=="function";function W2(t){if(t)return t;if(typeof window<"u"&&Kv(window.fetch))return window.fetch;if(typeof globalThis<"u"&&Kv(globalThis.fetch))return globalThis.fetch;throw new Error("No fetch implementation found")}var ai=vt(Fa());function eS(t){return{url:t.url.toString(),fetch:t.fetch,transformer:Z2(t.transformer),methodOverride:t.methodOverride}}function tS(t){const s={};for(let l=0;l<t.length;l++){const o=t[l];s[l]=o}return s}const aS={query:"GET",mutation:"POST",subscription:"PATCH"};function _b(t){return"input"in t?t.transformer.input.serialize(t.input):tS(t.inputs.map(s=>t.transformer.input.serialize(s)))}const Ob=t=>{const s=t.url.split("?");let o=s[0].replace(/\/$/,"")+"/"+t.path;const c=[];if(s[1]&&c.push(s[1]),"inputs"in t&&c.push("batch=1"),t.type==="query"||t.type==="subscription"){const u=_b(t);u!==void 0&&t.methodOverride!=="POST"&&c.push(`input=${encodeURIComponent(JSON.stringify(u))}`)}return c.length&&(o+="?"+c.join("&")),o},nS=t=>{if(t.type==="query"&&t.methodOverride!=="POST")return;const s=_b(t);return s!==void 0?JSON.stringify(s):void 0},rS=t=>oS((0,ai.default)((0,ai.default)({},t),{},{contentTypeHeader:"application/json",getUrl:Ob,getBody:nS}));
17var sS=class extends Error{constructor(){const t="AbortError";super(t),this.name=t,this.message=t}};const lS=t=>{var s;if(t?.aborted)throw(s=t.throwIfAborted)===null||s===void 0||s.call(t),typeof DOMException<"u"?new DOMException("AbortError","AbortError"):new sS};async function iS(t){var s;lS(t.signal);const l=t.getUrl(t),o=t.getBody(t),c=(s=t.methodOverride)!==null&&s!==void 0?s:aS[t.type],u=await(async()=>{const f=await t.headers();return Symbol.iterator in f?Object.fromEntries(f):f})(),m=(0,ai.default)((0,ai.default)((0,ai.default)({},t.contentTypeHeader&&c!=="GET"?{"content-type":t.contentTypeHeader}:{}),t.trpcAcceptHeader?{"trpc-accept":t.trpcAcceptHeader}:void 0),u);return W2(t.fetch)(l,{method:c,signal:t.signal,body:o,headers:m})}async function oS(t){const s={},l=await iS(t);s.response=l;const o=await l.json();return s.responseJSON=o,{json:o,meta:s}}vt(Fa(),1);const Yv=()=>{throw new Error("Something went wrong. Please submit an issue at https://github.com/trpc/trpc/issues/new")};function Xv(t){let s=null,l=null;const o=()=>{clearTimeout(l),l=null,s=null};function c(f){const p=[[]];let h=0;for(;;){const S=f[h];if(!S)break;const T=p[p.length-1];if(S.aborted){var b;(b=S.reject)===null||b===void 0||b.call(S,new Error("Aborted")),h++;continue}if(t.validate(T.concat(S).map(y=>y.key))){T.push(S),h++;continue}if(T.length===0){var v;(v=S.reject)===null||v===void 0||v.call(S,new Error("Input is too big for a single dispatch")),h++;continue}p.push([])}return p}function u(){const f=c(s);o();for(const p of f){if(!p.length)continue;const h={items:p};for(const v of p)v.batch=h;t.fetch(h.items.map(v=>v.key)).then(async v=>{await Promise.all(v.map(async(T,A)=>{const y=h.items[A];try{var R;const _=await Promise.resolve(T);(R=y.resolve)===null||R===void 0||R.call(y,_)}catch(_){var L;(L=y.reject)===null||L===void 0||L.call(y,_)}y.batch=null,y.reject=null,y.resolve=null}));for(const T of h.items){var S;(S=T.reject)===null||S===void 0||S.call(T,new Error("Missing result")),T.batch=null}}).catch(v=>{for(const T of h.items){var S;(S=T.reject)===null||S===void 0||S.call(T,v),T.batch=null}})}}function m(f){var p;const h={aborted:!1,key:f,batch:null,resolve:Yv,reject:Yv},b=new Promise((v,S)=>{var T;h.reject=S,h.resolve=v,(T=s)!==null&&T!==void 0||(s=[]),s.push(h)});return(p=l)!==null&&p!==void 0||(l=setTimeout(u)),b}return{load:m}}function cS(...t){const s=new AbortController,l=t.length;let o=0;const c=()=>{++o===l&&s.abort()};for(const u of t)u?.aborted?c():u?.addEventListener("abort",c,{once:!0});return s.signal}var zo=vt(Fa(),1);function dS(t){var s,l;const o=eS(t),c=(s=t.maxURLLength)!==null&&s!==void 0?s:1/0,u=(l=t.maxItems)!==null&&l!==void 0?l:1/0;return()=>{const m=b=>({validate(v){if(c===1/0&&u===1/0)return!0;if(v.length>u)return!1;const S=v.map(y=>y.path).join(","),T=v.map(y=>y.input);return Ob((0,zo.default)((0,zo.default)({},o),{},{type:b,path:S,inputs:T,signal:null})).length<=c},async fetch(v){const S=v.map(_=>_.path).join(","),T=v.map(_=>_.input),A=cS(...v.map(_=>_.signal)),y=await rS((0,zo.default)((0,zo.default)({},o),{},{path:S,inputs:T,type:b,headers(){return t.headers?typeof t.headers=="function"?t.headers({opList:v}):t.headers:{}},signal:A}));return(Array.isArray(y.json)?y.json:v.map(()=>y.json)).map(_=>({meta:y.meta,json:_}))}}),f=Xv(m("query")),p=Xv(m("mutation")),h={query:f,mutation:p};return({op:b})=>Tc(v=>{/* istanbul ignore if -- @preserve */if(b.type==="subscription")throw new Error("Subscriptions are unsupported by `httpLink` - use `httpSubscriptionLink` or `wsLink`");const T=h[b.type].load(b);let A;return T.then(y=>{A=y;const R=N2(y.json,o.transformer.output);if(!R.ok){v.error(li.from(R.error,{meta:y.meta}));return}v.next({context:y.meta,result:R.result}),v.complete()}).catch(y=>{v.error(li.from(y,{meta:A?.meta}))}),()=>{}})}}vt(Fa(),1);const Cb=(t,...s)=>typeof t=="function"?t(...s):t;vt($r(),1);function uS(){let t,s;return{promise:new Promise((o,c)=>{t=o,s=c}),resolve:t,reject:s}}async function gS(t){const s=await Cb(t.url);if(!t.connectionParams)return s;const o=`${s.includes("?")?"&":"?"}connectionParams=1`;return s+o}async function mS(t){const s={method:"connectionParams",data:await Cb(t)};return JSON.stringify(s)}vt($r(),1);var Jr=vt($r(),1);function fS(t){const{promise:s,resolve:l,reject:o}=uS();return t.addEventListener("open",()=>{t.removeEventListener("error",o),l()}),t.addEventListener("error",o),s}function pS(t,{intervalMs:s,pongTimeoutMs:l}){let o,c;function u(){o=setTimeout(()=>{t.send("PING"),c=setTimeout(()=>{t.close()},l)},s)}function m(){clearTimeout(o),u()}function f(){clearTimeout(c),m()}t.addEventListener("open",u),t.addEventListener("message",({data:p})=>{clearTimeout(o),u(),p==="PONG"&&f()}),t.addEventListener("close",()=>{clearTimeout(o),clearTimeout(c)})}var hS=class Og{constructor(s){var l;if((0,Jr.default)(this,"id",++Og.connectCount),(0,Jr.default)(this,"WebSocketPonyfill",void 0),(0,Jr.default)(this,"urlOptions",void 0),(0,Jr.default)(this,"keepAliveOpts",void 0),(0,Jr.default)(this,"wsObservable",I2(null)),(0,Jr.default)(this,"openPromise",null),this.WebSocketPonyfill=(l=s.WebSocketPonyfill)!==null&&l!==void 0?l:WebSocket,!this.WebSocketPonyfill)throw new Error("No WebSocket implementation found - you probably don't want to use this on the server, but if you do you need to pass a `WebSocket`-ponyfill");this.urlOptions=s.urlOptions,this.keepAliveOpts=s.keepAlive}get ws(){return this.wsObservable.get()}set ws(s){this.wsObservable.next(s)}isOpen(){return!!this.ws&&this.ws.readyState===this.WebSocketPonyfill.OPEN&&!this.openPromise}isClosed(){return!!this.ws&&(this.ws.readyState===this.WebSocketPonyfill.CLOSING||this.ws.readyState===this.WebSocketPonyfill.CLOSED)}async open(){var s=this;if(s.openPromise)return s.openPromise;s.id=++Og.connectCount;const l=gS(s.urlOptions).then(o=>new s.WebSocketPonyfill(o));s.openPromise=l.then(async o=>{s.ws=o,o.addEventListener("message",function({data:c}){c==="PING"&&this.send("PONG")}),s.keepAliveOpts.enabled&&pS(o,s.keepAliveOpts),o.addEventListener("close",()=>{s.ws===o&&(s.ws=null)}),await fS(o),s.urlOptions.connectionParams&&o.send(await mS(s.urlOptions.connectionParams))});try{await s.openPromise}finally{s.openPromise=null}}async close(){var s=this;try{await s.openPromise}finally{var l;(l=s.ws)===null||l===void 0||l.close()}}};(0,Jr.default)(hS,"connectCount",0);vt($r(),1);vt(Fa(),1);var sg=vt($r(),1),$v=vt(Fa(),1),Rc=class{constructor(t){(0,sg.default)(this,"links",void 0),(0,sg.default)(this,"runtime",void 0),(0,sg.default)(this,"requestId",void 0),this.requestId=0,this.runtime={},this.links=t.links.map(s=>s(this.runtime))}$request(t){var s;return K2({links:this.links,op:(0,$v.default)((0,$v.default)({},t),{},{context:(s=t.context)!==null&&s!==void 0?s:{},id:++this.requestId})}).pipe(Q2())}async requestAsPromise(t){var s=this;try{const l=s.$request(t);return(await R2(l)).result.data}catch(l){throw li.from(l)}}query(t,s,l){return this.requestAsPromise({type:"query",path:t,input:s,context:l?.context,signal:l?.signal})}mutation(t,s,l){return this.requestAsPromise({type:"mutation",path:t,input:s,context:l?.context,signal:l?.signal})}subscription(t,s,l){return this.$request({type:"subscription",path:t,input:s,context:l.context,signal:l.signal}).subscribe({next(c){switch(c.result.type){case"state":{var u;(u=l.onConnectionStateChange)===null||u===void 0||u.call(l,c.result);break}case"started":{var m;(m=l.onStarted)===null||m===void 0||m.call(l,{context:c.context});break}case"stopped":{var f;(f=l.onStopped)===null||f===void 0||f.call(l);break}case"data":case void 0:{var p;(p=l.onData)===null||p===void 0||p.call(l,c.result.data);break}}},error(c){var u;(u=l.onError)===null||u===void 0||u.call(l,c)},complete(){var c;
17(c=l.onComplete)===null||c===void 0||c.call(l)}})}};const Vb=Symbol.for("trpc_untypedClient"),vS={query:"query",mutate:"mutation",subscribe:"subscription"},xS=t=>vS[t];function Fb(t){const s=Nc(({path:l,args:o})=>{const c=[...l],u=xS(c.pop()),m=c.join(".");return t[u](m,...o)});return gm(l=>l===Vb?t:s[l])}function bS(t){const s=new Rc(t);return Fb(s)}function fm(t){return t[Vb]}vt(Fa(),1);vt(Fa(),1);var kS=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(t,s){function l(c){var u,m,f,p=2;for(typeof Symbol<"u"&&(m=Symbol.asyncIterator,f=Symbol.iterator);p--;){if(m&&(u=c[m])!=null)return u.call(c);if(f&&(u=c[f])!=null)return new o(u.call(c));m="@@asyncIterator",f="@@iterator"}throw new TypeError("Object is not async iterable")}function o(c){function u(m){if(Object(m)!==m)return Promise.reject(new TypeError(m+" is not an object."));var f=m.done;return Promise.resolve(m.value).then(function(p){return{value:p,done:f}})}return o=function(f){this.s=f,this.n=f.next},o.prototype={s:null,n:null,next:function(){return u(this.n.apply(this.s,arguments))},return:function(f){var p=this.s.return;return p===void 0?Promise.resolve({value:f,done:!0}):u(p.apply(this.s,arguments))},throw:function(f){var p=this.s.return;return p===void 0?Promise.reject(f):u(p.apply(this.s,arguments))}},new o(c)}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}});vt(kS(),1);vt(Fa(),1);var jS=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(t,s){function l(){var o=typeof SuppressedError=="function"?SuppressedError:function(f,p){var h=Error();return h.name="SuppressedError",h.error=f,h.suppressed=p,h},c={},u=[];function m(f,p){if(p!=null){if(Object(p)!==p)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(f)var h=p[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(h===void 0&&(h=p[Symbol.dispose||Symbol.for("Symbol.dispose")],f))var b=h;if(typeof h!="function")throw new TypeError("Object is not disposable.");b&&(h=function(){try{b.call(p)}catch(S){return Promise.reject(S)}}),u.push({v:p,d:h,a:f})}else f&&u.push({d:p,a:f});return p}return{e:c,u:m.bind(null,!1),a:m.bind(null,!0),d:function(){var p,h=this.e,b=0;function v(){for(;p=u.pop();)try{if(!p.a&&b===1)return b=0,u.push(p),Promise.resolve().then(v);if(p.d){var T=p.d.call(p.v);if(p.a)return b|=2,Promise.resolve(T).then(v,S)}else b|=1}catch(A){return S(A)}if(b===1)return h!==c?Promise.reject(h):Promise.resolve();if(h!==c)throw h}function S(T){return h=h!==c?new o(T,h):T,v()}return v()}}}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}}),Jb=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(t,s){function l(o,c){this.v=o,this.k=c}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}}),yS=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(t,s){var l=Jb();function o(c){return new l(c,0)}s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}}),SS=en({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(t,s){var l=Jb();function o(u){return function(){return new c(u.apply(this,arguments))}}function c(u){var m,f;function p(b,v){try{var S=u[b](v),T=S.value,A=T instanceof l;Promise.resolve(A?T.v:T).then(function(y){if(A){var R=b==="return"?"return":"next";if(!T.k||y.done)return p(R,y);y=u[R](y).value}h(S.done?"return":"normal",y)},function(y){p("throw",y)})}catch(y){h("throw",y)}}function h(b,v){switch(b){case"return":m.resolve({value:v,done:!0});break;case"throw":m.reject(v);break;default:m.resolve({value:v,done:!1})}(m=m.next)?p(m.key,m.arg):f=null}this._invoke=function(b,v){return new Promise(function(S,T){var A={key:b,arg:v,resolve:S,reject:T,next:null};f?f=f.next=A:(m=f=A,p(b,v))})},typeof u.return!="function"&&(this.return=void 0)}c.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},c.prototype.next=function(u){return this._invoke("next",u)},c.prototype.throw=function(u){return this._invoke("throw",u)},c.prototype.return=function(u){return this._invoke("return",u)},s.exports=o,s.exports.__esModule=!0,s.exports.default=s.exports}});vt(jS(),1);vt(yS(),1);vt(SS(),1);vt(Fa(),1);function NS(t){return Nc(({path:s,args:l})=>{var o;const c=[...s],u=c.pop();if(u==="useMutation")return t[u](c,...l);if(u==="_def")return{path:c};const[m,...f]=l,p=(o=f[0])!==null&&o!==void 0?o:{};return t[u](c,m,p)})}var lg;const TS=["client","ssrContext","ssrState","abortOnUnmount"],RS=(lg=k.createContext)===null||lg===void 0?void 0:lg.call(jc,null),AS=t=>{switch(t){case"queryOptions":case"fetch":case"ensureData":case"prefetch":case"getData":case"setData":case"setQueriesData":return"query";case"infiniteQueryOptions":case"fetchInfinite":case"prefetchInfinite":case"getInfiniteData":case"setInfiniteData":return"infinite";case"setMutationDefaults":case"getMutationDefaults":case"isMutating":case"cancel":case"invali
17date":case"refetch":case"reset":return"any"}};function HS(t){return Nc(s=>{const l=[...s.path],o=l.pop(),c=[...s.args],u=c.shift(),m=AS(o),f=Ya(l,u,m);return{infiniteQueryOptions:()=>t.infiniteQueryOptions(l,f,c[0]),queryOptions:()=>t.queryOptions(l,f,...c),fetch:()=>t.fetchQuery(f,...c),fetchInfinite:()=>t.fetchInfiniteQuery(f,c[0]),prefetch:()=>t.prefetchQuery(f,...c),prefetchInfinite:()=>t.prefetchInfiniteQuery(f,c[0]),ensureData:()=>t.ensureQueryData(f,...c),invalidate:()=>t.invalidateQueries(f,...c),reset:()=>t.resetQueries(f,...c),refetch:()=>t.refetchQueries(f,...c),cancel:()=>t.cancelQuery(f,...c),setData:()=>{t.setQueryData(f,c[0],c[1])},setQueriesData:()=>t.setQueriesData(f,c[0],c[1],c[2]),setInfiniteData:()=>{t.setInfiniteQueryData(f,c[0],c[1])},getData:()=>t.getQueryData(f),getInfiniteData:()=>t.getInfiniteQueryData(f),setMutationDefaults:()=>t.setMutationDefaults(Zo(l),u),getMutationDefaults:()=>t.getMutationDefaults(Zo(l)),isMutating:()=>t.isMutating({mutationKey:Zo(l)})}[o]()})}function wS(t){const s=Fb(t.client),l=HS(t);return gm(o=>{const c=o;return c==="client"?s:TS.includes(c)?t[c]:l[o]})}var ES=Xr(vi(),1);function Zv(t){const s=t instanceof Rc?t:fm(t);return Nc(l=>{const o=l.path,c=o.join("."),[u,m]=l.args;return(0,ES.default)({queryKey:Ya(o,u,"query"),queryFn:()=>s.query(c,u,m?.trpc)},m)})}var ig=Xr(vi(),1);function Ut(t,s,l){var o;const c=t[0];let u=(o=t[1])===null||o===void 0?void 0:o.input;if(l){var m;u=(0,ig.default)((0,ig.default)((0,ig.default)({},(m=u)!==null&&m!==void 0?m:{}),l.pageParam?{cursor:l.pageParam}:{}),{},{direction:l.direction})}return[c.join("."),u,s?.trpc]}var LS=mr({"../../node_modules/.pnpm/@[email protected]/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(t,s){function l(c){var u,m,f,p=2;for(typeof Symbol<"u"&&(m=Symbol.asyncIterator,f=Symbol.iterator);p--;){if(m&&(u=c[m])!=null)return u.call(c);if(f&&(u=c[f])!=null)return new o(u.call(c));m="@@asyncIterator",f="@@iterator"}throw new TypeError("Object is not async iterable")}function o(c){function u(m){if(Object(m)!==m)return Promise.reject(new TypeError(m+" is not an object."));var f=m.done;return Promise.resolve(m.value).then(function(p){return{value:p,done:f}})}return o=function(f){this.s=f,this.n=f.next},o.prototype={s:null,n:null,next:function(){return u(this.n.apply(this.s,arguments))},return:function(f){var p=this.s.return;return p===void 0?Promise.resolve({value:f,done:!0}):u(p.apply(this.s,arguments))},throw:function(f){var p=this.s.return;return p===void 0?Promise.reject(f):u(p.apply(this.s,arguments))}},new o(c)}s.exports=l,s.exports.__esModule=!0,s.exports.default=s.exports}}),MS=Xr(LS(),1);function Cg(t){return{path:t.path.join(".")}}function Zl(t){const s=Cg(t);return k.useMemo(()=>s,[s])}async function Gb(t,s,l){const c=s.getQueryCache().build(s,{queryKey:l});c.setState({data:[],status:"success"});const u=[];var m=!1,f=!1,p;try{for(var h=(0,MS.default)(t),b;m=!(b=await h.next()).done;m=!1){const v=b.value;u.push(v),c.setState({data:[...u]})}}catch(v){f=!0,p=v}finally{try{m&&h.return!=null&&await h.return()}finally{if(f)throw p}}return u}var Xe=Xr(vi(),1);function DS(t){const{client:s,queryClient:l}=t,o=s instanceof Rc?s:fm(s);return{infiniteQueryOptions:(c,u,m)=>{var f,p;const h=((f=u[1])===null||f===void 0?void 0:f.input)===pa,b=async v=>{var S;const T=(0,Xe.default)((0,Xe.default)({},m),{},{trpc:(0,Xe.default)((0,Xe.default)({},m?.trpc),!(m==null||(S=m.trpc)===null||S===void 0)&&S.abortOnUnmount?{signal:v.signal}:{signal:null})});return await o.query(...Ut(u,T,{direction:v.direction,pageParam:v.pageParam}))};return Object.assign((0,Xe.default)((0,Xe.default)({},m),{},{initialData:m?.initialData,queryKey:u,queryFn:h?pa:b,initialPageParam:(p=m?.initialCursor)!==null&&p!==void 0?p:null}),{trpc:Cg({path:c})})},queryOptions:(c,u,m)=>{var f;const p=((f=u[1])===null||f===void 0?void 0:f.input)===pa,h=async b=>{var v;const S=(0,Xe.default)((0,Xe.default)({},m),{},{trpc:(0,Xe.default)((0,Xe.default)({},m?.trpc),!(m==null||(v=m.trpc)===null||v===void 0)&&v.abortOnUnmount?{signal:b.signal}:{signal:null})}),T=await o.query(...Ut(u,S));return jb(T)?Gb(T,l,u):T};return Object.assign((0,Xe.default)((0,Xe.default)({},m),{},{initialData:m?.initialData,queryKey:u,queryFn:p?pa:h}),{trpc:Cg({path:c})})},fetchQuery:(c,u)=>l.fetchQuery((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c,queryFn:()=>o.query(...Ut(c,u))})),fetchInfiniteQuery:(c,u)=>{var m;return l.fetchInfiniteQuery((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c,queryFn:({pageParam:f,direction:p})=>o.query(...Ut(c,u,{pageParam:f,direction:p})),initialPageParam:(m=u?.initialCursor)!==null&&m!==void 0?m:null}))},prefetchQuery:(c,u)=>l.prefetchQuery((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c,queryFn:()=>o.query(...Ut(c,u))})),prefetchInfiniteQuery:(c,u)=>{var m;return l.prefetchInfiniteQuery((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c,queryFn:({pageParam:f,direction:p})=>o.query(...Ut(c,u,{pageParam:f,direction:p})),initialPageParam:(m=u?.initialCursor)!==null&&m!==void 0?m:null}))},ensureQueryData:(c,u)=>
17l.ensureQueryData((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c,queryFn:()=>o.query(...Ut(c,u))})),invalidateQueries:(c,u,m)=>l.invalidateQueries((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c}),m),resetQueries:(c,u,m)=>l.resetQueries((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c}),m),refetchQueries:(c,u,m)=>l.refetchQueries((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c}),m),cancelQuery:(c,u)=>l.cancelQueries({queryKey:c},u),setQueryData:(c,u,m)=>l.setQueryData(c,u,m),setQueriesData:(c,u,m,f)=>l.setQueriesData((0,Xe.default)((0,Xe.default)({},u),{},{queryKey:c}),m,f),getQueryData:c=>l.getQueryData(c),setInfiniteQueryData:(c,u,m)=>l.setQueryData(c,u,m),getInfiniteQueryData:c=>l.getQueryData(c),setMutationDefaults:(c,u)=>{const m=c[0],f=p=>o.mutation(...Ut([m,{input:p}],t));return l.setMutationDefaults(c,typeof u=="function"?u({canonicalMutationFn:f}):u)},getMutationDefaults:c=>l.getMutationDefaults(c),isMutating:c=>l.isMutating((0,Xe.default)((0,Xe.default)({},c),{},{exact:!0}))}}var me=Xr(vi());const Wv=(t,s)=>new Proxy(t,{get(o,c){return s(c),o[c]}});function _S(t){var s,l;const o=(s=void 0)!==null&&s!==void 0?s:P=>P.originalFn(),c=(l=void 0)!==null&&l!==void 0?l:RS,u=bS,m=P=>{var U;const{abortOnUnmount:M=!1,queryClient:V,ssrContext:re}=P,[W,oe]=k.useState((U=P.ssrState)!==null&&U!==void 0?U:!1),le=P.client instanceof Rc?P.client:fm(P.client),ue=k.useMemo(()=>DS({client:le,queryClient:V}),[le,V]),de=k.useMemo(()=>(0,me.default)({abortOnUnmount:M,queryClient:V,client:le,ssrContext:re??null,ssrState:W},ue),[M,le,ue,V,re,W]);return k.useEffect(()=>{oe(ge=>ge?"mounted":!1)},[]),n.jsx(c.Provider,{value:de,children:P.children})};function f(){const P=k.useContext(c);if(!P)throw new Error("Unable to find tRPC Context. Did you forget to wrap your App inside `withTRPC` HoC?");return P}function p(P,U){var M;const{queryClient:V,ssrState:re}=f();return re&&re!=="mounted"&&((M=V.getQueryCache().find({queryKey:P}))===null||M===void 0?void 0:M.state.status)==="error"?(0,me.default)({retryOnMount:!1},U):U}function h(P,U,M){var V,re,W,oe,le;const ue=f(),{abortOnUnmount:de,client:ge,ssrState:E,queryClient:z,prefetchQuery:C}=ue,ce=Ya(P,U,"query"),je=z.getQueryDefaults(ce),H=U===pa;typeof window>"u"&&E==="prepass"&&(M==null||(V=M.trpc)===null||V===void 0?void 0:V.ssr)!==!1&&((re=M?.enabled)!==null&&re!==void 0?re:je?.enabled)!==!1&&!H&&!z.getQueryCache().find({queryKey:ce})&&C(ce,M);const I=p(ce,(0,me.default)((0,me.default)({},je),M)),q=(W=(oe=M==null||(le=M.trpc)===null||le===void 0?void 0:le.abortOnUnmount)!==null&&oe!==void 0?oe:void 0)!==null&&W!==void 0?W:de,K=l2((0,me.default)((0,me.default)({},I),{},{queryKey:ce,queryFn:H?U:async ie=>{const he=(0,me.default)((0,me.default)({},I),{},{trpc:(0,me.default)((0,me.default)({},I?.trpc),q?{signal:ie.signal}:{signal:null})}),ae=await ge.query(...Ut(ce,he));return jb(ae)?Gb(ae,z,ce):ae}}),z);return K.trpc=Zl({path:P}),K}function b(P,U,M){var V,re,W;const oe=f(),le=Ya(P,U,"query"),ue=U===pa,de=(V=(re=M==null||(W=M.trpc)===null||W===void 0?void 0:W.abortOnUnmount)!==null&&re!==void 0?re:void 0)!==null&&V!==void 0?V:oe.abortOnUnmount;d2((0,me.default)((0,me.default)({},M),{},{queryKey:le,queryFn:ue?U:ge=>{const E={trpc:(0,me.default)((0,me.default)({},M?.trpc),de?{signal:ge.signal}:{})};return oe.client.query(...Ut(le,E))}}))}function v(P,U,M){var V,re,W;const oe=f(),le=Ya(P,U,"query"),ue=(V=(re=M==null||(W=M.trpc)===null||W===void 0?void 0:W.abortOnUnmount)!==null&&re!==void 0?re:void 0)!==null&&V!==void 0?V:oe.abortOnUnmount,de=i2((0,me.default)((0,me.default)({},M),{},{queryKey:le,queryFn:ge=>{const E=(0,me.default)((0,me.default)({},M),{},{trpc:(0,me.default)((0,me.default)({},M?.trpc),ue?{signal:ge.signal}:{signal:null})});return oe.client.query(...Ut(le,E))}}),oe.queryClient);return de.trpc=Zl({path:P}),[de.data,de]}function S(P,U){const{client:M,queryClient:V}=f(),re=Zo(P),W=V.defaultMutationOptions(V.getMutationDefaults(re)),oe=m2((0,me.default)((0,me.default)({},U),{},{mutationKey:re,mutationFn:le=>M.mutation(...Ut([P,{input:le}],U)),onSuccess(...le){var ue,de;return o({originalFn:()=>{var E,z,C;return(E=U==null||(z=U.onSuccess)===null||z===void 0?void 0:z.call(U,...le))!==null&&E!==void 0?E:W==null||(C=W.onSuccess)===null||C===void 0?void 0:C.call(W,...le)},queryClient:V,meta:(ue=(de=U?.meta)!==null&&de!==void 0?de:W?.meta)!==null&&ue!==void 0?ue:{}})}}),V);return oe.trpc=Zl({path:P}),oe}const T={data:void 0,error:null,status:"idle"},A={data:void 0,error:null,status:"connecting"};/* istanbul ignore next -- @preserve */function y(P,U,M){var V;const re=(V=M?.enabled)!==null&&V!==void 0?V:U!==pa,W=or(Ya(P,U,"any")),{client:oe}=f(),le=k.useRef(M);k.useEffect(()=>{le.current=M});const[ue]=k.useState(new Set([])),de=k.useCallback(H=>{ue.add(H)},[ue]),ge=k.useRef(null),E=k.useCallback(H=>{const I=C.current,q=C.current=H(I);let K=!1;for(const ie of ue)if(I[ie]!==q[ie]){K=!0;break}K&&je(Wv(q,de))},[de,ue]),z=k.useCallback(()=>{var H;if((H=ge.current)===null||H===void 0||H.unsubscribe(),!re){E(()=>(0,me.default)((0,me.default)({},T),{},{reset:z}));return}E(()=>(0,me.default)((0,me.default)({},A),{},{reset:z}));const I=oe.subscription(P.join("."),U??void 0,{onStarted:()=>{var q,K;(q=(K=le.current).onStarted)===null||q===void 0||q.call(K),E(ie=>(0,me.default)((0,me.default)({},ie),{},{status:"pending",error:null}))},onData:q=>{var K,ie;(K=(ie=le.current).onData)===null||K===void 0||K.call(ie,q),E(he=>(0,me.default)((0,me.default)({},he),{},{status:"pending",data:q,error:null}))},onError:q=>{var K,ie;(K=(ie=le.current).onError)===null||K===void 0||K.call(ie,q),E(he=>(0,me.default)((0,me.default)({},he),{},{status:"error",error:q}))},onConnectionStateChange:q=>{E(K=>{switch(q.state){case"idle":return(0,me.default)((0,me.default)({},K),{},{status:q.state,error:null,data:void 0});case"connecting":return(0,me.default)((0,me.default)({},K),{},{error:q.error,status:q.state});
17case"pending":return K}})},onComplete:()=>{var q,K;(q=(K=le.current).onComplete)===null||q===void 0||q.call(K),E(ie=>(0,me.default)((0,me.default)({},ie),{},{status:"idle",error:null,data:void 0}))}});ge.current=I},[oe,W,re,E]);k.useEffect(()=>(z(),()=>{var H;(H=ge.current)===null||H===void 0||H.unsubscribe()}),[z]);const C=k.useRef(re?(0,me.default)((0,me.default)({},A),{},{reset:z}):(0,me.default)((0,me.default)({},T),{},{reset:z})),[ce,je]=k.useState(Wv(C.current,de));return ce}function R(P,U,M){var V,re,W,oe,le;const{client:ue,ssrState:de,prefetchInfiniteQuery:ge,queryClient:E,abortOnUnmount:z}=f(),C=Ya(P,U,"infinite"),ce=E.getQueryDefaults(C),je=U===pa;typeof window>"u"&&de==="prepass"&&(M==null||(V=M.trpc)===null||V===void 0?void 0:V.ssr)!==!1&&((re=M?.enabled)!==null&&re!==void 0?re:ce?.enabled)!==!1&&!je&&!E.getQueryCache().find({queryKey:C})&&ge(C,(0,me.default)((0,me.default)({},ce),M));const H=p(C,(0,me.default)((0,me.default)({},ce),M)),I=(W=M==null||(oe=M.trpc)===null||oe===void 0?void 0:oe.abortOnUnmount)!==null&&W!==void 0?W:z,q=f2((0,me.default)((0,me.default)({},H),{},{initialPageParam:(le=M.initialCursor)!==null&&le!==void 0?le:null,persister:M.persister,queryKey:C,queryFn:je?U:K=>{var ie;const he=(0,me.default)((0,me.default)({},H),{},{trpc:(0,me.default)((0,me.default)({},H?.trpc),I?{signal:K.signal}:{signal:null})});return ue.query(...Ut(C,he,{pageParam:(ie=K.pageParam)!==null&&ie!==void 0?ie:M.initialCursor,direction:K.direction}))}}),E);return q.trpc=Zl({path:P}),q}function L(P,U,M){var V,re,W;const oe=f(),le=Ya(P,U,"infinite"),ue=oe.queryClient.getQueryDefaults(le),de=U===pa,ge=p(le,(0,me.default)((0,me.default)({},ue),M)),E=(V=M==null||(re=M.trpc)===null||re===void 0?void 0:re.abortOnUnmount)!==null&&V!==void 0?V:oe.abortOnUnmount;u2((0,me.default)((0,me.default)({},M),{},{initialPageParam:(W=M.initialCursor)!==null&&W!==void 0?W:null,queryKey:le,queryFn:de?U:z=>{var C;const ce=(0,me.default)((0,me.default)({},ge),{},{trpc:(0,me.default)((0,me.default)({},ge?.trpc),E?{signal:z.signal}:{})});return oe.client.query(...Ut(le,ce,{pageParam:(C=z.pageParam)!==null&&C!==void 0?C:M.initialCursor,direction:z.direction}))}}))}function _(P,U,M){var V,re,W;const oe=f(),le=Ya(P,U,"infinite"),ue=oe.queryClient.getQueryDefaults(le),de=p(le,(0,me.default)((0,me.default)({},ue),M)),ge=(V=M==null||(re=M.trpc)===null||re===void 0?void 0:re.abortOnUnmount)!==null&&V!==void 0?V:oe.abortOnUnmount,E=o2((0,me.default)((0,me.default)({},M),{},{initialPageParam:(W=M.initialCursor)!==null&&W!==void 0?W:null,queryKey:le,queryFn:z=>{var C;const ce=(0,me.default)((0,me.default)({},de),{},{trpc:(0,me.default)((0,me.default)({},de?.trpc),ge?{signal:z.signal}:{})});return oe.client.query(...Ut(le,ce,{pageParam:(C=z.pageParam)!==null&&C!==void 0?C:M.initialCursor,direction:z.direction}))}}),oe.queryClient);return E.trpc=Zl({path:P}),[E.data,E]}return{Provider:m,createClient:u,useContext:f,useUtils:f,useQuery:h,usePrefetchQuery:b,useSuspenseQuery:v,useQueries:(P,U)=>{const{ssrState:M,queryClient:V,prefetchQuery:re,client:W}=f(),oe=Zv(W),le=P(oe);if(typeof window>"u"&&M==="prepass")for(const de of le){var ue;const ge=de;((ue=ge.trpc)===null||ue===void 0?void 0:ue.ssr)!==!1&&!V.getQueryCache().find({queryKey:ge.queryKey})&&re(ge.queryKey,ge)}return kb({queries:le.map(de=>(0,me.default)((0,me.default)({},de),{},{queryKey:de.queryKey})),combine:U?.combine},V)},useSuspenseQueries:P=>{const{queryClient:U,client:M}=f(),V=Zv(M),re=P(V),W=c2({queries:re.map(oe=>(0,me.default)((0,me.default)({},oe),{},{queryFn:oe.queryFn,queryKey:oe.queryKey}))},U);return[W.map(oe=>oe.data),W]},useMutation:S,useSubscription:y,useInfiniteQuery:R,usePrefetchInfiniteQuery:L,useSuspenseInfiniteQuery:_}}function OS(t){const s=NS(t);return gm(l=>l==="useContext"||l==="useUtils"?()=>{const o=t.useUtils();return k.useMemo(()=>wS(o),[o])}:t.hasOwnProperty(l)?t[l]:s[l])}function CS(t){const s=_S();return OS(s)}const Ac=CS(),VS="app_session_id",FS="Please login (10001)",JS="__Host-oauth_state",GS=t=>btoa(JSON.stringify(t));var og={exports:{}},Wl={},cg={exports:{}},dg={};/** 18 * @license React 19 * scheduler.production.js 20 * 21 * Copyright (c) Meta Platforms, Inc. and affiliates. 22 * 23 * This source code is licensed under the MIT license found in the 24 * LICENSE file in the root directory of this source tree. 25 */var ex;function zS(){return ex||(ex=1,(function(t){function s(E,z){var C=E.length;E.push(z);e:for(;0<C;){var ce=C-1>>>1,je=E[ce];if(0<c(je,z))E[ce]=z,E[C]=je,C=ce;else break e}}function l(E){return E.length===0?null:E[0]}function o(E){if(E.length===0)return null;var z=E[0],C=E.pop();if(C!==z){E[0]=C;e:for(var ce=0,je=E.length,H=je>>>1;ce<H;){var I=2*(ce+1)-1,q=E[I],K=I+1,ie=E[K];if(0>c(q,C))K<je&&0>c(ie,q)?(E[ce]=ie,E[K]=C,ce=K):(E[ce]=q,E[I]=C,ce=I);else if(K<je&&0>c(ie,C))E[ce]=ie,E[K]=C,ce=K;else break e}}return z}function c(E,z){var C=E.sortIndex-z.sortIndex;return C!==0?C:E.id-z.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;t.unstable_now=function(){return u.now()}}else{var m=Date,f=m.now();t.unstable_now=function(){return m.now()-f}}var p=[],h=[],b=1,v=null,S=3,T=!1,A=!1,y=!1,R=!1,L=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,F=typeof setImmediate<"u"?setImmediate:null;function $(E){for(var z=l(h);z!==null;){if(z.callback===null)o(h);else if(z.startTime<=E)o(h),z.sortIndex=z.expirationTime,s(p,z);else break;z=l(h)}}function P(E){if(y=!1,$(E),!A)if(l(p)!==null)A=!0,U||(U=!0,le());else{var z=l(h);z!==null&&ge(P,z.startTime-E)}}var U=!1,M=-1,V=5,re=-1;function W(){return R?!0:!(t.unstable_now()-re<V)}function oe(){if(R=!1,U){var E=t.unstable_now();re=E;var z=!0;try{e:{A=!1,y&&(y=!1,_(M),M=-1),T=!0;var C=S;try{t:{for($(E),v=l(p);v!==null&&!(v.expirationTime>E&&W());){var ce=v.callback;if(typeof ce=="function"){v.callback=null,S=v.priorityLevel;var je=ce(v.expirationTime<=E);if(E=t.unstable_now(),typeof je=="function"){v.callback=je,$(E),z=!0;break t}v===l(p)&&o(p),$(E)}else o(p);v=l(p)}if(v!==null)z=!0;else{var H=l(h);H!==null&&ge(P,H.startTime-E),z=!1}}break e}finally{v=null,S=C,T=!1}z=void 0}}finally{z?le():U=!1}}}var le;if(typeof F=="function")le=function(){F(oe)};else if(typeof MessageChannel<"u"){var ue=new MessageChannel,de=ue.port2;ue.port1.onmessage=oe,le=function(){de.postMessage(null)}}else le=function(){L(oe,0)};function ge(E,z){M=L(function(){E(t.unstable_now())},z)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(E){E.callback=null},t.unstable_forceFrameRate=function(E){0>E||125<E?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):V=0<E?Math.floor(1e3/E):5},t.unstable_getCurrentPriorityLevel=function(){return S},t.unstable_next=function(E){switch(S){case 1:case 2:case 3:var z=3;break;default:z=S}var C=S;S=z;try{return E()}finally{S=C}},t.unstable_requestPaint=function(){R=!0},t.unstable_runWithPriority=function(E,z){switch(E){case 1:case 2:case 3:case 4:case 5:break;default:E=3}var C=S;S=E;try{return z()}finally{S=C}},t.unstable_scheduleCallback=function(E,z,C){var ce=t.unstable_now();switch(typeof C=="object"&&C!==null?(C=C.delay,C=typeof C=="number"&&0<C?ce+C:ce):C=ce,E){case 1:var je=-1;break;case 2:je=250;break;case 5:je=1073741823;break;case 4:je=1e4;break;default:je=5e3}return je=C+je,E={id:b++,callback:z,priorityLevel:E,startTime:C,expirationTime:je,sortIndex:-1},C>ce?(E.sortIndex=C,s(h,E),l(p)===null&&E===l(h)&&(y?(_(M),M=-1):y=!0,ge(P,C-ce))):(E.sortIndex=je,s(p,E),A||T||(A=!0,U||(U=!0,le()))),E},t.unstable_shouldYield=W,t.unstable_wrapCallback=function(E){var z=S;return function(){var C=S;S=z;try{return E.apply(this,arguments)}finally{S=C}}}})(dg)),dg}var tx;function qS(){return tx||(tx=1,cg.exports=zS()),cg.exports}var ug={exports:{}},Jt={};/** 26 * @license React 27 * react-dom.production.js 28 * 29 * Copyright (c) Meta Platforms, Inc. and affiliates. 30 * 31 * This source code is licensed under the MIT license found in the 32 * LICENSE file in the root directory of this source tree. 33 */var ax;function PS(){if(ax)return Jt;ax=1;var t=kc();function s(p){var h="https://react.dev/errors/"+p;if(1<arguments.length){h+="?args[]="+encodeURIComponent(arguments[1]);for(var b=2;b<arguments.length;b++)h+="&args[]="+encodeURIComponent(arguments[b])}return"Minified React error #"+p+"; visit "+h+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function l(){}var o={d:{f:l,r:function(){throw Error(s(522))},D:l,C:l,L:l,m:l,X:l,S:l,M:l},p:0,findDOMNode:null},c=Symbol.for("react.portal");function u(p,h,b){var v=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:c,key:v==null?null:""+v,children:p,containerInfo:h,implementation:b}}var m=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function f(p,h){if(p==="font")return"";if(typeof h=="string")return h==="use-credentials"?h:""}return Jt.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=o,Jt.createPortal=function(p,h){var b=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!h||h.nodeType!==1&&h.nodeType!==9&&h.nodeType!==11)throw Error(s(299));return u(p,h,null,b)},Jt.flushSync=function(p){var h=m.T,b=o.p;try{if(m.T=null,o.p=2,p)return p()}finally{m.T=h,o.p=b,o.d.f()}},Jt.preconnect=function(p,h){typeof p=="string"&&(h?(h=h.crossOrigin,h=typeof h=="string"?h==="use-credentials"?h:"":void 0):h=null,o.d.C(p,h))}
vendor: 6,198 bytes, lines 33-41
33,Jt.prefetchDNS=function(p){typeof p=="string"&&o.d.D(p)},Jt.preinit=function(p,h){if(typeof p=="string"&&h&&typeof h.as=="string"){var b=h.as,v=f(b,h.crossOrigin),S=typeof h.integrity=="string"?h.integrity:void 0,T=typeof h.fetchPriority=="string"?h.fetchPriority:void 0;b==="style"?o.d.S(p,typeof h.precedence=="string"?h.precedence:void 0,{crossOrigin:v,integrity:S,fetchPriority:T}):b==="script"&&o.d.X(p,{crossOrigin:v,integrity:S,fetchPriority:T,nonce:typeof h.nonce=="string"?h.nonce:void 0})}},Jt.preinitModule=function(p,h){if(typeof p=="string")if(typeof h=="object"&&h!==null){if(h.as==null||h.as==="script"){var b=f(h.as,h.crossOrigin);o.d.M(p,{crossOrigin:b,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0})}}else h==null&&o.d.M(p)},Jt.preload=function(p,h){if(typeof p=="string"&&typeof h=="object"&&h!==null&&typeof h.as=="string"){var b=h.as,v=f(b,h.crossOrigin);o.d.L(p,b,{crossOrigin:v,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0,type:typeof h.type=="string"?h.type:void 0,fetchPriority:typeof h.fetchPriority=="string"?h.fetchPriority:void 0,referrerPolicy:typeof h.referrerPolicy=="string"?h.referrerPolicy:void 0,imageSrcSet:typeof h.imageSrcSet=="string"?h.imageSrcSet:void 0,imageSizes:typeof h.imageSizes=="string"?h.imageSizes:void 0,media:typeof h.media=="string"?h.media:void 0})}},Jt.preloadModule=function(p,h){if(typeof p=="string")if(h){var b=f(h.as,h.crossOrigin);o.d.m(p,{as:typeof h.as=="string"&&h.as!=="script"?h.as:void 0,crossOrigin:b,integrity:typeof h.integrity=="string"?h.integrity:void 0})}else o.d.m(p)},Jt.requestFormReset=function(p){o.d.r(p)},Jt.unstable_batchedUpdates=function(p,h){return p(h)},Jt.useFormState=function(p,h,b){return m.H.useFormState(p,h,b)},Jt.useFormStatus=function(){return m.H.useHostTransitionStatus()},Jt.version="19.2.1",Jt}var nx;function zb(){if(nx)return ug.exports;nx=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(s){console.error(s)}}return t(),ug.exports=PS(),ug.exports}/** 34 * @license React 35 * react-dom-client.production.js 36 * 37 * Copyright (c) Meta Platforms, Inc. and affiliates. 38 * 39 * This source code is licensed under the MIT license found in the 40 * LICENSE file in the root directory of this source tree. 41 */var rx;function BS(){if(rx)return Wl;rx=1;var t=qS(),s=kc(),l=zb();function o(e){var a="https://react.dev/errors/"+e;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)a+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function u(e){var a=e,r=e;if(e.alternate)for(;a.return;)a=a.return;else{e=a;do a=e,(a.flags&4098)!==0&&(r=a.return),e=a.return;while(e)}return a.tag===3?r:null}function m(e){if(e.tag===13){var a=e.memoizedState;if(a===null&&(e=e.alternate,e!==null&&(a=e.memoizedState)),a!==null)return a.dehydrated}return null}function f(e){if(e.tag===31){var a=e.memoizedState;if(a===null&&(e=e.alternate,e!==null&&(a=e.memoizedState)),a!==null)return a.dehydrated}return null}function p(e){if(u(e)!==e)throw Error(o(188))}function h(e){var a=e.alternate;if(!a){if(a=u(e),a===null)throw Error(o(188));return a!==e?null:e}for(var r=e,i=a;;){var d=r.return;if(d===null)break;var g=d.alternate;if(g===null){if(i=d.return,i!==null){r=i;continue}break}if(d.child===g.child){for(g=d.child;g;){if(g===r)return p(d),e;if(g===i)return p(d),a;g=g.sibling}throw Error(o(188))}if(r.return!==i.return)r=d,i=g;else{for(var x=!1,j=d.child;j;){if(j===r){x=!0,r=d,i=g;break}if(j===i){x=!0,i=d,r=g;break}j=j.sibling}if(!x){for(j=g.child;j;){if(j===r){x=!0,r=g,i=d;break}if(j===i){x=!0,i=g,r=d;break}j=j.sibling}if(!x)throw Error(o(189))}}if(r.alternate!==i)throw Error(o(190))}if(r.tag!==3)throw Error(o(188));return r.stateNode.current===r?e:a}function b(e){var a=e.tag;if(a===5||a===26||a===27||a===6)return e;for(e=e.child;e!==null;){if(a=b(e),a!==null)return a;e=e.sibling}return null}var v=Object.assign,S=Symbol.for("react.element"),T=Symbol.for("react.transitional.element"),A=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),R=Symbol.for("react.strict_mode"),L=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),F=Symbol.for("react.context"),$=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),U=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),V=Symbol.for("react.lazy"),re=Symbol.for("react.activity"),W=Symbol.for("react.memo_cache_sentinel"),oe=Symbol.iterator;function le(e){return e===null||typeof e!="object"?null:(e=oe&&e[oe]||e["@@iterator"],typeof e=="function"?e:null)}var ue=Symbol.for("react.client.reference");function de(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ue?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case y:return"Fragment";case L:return"Profiler";case R:return"StrictMode";case P:return"Suspense";case U:return"SuspenseList";case re:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case A:return"Portal";case F:return e.displayName||"Context";case _:return(e._context.displayName||"Context")+".Consumer";case $:var a=e.render;return e=e.displayName,e||(e=a.displayName||a.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case M:return a=e.displayName||null,a!==null?a:de(e.type)||"Memo";case V:a=e._payload,e=e._init;try{return de(e(a))}catch{}}return null}var ge=Array.isArray,E=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,z=l.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,C={pending:!1,data:null,method:null,action:null},ce=[],je=-1;function H(e){return{current:e}}function I(e){0>je||(e.current=ce[je],ce[je]=null,je--)}function q(e,a){je++,ce[je]=e.current,e.current=a}var K=H(null),ie=H(null),he=H(null),ae=H(null);function Se(e,a){switch(q(he,a),q(ie,e),q(K,null),a.nodeType){case 9:case 11:e=(e
vendor: 10,011 bytes, lines 41-48
41=a.documentElement)&&(e=e.namespaceURI)?av(e):0;break;default:if(e=a.tagName,a=a.namespaceURI)a=av(a),e=nv(a,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}I(K),q(K,e)}function De(){I(K),I(ie),I(he)}function Fe(e){e.memoizedState!==null&&q(ae,e);var a=K.current,r=nv(a,e.type);a!==r&&(q(ie,e),q(K,r))}function ze(e){ie.current===e&&(I(K),I(ie)),ae.current===e&&(I(ae),Il._currentValue=C)}var Be,Et;function yt(e){if(Be===void 0)try{throw Error()}catch(r){var a=r.stack.trim().match(/\n( *(at )?)/);Be=a&&a[1]||"",Et=-1<r.stack.indexOf(` 42 at`)?" (<anonymous>)":-1<r.stack.indexOf("@")?"@unknown:0:0":""}return` 43`+Be+e+Et}var rn=!1;function Ga(e,a){if(!e||rn)return"";rn=!0;var r=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var i={DetermineComponentFrameRoot:function(){try{if(a){var te=function(){throw Error()};if(Object.defineProperty(te.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(te,[])}catch(Q){var B=Q}Reflect.construct(e,[],te)}else{try{te.call()}catch(Q){B=Q}e.call(te.prototype)}}else{try{throw Error()}catch(Q){B=Q}(te=e())&&typeof te.catch=="function"&&te.catch(function(){})}}catch(Q){if(Q&&B&&typeof Q.stack=="string")return[Q.stack,B.stack]}return[null,null]}};i.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var d=Object.getOwnPropertyDescriptor(i.DetermineComponentFrameRoot,"name");d&&d.configurable&&Object.defineProperty(i.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=i.DetermineComponentFrameRoot(),x=g[0],j=g[1];if(x&&j){var w=x.split(` 44`),G=j.split(` 45`);for(d=i=0;i<w.length&&!w[i].includes("DetermineComponentFrameRoot");)i++;for(;d<G.length&&!G[d].includes("DetermineComponentFrameRoot");)d++;if(i===w.length||d===G.length)for(i=w.length-1,d=G.length-1;1<=i&&0<=d&&w[i]!==G[d];)d--;for(;1<=i&&0<=d;i--,d--)if(w[i]!==G[d]){if(i!==1||d!==1)do if(i--,d--,0>d||w[i]!==G[d]){var Z=` 46`+w[i].replace(" at new "," at ");return e.displayName&&Z.includes("<anonymous>")&&(Z=Z.replace("<anonymous>",e.displayName)),Z}while(1<=i&&0<=d);break}}}finally{rn=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?yt(r):""}function wa(e,a){switch(e.tag){case 26:case 27:case 5:return yt(e.type);case 16:return yt("Lazy");case 13:return e.child!==a&&a!==null?yt("Suspense Fallback"):yt("Suspense");case 19:return yt("SuspenseList");case 0:case 15:return Ga(e.type,!1);case 11:return Ga(e.type.render,!1);case 1:return Ga(e.type,!0);case 31:return yt("Activity");default:return""}}function nl(e){try{var a="",r=null;do a+=wa(e,r),r=e,e=e.return;while(e);return a}catch(i){return` 47Error generating stack: `+i.message+` 48`+i.stack}}var la=Object.prototype.hasOwnProperty,rl=t.unstable_scheduleCallback,sl=t.unstable_cancelCallback,zt=t.unstable_shouldYield,wn=t.unstable_requestPaint,qt=t.unstable_now,Bc=t.unstable_getCurrentPriorityLevel,hr=t.unstable_ImmediatePriority,Si=t.unstable_UserBlockingPriority,vr=t.unstable_NormalPriority,ll=t.unstable_LowPriority,sn=t.unstable_IdlePriority,Ni=t.log,En=t.unstable_setDisableYieldValue,xr=null,Pt=null;function Ea(e){if(typeof Ni=="function"&&En(e),Pt&&typeof Pt.setStrictMode=="function")try{Pt.setStrictMode(xr,e)}catch{}}var Vt=Math.clz32?Math.clz32:za,Uc=Math.log,il=Math.LN2;function za(e){return e>>>=0,e===0?32:31-(Uc(e)/il|0)|0}var Zr=256,Wr=262144,br=4194304;function qa(e){var a=e&42;if(a!==0)return a;switch(e&-e){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:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Oe(e,a,r){var i=e.pendingLanes;if(i===0)return 0;var d=0,g=e.suspendedLanes,x=e.pingedLanes;e=e.warmLanes;var j=i&134217727;return j!==0?(i=j&~g,i!==0?d=qa(i):(x&=j,x!==0?d=qa(x):r||(r=j&~e,r!==0&&(d=qa(r))))):(j=i&~g,j!==0?d=qa(j):x!==0?d=qa(x):r||(r=i&~e,r!==0&&(d=qa(r)))),d===0?0:a!==0&&a!==d&&(a&g)===0&&(g=d&-d,r=a&-a,g>=r||g===32&&(r&4194048)!==0)?a:d}function ot(e,a){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&a)===0}function Rt(e,a){switch(e){case 1:case 2:case 4:case 8:case 64:return a+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 a+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 Ft(){var e=br;return br<<=1,(br&62914560)===0&&(br=4194304),e}function Ln(e){for(var a=[],r=0;31>r;r++)a.push(e);return a}function dt(e,a){e.pendingLanes|=a,a!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function It(e,a,r,i,d,g){var x=e.pendingLanes;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=r,e.entangledLanes&=r,e.errorRecoveryDisabledLanes&=r,e.shellSuspendCounter=0;var j=e.entanglements,w=e.expirationTimes,G=e.hiddenUpdates;for(r=x&~r;0<r;){var Z=31-Vt(r),te=1<<Z;j[Z]=0,w[Z]=-1;var B=G[Z];if(B!==null)for(G[Z]=null,Z=0;Z<B.length;Z++){var Q=B[Z];Q!==null&&(Q.lane&=-536870913)}r&=~te}i!==0&&kr(e,i,0),g!==0&&d===0&&e.tag!==0&&(e.suspendedLanes|=g&~(x&~a))}function kr(e,a,r){e.pendingLanes|=a,e.suspendedLanes&=~a;var i=31-Vt(a);e.entangledLanes|=a,e.entanglements[i]=e.entanglements[i]|1073741824|r&261930}function Kt(e,a){var r=e.entangledLanes|=a;for(e=e.entanglements;r;){var i=31-Vt(r),d=1<<i;d&a|e[i]&a&&(e[i]|=a),r&=~d}}function Yt(e,a){var r=a&-a;return r=(r&42)!==0?1:es(r),(r&(e.suspendedLanes|a))!==0?0:r}function es(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=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:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function La(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function Qc(){var e=z.p;return e!==0?e:(e=window.event,e===void 0?32:Rv(e.type))}function zm(e,a){var r=z.p;try{return z.p=e,a()}finally{z.p=r}}var Mn=Math.random().toString(36).slice(2),Lt="__reactFiber$"+Mn,Xt="__reactProps$"+Mn,ts="__reactContainer$"+Mn,Ic="__reactEvents$"+Mn,py="__reactListeners$"+Mn,hy="__reactHandles$"+Mn,qm="__reactResources$"+Mn,ol="__reactMarker$"+Mn;function Kc(e){delete e[Lt],delete e[Xt],delete e[Ic],delete e[py],delete e[hy]}function as(e){var a=e[Lt];if(a)return a;for(var r=e.parentNode;r;){if(a=r[ts]||r[Lt]){if(r=a.alternate,a.child!==null||r!==null&&r.child!==null)for(e=dv(e);e!==null;){if(r=e[Lt])return r;e=dv(e)}return a}e=r,r=e.parentNode}return null}function ns(e){if(e=e[Lt]||e[ts]){var a=e.tag;if(a===5||a===6||a===13||a===31||a===26||a===27||a===3)return e}return null}function cl(e){var a=e.tag;if(a===5||a===26||a===27||a===6)return e.stateNode;throw Error(o(33))}function rs(e){var a=e[qm];return a||(a=e[qm]={hoistableStyles:new Map,hoistableScripts:new Map}),a}function At(e){e[ol]=!0}var Pm=new Set,Bm={};function jr(e,a){ss(e,a),ss(e+"Capture",a)}function ss(e,a){for(Bm[e]=a,e=0;e<a.length;e++)Pm.add(a[e])}var vy=RegExp("^[: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][: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]*$"),Um={},Qm={};function xy(e){return la.call(Qm,e)?!0:la.call(Um,e)?!1:vy.test(e)?Qm[e]=!0:(Um[e]=!0,!1)}function Ti(e,a,r){if(xy(a))if(r===null)e.removeAttribute(a);else{switch(typeof r){case"undefined":case"function":case"symbol":e.removeAttribute(a);return;case"boolean":var i=a.toLowerCase().slice(0,5);if(i!=="data-"&&i!=="aria-"){e.removeAttribute(a);return}}e.setAttribute(a,""+r)}}function Ri(e,a,r){if(r===null)e.removeAttribute(a);else{switch(typeof r){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(a);return}e.setAttribute(a,""+r)}}function ln(e,a,r,i){if(i===null)e.removeAttribute(r);else{switch(typeof i){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(r);return}e.setAttributeNS(a,r,""+i)}}function va(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Im(e){var a=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function by(e,a,r){var i=Object.getOwnPropertyDescriptor(e.constructor.prototype,a);if(!e.hasOwnProperty(a)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var d=i.get,g=i.set;return Object.defineProperty(e,a,{configurable:!0,get:function(){return d.call(this)},set:function(x){r=""+x,g.call(this,x)}}),Object.defineProperty(e,a,{enumerable:i.enumerable}),{getValue:function(){return r},setValue:function(x){r=""+x},stopTracking:function(){e._valueTracker=null,delete e[a]}}}}function Yc(e){if(!e._valueTracker){var a=Im(e)?"checked":"value";e._valueTracker=by(e,a,""+e[a])}}function Km(e){if(!e)return!1;var a=e._valueTracker;if(!a)return!0;var r=a.getValue(),i="";return e&&(i=Im(e)?e.checked?"true":"false":e.value),e=i,e!==r?(a.setValue(e),!0):!1}function Ai(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var ky=/[\n"\\]/g;function xa(e){return e.replace(ky,function(a){return"\\"+a.charCo
vendor: 4,418 bytes, line 48
48deAt(0).toString(16)+" "})}function Xc(e,a,r,i,d,g,x,j){e.name="",x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.type=x:e.removeAttribute("type"),a!=null?x==="number"?(a===0&&e.value===""||e.value!=a)&&(e.value=""+va(a)):e.value!==""+va(a)&&(e.value=""+va(a)):x!=="submit"&&x!=="reset"||e.removeAttribute("value"),a!=null?$c(e,x,va(a)):r!=null?$c(e,x,va(r)):i!=null&&e.removeAttribute("value"),d==null&&g!=null&&(e.defaultChecked=!!g),d!=null&&(e.checked=d&&typeof d!="function"&&typeof d!="symbol"),j!=null&&typeof j!="function"&&typeof j!="symbol"&&typeof j!="boolean"?e.name=""+va(j):e.removeAttribute("name")}function Ym(e,a,r,i,d,g,x,j){if(g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(e.type=g),a!=null||r!=null){if(!(g!=="submit"&&g!=="reset"||a!=null)){Yc(e);return}r=r!=null?""+va(r):"",a=a!=null?""+va(a):r,j||a===e.value||(e.value=a),e.defaultValue=a}i=i??d,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=j?e.checked:!!i,e.defaultChecked=!!i,x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(e.name=x),Yc(e)}function $c(e,a,r){a==="number"&&Ai(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function ls(e,a,r,i){if(e=e.options,a){a={};for(var d=0;d<r.length;d++)a["$"+r[d]]=!0;for(r=0;r<e.length;r++)d=a.hasOwnProperty("$"+e[r].value),e[r].selected!==d&&(e[r].selected=d),d&&i&&(e[r].defaultSelected=!0)}else{for(r=""+va(r),a=null,d=0;d<e.length;d++){if(e[d].value===r){e[d].selected=!0,i&&(e[d].defaultSelected=!0);return}a!==null||e[d].disabled||(a=e[d])}a!==null&&(a.selected=!0)}}function Xm(e,a,r){if(a!=null&&(a=""+va(a),a!==e.value&&(e.value=a),r==null)){e.defaultValue!==a&&(e.defaultValue=a);return}e.defaultValue=r!=null?""+va(r):""}function $m(e,a,r,i){if(a==null){if(i!=null){if(r!=null)throw Error(o(92));if(ge(i)){if(1<i.length)throw Error(o(93));i=i[0]}r=i}r==null&&(r=""),a=r}r=va(a),e.defaultValue=r,i=e.textContent,i===r&&i!==""&&i!==null&&(e.value=i),Yc(e)}function is(e,a){if(a){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=a;return}}e.textContent=a}var jy=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 Zm(e,a,r){var i=a.indexOf("--")===0;r==null||typeof r=="boolean"||r===""?i?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="":i?e.setProperty(a,r):typeof r!="number"||r===0||jy.has(a)?a==="float"?e.cssFloat=r:e[a]=(""+r).trim():e[a]=r+"px"}function Wm(e,a,r){if(a!=null&&typeof a!="object")throw Error(o(62));if(e=e.style,r!=null){for(var i in r)!r.hasOwnProperty(i)||a!=null&&a.hasOwnProperty(i)||(i.indexOf("--")===0?e.setProperty(i,""):i==="float"?e.cssFloat="":e[i]="");for(var d in a)i=a[d],a.hasOwnProperty(d)&&r[d]!==i&&Zm(e,d,i)}else for(var g in a)a.hasOwnProperty(g)&&Zm(e,g,a[g])}function Zc(e){if(e.indexOf("-")===-1)return!1;switch(e){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 yy=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
48dering","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"]]),Sy=/^[\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 Hi(e){return Sy.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function on(){}var Wc=null;function ed(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var os=null,cs=null;function ef(e){var a=ns(e);
vendor: 9,968 bytes, line 48
48if(a&&(e=a.stateNode)){var r=e[Xt]||null;e:switch(e=a.stateNode,a.type){case"input":if(Xc(e,r.value,r.defaultValue,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name),a=r.name,r.type==="radio"&&a!=null){for(r=e;r.parentNode;)r=r.parentNode;for(r=r.querySelectorAll('input[name="'+xa(""+a)+'"][type="radio"]'),a=0;a<r.length;a++){var i=r[a];if(i!==e&&i.form===e.form){var d=i[Xt]||null;if(!d)throw Error(o(90));Xc(i,d.value,d.defaultValue,d.defaultValue,d.checked,d.defaultChecked,d.type,d.name)}}for(a=0;a<r.length;a++)i=r[a],i.form===e.form&&Km(i)}break e;case"textarea":Xm(e,r.value,r.defaultValue);break e;case"select":a=r.value,a!=null&&ls(e,!!r.multiple,a,!1)}}}var td=!1;function tf(e,a,r){if(td)return e(a,r);td=!0;try{var i=e(a);return i}finally{if(td=!1,(os!==null||cs!==null)&&(ho(),os&&(a=os,e=cs,cs=os=null,ef(a),e)))for(a=0;a<e.length;a++)ef(e[a])}}function dl(e,a){var r=e.stateNode;if(r===null)return null;var i=r[Xt]||null;if(i===null)return null;r=i[a];e:switch(a){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(i=!i.disabled)||(e=e.type,i=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!i;break e;default:e=!1}if(e)return null;if(r&&typeof r!="function")throw Error(o(231,a,typeof r));return r}var cn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ad=!1;if(cn)try{var ul={};Object.defineProperty(ul,"passive",{get:function(){ad=!0}}),window.addEventListener("test",ul,ul),window.removeEventListener("test",ul,ul)}catch{ad=!1}var Dn=null,nd=null,wi=null;function af(){if(wi)return wi;var e,a=nd,r=a.length,i,d="value"in Dn?Dn.value:Dn.textContent,g=d.length;for(e=0;e<r&&a[e]===d[e];e++);var x=r-e;for(i=1;i<=x&&a[r-i]===d[g-i];i++);return wi=d.slice(e,1<i?1-i:void 0)}function Ei(e){var a=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&a===13&&(e=13)):e=a,e===10&&(e=13),32<=e||e===13?e:0}function Li(){return!0}function nf(){return!1}function $t(e){function a(r,i,d,g,x){this._reactName=r,this._targetInst=d,this.type=i,this.nativeEvent=g,this.target=x,this.currentTarget=null;for(var j in e)e.hasOwnProperty(j)&&(r=e[j],this[j]=r?r(g):g[j]);return this.isDefaultPrevented=(g.defaultPrevented!=null?g.defaultPrevented:g.returnValue===!1)?Li:nf,this.isPropagationStopped=nf,this}return v(a.prototype,{preventDefault:function(){this.defaultPrevented=!0;var r=this.nativeEvent;r&&(r.preventDefault?r.preventDefault():typeof r.returnValue!="unknown"&&(r.returnValue=!1),this.isDefaultPrevented=Li)},stopPropagation:function(){var r=this.nativeEvent;r&&(r.stopPropagation?r.stopPropagation():typeof r.cancelBubble!="unknown"&&(r.cancelBubble=!0),this.isPropagationStopped=Li)},persist:function(){},isPersistent:Li}),a}var yr={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Mi=$t(yr),gl=v({},yr,{view:0,detail:0}),Ny=$t(gl),rd,sd,ml,Di=v({},gl,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:id,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ml&&(ml&&e.type==="mousemove"?(rd=e.screenX-ml.screenX,sd=e.screenY-ml.screenY):sd=rd=0,ml=e),rd)},movementY:function(e){return"movementY"in e?e.movementY:sd}}),rf=$t(Di),Ty=v({},Di,{dataTransfer:0}),Ry=$t(Ty),Ay=v({},gl,{relatedTarget:0}),ld=$t(Ay),Hy=v({},yr,{animationName:0,elapsedTime:0,pseudoElement:0}),wy=$t(Hy),Ey=v({},yr,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Ly=$t(Ey),My=v({},yr,{data:0}),sf=$t(My),Dy={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},_y={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"},Oy={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cy(e){var a=this.nativeEvent;return a.getModifierState?a.getModifierState(e):(e=Oy[e])?!!a[e]:!1}function id(){return Cy}var Vy=v({},gl,{key:function(e){if(e.key){var a=Dy[e.key]||e.key;if(a!=="Unidentified")return a}return e.type==="keypress"?(e=Ei(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?_y[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:id,charCode:function(e){return e.type==="keypress"?Ei(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Ei(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Fy=$t(Vy),Jy=v({},Di,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),lf=$t(Jy),Gy=v({},gl,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:id}),zy=$t(Gy),qy=v({},yr,{propertyName:0,elapsedTime:0,pseudoElement:0}),Py=$t(qy),By=v({},Di,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Uy=$t(By),Qy=v({},yr,{newState:0,oldState:0}),Iy=$t(Qy),Ky=[9,13,27,32],od=cn&&"CompositionEvent"in window,fl=null;cn&&"documentMode"in document&&(fl=document.documentMode);var Yy=cn&&"TextEvent"in window&&!fl,of=cn&&(!od||fl&&8<fl&&11>=fl),cf=" ",df=!1;function uf(e,a){switch(e){case"keyup":return Ky.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ds=!1;function Xy(e,a){switch(e){case"compositionend":return gf(a);case"keypress":return a.which!==32?null:(df=!0,cf);case"textInput":return e=a.data,e===cf&&df?null:e;default:return null}}function $y(e,a){if(ds)return e==="compositionend"||!od&&uf(e,a)?(e=af(),wi=nd=Dn=null,ds=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1<a.char.length)return a.char;if(a.which)return String.fromCharCode(a.which)}return null;case"compositionend":return of&&a.locale!=="ko"?null:a.data;default:return null}}var Zy={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 mf(e){var a=e&&e.nodeName&&e.nodeName.toLowerCase();return a==="input"?!!Zy[e.type]:a==="textarea"}function ff(e,a,r,i){os?cs?cs.push(i):cs=[i]:os=i,a=So(a,"onChange"),0<a.length&&(r=new Mi("onChange","change",null,r,i),e.push({event:r,listeners:a}))}var pl=null,hl=null;function Wy(e){Xh(e,0)}function _i(e){var a=cl(e);if(Km(a))return e}function pf(e,a){if(e==="change")return a}var hf=!1;if(cn){var cd;if(cn){var dd="oninput"in document;if(!dd){var vf=document.createElement("div");vf.setAttribute("oninput","return;"),dd=typeof vf.oninput=="function"}cd=dd}else cd=!1;hf=cd&&(!document.documentMode||9<document.documentMode)}function xf(){pl&&(pl.detachEvent("onpropertychange",bf),hl=pl=null)}function bf(e){if(e.propertyName==="value"&&_i(hl)){var a=[];ff(a,hl,e,ed(e)),tf(Wy,a)}}function e0(e,a,r){e==="focusin"?(xf(),pl=a,hl=r,pl.attachEvent("onpropertychange",bf)):e==="focusout"&&xf()}function t0(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return _i(hl)}function a0(e,a){if(e==="click")return _i(a)}function n0(e,a){if(e==="input"||e==="change")return _i(a)}function r0(e,a){return e===a&&(e!==0||1/e===1/a)||e!==e&&a!==a}var ia=typeof Object.is=="function"?Object.is:r0;function vl(e,a){if(ia(e,a))return!0;if(typeof e!="object"||e===null||typeof a!="object"||a===null)return!1;var r=Object.keys(e),i=Object.keys(a);if(r.length!==i.length)return!1;for(i=0;i<r.length;i++){var d=r[i];if(!la.call(a,d)||!ia(e[d],a[d]))return!1}return!0}function kf(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function jf(e,a){var r=kf(e);e=0;for(var i;r;){if(r.nodeType===3){if(i=e+r.textContent.length,e<=a&&i>=a)return{node:r,offset:a-e};e=i}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=kf(r)}}function yf(e,a){return e&&a?e===a?!0:e&&e.nodeType===3?!1:a&&a.nodeType===3?yf(e,a.parentNode):"contains"in e?e.contains(a):e.compareDocumentPosition?!!(e.compareDocumentPosition(a)&16):!1:!1}function Sf(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var a=Ai(e.document);a instanceof e.HTMLIFrameElement;){try{var r=typeof a.contentWindow.location.href=="string"}catch{r=!1}if(r)e=a.contentWindow;else break;a=Ai(e.document)}return a}function ud(e){var a=e&&e.nodeName&&e.nodeName.toLowerCase();return a&&(a==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||a==="textarea"||e.contentEditable==="true")}var s0=cn&&"documentMode"in document&&11>=document.documentMode,us=null,gd=null,xl=null,md=!1;function Nf(e,a,r){var i=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;md||us==null||us!==Ai(i)||(i=us,"selectionStart"in i&&ud(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focu
vendor: 19,035 bytes, line 48
48sNode:i.focusNode,focusOffset:i.focusOffset}),xl&&vl(xl,i)||(xl=i,i=So(gd,"onSelect"),0<i.length&&(a=new Mi("onSelect","select",null,a,r),e.push({event:a,listeners:i}),a.target=us)))}function Sr(e,a){var r={};return r[e.toLowerCase()]=a.toLowerCase(),r["Webkit"+e]="webkit"+a,r["Moz"+e]="moz"+a,r}var gs={animationend:Sr("Animation","AnimationEnd"),animationiteration:Sr("Animation","AnimationIteration"),animationstart:Sr("Animation","AnimationStart"),transitionrun:Sr("Transition","TransitionRun"),transitionstart:Sr("Transition","TransitionStart"),transitioncancel:Sr("Transition","TransitionCancel"),transitionend:Sr("Transition","TransitionEnd")},fd={},Tf={};cn&&(Tf=document.createElement("div").style,"AnimationEvent"in window||(delete gs.animationend.animation,delete gs.animationiteration.animation,delete gs.animationstart.animation),"TransitionEvent"in window||delete gs.transitionend.transition);function Nr(e){if(fd[e])return fd[e];if(!gs[e])return e;var a=gs[e],r;for(r in a)if(a.hasOwnProperty(r)&&r in Tf)return fd[e]=a[r];return e}var Rf=Nr("animationend"),Af=Nr("animationiteration"),Hf=Nr("animationstart"),l0=Nr("transitionrun"),i0=Nr("transitionstart"),o0=Nr("transitioncancel"),wf=Nr("transitionend"),Ef=new Map,pd="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(" ");pd.push("scrollEnd");function Ma(e,a){Ef.set(e,a),jr(a,[e])}var Oi=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var a=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(a))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},ba=[],ms=0,hd=0;function Ci(){for(var e=ms,a=hd=ms=0;a<e;){var r=ba[a];ba[a++]=null;var i=ba[a];ba[a++]=null;var d=ba[a];ba[a++]=null;var g=ba[a];if(ba[a++]=null,i!==null&&d!==null){var x=i.pending;x===null?d.next=d:(d.next=x.next,x.next=d),i.pending=d}g!==0&&Lf(r,d,g)}}function Vi(e,a,r,i){ba[ms++]=e,ba[ms++]=a,ba[ms++]=r,ba[ms++]=i,hd|=i,e.lanes|=i,e=e.alternate,e!==null&&(e.lanes|=i)}function vd(e,a,r,i){return Vi(e,a,r,i),Fi(e)}function Tr(e,a){return Vi(e,null,null,a),Fi(e)}function Lf(e,a,r){e.lanes|=r;var i=e.alternate;i!==null&&(i.lanes|=r);for(var d=!1,g=e.return;g!==null;)g.childLanes|=r,i=g.alternate,i!==null&&(i.childLanes|=r),g.tag===22&&(e=g.stateNode,e===null||e._visibility&1||(d=!0)),e=g,g=g.return;return e.tag===3?(g=e.stateNode,d&&a!==null&&(d=31-Vt(r),e=g.hiddenUpdates,i=e[d],i===null?e[d]=[a]:i.push(a),a.lane=r|536870912),g):null}function Fi(e){if(50<Gl)throw Gl=0,Ru=null,Error(o(185));for(var a=e.return;a!==null;)e=a,a=e.return;return e.tag===3?e.stateNode:null}var fs={};function c0(e,a,r,i){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=a,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function oa(e,a,r,i){return new c0(e,a,r,i)}function xd(e){return e=e.prototype,!(!e||!e.isReactComponent)}function dn(e,a){var r=e.alternate;return r===null?(r=oa(e.tag,a,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=a,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&65011712,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,a=e.dependencies,r.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r.refCleanup=e.refCleanup,r}function Mf(e,a){e.flags&=65011714;var r=e.alternate;return r===null?(e.childLanes=0,e.lanes=a,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=r.childLanes,e.lanes=r.lanes,e.child=r.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=r.memoizedProps,e.memoizedState=r.memoizedState,e.updateQueue=r.updateQueue,e.type=r.type,a=r.dependencies,e.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext}),e}function Ji(e,a,r,i,d,g){var x=0;if(i=e,typeof e=="function")xd(e)&&(x=1);else if(typeof e=="string")x=f1(e,r,K.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case re:return e=oa(31,r,a,d),e.elementType=re,e.lanes=g,e;case y:return Rr(r.children,d,g,a);case R:x=8,d|=24;break;case L:return e=oa(12,r,a,d|2),e.elementType=L,e.lanes=g,e;case P:return e=oa(13,r,a,d),e.elementType=P,e.lanes=g,e;case U:return e=oa(19,r,a,d),e.elementType=U,e.lanes=g,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case F:x=10;break e;case _:x=9;break e;case $:x=11;break e;case M:x=14;break e;case V:x=16,i=null;break e}x=29,r=Error(o(130,e===null?"null":typeof e,"")),i=null}return a=oa(x,r,a,d),a.elementType=e,a.type=i,a.lanes=g,a}function Rr(e,a,r,i){return e=oa(7,e,i,a),e.lanes=r,e}function bd(e,a,r){return e=oa(6,e,null,a),e.lanes=r,e}function Df(e){var a=oa(18,null,null,0);return a.stateNode=e,a}function kd(e,a,r){return a=oa(4,e.children!==null?e.children:[],e.key,a),a.lanes=r,a.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},a}var _f=new WeakMap;function ka(e,a){if(typeof e=="object"&&e!==null){var r=_f.get(e);return r!==void 0?r:(a={value:e,source:a,stack:nl(a)},_f.set(e,a),a)}return{value:e,source:a,stack:nl(a)}}var ps=[],hs=0,Gi=null,bl=0,ja=[],ya=0,_n=null,Pa=1,Ba="";function un(e,a){ps[hs++]=bl,ps[hs++]=Gi,Gi=e,bl=a}function Of(e,a,r){ja[ya++]=Pa,ja[ya++]=Ba,ja[ya++]=_n,_n=e;var i=Pa;e=Ba;var d=32-Vt(i)-1;i&=~(1<<d),r+=1;var g=32-Vt(a)+d;if(30<g){var x=d-d%5;g=(i&(1<<x)-1).toString(32),i>>=x,d-=x,Pa=1<<32-Vt(a)+d|r<<d|i,Ba=g+e}else Pa=1<<g|r<<d|i,Ba=e}function jd(e){e.return!==null&&(un(e,1),Of(e,1,0))}function yd(e){for(;e===Gi;)Gi=ps[--hs],ps[hs]=null,bl=ps[--hs],ps[hs]=null;for(;e===_n;)_n=ja[--ya],ja[ya]=null,Ba=ja[--ya],ja[ya]=null,Pa=ja[--ya],ja[ya]=null}function Cf(e,a){ja[ya++]=Pa,ja[ya++]=Ba,ja[ya++]=_n,Pa=a.id,Ba=a.overflow,_n=e}var Mt=null,lt=null,Ie=!1,On=null,Sa=!1,Sd=Error(o(519));function Cn(e){var a=Error(o(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw kl(ka(a,e)),Sd}function Vf(e){var a=e.stateNode,r=e.type,i=e.memoizedProps;switch(a[Lt]=e,a[Xt]=i,r){case"dialog":Pe("cancel",a),Pe("close",a);break;case"iframe":case"object":case"embed":Pe("load",a);break;case"video":case"audio":for(r=0;r<ql.length;r++)Pe(ql[r],a);break;case"source":Pe("error",a);break;case"img":case"image":case"link":Pe("error",a),Pe("load",a);break;case"details":Pe("toggle",a);break;case"input":Pe("invalid",a),Ym(a,i.value,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name,!0);break;case"select":Pe("invalid",a);break;case"textarea":Pe("invalid",a),$m(a,i.value,i.defaultValue,i.children)}r=i.children,typeof r!="string"&&typeof r!="number"&&typeof r!="bigint"||a.textContent===""+r||i.suppressHydrationWarning===!0||ev(a.textContent,r)?(i.popover!=null&&(Pe("beforetoggle",a),Pe("toggle",a)),i.onScroll!=null&&Pe("scroll",a),i.onScrollEnd!=null&&Pe("scrollend",a),i.onClick!=null&&(a.onclick=on),a=!0):a=!1,a||Cn(e,!0)}function Ff(e){for(Mt=e.return;Mt;)switch(Mt.tag){case 5:case 31:case 13:Sa=!1;return;case 27:case 3:Sa=!0;return;default:Mt=Mt.return}}function vs(e){if(e!==Mt)return!1;if(!Ie)return Ff(e),Ie=!0,!1;var a=e.tag,r;if((r=a!==3&&a!==27)&&((r=a===5)&&(r=e.type,r=!(r!=="form"&&r!=="button")||zu(e.type,e.memoizedProps)),r=!r),r&<&&Cn(e),Ff(e),a===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));lt=cv(e)}else if(a===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));lt=cv(e)}else a===27?(a=lt,Xn(e.type)?(e=Qu,Qu=null,lt=e):lt=a):lt=Mt?Ta(e.stateNode.nextSibling):null;return!0}function Ar(){lt=Mt=null,Ie=!1}function Nd(){var e=On;return e!==null&&(ta===null?ta=e:ta.push.apply(ta,e),On=null),e}function kl(e){On===null?On=[e]:On.push(e)}var Td=H(null),Hr=null,gn=null;function Vn(e,a,r){q(Td,a._currentValue),a._currentValue=r}function mn(e){e._currentValue=Td.current,I(Td)}function Rd(e,a,r){for(;e!==null;){var i=e.alternate;if((e.childLanes&a)!==a?(e.childLanes|=a,i!==null&&(i.childLanes|=a)):i!==null&&(i.childLanes&a)!==a&&(i.childLanes|=a),e===r)break;e=e.return}}function Ad(e,a,r,i){var d=e.child;for(d!==null&&(d.return=e);d!==null;){var g=d.dependencies;if(g!==null){var x=d.child;g=g.firstContext;e:for(;g!==null;){var j=g;g=d;for(var w=0;w<a.length;w++)if(j.context===a[w]){g.lanes|=r,j=g.alternate,j!==null&&(j.lanes|=r),Rd(g.return,r,e),i||(x=null);break e}g=j.next}}else if(d.tag===18){if(x=d.return,x===null)throw Error(o(341));x.lanes|=r,g=x.alternate,g!==null&&(g.lanes|=r),Rd(x,r,e),x=null}else x=d.child;if(x!==null)x.return=d;else for(x=d;x!==null;){if(x===e){x=null;break}if(d=x.sibling,d!==null){d.return=x.return,x=d;break}x=x.return}d=x}}function xs(e,a,r,i){e=null;for(var d=a,g=!1;d!==null;){if(!g){if((d.flags&524288)!==0)g=!0;else if((d.flags&262144)!==0)break}if(d.tag===10){var x=d.alternate;if(x===null)throw Error(o(387));if(x=x.memoizedProps,x!==null){var j=d.type;ia(d.pendingProps.value,x.value)||(e!==null?e.push(j):e=[j])}}else if(d===ae.current){if(x=d.alternate,x===null)throw Error(o(387));x.memoizedState.memoizedState!==d.memoizedState.memoizedState&&(e!==null?e.push(Il):e=[Il])}d=d.return}e!==null&&Ad(a,e,r,i),a.flags|=262144}function zi(e){for(e=e.firstContext;e!==null;){if(!ia(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function wr(e){Hr=e,gn=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Dt(e){return Jf(Hr,e)}function qi(e,a){return Hr===null&&wr(e),Jf(e,a)}function Jf(e,a){var r=a._currentValue;if(a={context:a,memoizedValue:r,next:null},gn===null){if(e===null)throw Error(o(308));gn=a,e.dependencies={lanes:0,firstContext:a},e.flags|=524288}else gn=gn.next=a;return r}var d0=typeof AbortController<"u"?AbortController:function(){var e=[],a=this.signal={aborted:!1,addEventListener:function(r,i){e.push(i)}};this.abort=function(){a.aborted=!0,e.forEach(function(r){return r()})}},u0=t.unstable_scheduleCallback,g0=t.unstable_NormalPriority,xt={$$typeof:F,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Hd(){return{controller:new d0,data:new Map,refCount:0}}function jl(e){e.refCount--,e.refCount===0&&u0(g0,function(){e.controller.abort()})}var yl=null,wd=0,bs=0,ks=null;function m0(e,a){if(yl===null){var r=yl=[];wd=0,bs=Mu(),ks={status:"pending",value:void 0,then:function(i){r.push(i)}}}return wd++,a.then(Gf,Gf),a}function Gf(){if(--wd===0&&yl!==null){ks!==null&&(ks.status="fulfilled");var e=yl;yl=null,bs=0,ks=null;for(var a=0;a<e.length;a++)(0,e[a])()}}function f0(e,a){var r=[],i={status:"pending",value:null,reason:null,then:function(d){r.push(d)}};return e.then(function(){i.status="fulfilled",i.value=a;for(var d=0;d<r.length;d++)(0,r[d])(a)},function(d){for(i.status="rejected",i.reason=d,d=0;d<r.length;d++)(0,r[d])(void 0)}),i}var zf=E.S;E.S=function(e,a){Nh=qt(),typeof a=="object"&&a!==null&&typeof a.then=="function"&&m0(e,a),zf!==null&&zf(e,a)};var Er=H(null);function Ed(){var e=Er.current;return e!==null?e:st.pooledCache}function Pi(e,a){a===null?q(Er,Er.current):q(Er,a.pool)}function qf(){var e=Ed();return e===null?null:{parent:xt._currentValue,pool:e}}var js=Error(o(460)),Ld=Error(o(474)),Bi=Error(o(542)),Ui={then:function(){}};function Pf(e){return e=e.status,e==="fulfilled"||e==="rejected"}function Bf(e,a,r){switch(r=e[r],r===void 0?e.push(a):r!==a&&(a.then(on,on),a=r),a.status){case"fulfilled":return a.value;case"rejected":throw e=a.reason,Qf(e),e;default:if(typeof a.status=="string")a.then(on,on);else{if(e=st,e!==null&&100<e.shellSuspendCounter)throw Error(o(482));e=a,e.status="pending",e.then(function(i){if(a.status==="pending"){var d=a;d.status="fulfilled",d.value=i}},function(i){if(a.status==="pending"){var d=a;d.status="rejected",d.reason=i}})}switch(a.status){case"fulfilled":return a.value;case"rejected":throw e=a.reason,Qf(e),e}throw Mr=a,js}}function Lr(e){try{var a=e._init;return a(e._payload)}catch(r){throw r!==null&&typeof r=="object"&&typeof r.then=="function"?(Mr=r,js):r}}var Mr=null;function Uf(){if(Mr===null)throw Error(o(459));var e=Mr;return Mr=null,e}function Qf(e){if(e===js||e===Bi)throw Error(o(483))}var ys=null,Sl=0;function Qi(e){var a=Sl;return Sl+=1,ys===null&&(ys=[]),Bf(ys,e,a)}function Nl(e,a){a=a.props.ref,e.ref=a!==void 0?a:null}function Ii(e,a){throw a.$$typeof===S?Error(o(525)):(e=Object.prototype.toString.call(a),Error(o(31,e==="[object Object]"?"object with keys {"+Object.keys(a).join(", ")+"}":e)))}function If(e){function a(O,D){if(e){var J=O.deletions;J===null?(O.deletions=[D],O.flags|=16):J.push(D)}}function r(O,D){if(!e)return null;for(;D!==null;)a(O,D),D=D.sibling;return null}function i(O){for(var D=new Map;O!==null;)O.key!==null?D.set(O.key,O):D.set(O.index,O),O=O.sibling;return D}function d(O,D){return O=dn(O,D),O.index=0,O.sibling=null,O}function g(O,D,J){return O.index=J,e?(J=O.alternate,J!==null?(J=J.index,J<D?(O.flags|=67108866,D):J):(O.flags|=67108866,D)):(O.flags|=1048576,D)}function x(O){return e&&O.alternate===null&&(O.flags|=67108866),O}function j(O,D,J,ee){return D===null||D.tag!==6?(D=bd(J,O.mode,ee),D.return=O,D):(D=d(D,J),D.return=O,D)}function w(O,D,J,ee){var Le=J.type;return Le===y?Z(O,D,J.props.children,ee,J.key):D!==null&&(D.elementType===Le||typeof Le=="object"&&Le!==null&&Le.$$typeof===V&&Lr(Le)===D.type)?(D=d(D,J.props),Nl(D,J),D.return=O,D):(D=Ji(J.type,J.key,J.props,null,O.mode,ee),Nl(D,J),D.return=O,D)}function G(O,D,J,ee){return D===null||D.tag!==4||D.stateNode.containerInfo!==J.containerInfo||D.stateNode.implementation!==J.implementation?(D=kd(J,O.mode,ee),D.return=O,D):(D=d(D,J.children||[]),D.return=O,D)}function Z(O,D,J,ee,Le){return D===null||D.tag!==7?(D=Rr(J,O.mode,ee,Le),D.return=O,D):(D=d(D,J),D.return=O,D)}function te(O,D,J){if(typeof D=="string"&&D!==""||typeof D=="number"||typeof D=="bigint")return D=bd(""+D,O.mode,J),D.return=O,D;if(typeof D=="object"&&D!==null){switch(D.$$typeof){case T:return J=Ji(D.type,D.key,D.props,null,O.mode,J),Nl(J,D),J.return=O,J;case A:return D=kd(D,O.mode,J),D.return=O,D;case V:return D=Lr(D),te(O,D,J)}if(ge(D)||le(D))return D=Rr(D,O.mode,J,null),D.return=O,D;if(typeof D.then=="function")return te(O,Qi(D),J);if(D.$$typeof===F)return te(O,qi(O,D),J);Ii(O,D)}return null}function B(O,D,J,ee){var Le=D!==null?D.key:null;if(typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint")return Le!==null?null:j(O,D,""+J,ee);if(typeof J=="object"&&J!==null){switch(J.$$typeof){case T:return J.key===Le?w(O,D,J,ee):null;case A:return J.key===Le?G(O,D,J,ee):null;case V:return J=Lr(J),B(O,D,J,ee)}if(ge(J)||le(J))return Le!==null?null:Z(O,D,J,ee,null);if(typeof J.then=="function")return B(O,D,Qi(J),ee);if(J.$$typeof===F)return B(O,D,qi(O,J),ee);Ii(O,J)}return null}function Q(O,D,J,ee,Le){if(typeof ee=="string"&&ee!==""||typeof ee=="number"||typeof ee=="bigint")return O=O.get(J)||null,j(D,O,""+ee,Le);if(typeof ee=="object"&&ee!==null){switch(ee.$$typeof){case T:return O=O.get(ee.key===null?J:ee.key)||null,w(D,O,ee,Le);case A:return O=O.get(ee.key===null?J:ee.key)||null,G(D,O,ee,Le);case V:return ee=Lr(ee),Q(O,D,J,ee,Le)}if(ge(ee)||le(ee))return O=O.get(J)||null,Z(D,O,ee,Le,null);if(typeof ee.then=="function")return Q(O,D,J,Qi(ee),Le);if(ee.$$typeof===F)return Q(O,D,J,qi(D,ee),Le);Ii(D,ee)}return null}function Re(O,D,J,ee){for(var Le=null,Ke=null,we=D,Je=D=0,Qe=null;we!==null&&Je<J.length;Je++){we.index>Je?(Qe=we,we=null):Qe=we.sibling;var Ye=B(O,we,J[Je],ee);if(Ye===null){we===null&&(we=Qe);break}e&&we&&Ye.alternate===null&&a(O,we),D=g(Ye,D,Je),Ke===null?Le=Ye:Ke.sibling=Ye,Ke=Ye,we=Qe}if(Je===J.length)return r(O,we),Ie&&un(O,Je),Le;if(we===null){for(;Je<J.length;Je++)we=te(O,J[Je],ee),we!==null&&(D=g(we,D,Je),Ke===null?Le=we:Ke.sibling=we,Ke=we);return Ie&&un(O,Je),Le}for(we=i(we);Je<J.length;Je++)Qe=Q(we,O,Je,J[Je],ee),Qe!==null&&(e&&Qe.alternate!==null&&we.delete(Qe.key===null?Je:Qe.key),D=g(Qe,D,Je),Ke===null?Le=Qe:Ke.sibling=Qe,Ke=Qe);return e&&we.forEach(function(tr){return a(O,tr)}),Ie&&un(O,Je),Le}function Me(O,D,J,ee){if(J==null)throw Error(o(151));for(var Le=null,Ke=null,we=D,Je=D=0,Qe=null,Ye=J.next();we!==null&&!Ye.done;Je++,Ye=J.next()){we.index>Je?(Qe=we,we=null):Qe=we.sibling;var tr=B(O,we,Ye.value,ee);if(tr===null){we===null&&(we=Qe);break}e&&we&&tr.alternate===null&&a(O,we),D=g(tr,D,Je),Ke===null?Le=tr:Ke.sibling=tr,Ke=tr,we=Qe}if(Ye.done)return r(O,we),Ie&&un(O,Je),Le;if(we===null){for(;!Ye.done;Je++,Ye=J.next())Ye=te(O,Ye.value,ee),Ye!==null&&(D=g(Ye,D,Je),Ke===null?Le=Ye:Ke.sibling=Ye,Ke=Ye);return Ie&&un(O,Je),Le}for(we=i(we);!Ye.done;Je++,Ye=J.next())Ye=Q(we,O,Je,Ye.value,ee),Ye!==null&&(e&&Ye.alternate!==null&&we.delete(Ye.key===null?Je:Ye.key),D=g(Ye,D,Je),Ke===null?Le=Ye:Ke.sibling=Ye,Ke=Ye);return e&&we.forEach(function(T1){return a(O,T1)}),Ie&&un(O,Je),Le}function at(O,D,J,ee){if(typeof J=="object"&&J!==null&&J.type===y&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case T:e:{for(var Le=J.key;D!==null;){if(D.key===Le){if(Le=J.type,Le===y){if(D.tag===7){r(O,D.sibling),ee=d(D,J.props.children),ee.return=O,O=ee;break e}}else if(D.elementType===Le||typeof Le=="object"&&Le!==null&&Le.$$typeof===V&&Lr(Le)===D.type){r(O,D.sibling),ee=d(D,J.props),Nl(ee,J),ee.return=O,O=ee;break e}r(O,D);break}else a(O,D);D=D.sibling}J.type===y?(ee=Rr(J.props.children,O.mode,ee,J.key),ee.return=O,O=ee):(ee=Ji(J.type,J.key,J.props,null,O.mode,ee),Nl(ee,J),ee.return=O,O=ee)}return x(O);case A:e:{for(Le=J.key;D!==null;){if(D.key===Le)if(D.tag===4&&D.stateNode.containerInfo===J.containerInfo&&D.stateNode.implementation===J.implementation){r(O,D.sibling),ee=d(D,J.children||[]),ee.return=O,O=ee;break e}else{r(O,D);break}else a(O,D);D=D.sibling}ee=kd(J,O.mode,ee),ee.return=O,O=ee}return x(O);case V:return J=Lr(J),at(O,D,J,ee)}if(ge(J))return Re(O,D,J,ee);if(le(J)){if(Le=le(J),typeof Le!="function")throw Error(o(150));return J=Le.call(J),Me(O,D,J,ee)}if(typeof J.then=="function")return at(O,D,Qi(J),ee);
vendor: 4,972 bytes, line 48
48if(J.$$typeof===F)return at(O,D,qi(O,J),ee);Ii(O,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,D!==null&&D.tag===6?(r(O,D.sibling),ee=d(D,J),ee.return=O,O=ee):(r(O,D),ee=bd(J,O.mode,ee),ee.return=O,O=ee),x(O)):r(O,D)}return function(O,D,J,ee){try{Sl=0;var Le=at(O,D,J,ee);return ys=null,Le}catch(we){if(we===js||we===Bi)throw we;var Ke=oa(29,we,null,O.mode);return Ke.lanes=ee,Ke.return=O,Ke}finally{}}}var Dr=If(!0),Kf=If(!1),Fn=!1;function Md(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Dd(e,a){e=e.updateQueue,a.updateQueue===e&&(a.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Jn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Gn(e,a,r){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,($e&2)!==0){var d=i.pending;return d===null?a.next=a:(a.next=d.next,d.next=a),i.pending=a,a=Fi(e),Lf(e,null,r),a}return Vi(e,i,a,r),Fi(e)}function Tl(e,a,r){if(a=a.updateQueue,a!==null&&(a=a.shared,(r&4194048)!==0)){var i=a.lanes;i&=e.pendingLanes,r|=i,a.lanes=r,Kt(e,r)}}function _d(e,a){var r=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,r===i)){var d=null,g=null;if(r=r.firstBaseUpdate,r!==null){do{var x={lane:r.lane,tag:r.tag,payload:r.payload,callback:null,next:null};g===null?d=g=x:g=g.next=x,r=r.next}while(r!==null);g===null?d=g=a:g=g.next=a}else d=g=a;r={baseState:i.baseState,firstBaseUpdate:d,lastBaseUpdate:g,shared:i.shared,callbacks:i.callbacks},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=a:e.next=a,r.lastBaseUpdate=a}var Od=!1;function Rl(){if(Od){var e=ks;if(e!==null)throw e}}function Al(e,a,r,i){Od=!1;var d=e.updateQueue;Fn=!1;var g=d.firstBaseUpdate,x=d.lastBaseUpdate,j=d.shared.pending;if(j!==null){d.shared.pending=null;var w=j,G=w.next;w.next=null,x===null?g=G:x.next=G,x=w;var Z=e.alternate;Z!==null&&(Z=Z.updateQueue,j=Z.lastBaseUpdate,j!==x&&(j===null?Z.firstBaseUpdate=G:j.next=G,Z.lastBaseUpdate=w))}if(g!==null){var te=d.baseState;x=0,Z=G=w=null,j=g;do{var B=j.lane&-536870913,Q=B!==j.lane;if(Q?(Ue&B)===B:(i&B)===B){B!==0&&B===bs&&(Od=!0),Z!==null&&(Z=Z.next={lane:0,tag:j.tag,payload:j.payload,callback:null,next:null});e:{var Re=e,Me=j;B=a;var at=r;switch(Me.tag){case 1:if(Re=Me.payload,typeof Re=="function"){te=Re.call(at,te,B);break e}te=Re;break e;case 3:Re.flags=Re.flags&-65537|128;case 0:if(Re=Me.payload,B=typeof Re=="function"?Re.call(at,te,B):Re,B==null)break e;te=v({},te,B);break e;case 2:Fn=!0}}B=j.callback,B!==null&&(e.flags|=64,Q&&(e.flags|=8192),Q=d.callbacks,Q===null?d.callbacks=[B]:Q.push(B))}else Q={lane:B,tag:j.tag,payload:j.payload,callback:j.callback,next:null},Z===null?(G=Z=Q,w=te):Z=Z.next=Q,x|=B;if(j=j.next,j===null){if(j=d.shared.pending,j===null)break;Q=j,j=Q.next,Q.next=null,d.lastBaseUpdate=Q,d.shared.pending=null}}while(!0);Z===null&&(w=te),d.baseState=w,d.firstBaseUpdate=G,d.lastBaseUpdate=Z,g===null&&(d.shared.lanes=0),Un|=x,e.lanes=x,e.memoizedState=te}}function Yf(e,a){if(typeof e!="function")throw Error(o(191,e));e.call(a)}function Xf(e,a){var r=e.callbacks;if(r!==null)for(e.callbacks=null,e=0;e<r.length;e++)Yf(r[e],a)}var Ss=H(null),Ki=H(0);function $f(e,a){e=yn,q(Ki,e),q(Ss,a),yn=e|a.baseLanes}function Cd(){q(Ki,yn),q(Ss,Ss.current)}function Vd(){yn=Ki.current,I(Ss),I(Ki)}var ca=H(null),Na=null;function zn(e){var a=e.alternate;q(pt,pt.current&1),q(ca,e),Na===null&&(a===null||Ss.current!==null||a.memoizedState!==null)&&(Na=e)}function Fd(e){q(pt,pt.current),q(ca,e),Na===null&&(Na=e)}function Zf(e){e.tag===22?(q(pt,pt.current),q(ca,e),Na===null&&(Na=e)):qn()}function qn(){q(pt,pt.current),q(ca,ca.current)}function da(e){I(ca),Na===e&&(Na=null),I(pt)}var pt=H(0);function Yi(e){for(var a=e;a!==null;){if(a.tag===13){var r=a.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||Bu(r)||Uu(r)))return a}else if(a.tag===19&&(a.memoizedProps.revealOrder==="forwards"||a.memoizedProps.revealOrder==="backwards"||a.memoizedProps.revealOrder==="unstable_legacy-backwards"||a.memoizedProps.revealOrder==="together")){if((a.flags&128)!==0)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===e)break;for(;a.sibling===null;){if(a.return===null||a.return===e)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}var fn=0,Ve=null,et=null,bt=null,Xi=!1,Ns=!1,_r=!1,$i=0,Hl=0,Ts=null,p0=0;function ut(){throw Error(o(321))}function Jd(e,a){if(a===null)return!1;for(var r=0;r<a.length&&r<e.length;r++)if(!ia(e[r],a[r]))return!1;return!0}function Gd(e,a,r,i,d,g){return fn=g,Ve=a,a.memoizedState=null,a.updateQueue=null,a.lanes=0,E.H=e===null||e.memoizedState===null?Op:tu,_r=!1,g=r(i,d),_r=!1,Ns&&(g=ep(a,r,i,d)),Wf(e),g}function Wf(e){E.H=Ll;var a=et!==null&&et.next!==null;if(fn=0,bt=et=Ve=null,Xi=!1,Hl=0,Ts=null,a)throw Error(o(300));
vendor: 18,736 bytes, line 48
48e===null||kt||(e=e.dependencies,e!==null&&zi(e)&&(kt=!0))}function ep(e,a,r,i){Ve=e;var d=0;do{if(Ns&&(Ts=null),Hl=0,Ns=!1,25<=d)throw Error(o(301));if(d+=1,bt=et=null,e.updateQueue!=null){var g=e.updateQueue;g.lastEffect=null,g.events=null,g.stores=null,g.memoCache!=null&&(g.memoCache.index=0)}E.H=Cp,g=a(r,i)}while(Ns);return g}function h0(){var e=E.H,a=e.useState()[0];return a=typeof a.then=="function"?wl(a):a,e=e.useState()[0],(et!==null?et.memoizedState:null)!==e&&(Ve.flags|=1024),a}function zd(){var e=$i!==0;return $i=0,e}function qd(e,a,r){a.updateQueue=e.updateQueue,a.flags&=-2053,e.lanes&=~r}function Pd(e){if(Xi){for(e=e.memoizedState;e!==null;){var a=e.queue;a!==null&&(a.pending=null),e=e.next}Xi=!1}fn=0,bt=et=Ve=null,Ns=!1,Hl=$i=0,Ts=null}function Bt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return bt===null?Ve.memoizedState=bt=e:bt=bt.next=e,bt}function ht(){if(et===null){var e=Ve.alternate;e=e!==null?e.memoizedState:null}else e=et.next;var a=bt===null?Ve.memoizedState:bt.next;if(a!==null)bt=a,et=e;else{if(e===null)throw Ve.alternate===null?Error(o(467)):Error(o(310));et=e,e={memoizedState:et.memoizedState,baseState:et.baseState,baseQueue:et.baseQueue,queue:et.queue,next:null},bt===null?Ve.memoizedState=bt=e:bt=bt.next=e}return bt}function Zi(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function wl(e){var a=Hl;return Hl+=1,Ts===null&&(Ts=[]),e=Bf(Ts,e,a),a=Ve,(bt===null?a.memoizedState:bt.next)===null&&(a=a.alternate,E.H=a===null||a.memoizedState===null?Op:tu),e}function Wi(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return wl(e);if(e.$$typeof===F)return Dt(e)}throw Error(o(438,String(e)))}function Bd(e){var a=null,r=Ve.updateQueue;if(r!==null&&(a=r.memoCache),a==null){var i=Ve.alternate;i!==null&&(i=i.updateQueue,i!==null&&(i=i.memoCache,i!=null&&(a={data:i.data.map(function(d){return d.slice()}),index:0})))}if(a==null&&(a={data:[],index:0}),r===null&&(r=Zi(),Ve.updateQueue=r),r.memoCache=a,r=a.data[a.index],r===void 0)for(r=a.data[a.index]=Array(e),i=0;i<e;i++)r[i]=W;return a.index++,r}function pn(e,a){return typeof a=="function"?a(e):a}function eo(e){var a=ht();return Ud(a,et,e)}function Ud(e,a,r){var i=e.queue;if(i===null)throw Error(o(311));i.lastRenderedReducer=r;var d=e.baseQueue,g=i.pending;if(g!==null){if(d!==null){var x=d.next;d.next=g.next,g.next=x}a.baseQueue=d=g,i.pending=null}if(g=e.baseState,d===null)e.memoizedState=g;else{a=d.next;var j=x=null,w=null,G=a,Z=!1;do{var te=G.lane&-536870913;if(te!==G.lane?(Ue&te)===te:(fn&te)===te){var B=G.revertLane;if(B===0)w!==null&&(w=w.next={lane:0,revertLane:0,gesture:null,action:G.action,hasEagerState:G.hasEagerState,eagerState:G.eagerState,next:null}),te===bs&&(Z=!0);else if((fn&B)===B){G=G.next,B===bs&&(Z=!0);continue}else te={lane:0,revertLane:G.revertLane,gesture:null,action:G.action,hasEagerState:G.hasEagerState,eagerState:G.eagerState,next:null},w===null?(j=w=te,x=g):w=w.next=te,Ve.lanes|=B,Un|=B;te=G.action,_r&&r(g,te),g=G.hasEagerState?G.eagerState:r(g,te)}else B={lane:te,revertLane:G.revertLane,gesture:G.gesture,action:G.action,hasEagerState:G.hasEagerState,eagerState:G.eagerState,next:null},w===null?(j=w=B,x=g):w=w.next=B,Ve.lanes|=te,Un|=te;G=G.next}while(G!==null&&G!==a);if(w===null?x=g:w.next=j,!ia(g,e.memoizedState)&&(kt=!0,Z&&(r=ks,r!==null)))throw r;e.memoizedState=g,e.baseState=x,e.baseQueue=w,i.lastRenderedState=g}return d===null&&(i.lanes=0),[e.memoizedState,i.dispatch]}function Qd(e){var a=ht(),r=a.queue;if(r===null)throw Error(o(311));r.lastRenderedReducer=e;var i=r.dispatch,d=r.pending,g=a.memoizedState;if(d!==null){r.pending=null;var x=d=d.next;do g=e(g,x.action),x=x.next;while(x!==d);ia(g,a.memoizedState)||(kt=!0),a.memoizedState=g,a.baseQueue===null&&(a.baseState=g),r.lastRenderedState=g}return[g,i]}function tp(e,a,r){var i=Ve,d=ht(),g=Ie;if(g){if(r===void 0)throw Error(o(407));r=r()}else r=a();var x=!ia((et||d).memoizedState,r);if(x&&(d.memoizedState=r,kt=!0),d=d.queue,Yd(rp.bind(null,i,d,e),[e]),d.getSnapshot!==a||x||bt!==null&&bt.memoizedState.tag&1){if(i.flags|=2048,Rs(9,{destroy:void 0},np.bind(null,i,d,r,a),null),st===null)throw Error(o(349));g||(fn&127)!==0||ap(i,a,r)}return r}function ap(e,a,r){e.flags|=16384,e={getSnapshot:a,value:r},a=Ve.updateQueue,a===null?(a=Zi(),Ve.updateQueue=a,a.stores=[e]):(r=a.stores,r===null?a.stores=[e]:r.push(e))}function np(e,a,r,i){a.value=r,a.getSnapshot=i,sp(a)&&lp(e)}function rp(e,a,r){return r(function(){sp(a)&&lp(e)})}function sp(e){var a=e.getSnapshot;e=e.value;try{var r=a();return!ia(e,r)}catch{return!0}}function lp(e){var a=Tr(e,2);a!==null&&aa(a,e,2)}function Id(e){var a=Bt();if(typeof e=="function"){var r=e;if(e=r(),_r){Ea(!0);try{r()}finally{Ea(!1)}}}return a.memoizedState=a.baseState=e,a.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:pn,lastRenderedState:e},a}function ip(e,a,r,i){return e.baseState=r,Ud(e,et,typeof i=="function"?i:pn)}function v0(e,a,r,i,d){if(no(e))throw Error(o(485));if(e=a.action,e!==null){var g={payload:d,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(x){g.listeners.push(x)}};E.T!==null?r(!0):g.isTransition=!1,i(g),r=a.pending,r===null?(g.next=a.pending=g,op(a,g)):(g.next=r.next,a.pending=r.next=g)}}function op(e,a){var r=a.action,i=a.payload,d=e.state;if(a.isTransition){var g=E.T,x={};E.T=x;try{var j=r(d,i),w=E.S;w!==null&&w(x,j),cp(e,a,j)}catch(G){Kd(e,a,G)}finally{g!==null&&x.types!==null&&(g.types=x.types),E.T=g}}else try{g=r(d,i),cp(e,a,g)}catch(G){Kd(e,a,G)}}function cp(e,a,r){r!==null&&typeof r=="object"&&typeof r.then=="function"?r.then(function(i){dp(e,a,i)},function(i){return Kd(e,a,i)}):dp(e,a,r)}function dp(e,a,r){a.status="fulfilled",a.value=r,up(a),e.state=r,a=e.pending,a!==null&&(r=a.next,r===a?e.pending=null:(r=r.next,a.next=r,op(e,r)))}function Kd(e,a,r){var i=e.pending;if(e.pending=null,i!==null){i=i.next;do a.status="rejected",a.reason=r,up(a),a=a.next;while(a!==i)}e.action=null}function up(e){e=e.listeners;for(var a=0;a<e.length;a++)(0,e[a])()}function gp(e,a){return a}function mp(e,a){if(Ie){var r=st.formState;if(r!==null){e:{var i=Ve;if(Ie){if(lt){t:{for(var d=lt,g=Sa;d.nodeType!==8;){if(!g){d=null;break t}if(d=Ta(d.nextSibling),d===null){d=null;break t}}g=d.data,d=g==="F!"||g==="F"?d:null}if(d){lt=Ta(d.nextSibling),i=d.data==="F!";break e}}Cn(i)}i=!1}i&&(a=r[0])}}return r=Bt(),r.memoizedState=r.baseState=a,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:gp,lastRenderedState:a},r.queue=i,r=Mp.bind(null,Ve,i),i.dispatch=r,i=Id(!1),g=eu.bind(null,Ve,!1,i.queue),i=Bt(),d={state:a,dispatch:null,action:e,pending:null},i.queue=d,r=v0.bind(null,Ve,d,g,r),d.dispatch=r,i.memoizedState=e,[a,r,!1]}function fp(e){var a=ht();return pp(a,et,e)}function pp(e,a,r){if(a=Ud(e,a,gp)[0],e=eo(pn)[0],typeof a=="object"&&a!==null&&typeof a.then=="function")try{var i=wl(a)}catch(x){throw x===js?Bi:x}else i=a;a=ht();var d=a.queue,g=d.dispatch;return r!==a.memoizedState&&(Ve.flags|=2048,Rs(9,{destroy:void 0},x0.bind(null,d,r),null)),[i,g,e]}function x0(e,a){e.action=a}function hp(e){var a=ht(),r=et;if(r!==null)return pp(a,r,e);ht(),a=a.memoizedState,r=ht();var i=r.queue.dispatch;return r.memoizedState=e,[a,i,!1]}function Rs(e,a,r,i){return e={tag:e,create:r,deps:i,inst:a,next:null},a=Ve.updateQueue,a===null&&(a=Zi(),Ve.updateQueue=a),r=a.lastEffect,r===null?a.lastEffect=e.next=e:(i=r.next,r.next=e,e.next=i,a.lastEffect=e),e}function vp(){return ht().memoizedState}function to(e,a,r,i){var d=Bt();Ve.flags|=e,d.memoizedState=Rs(1|a,{destroy:void 0},r,i===void 0?null:i)}function ao(e,a,r,i){var d=ht();i=i===void 0?null:i;var g=d.memoizedState.inst;et!==null&&i!==null&&Jd(i,et.memoizedState.deps)?d.memoizedState=Rs(a,g,r,i):(Ve.flags|=e,d.memoizedState=Rs(1|a,g,r,i))}function xp(e,a){to(8390656,8,e,a)}function Yd(e,a){ao(2048,8,e,a)}function b0(e){Ve.flags|=4;var a=Ve.updateQueue;if(a===null)a=Zi(),Ve.updateQueue=a,a.events=[e];else{var r=a.events;r===null?a.events=[e]:r.push(e)}}function bp(e){var a=ht().memoizedState;return b0({ref:a,nextImpl:e}),function(){if(($e&2)!==0)throw Error(o(440));return a.impl.apply(void 0,arguments)}}function kp(e,a){return ao(4,2,e,a)}function jp(e,a){return ao(4,4,e,a)}function yp(e,a){if(typeof a=="function"){e=e();var r=a(e);return function(){typeof r=="function"?r():a(null)}}if(a!=null)return e=e(),a.current=e,function(){a.current=null}}function Sp(e,a,r){r=r!=null?r.concat([e]):null,ao(4,4,yp.bind(null,a,e),r)}function Xd(){}function Np(e,a){var r=ht();a=a===void 0?null:a;var i=r.memoizedState;return a!==null&&Jd(a,i[1])?i[0]:(r.memoizedState=[e,a],e)}function Tp(e,a){var r=ht();a=a===void 0?null:a;var i=r.memoizedState;if(a!==null&&Jd(a,i[1]))return i[0];if(i=e(),_r){Ea(!0);try{e()}finally{Ea(!1)}}return r.memoizedState=[i,a],i}function $d(e,a,r){return r===void 0||(fn&1073741824)!==0&&(Ue&261930)===0?e.memoizedState=a:(e.memoizedState=r,e=Rh(),Ve.lanes|=e,Un|=e,r)}function Rp(e,a,r,i){return ia(r,a)?r:Ss.current!==null?(e=$d(e,r,i),ia(e,a)||(kt=!0),e):(fn&42)===0||(fn&1073741824)!==0&&(Ue&261930)===0?(kt=!0,e.memoizedState=r):(e=Rh(),Ve.lanes|=e,Un|=e,a)}function Ap(e,a,r,i,d){var g=z.p;z.p=g!==0&&8>g?g:8;var x=E.T,j={};E.T=j,eu(e,!1,a,r);try{var w=d(),G=E.S;if(G!==null&&G(j,w),w!==null&&typeof w=="object"&&typeof w.then=="function"){var Z=f0(w,i);El(e,a,Z,ma(e))}else El(e,a,i,ma(e))}catch(te){El(e,a,{then:function(){},status:"rejected",reason:te},ma())}finally{z.p=g,x!==null&&j.types!==null&&(x.types=j.types),E.T=x}}function k0(){}function Zd(e,a,r,i){if(e.tag!==5)throw Error(o(476));var d=Hp(e).queue;Ap(e,d,a,C,r===null?k0:function(){return wp(e),r(i)})}function Hp(e){var a=e.memoizedState;if(a!==null)return a;a={memoizedState:C,baseState:C,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pn,lastRenderedState:C},next:null};var r={};return a.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pn,lastRenderedState:r},next:null},e.memoizedState=a,e=e.alternate,e!==null&&(e.memoizedState=a),a}function wp(e){var a=Hp(e);a.next===null&&(a=e.alternate.memoizedState),El(e,a.next.queue,{},ma())}function Wd(){return Dt(Il)}function Ep(){return ht().memoizedState}function Lp(){return ht().memoizedState}function j0(e){for(var a=e.return;a!==null;){switch(a.tag){case 24:case 3:var r=ma();e=Jn(r);var i=Gn(a,e,r);i!==null&&(aa(i,a,r),Tl(i,a,r)),a={cache:Hd()},e.payload=a;return}a=a.return}}function y0(e,a,r){var i=ma();r={lane:i,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},no(e)?Dp(a,r):(r=vd(e,a,r,i),r!==null&&(aa(r,e,i),_p(r,a,i)))}function Mp(e,a,r){var i=ma();El(e,a,r,i)}function El(e,a,r,i){var d={lane:i,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(no(e))Dp(a,d);else{var g=e.alternate;if(e.lanes===0&&(g===null||g.lanes===0)&&(g=a.lastRenderedReducer,g!==null))try{var x=a.lastRenderedState,j=g(x,r);if(d.hasEagerState=!0,d.eagerState=j,ia(j,x))return Vi(e,a,d,0),st===null&&Ci(),!1}catch{}finally{}if(r=vd(e,a,d,i),r!==null)return aa(r,e,i),_p(r,a,i),!0}return!1}function eu(e,a,r,i){if(i={lane:2,revertLane:Mu(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},no(e)){if(a)throw Error(o(479))}else a=vd(e,r,i,2),a!==null&&aa(a,e,2)}function no(e){var a=e.alternate;return e===Ve||a!==null&&a===Ve}function Dp(e,a){Ns=Xi=!0;var r=e.pending;r===null?a.next=a:(a.next=r.next,r.next=a),e.pending=a}function _p(e,a,r){if((r&4194048)!==0){var i=a.lanes;i&=e.pendingLanes,r|=i,a.lanes=r,Kt(e,r)}}var Ll={readContext:Dt,use:Wi,useCallback:ut,useContext:ut,useEffect:ut,useImperativeHandle:ut,useLayoutEffect:ut,useInsertionEffect:ut,useMemo:ut,useReducer:ut,useRef:ut,useState:ut,useDebugValue:ut,useDeferredValue:ut,useTransition:ut,useSyncExternalStore:ut,useId:ut,useHostTransitionStatus:ut,useFormState:ut,useActionState:ut,useOptimistic:ut,useMemoCache:ut,useCacheRefresh:ut};Ll.useEffectEvent=ut;var Op={readContext:Dt,use:Wi,useCallback:function(e,a){return Bt().memoizedState=[e,a===void 0?null:a],e},useContext:Dt,useEffect:xp,useImperativeHandle:function(e,a,r){r=r!=null?r.concat([e]):null,to(4194308,4,yp.bind(null,a,e),r)},useLayoutEffect:function(e,a){return to(4194308,4,e,a)},useInsertionEffect:function(e,a){to(4,2,e,a)},useMemo:function(e,a){var r=Bt();a=a===void 0?null:a;var i=e();if(_r){Ea(!0);try{e()}finally{Ea(!1)}}return r.memoizedState=[i,a],i},useReducer:function(e,a,r){var i=Bt();if(r!==void 0){var d=r(a);if(_r){Ea(!0);try{r(a)}finally{Ea(!1)}}}else d=a;return i.memoizedState=i.baseState=d,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:d},i.queue=e,e=e.dispatch=y0.bind(null,Ve,e),[i.memoizedState,e]},useRef:function(e){var a=Bt();return e={current:e},a.memoizedState=e},useState:function(e){e=Id(e);var a=e.queue,r=Mp.bind(null,Ve,a);return a.dispatch=r,[e.memoizedState,r]},useDebugValue:Xd,useDeferredValue:function(e,a){var r=Bt();return $d(r,e,a)},useTransition:function(){var e=Id(!1);return e=Ap.bind(null,Ve,e.queue,!0,!1),Bt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,a,r){var i=Ve,d=Bt();if(Ie){if(r===void 0)throw Error(o(407));r=r()}else{if(r=a(),st===null)throw Error(o(349));(Ue&127)!==0||ap(i,a,r)}d.memoizedState=r;var g={value:r,getSnapshot:a};return d.queue=g,xp(rp.bind(null,i,g,e),[e]),i.flags|=2048,Rs(9,{destroy:void 0},np.bind(null,i,g,r,a),null),r},useId:function(){var e=Bt(),a=st.identifierPrefix;if(Ie){var r=Ba,i=Pa;r=(i&~(1<<32-Vt(i)-1)).toString(32)+r,a="_"+a+"R_"+r,r=$i++,0<r&&(a+="H"+r.toString(32)),a+="_"}else r=p0++,a="_"+a+"r_"+r.toString(32)+"_";return e.memoizedState=a},useHostTransitionStatus:Wd,useFormState:mp,useActionState:mp,useOptimistic:function(e){var a=Bt();a.memoizedState=a.baseState=e;var r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return a.queue=r,a=eu.bind(null,Ve,!0,r),r.dispatch=a,[e,a]},useMemoCache:Bd,useCacheRefresh:function(){return Bt().memoizedState=j0.bind(null,Ve)},useEffectEvent:function(e){var a=Bt(),r={impl:e};return a.memoizedState=r,function(){if(($e&2)!==0)throw Error(o(440));return r.impl.apply(void 0,arguments)}}},tu={readContext:Dt,use:Wi,useCallback:Np,useContext:Dt,useEffect:Yd,useImperativeHandle:Sp,useInsertionEffect:kp,useLayoutEffect:jp,useMemo:Tp,useReducer:eo,useRef:vp,useState:function(){return eo(pn)},useDebugValue:Xd,useDeferredValue:function(e,a){var r=ht();return Rp(r,et.memoizedState,e,a)},useTransition:function(){var e=eo(pn)[0],a=ht().memoizedState;return[typeof e=="boolean"?e:wl(e),a]},useSyncExternalStore:tp,useId:Ep,useHostTransitionStatus:Wd,useFormState:fp,useActionState:fp,useOptimistic:function(e,a){var r=ht();return ip(r,et,e,a)},useMemoCache:Bd,useCacheRefresh:Lp};tu.useEffectEvent=bp;var Cp={readContext:Dt,use:Wi,useCallback:Np,useContext:Dt,useEffect:Yd,useImperativeHandle:Sp,useInsertionEffect:kp,useLayoutEffect:jp,useMemo:Tp,useReducer:Qd,useRef:vp,useState:function(){return Qd(pn)},useDebugValue:Xd,useDeferredValue:function(e,a){var r=ht();return et===null?$d(r,e,a):Rp(r,et.memoizedState,e,a)},useTransition:function(){var e=Qd(pn)[0],a=ht().memoizedState;return[typeof e=="boolean"?e:wl(e),a]},useSyncExternalStore:tp,useId:Ep,useHostTransitionStatus:Wd,useFormState:hp,useActionState:hp,useOptimistic:function(e,a){var r=ht();return et!==null?ip(r,et,e,a):(r.baseState=e,[e,r.queue.dispatch])},useMemoCache:Bd,useCacheRefresh:Lp};Cp.useEffectEvent=bp;function au(e,a,r,i){a=e.memoizedState,r=r(i,a),r=r==null?a:v({},a,r),e.memoizedState=r,e.lanes===0&&(e.updateQueue.baseState=r)}var nu={enqueueSetState:function(e,a,r){e=e._reactInternals;var i=ma(),d=Jn(i);d.payload=a,r!=null&&(d.callback=r),a=Gn(e,d,i),a!==null&&(aa(a,e,i),Tl(a,e,i))},enqueueReplaceState:function(e,a,r){e=e._reactInternals;var i=ma(),d=Jn(i);d.tag=1,d.payload=a,r!=null&&(d.callback=r),a=Gn(e,d,i),a!==null&&(aa(a,e,i),Tl(a,e,i))},enqueueForceUpdate:function(e,a){e=e._reactInternals;var r=ma(),i=Jn(r);i.tag=2,a!=null&&(i.callback=a),a=Gn(e,i,r),a!==null&&(aa(a,e,r),Tl(a,e,r))}};function Vp(e,a,r,i,d,g,x){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(i,g,x):a.prototype&&a.prototype.isPureReactComponent?!vl(r,i)||!vl(d,g):!0}function Fp(e,a,r,i){e=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(r,i),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(r,i),a.state!==e&&nu.enqueueReplaceState(a,a.state,null)}function Or(e,a){var r=a;if("ref"in a){r={};for(var i in a)i!=="ref"&&(r[i]=a[i])}if(e=e.defaultProps){r===a&&(r=v({},r));for(var d in e)r[d]===void 0&&(r[d]=e[d])}return r}function Jp(e){Oi(e)}function Gp(e){console.error(e)}function zp(e){Oi(e)}function ro(e,a){try{var r=e.onUncaughtError;r(a.value,{componentStack:a.stack})}catch(i){setTimeout(function(){throw i})}}function qp(e,a,r){try{var i=e.onCaughtError;i(r.value,{componentStack:r.stack,errorBoundary:a.tag===1?a.stateNode:null})}catch(d){setTimeout(function(){throw d})}}function ru(e,a,r){return r=Jn(r),r.tag=3,r.payload={element:null},r.callback=function(){ro(e,a)},r}function Pp(e){return e=Jn(e),e.tag=3,e}function Bp(e,a,r,i){var d=r.type.getDerivedStateFromError;if(typeof d=="function"){var g=i.value;e.payload=function(){return d(g)},e.callback=function(){qp(a,r,i)}}var x=r.stateNode;x!==null&&typeof x.componentDidCatch=="function"&&(e.callback=function(){qp(a,r,i),typeof d!="function"&&(Qn===null?Qn=new Set([this]):Qn.add(this));var j=i.stack;this.componentDidCatch(i.value,{componentStack:j!==null?j:""})})}function S0(e,a,r,i,d){if(r.flags|=32768,i!==null&&typeof i=="object"&&typeof i.then=="function"){if(a=r.alternate,a!==null&&xs(a,r,d,!0),r=ca.current,r!==null){switch(r.tag){case 31:case 13:return Na===null?vo():r.alternate===null&>===0&&(gt=3),r.flags&=-257,r.flags|=65536,r.lanes=d,i===Ui?r.flags|=16384:(a=r.updateQueue,a===null?r.updateQueue=new Set([i]):a.add(i),wu(e,i,d)),!1;case 22:return r.flags|=65536,i===Ui?r.flags|=16384:(a=r.updateQueue,a===null?(a={transitions:null,markerInstances:null,retryQueue:new Set([i])},r.updateQueue=a):(r=a.retryQueue,r===null?a.retryQueue=new Set([i]):r.add(i)),wu(e,i,d)),!1}throw Error(o(435,r.tag))}return wu(e,i,d),vo(),!1}if(Ie)return a=ca.current,a!==null?((a.flags&65536)===0&&(a.flags|=256),a.flags|=65536,a.lanes=d,i!==Sd&&(e=Error(o(422),{cause:i}),kl(ka(e,r)))):(i!==Sd&&(a=Error(o(423),{cause:i}),kl(ka(a,r))),e=e.current.alternate,e.flags|=65536,d&=-d,e.lanes|=d,i=ka(i,r),d=ru(e.stateNode,i,d),_d(e,d),gt!==4&&(gt=2)),!1;var g=Error(o(520),{cause:i});if(g=ka(g,r),Jl===null?Jl=[g]:Jl.push(g),gt!==4&&(gt=2),a===null)return!0;
vendor: 10,584 bytes, line 48
48i=ka(i,r),r=a;do{switch(r.tag){case 3:return r.flags|=65536,e=d&-d,r.lanes|=e,e=ru(r.stateNode,i,e),_d(r,e),!1;case 1:if(a=r.type,g=r.stateNode,(r.flags&128)===0&&(typeof a.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(Qn===null||!Qn.has(g))))return r.flags|=65536,d&=-d,r.lanes|=d,d=Pp(d),Bp(d,e,r,i),_d(r,d),!1}r=r.return}while(r!==null);return!1}var su=Error(o(461)),kt=!1;function _t(e,a,r,i){a.child=e===null?Kf(a,null,r,i):Dr(a,e.child,r,i)}function Up(e,a,r,i,d){r=r.render;var g=a.ref;if("ref"in i){var x={};for(var j in i)j!=="ref"&&(x[j]=i[j])}else x=i;return wr(a),i=Gd(e,a,r,x,g,d),j=zd(),e!==null&&!kt?(qd(e,a,d),hn(e,a,d)):(Ie&&j&&jd(a),a.flags|=1,_t(e,a,i,d),a.child)}function Qp(e,a,r,i,d){if(e===null){var g=r.type;return typeof g=="function"&&!xd(g)&&g.defaultProps===void 0&&r.compare===null?(a.tag=15,a.type=g,Ip(e,a,g,i,d)):(e=Ji(r.type,null,i,a,a.mode,d),e.ref=a.ref,e.return=a,a.child=e)}if(g=e.child,!mu(e,d)){var x=g.memoizedProps;if(r=r.compare,r=r!==null?r:vl,r(x,i)&&e.ref===a.ref)return hn(e,a,d)}return a.flags|=1,e=dn(g,i),e.ref=a.ref,e.return=a,a.child=e}function Ip(e,a,r,i,d){if(e!==null){var g=e.memoizedProps;if(vl(g,i)&&e.ref===a.ref)if(kt=!1,a.pendingProps=i=g,mu(e,d))(e.flags&131072)!==0&&(kt=!0);else return a.lanes=e.lanes,hn(e,a,d)}return lu(e,a,r,i,d)}function Kp(e,a,r,i){var d=i.children,g=e!==null?e.memoizedState:null;if(e===null&&a.stateNode===null&&(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),i.mode==="hidden"){if((a.flags&128)!==0){if(g=g!==null?g.baseLanes|r:r,e!==null){for(i=a.child=e.child,d=0;i!==null;)d=d|i.lanes|i.childLanes,i=i.sibling;i=d&~g}else i=0,a.child=null;return Yp(e,a,g,r,i)}if((r&536870912)!==0)a.memoizedState={baseLanes:0,cachePool:null},e!==null&&Pi(a,g!==null?g.cachePool:null),g!==null?$f(a,g):Cd(),Zf(a);else return i=a.lanes=536870912,Yp(e,a,g!==null?g.baseLanes|r:r,r,i)}else g!==null?(Pi(a,g.cachePool),$f(a,g),qn(),a.memoizedState=null):(e!==null&&Pi(a,null),Cd(),qn());return _t(e,a,d,r),a.child}function Ml(e,a){return e!==null&&e.tag===22||a.stateNode!==null||(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.sibling}function Yp(e,a,r,i,d){var g=Ed();return g=g===null?null:{parent:xt._currentValue,pool:g},a.memoizedState={baseLanes:r,cachePool:g},e!==null&&Pi(a,null),Cd(),Zf(a),e!==null&&xs(e,a,i,!0),a.childLanes=d,null}function so(e,a){return a=io({mode:a.mode,children:a.children},e.mode),a.ref=e.ref,e.child=a,a.return=e,a}function Xp(e,a,r){return Dr(a,e.child,null,r),e=so(a,a.pendingProps),e.flags|=2,da(a),a.memoizedState=null,e}function N0(e,a,r){var i=a.pendingProps,d=(a.flags&128)!==0;if(a.flags&=-129,e===null){if(Ie){if(i.mode==="hidden")return e=so(a,i),a.lanes=536870912,Ml(null,e);if(Fd(a),(e=lt)?(e=ov(e,Sa),e=e!==null&&e.data==="&"?e:null,e!==null&&(a.memoizedState={dehydrated:e,treeContext:_n!==null?{id:Pa,overflow:Ba}:null,retryLane:536870912,hydrationErrors:null},r=Df(e),r.return=a,a.child=r,Mt=a,lt=null)):e=null,e===null)throw Cn(a);return a.lanes=536870912,null}return so(a,i)}var g=e.memoizedState;if(g!==null){var x=g.dehydrated;if(Fd(a),d)if(a.flags&256)a.flags&=-257,a=Xp(e,a,r);else if(a.memoizedState!==null)a.child=e.child,a.flags|=128,a=null;else throw Error(o(558));else if(kt||xs(e,a,r,!1),d=(r&e.childLanes)!==0,kt||d){if(i=st,i!==null&&(x=Yt(i,r),x!==0&&x!==g.retryLane))throw g.retryLane=x,Tr(e,x),aa(i,e,x),su;vo(),a=Xp(e,a,r)}else e=g.treeContext,lt=Ta(x.nextSibling),Mt=a,Ie=!0,On=null,Sa=!1,e!==null&&Cf(a,e),a=so(a,i),a.flags|=4096;return a}return e=dn(e.child,{mode:i.mode,children:i.children}),e.ref=a.ref,a.child=e,e.return=a,e}function lo(e,a){var r=a.ref;if(r===null)e!==null&&e.ref!==null&&(a.flags|=4194816);else{if(typeof r!="function"&&typeof r!="object")throw Error(o(284));(e===null||e.ref!==r)&&(a.flags|=4194816)}}function lu(e,a,r,i,d){return wr(a),r=Gd(e,a,r,i,void 0,d),i=zd(),e!==null&&!kt?(qd(e,a,d),hn(e,a,d)):(Ie&&i&&jd(a),a.flags|=1,_t(e,a,r,d),a.child)}function $p(e,a,r,i,d,g){return wr(a),a.updateQueue=null,r=ep(a,i,r,d),Wf(e),i=zd(),e!==null&&!kt?(qd(e,a,g),hn(e,a,g)):(Ie&&i&&jd(a),a.flags|=1,_t(e,a,r,g),a.child)}function Zp(e,a,r,i,d){if(wr(a),a.stateNode===null){var g=fs,x=r.contextType;typeof x=="object"&&x!==null&&(g=Dt(x)),g=new r(i,g),a.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,g.updater=nu,a.stateNode=g,g._reactInternals=a,g=a.stateNode,g.props=i,g.state=a.memoizedState,g.refs={},Md(a),x=r.contextType,g.context=typeof x=="object"&&x!==null?Dt(x):fs,g.state=a.memoizedState,x=r.getDerivedStateFromProps,typeof x=="function"&&(au(a,r,x,i),g.state=a.memoizedState),typeof r.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(x=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),x!==g.state&&nu.enqueueReplaceState(g,g.state,null),Al(a,i,g,d),Rl(),g.state=a.memoizedState),typeof g.componentDidMount=="function"&&(a.flags|=4194308),i=!0}else if(e===null){g=a.stateNode;var j=a.memoizedProps,w=Or(r,j);g.props=w;var G=g.context,Z=r.contextType;x=fs,typeof Z=="object"&&Z!==null&&(x=Dt(Z));var te=r.getDerivedStateFromProps;Z=typeof te=="function"||typeof g.getSnapshotBeforeUpdate=="function",j=a.pendingProps!==j,Z||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(j||G!==x)&&Fp(a,g,i,x),Fn=!1;var B=a.memoizedState;g.state=B,Al(a,i,g,d),Rl(),G=a.memoizedState,j||B!==G||Fn?(typeof te=="function"&&(au(a,r,te,i),G=a.memoizedState),(w=Fn||Vp(a,r,w,i,B,G,x))?(Z||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount()),typeof g.componentDidMount=="function"&&(a.flags|=4194308)):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=i,a.memoizedState=G),g.props=i,g.state=G,g.context=x,i=w):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),i=!1)}else{g=a.stateNode,Dd(e,a),x=a.memoizedProps,Z=Or(r,x),g.props=Z,te=a.pendingProps,B=g.context,G=r.contextType,w=fs,typeof G=="object"&&G!==null&&(w=Dt(G)),j=r.getDerivedStateFromProps,(G=typeof j=="function"||typeof g.getSnapshotBeforeUpdate=="function")||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(x!==te||B!==w)&&Fp(a,g,i,w),Fn=!1,B=a.memoizedState,g.state=B,Al(a,i,g,d),Rl();var Q=a.memoizedState;x!==te||B!==Q||Fn||e!==null&&e.dependencies!==null&&zi(e.dependencies)?(typeof j=="function"&&(au(a,r,j,i),Q=a.memoizedState),(Z=Fn||Vp(a,r,Z,i,B,Q,w)||e!==null&&e.dependencies!==null&&zi(e.dependencies))?(G||typeof g.UNSAFE_componentWillUpdate!="function"&&typeof g.componentWillUpdate!="function"||(typeof g.componentWillUpdate=="function"&&g.componentWillUpdate(i,Q,w),typeof g.UNSAFE_componentWillUpdate=="function"&&g.UNSAFE_componentWillUpdate(i,Q,w)),typeof g.componentDidUpdate=="function"&&(a.flags|=4),typeof g.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof g.componentDidUpdate!="function"||x===e.memoizedProps&&B===e.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&B===e.memoizedState||(a.flags|=1024),a.memoizedProps=i,a.memoizedState=Q),g.props=i,g.state=Q,g.context=w,i=Z):(typeof g.componentDidUpdate!="function"||x===e.memoizedProps&&B===e.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&B===e.memoizedState||(a.flags|=1024),i=!1)}return g=i,lo(e,a),i=(a.flags&128)!==0,g||i?(g=a.stateNode,r=i&&typeof r.getDerivedStateFromError!="function"?null:g.render(),a.flags|=1,e!==null&&i?(a.child=Dr(a,e.child,null,d),a.child=Dr(a,null,r,d)):_t(e,a,r,d),a.memoizedState=g.state,e=a.child):e=hn(e,a,d),e}function Wp(e,a,r,i){return Ar(),a.flags|=256,_t(e,a,r,i),a.child}var iu={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function ou(e){return{baseLanes:e,cachePool:qf()}}function cu(e,a,r){return e=e!==null?e.childLanes&~r:0,a&&(e|=ga),e}function eh(e,a,r){var i=a.pendingProps,d=!1,g=(a.flags&128)!==0,x;if((x=g)||(x=e!==null&&e.memoizedState===null?!1:(pt.current&2)!==0),x&&(d=!0,a.flags&=-129),x=(a.flags&32)!==0,a.flags&=-33,e===null){if(Ie){if(d?zn(a):qn(),(e=lt)?(e=ov(e,Sa),e=e!==null&&e.data!=="&"?e:null,e!==null&&(a.memoizedState={dehydrated:e,treeContext:_n!==null?{id:Pa,overflow:Ba}:null,retryLane:536870912,hydrationErrors:null},r=Df(e),r.return=a,a.child=r,Mt=a,lt=null)):e=null,e===null)throw Cn(a);return Uu(e)?a.lanes=32:a.lanes=536870912,null}var j=i.children;return i=i.fallback,d?(qn(),d=a.mode,j=io({mode:"hidden",children:j},d),i=Rr(i,d,r,null),j.return=a,i.return=a,j.sibling=i,a.child=j,i=a.child,i.memoizedState=ou(r),i.childLanes=cu(e,x,r),a.memoizedState=iu,Ml(null,i)):(zn(a),du(a,j))}var w=e.memoizedState;if(w!==null&&(j=w.dehydrated,j!==null)){if(g)a.flags&256?(zn(a),a.flags&=-257,a=uu(e,a,r)):a.memoizedState!==null?(qn(),a.child=e.child,a.flags|=128,a=null):(qn(),j=i.fallback,d=a.mode,i=io({mode:"visible",children:i.children},d),j=Rr(j,d,r,null),j.flags|=2,i.return=a,j.return=a,i.sibling=j,a.child=i,Dr(a,e.child,null,r),i=a.child,i.memoizedState=ou(r),i.childLanes=cu(e,x,r),a.memoizedState=iu,a=Ml(null,i));else if(zn(a),Uu(j)){if(x=j.nextSibling&&j.nextSibling.dataset,x)var G=x.dgst;x=G,i=Error(o(419)),i.stack="",i.digest=x,kl({value:i,source:null,stack:null}),a=uu(e,a,r)}else if(kt||xs(e,a,r,!1),x=(r&e.childLanes)!==0,kt||x){if(x=st,x!==null&&(i=Yt(x,r),i!==0&&i!==w.retryLane))throw w.retryLane=i,Tr(e,i),aa(x,e,i),su;Bu(j)||vo(),a=uu(e,a,r)}else Bu(j)?(a.flags|=192,a.child=e.child,a=null):(e=w.treeContext,lt=Ta(j.nextSibling),Mt=a,Ie=!0,On=null,Sa=!1,e!==null&&Cf(a,e),a=du(a,i.children),a.flags|=4096);return a}return d?(qn(),j=i.fallback,d=a.mode,w=e.child,G=w.sibling,i=dn(w,{mode:"hidden",children:i.children}),i.subtreeFlags=w.subtreeFlags&65011712,G!==null?j=dn(G,j):(j=Rr(j,d,r,null),j.flags|=2),j.return=a,i.return=a,i.sibling=j,a.child=i,Ml(null,i),i=a.child,j=e.child.memoizedState,j===null?j=ou(r):(d=j.cachePool,d!==null?(w=xt._currentValue,d=d.parent!==w?{parent:w,pool:w}:d):d=qf(),j={baseLanes:j.baseLanes|r,cachePool:d}),i.memoizedState=j,i.childLanes=cu(e,x,r),a.memoizedState=iu,Ml(e.child,i)):(zn(a),r=e.child,e=r.sibling,r=dn(r,{mode:"visible",children:i.children}
vendor: 8,528 bytes, line 48
48),r.return=a,r.sibling=null,e!==null&&(x=a.deletions,x===null?(a.deletions=[e],a.flags|=16):x.push(e)),a.child=r,a.memoizedState=null,r)}function du(e,a){return a=io({mode:"visible",children:a},e.mode),a.return=e,e.child=a}function io(e,a){return e=oa(22,e,null,a),e.lanes=0,e}function uu(e,a,r){return Dr(a,e.child,null,r),e=du(a,a.pendingProps.children),e.flags|=2,a.memoizedState=null,e}function th(e,a,r){e.lanes|=a;var i=e.alternate;i!==null&&(i.lanes|=a),Rd(e.return,a,r)}function gu(e,a,r,i,d,g){var x=e.memoizedState;x===null?e.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:i,tail:r,tailMode:d,treeForkCount:g}:(x.isBackwards=a,x.rendering=null,x.renderingStartTime=0,x.last=i,x.tail=r,x.tailMode=d,x.treeForkCount=g)}function ah(e,a,r){var i=a.pendingProps,d=i.revealOrder,g=i.tail;i=i.children;var x=pt.current,j=(x&2)!==0;if(j?(x=x&1|2,a.flags|=128):x&=1,q(pt,x),_t(e,a,i,r),i=Ie?bl:0,!j&&e!==null&&(e.flags&128)!==0)e:for(e=a.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&th(e,r,a);else if(e.tag===19)th(e,r,a);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===a)break e;for(;e.sibling===null;){if(e.return===null||e.return===a)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(d){case"forwards":for(r=a.child,d=null;r!==null;)e=r.alternate,e!==null&&Yi(e)===null&&(d=r),r=r.sibling;r=d,r===null?(d=a.child,a.child=null):(d=r.sibling,r.sibling=null),gu(a,!1,d,r,g,i);break;case"backwards":case"unstable_legacy-backwards":for(r=null,d=a.child,a.child=null;d!==null;){if(e=d.alternate,e!==null&&Yi(e)===null){a.child=d;break}e=d.sibling,d.sibling=r,r=d,d=e}gu(a,!0,r,null,g,i);break;case"together":gu(a,!1,null,null,void 0,i);break;default:a.memoizedState=null}return a.child}function hn(e,a,r){if(e!==null&&(a.dependencies=e.dependencies),Un|=a.lanes,(r&a.childLanes)===0)if(e!==null){if(xs(e,a,r,!1),(r&a.childLanes)===0)return null}else return null;if(e!==null&&a.child!==e.child)throw Error(o(153));if(a.child!==null){for(e=a.child,r=dn(e,e.pendingProps),a.child=r,r.return=a;e.sibling!==null;)e=e.sibling,r=r.sibling=dn(e,e.pendingProps),r.return=a;r.sibling=null}return a.child}function mu(e,a){return(e.lanes&a)!==0?!0:(e=e.dependencies,!!(e!==null&&zi(e)))}function T0(e,a,r){switch(a.tag){case 3:Se(a,a.stateNode.containerInfo),Vn(a,xt,e.memoizedState.cache),Ar();break;case 27:case 5:Fe(a);break;case 4:Se(a,a.stateNode.containerInfo);break;case 10:Vn(a,a.type,a.memoizedProps.value);break;case 31:if(a.memoizedState!==null)return a.flags|=128,Fd(a),null;break;case 13:var i=a.memoizedState;if(i!==null)return i.dehydrated!==null?(zn(a),a.flags|=128,null):(r&a.child.childLanes)!==0?eh(e,a,r):(zn(a),e=hn(e,a,r),e!==null?e.sibling:null);zn(a);break;case 19:var d=(e.flags&128)!==0;if(i=(r&a.childLanes)!==0,i||(xs(e,a,r,!1),i=(r&a.childLanes)!==0),d){if(i)return ah(e,a,r);a.flags|=128}if(d=a.memoizedState,d!==null&&(d.rendering=null,d.tail=null,d.lastEffect=null),q(pt,pt.current),i)break;return null;case 22:return a.lanes=0,Kp(e,a,r,a.pendingProps);case 24:Vn(a,xt,e.memoizedState.cache)}return hn(e,a,r)}function nh(e,a,r){if(e!==null)if(e.memoizedProps!==a.pendingProps)kt=!0;else{if(!mu(e,r)&&(a.flags&128)===0)return kt=!1,T0(e,a,r);kt=(e.flags&131072)!==0}else kt=!1,Ie&&(a.flags&1048576)!==0&&Of(a,bl,a.index);switch(a.lanes=0,a.tag){case 16:e:{var i=a.pendingProps;if(e=Lr(a.elementType),a.type=e,typeof e=="function")xd(e)?(i=Or(e,i),a.tag=1,a=Zp(null,a,e,i,r)):(a.tag=0,a=lu(null,a,e,i,r));else{if(e!=null){var d=e.$$typeof;if(d===$){a.tag=11,a=Up(null,a,e,i,r);break e}else if(d===M){a.tag=14,a=Qp(null,a,e,i,r);break e}}throw a=de(e)||e,Error(o(306,a,""))}}return a;case 0:return lu(e,a,a.type,a.pendingProps,r);case 1:return i=a.type,d=Or(i,a.pendingProps),Zp(e,a,i,d,r);case 3:e:{if(Se(a,a.stateNode.containerInfo),e===null)throw Error(o(387));i=a.pendingProps;var g=a.memoizedState;d=g.element,Dd(e,a),Al(a,i,null,r);var x=a.memoizedState;if(i=x.cache,Vn(a,xt,i),i!==g.cache&&Ad(a,[xt],r,!0),Rl(),i=x.element,g.isDehydrated)if(g={element:i,isDehydrated:!1,cache:x.cache},a.updateQueue.baseState=g,a.memoizedState=g,a.flags&256){a=Wp(e,a,i,r);break e}else if(i!==d){d=ka(Error(o(424)),a),kl(d),a=Wp(e,a,i,r);break e}else{switch(e=a.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(lt=Ta(e.firstChild),Mt=a,Ie=!0,On=null,Sa=!0,r=Kf(a,null,i,r),a.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling}else{if(Ar(),i===d){a=hn(e,a,r);break e}_t(e,a,i,r)}a=a.child}return a;case 26:return lo(e,a),e===null?(r=fv(a.type,null,a.pendingProps,null))?a.memoizedState=r:Ie||(r=a.type,e=a.pendingProps,i=No(he.current).createElement(r),i[Lt]=a,i[Xt]=e,Ot(i,r,e),At(i),a.stateNode=i):a.memoizedState=fv(a.type,e.memoizedProps,a.pendingProps,e.memoizedState),null;case 27:return Fe(a),e===null&&Ie&&(i=a.stateNode=uv(a.type,a.pendingProps,he.current),Mt=a,Sa=!0,d=lt,Xn(a.type)?(Qu=d,lt=Ta(i.firstChild)):lt=d),_t(e,a,a.pendingProps.children,r),lo(e,a),e===null&&(a.flags|=4194304),a.child;case 5:return e===null&&Ie&&((d=i=lt)&&(i=t1(i,a.type,a.pendingProps,Sa),i!==null?(a.stateNode=i,Mt=a,lt=Ta(i.firstChild),Sa=!1,d=!0):d=!1),d||Cn(a)),Fe(a),d=a.type,g=a.pendingProps,x=e!==null?e.memoizedProps:null,i=g.children,zu(d,g)?i=null:x!==null&&zu(d,x)&&(a.flags|=32),a.memoizedState!==null&&(d=Gd(e,a,h0,null,null,r),Il._currentValue=d),lo(e,a),_t(e,a,i,r),a.child;case 6:return e===null&&Ie&&((e=r=lt)&&(r=a1(r,a.pendingProps,Sa),r!==null?(a.stateNode=r,Mt=a,lt=null,e=!0):e=!1),e||Cn(a)),null;case 13:return eh(e,a,r);case 4:return Se(a,a.stateNode.containerInfo),i=a.pendingProps,e===null?a.child=Dr(a,null,i,r):_t(e,a,i,r),a.child;case 11:return Up(e,a,a.type,a.pendingProps,r);case 7:return _t(e,a,a.pendingProps,r),a.child;case 8:return _t(e,a,a.pendingProps.children,r),a.child;case 12:return _t(e,a,a.pendingProps.children,r),a.child;case 10:return i=a.pendingProps,Vn(a,a.type,i.value),_t(e,a,i.children,r),a.child;case 9:return d=a.type._context,i=a.pendingProps.children,wr(a),d=Dt(d),i=i(d),a.flags|=1,_t(e,a,i,r),a.child;case 14:return Qp(e,a,a.type,a.pendingProps,r);case 15:return Ip(e,a,a.type,a.pendingProps,r);case 19:return ah(e,a,r);case 31:return N0(e,a,r);case 22:return Kp(e,a,r,a.pendingProps);case 24:return wr(a),i=Dt(xt),e===null?(d=Ed(),d===null&&(d=st,g=Hd(),d.pooledCache=g,g.refCount++,g!==null&&(d.pooledCacheLanes|=r),d=g),a.memoizedState={parent:i,cache:d},Md(a),Vn(a,xt,d)):((e.lanes&r)!==0&&(Dd(e,a),Al(a,null,null,r),Rl()),d=e.memoizedState,g=a.memoizedState,d.parent!==i?(d={parent:i,cache:i},a.memoizedState=d,a.lanes===0&&(a.memoizedState=a.updateQueue.baseState=d),Vn(a,xt,i)):(i=g.cache,Vn(a,xt,i),i!==d.cache&&Ad(a,[xt],r,!0))),_t(e,a,a.pendingProps.children,r),a.child;case 29:throw a.pendingProps}throw Error(o(156,a.tag))}function vn(e){e.flags|=4}function fu(e,a,r,i,d){if((a=(e.mode&32)!==0)&&(a=!1),a){if(e.flags|=16777216,(d&335544128)===d)if(e.stateNode.complete)e.flags|=8192;else if(Eh())e.flags|=8192;else throw Mr=Ui,Ld}else e.flags&=-16777217}function rh(e,a){if(a.type!=="stylesheet"||(a.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!bv(a))if(Eh())e.flags|=8192;else throw Mr=Ui,Ld}function oo(e,a){a!==null&&(e.flags|=4),e.flags&16384&&(a=e.tag!==22?Ft():536870912,e.lanes|=a,Es|=a)}function Dl(e,a){if(!Ie)switch(e.tailMode){case"hidden":a=e.tail;for(var r=null;a!==null;)a.alternate!==null&&(r=a),a=a.sibling;r===null?e.tail=null:r.sibling=null;break;case"collapsed":r=e.tail;for(var i=null;r!==null;)r.alternate!==null&&(i=r),r=r.sibling;i===null?a||e.tail===null?e.tail=null:e.tail.sibling=null:i.sibling=null}}function it(e){var a=e.alternate!==null&&e.alternate.child===e.child,r=0,i=0;if(a)for(var d=e.child;d!==null;)r|=d.lanes|d.childLanes,i|=d.subtreeFlags&65011712,i|=d.flags&65011712,d.return=e,d=d.sibling;else for(d=e.child;d!==null;)r|=d.lanes|d.childLanes,i|=d.subtreeFlags,i|=d.flags,d.return=e,d=d.sibling;return e.subtreeFlags|=i,e.childLanes=r,a}function R0(e,a,r){var i=a.pendingProps;switch(yd(a),a.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return it(a),null;case 1:return it(a),null;case 3:return r=a.stateNode,i=null,e!==null&&(i=e.memoizedState.cache),a.memoizedState.cache!==i&&(a.flags|=2048),mn(xt),De(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(vs(a)?vn(a):e===null||e.memoizedState.isDehydrated&&(a.flags&256)===0||(a.flags|=1024,Nd())),it(a),null;case 26:var d=a.type,g=a.memoizedState;
vendor: 6,756 bytes, line 48
48return e===null?(vn(a),g!==null?(it(a),rh(a,g)):(it(a),fu(a,d,null,i,r))):g?g!==e.memoizedState?(vn(a),it(a),rh(a,g)):(it(a),a.flags&=-16777217):(e=e.memoizedProps,e!==i&&vn(a),it(a),fu(a,d,e,i,r)),null;case 27:if(ze(a),r=he.current,d=a.type,e!==null&&a.stateNode!=null)e.memoizedProps!==i&&vn(a);else{if(!i){if(a.stateNode===null)throw Error(o(166));return it(a),null}e=K.current,vs(a)?Vf(a):(e=uv(d,i,r),a.stateNode=e,vn(a))}return it(a),null;case 5:if(ze(a),d=a.type,e!==null&&a.stateNode!=null)e.memoizedProps!==i&&vn(a);else{if(!i){if(a.stateNode===null)throw Error(o(166));return it(a),null}if(g=K.current,vs(a))Vf(a);else{var x=No(he.current);switch(g){case 1:g=x.createElementNS("http://www.w3.org/2000/svg",d);break;case 2:g=x.createElementNS("http://www.w3.org/1998/Math/MathML",d);break;default:switch(d){case"svg":g=x.createElementNS("http://www.w3.org/2000/svg",d);break;case"math":g=x.createElementNS("http://www.w3.org/1998/Math/MathML",d);break;case"script":g=x.createElement("div"),g.innerHTML="<script><\/script>",g=g.removeChild(g.firstChild);break;case"select":g=typeof i.is=="string"?x.createElement("select",{is:i.is}):x.createElement("select"),i.multiple?g.multiple=!0:i.size&&(g.size=i.size);break;default:g=typeof i.is=="string"?x.createElement(d,{is:i.is}):x.createElement(d)}}g[Lt]=a,g[Xt]=i;e:for(x=a.child;x!==null;){if(x.tag===5||x.tag===6)g.appendChild(x.stateNode);else if(x.tag!==4&&x.tag!==27&&x.child!==null){x.child.return=x,x=x.child;continue}if(x===a)break e;for(;x.sibling===null;){if(x.return===null||x.return===a)break e;x=x.return}x.sibling.return=x.return,x=x.sibling}a.stateNode=g;e:switch(Ot(g,d,i),d){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&vn(a)}}return it(a),fu(a,a.type,e===null?null:e.memoizedProps,a.pendingProps,r),null;case 6:if(e&&a.stateNode!=null)e.memoizedProps!==i&&vn(a);else{if(typeof i!="string"&&a.stateNode===null)throw Error(o(166));if(e=he.current,vs(a)){if(e=a.stateNode,r=a.memoizedProps,i=null,d=Mt,d!==null)switch(d.tag){case 27:case 5:i=d.memoizedProps}e[Lt]=a,e=!!(e.nodeValue===r||i!==null&&i.suppressHydrationWarning===!0||ev(e.nodeValue,r)),e||Cn(a,!0)}else e=No(e).createTextNode(i),e[Lt]=a,a.stateNode=e}return it(a),null;case 31:if(r=a.memoizedState,e===null||e.memoizedState!==null){if(i=vs(a),r!==null){if(e===null){if(!i)throw Error(o(318));if(e=a.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[Lt]=a}else Ar(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;it(a),e=!1}else r=Nd(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return a.flags&256?(da(a),a):(da(a),null);if((a.flags&128)!==0)throw Error(o(558))}return it(a),null;case 13:if(i=a.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(d=vs(a),i!==null&&i.dehydrated!==null){if(e===null){if(!d)throw Error(o(318));if(d=a.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(o(317));d[Lt]=a}else Ar(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;it(a),d=!1}else d=Nd(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=d),d=!0;if(!d)return a.flags&256?(da(a),a):(da(a),null)}return da(a),(a.flags&128)!==0?(a.lanes=r,a):(r=i!==null,e=e!==null&&e.memoizedState!==null,r&&(i=a.child,d=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(d=i.alternate.memoizedState.cachePool.pool),g=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(g=i.memoizedState.cachePool.pool),g!==d&&(i.flags|=2048)),r!==e&&r&&(a.child.flags|=8192),oo(a,a.updateQueue),it(a),null);case 4:return De(),e===null&&Cu(a.stateNode.containerInfo),it(a),null;case 10:return mn(a.type),it(a),null;case 19:if(I(pt),i=a.memoizedState,i===null)return it(a),null;if(d=(a.flags&128)!==0,g=i.rendering,g===null)if(d)Dl(i,!1);else{if(gt!==0||e!==null&&(e.flags&128)!==0)for(e=a.child;e!==null;){if(g=Yi(e),g!==null){for(a.flags|=128,Dl(i,!1),e=g.updateQueue,a.updateQueue=e,oo(a,e),a.subtreeFlags=0,e=r,r=a.child;r!==null;)Mf(r,e),r=r.sibling;return q(pt,pt.current&1|2),Ie&&un(a,i.treeForkCount),a.child}e=e.sibling}i.tail!==null&&qt()>fo&&(a.flags|=128,d=!0,Dl(i,!1),a.lanes=4194304)}else{if(!d)if(e=Yi(g),e!==null){if(a.flags|=128,d=!0,e=e.updateQueue,a.updateQueue=e,oo(a,e),Dl(i,!0),i.tail===null&&i.tailMode==="hidden"&&!g.alternate&&!Ie)return it(a),null}else 2*qt()-i.renderingStartTime>fo&&r!==536870912&&(a.flags|=128,d=!0,Dl(i,!1),a.lanes=4194304);i.isBackwards?(g.sibling=a.child,a.child=g):(e=i.last,e!==null?e.sibling=g:a.child=g,i.last=g)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=qt(),e.sibling=null,r=pt.current,q(pt,d?r&1|2:r&1),Ie&&un(a,i.treeForkCount),e):(it(a),null);case 22:case 23:return da(a),Vd(),i=a.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(a.flags|=8192):i&&(a.flags|=8192),i?(r&536870912)!==0&&(a.flags&128)===0&&(it(a),a.subtreeFlags&6&&(a.flags|=8192)):it(a),r=a.updateQueue,r!==null&&oo(a,r.retryQueue),r=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(r=e.memoizedState.cachePool.pool),i=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),i!==r&&(a.flags|=2048),e!==null&&I(Er),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),a.memoizedState.cache!==r&&(a.flags|=2048),mn(xt),it(a),null;case 25:return null;case 30:return null}throw Error(o(156,a.tag))}function A0(e,a){switch(yd(a),a.tag){case 1:return e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 3:return mn(xt),De(),e=a.flags,(e&65536)!==0&&(e&128)===0?(a.flags=e&-65537|128,a):null;case 26:case 27:case 5:return ze(a),null;case 31:if(a.memoizedState!==null){if(da(a),a.alternate===null)throw Error(o(340));Ar()}return e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 13:if(da(a),e=a.memoizedState,e!==null&&e.dehydrated!==null){if(a.alternate===null)throw Error(o(340));Ar()}return e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 19:return I(pt),null;case 4:return De(),null;case 10:return mn(a.type),null;case 22:case 23:return da(a),Vd(),e!==null&&I(Er),e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 24:return mn(xt),null;case 25:return null;default:return null}}function sh(e,a){switch(yd(a),a.tag){case 3:mn(xt),De();break;case 26:case 27:case 5:ze(a);break;case 4:De();break;case 31:a.memoizedState!==null&&da(a);break;case 13:da(a);break;case 19:I(pt);break;case 10:mn(a.type);break;case 22:case 23:da(a),Vd(),e!==null&&I(Er);break;case 24:mn(xt)}}function _l(e,a){try{var r=a.updateQueue,i=r!==null?r.lastEffect:null;if(i!==null){var d=i.next;r=d;do{if((r.tag&e)===e){i=void 0;var g=r.create,x=r.inst;i=g(),x.destroy=i}r=r.next}
vendor: 8,990 bytes, line 48
48while(r!==d)}}catch(j){We(a,a.return,j)}}function Pn(e,a,r){try{var i=a.updateQueue,d=i!==null?i.lastEffect:null;if(d!==null){var g=d.next;i=g;do{if((i.tag&e)===e){var x=i.inst,j=x.destroy;if(j!==void 0){x.destroy=void 0,d=a;var w=r,G=j;try{G()}catch(Z){We(d,w,Z)}}}i=i.next}while(i!==g)}}catch(Z){We(a,a.return,Z)}}function lh(e){var a=e.updateQueue;if(a!==null){var r=e.stateNode;try{Xf(a,r)}catch(i){We(e,e.return,i)}}}function ih(e,a,r){r.props=Or(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(i){We(e,a,i)}}function Ol(e,a){try{var r=e.ref;if(r!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof r=="function"?e.refCleanup=r(i):r.current=i}}catch(d){We(e,a,d)}}function Ua(e,a){var r=e.ref,i=e.refCleanup;if(r!==null)if(typeof i=="function")try{i()}catch(d){We(e,a,d)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof r=="function")try{r(null)}catch(d){We(e,a,d)}else r.current=null}function oh(e){var a=e.type,r=e.memoizedProps,i=e.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":r.autoFocus&&i.focus();break e;case"img":r.src?i.src=r.src:r.srcSet&&(i.srcset=r.srcSet)}}catch(d){We(e,e.return,d)}}function pu(e,a,r){try{var i=e.stateNode;Y0(i,e.type,r,a),i[Xt]=a}catch(d){We(e,e.return,d)}}function ch(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Xn(e.type)||e.tag===4}function hu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ch(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Xn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function vu(e,a,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,a?(r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r).insertBefore(e,a):(a=r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r,a.appendChild(e),r=r._reactRootContainer,r!=null||a.onclick!==null||(a.onclick=on));else if(i!==4&&(i===27&&Xn(e.type)&&(r=e.stateNode,a=null),e=e.child,e!==null))for(vu(e,a,r),e=e.sibling;e!==null;)vu(e,a,r),e=e.sibling}function co(e,a,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,a?r.insertBefore(e,a):r.appendChild(e);else if(i!==4&&(i===27&&Xn(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(co(e,a,r),e=e.sibling;e!==null;)co(e,a,r),e=e.sibling}function dh(e){var a=e.stateNode,r=e.memoizedProps;try{for(var i=e.type,d=a.attributes;d.length;)a.removeAttributeNode(d[0]);Ot(a,i,r),a[Lt]=e,a[Xt]=r}catch(g){We(e,e.return,g)}}var xn=!1,jt=!1,xu=!1,uh=typeof WeakSet=="function"?WeakSet:Set,Ht=null;function H0(e,a){if(e=e.containerInfo,Ju=Lo,e=Sf(e),ud(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var d=i.anchorOffset,g=i.focusNode;i=i.focusOffset;try{r.nodeType,g.nodeType}catch{r=null;break e}var x=0,j=-1,w=-1,G=0,Z=0,te=e,B=null;t:for(;;){for(var Q;te!==r||d!==0&&te.nodeType!==3||(j=x+d),te!==g||i!==0&&te.nodeType!==3||(w=x+i),te.nodeType===3&&(x+=te.nodeValue.length),(Q=te.firstChild)!==null;)B=te,te=Q;for(;;){if(te===e)break t;if(B===r&&++G===d&&(j=x),B===g&&++Z===i&&(w=x),(Q=te.nextSibling)!==null)break;te=B,B=te.parentNode}te=Q}r=j===-1||w===-1?null:{start:j,end:w}}else r=null}r=r||{start:0,end:0}}else r=null;for(Gu={focusedElem:e,selectionRange:r},Lo=!1,Ht=a;Ht!==null;)if(a=Ht,e=a.child,(a.subtreeFlags&1028)!==0&&e!==null)e.return=a,Ht=e;else for(;Ht!==null;){switch(a=Ht,g=a.alternate,e=a.flags,a.tag){case 0:if((e&4)!==0&&(e=a.updateQueue,e=e!==null?e.events:null,e!==null))for(r=0;r<e.length;r++)d=e[r],d.ref.impl=d.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&g!==null){e=void 0,r=a,d=g.memoizedProps,g=g.memoizedState,i=r.stateNode;try{var Re=Or(r.type,d);e=i.getSnapshotBeforeUpdate(Re,g),i.__reactInternalSnapshotBeforeUpdate=e}catch(Me){We(r,r.return,Me)}}break;case 3:if((e&1024)!==0){if(e=a.stateNode.containerInfo,r=e.nodeType,r===9)Pu(e);else if(r===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Pu(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(o(163))}if(e=a.sibling,e!==null){e.return=a.return,Ht=e;break}Ht=a.return}}function gh(e,a,r){var i=r.flags;switch(r.tag){case 0:case 11:case 15:kn(e,r),i&4&&_l(5,r);break;case 1:if(kn(e,r),i&4)if(e=r.stateNode,a===null)try{e.componentDidMount()}catch(x){We(r,r.return,x)}else{var d=Or(r.type,a.memoizedProps);a=a.memoizedState;try{e.componentDidUpdate(d,a,e.__reactInternalSnapshotBeforeUpdate)}catch(x){We(r,r.return,x)}}i&64&&lh(r),i&512&&Ol(r,r.return);break;case 3:if(kn(e,r),i&64&&(e=r.updateQueue,e!==null)){if(a=null,r.child!==null)switch(r.child.tag){case 27:case 5:a=r.child.stateNode;break;case 1:a=r.child.stateNode}try{Xf(e,a)}catch(x){We(r,r.return,x)}}break;case 27:a===null&&i&4&&dh(r);case 26:case 5:kn(e,r),a===null&&i&4&&oh(r),i&512&&Ol(r,r.return);break;case 12:kn(e,r);break;case 31:kn(e,r),i&4&&ph(e,r);break;case 13:kn(e,r),i&4&&hh(e,r),i&64&&(e=r.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(r=V0.bind(null,r),n1(e,r))));break;case 22:if(i=r.memoizedState!==null||xn,!i){a=a!==null&&a.memoizedState!==null||jt,d=xn;var g=jt;xn=i,(jt=a)&&!g?jn(e,r,(r.subtreeFlags&8772)!==0):kn(e,r),xn=d,jt=g}break;case 30:break;default:kn(e,r)}}function mh(e){var a=e.alternate;a!==null&&(e.alternate=null,mh(a)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(a=e.stateNode,a!==null&&Kc(a)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var ct=null,Zt=!1;function bn(e,a,r){for(r=r.child;r!==null;)fh(e,a,r),r=r.sibling}function fh(e,a,r){if(Pt&&typeof Pt.onCommitFiberUnmount=="function")try{Pt.onCommitFiberUnmount(xr,r)}catch{}switch(r.tag){case 26:jt||Ua(r,a),bn(e,a,r),r.memoizedState?r.memoizedState.count--:r.stateNode&&(r=r.stateNode,r.parentNode.removeChild(r));break;case 27:jt||Ua(r,a);var i=ct,d=Zt;Xn(r.type)&&(ct=r.stateNode,Zt=!1),bn(e,a,r),Bl(r.stateNode),ct=i,Zt=d;break;case 5:jt||Ua(r,a);case 6:if(i=ct,d=Zt,ct=null,bn(e,a,r),ct=i,Zt=d,ct!==null)if(Zt)try{(ct.nodeType===9?ct.body:ct.nodeName==="HTML"?ct.ownerDocument.body:ct).removeChild(r.stateNode)}catch(g){We(r,a,g)}else try{ct.removeChild(r.stateNode)}catch(g){We(r,a,g)}break;case 18:ct!==null&&(Zt?(e=ct,lv(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,r.stateNode),Fs(e)):lv(ct,r.stateNode));break;case 4:i=ct,d=Zt,ct=r.stateNode.containerInfo,Zt=!0,bn(e,a,r),ct=i,Zt=d;break;case 0:case 11:case 14:case 15:Pn(2,r,a),jt||Pn(4,r,a),bn(e,a,r);break;case 1:jt||(Ua(r,a),i=r.stateNode,typeof i.componentWillUnmount=="function"&&ih(r,a,i)),bn(e,a,r);break;case 21:bn(e,a,r);break;case 22:jt=(i=jt)||r.memoizedState!==null,bn(e,a,r),jt=i;break;default:bn(e,a,r)}}function ph(e,a){if(a.memoizedState===null&&(e=a.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Fs(e)}catch(r){We(a,a.return,r)}}}function hh(e,a){if(a.memoizedState===null&&(e=a.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Fs(e)}catch(r){We(a,a.return,r)}}function w0(e){switch(e.tag){case 31:case 13:case 19:var a=e.stateNode;return a===null&&(a=e.stateNode=new uh),a;case 22:return e=e.stateNode,a=e._retryCache,a===null&&(a=e._retryCache=new uh),a;default:throw Error(o(435,e.tag))}}function uo(e,a){var r=w0(e);a.forEach(function(i){if(!r.has(i)){r.add(i);var d=F0.bind(null,e,i);i.then(d,d)}})}function Wt(e,a){var r=a.deletions;if(r!==null)for(var i=0;i<r.length;i++){var d=r[i],g=e,x=a,j=x;e:for(;j!==null;){switch(j.tag){case 27:if(Xn(j.type)){ct=j.stateNode,Zt=!1;break e}break;case 5:ct=j.stateNode,Zt=!1;break e;case 3:case 4:ct=j.stateNode.containerInfo,Zt=!0;break e}j=j.return}if(ct===null)throw Error(o(160));fh(g,x,d),ct=null,Zt=!1,g=d.alternate,g!==null&&(g.return=null),d.return=null}if(a.subtreeFlags&13886)for(a=a.child;a!==null;)vh(a,e),a=a.sibling}var Da=null;function vh(e,a){var r=e.alternate,i=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Wt(a,e),ea(e),i&4&&(Pn(3,e,e.return),_l(3,e),Pn(5,e,e.return));break;case 1:Wt(a,e),ea(e),i&512&&(jt||r===null||Ua(r,r.return)),i&64&&xn&&(e=e.updateQueue,e!==null&&(i=e.callbacks,i!==null&&(r=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=r===null?i:r.concat(i))));break;case 26:var d=Da;if(Wt(a,e),ea(e),i&512&&(jt||r===null||Ua(r,r.return)),i&4){var g=r!==null?r.memoizedState:null;if(i=e.memoizedState,r===null)if(i===null)if(e.stateNode===null){e:{i=e.type,r=e.memoizedProps,d=d.ownerDocument||d;t:switch(i){case"title":g=d.getElementsByTagName("title")[0],(!g||g[ol]||g[Lt]||g.namespaceURI==="http://www.w3.org/2000/svg"||g.hasAttribute("itemprop"))&&(g=d.createElement(i),d.head.insertBefore(g,d.querySelector("head >
48 title"))),Ot(g,i,r),g[Lt]=e,At(g),i=g;break e;case"link":var x=vv("link","href",d).get(i+(r.href||""));if(x){for(var j=0;j<x.length;j++)if(g=x[j],g.getAttribute("href")===(r.href==null||r.href===""?null:r.href)&&g.getAttribute("rel")===(r.rel==null?null:r.rel)&&g.getAttribute("title")===(r.title==null?null:r.title)&&g.getAttribute("crossorigin")===(r.crossOrigin==null?null:r.crossOrigin)){x.splice(j,1);break t}}g=d.createElement(i),Ot(g,i,r),d.head.appendChild(g);break;case"meta":if(x=vv("meta","content",d).get(i+(r.content||""))){for(j=0;j<x.length;j++)if(g=x[j],g.getAttribute("content")===(r.content==null?null:""+r.content)&&g.getAttribute("name")===(r.name==null?null:r.name)&&g.getAttribute("property")===(r.property==null?null:r.property)&&g.getAttribute("http-equiv")===(r.httpEquiv==null?null:r.httpEquiv)&&g.getAttribute("charset")===(r.charSet==null?null:r.charSet)){x.splice(j,1);break t}}g=d.createElement(i),Ot(g,i,r),d.head.appendChild(g);break;default:throw Error(o(468,i))}g[Lt]=e,At(g),i=g}e.stateNode=i}else xv(d,e.type,e.stateNode);else e.stateNode=hv(d,i,e.memoizedProps);else g!==i?(g===null?r.stateNode!==null&&(r=r.stateNode,r.parentNode.removeChild(r)):g.count--,i===null?xv(d,e.type,e.stateNode):hv(d,i,e.memoizedProps)):i===null&&e.stateNode!==null&&pu(e,e.memoizedProps,r.memoizedProps)}break;case 27:Wt(a,e),ea(e),i&512&&(jt||r===null||Ua(r,r.return)),r!==null&&i&4&&pu(e,e.memoizedProps,r.memoizedProps);break;case 5:if(Wt(a,e),ea(e),i&512&&(jt||r===null||Ua(r,r.return)),e.flags&32){d=e.stateNode;try{is(d,"")}catch(Re){We(e,e.return,Re)}}i&4&&e.stateNode!=null&&(d=e.memoizedProps,pu(e,d,r!==null?r.memoizedProps:d)),i&1024&&(xu=!0);break;case 6:if(Wt(a,e),ea(e),i&4){if(e.stateNode===null)throw Error(o(162));i=e.memoizedProps,r=e.stateNode;try{r.nodeValue=i}catch(Re){We(e,e.return,Re)}}break;case 3:if(Ao=null,d=Da,Da=To(a.containerInfo),Wt(a,e),Da=d,ea(e),i&4&&r!==null&&r.memoizedState.isDehydrated)try{Fs(a.containerInfo)}catch(Re){We(e,e.return,Re)}xu&&(xu=!1,xh(e));break;case 4:i=Da,Da=To(e.stateNode.containerInfo),Wt(a,e),ea(e),Da=i;break;case 12:Wt(a,e),ea(e);break;case 31:Wt(a,e),ea(e),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,uo(e,i)));break;case 13:Wt(a,e),ea(e),e.child.flags&8192&&e.memoizedState!==null!=(r!==null&&r.memoizedState!==null)&&(mo=qt()),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,uo(e,i)));break;case 22:d=e.memoizedState!==null;var w=r!==null&&r.memoizedState!==null,G=xn,Z=jt;if(xn=G||d,jt=Z||w,Wt(a,e),jt=Z,xn=G,ea(e),i&8192)e:for(a=e.stateNode,a._visibility=d?a._visibility&-2:a._visibility|1,d&&(r===null||w||xn||jt||Cr(e)),r=null,a=e;;
vendor: 7,338 bytes, line 48
48){if(a.tag===5||a.tag===26){if(r===null){w=r=a;try{if(g=w.stateNode,d)x=g.style,typeof x.setProperty=="function"?x.setProperty("display","none","important"):x.display="none";else{j=w.stateNode;var te=w.memoizedProps.style,B=te!=null&&te.hasOwnProperty("display")?te.display:null;j.style.display=B==null||typeof B=="boolean"?"":(""+B).trim()}}catch(Re){We(w,w.return,Re)}}}else if(a.tag===6){if(r===null){w=a;try{w.stateNode.nodeValue=d?"":w.memoizedProps}catch(Re){We(w,w.return,Re)}}}else if(a.tag===18){if(r===null){w=a;try{var Q=w.stateNode;d?iv(Q,!0):iv(w.stateNode,!1)}catch(Re){We(w,w.return,Re)}}}else if((a.tag!==22&&a.tag!==23||a.memoizedState===null||a===e)&&a.child!==null){a.child.return=a,a=a.child;continue}if(a===e)break e;for(;a.sibling===null;){if(a.return===null||a.return===e)break e;r===a&&(r=null),a=a.return}r===a&&(r=null),a.sibling.return=a.return,a=a.sibling}i&4&&(i=e.updateQueue,i!==null&&(r=i.retryQueue,r!==null&&(i.retryQueue=null,uo(e,r))));break;case 19:Wt(a,e),ea(e),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,uo(e,i)));break;case 30:break;case 21:break;default:Wt(a,e),ea(e)}}function ea(e){var a=e.flags;if(a&2){try{for(var r,i=e.return;i!==null;){if(ch(i)){r=i;break}i=i.return}if(r==null)throw Error(o(160));switch(r.tag){case 27:var d=r.stateNode,g=hu(e);co(e,g,d);break;case 5:var x=r.stateNode;r.flags&32&&(is(x,""),r.flags&=-33);var j=hu(e);co(e,j,x);break;case 3:case 4:var w=r.stateNode.containerInfo,G=hu(e);vu(e,G,w);break;default:throw Error(o(161))}}catch(Z){We(e,e.return,Z)}e.flags&=-3}a&4096&&(e.flags&=-4097)}function xh(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var a=e;xh(a),a.tag===5&&a.flags&1024&&a.stateNode.reset(),e=e.sibling}}function kn(e,a){if(a.subtreeFlags&8772)for(a=a.child;a!==null;)gh(e,a.alternate,a),a=a.sibling}function Cr(e){for(e=e.child;e!==null;){var a=e;switch(a.tag){case 0:case 11:case 14:case 15:Pn(4,a,a.return),Cr(a);break;case 1:Ua(a,a.return);var r=a.stateNode;typeof r.componentWillUnmount=="function"&&ih(a,a.return,r),Cr(a);break;case 27:Bl(a.stateNode);case 26:case 5:Ua(a,a.return),Cr(a);break;case 22:a.memoizedState===null&&Cr(a);break;case 30:Cr(a);break;default:Cr(a)}e=e.sibling}}function jn(e,a,r){for(r=r&&(a.subtreeFlags&8772)!==0,a=a.child;a!==null;){var i=a.alternate,d=e,g=a,x=g.flags;switch(g.tag){case 0:case 11:case 15:jn(d,g,r),_l(4,g);break;case 1:if(jn(d,g,r),i=g,d=i.stateNode,typeof d.componentDidMount=="function")try{d.componentDidMount()}catch(G){We(i,i.return,G)}if(i=g,d=i.updateQueue,d!==null){var j=i.stateNode;try{var w=d.shared.hiddenCallbacks;if(w!==null)for(d.shared.hiddenCallbacks=null,d=0;d<w.length;d++)Yf(w[d],j)}catch(G){We(i,i.return,G)}}r&&x&64&&lh(g),Ol(g,g.return);break;case 27:dh(g);case 26:case 5:jn(d,g,r),r&&i===null&&x&4&&oh(g),Ol(g,g.return);break;case 12:jn(d,g,r);break;case 31:jn(d,g,r),r&&x&4&&ph(d,g);break;case 13:jn(d,g,r),r&&x&4&&hh(d,g);break;case 22:g.memoizedState===null&&jn(d,g,r),Ol(g,g.return);break;case 30:break;default:jn(d,g,r)}a=a.sibling}}function bu(e,a){var r=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(r=e.memoizedState.cachePool.pool),e=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(e=a.memoizedState.cachePool.pool),e!==r&&(e!=null&&e.refCount++,r!=null&&jl(r))}function ku(e,a){e=null,a.alternate!==null&&(e=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==e&&(a.refCount++,e!=null&&jl(e))}function _a(e,a,r,i){if(a.subtreeFlags&10256)for(a=a.child;a!==null;)bh(e,a,r,i),a=a.sibling}function bh(e,a,r,i){var d=a.flags;switch(a.tag){case 0:case 11:case 15:_a(e,a,r,i),d&2048&&_l(9,a);break;case 1:_a(e,a,r,i);break;case 3:_a(e,a,r,i),d&2048&&(e=null,a.alternate!==null&&(e=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==e&&(a.refCount++,e!=null&&jl(e)));break;case 12:if(d&2048){_a(e,a,r,i),e=a.stateNode;try{var g=a.memoizedProps,x=g.id,j=g.onPostCommit;typeof j=="function"&&j(x,a.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(w){We(a,a.return,w)}}else _a(e,a,r,i);break;case 31:_a(e,a,r,i);break;case 13:_a(e,a,r,i);break;case 23:break;case 22:g=a.stateNode,x=a.alternate,a.memoizedState!==null?g._visibility&2?_a(e,a,r,i):Cl(e,a):g._visibility&2?_a(e,a,r,i):(g._visibility|=2,As(e,a,r,i,(a.subtreeFlags&10256)!==0||!1)),d&2048&&bu(x,a);break;case 24:_a(e,a,r,i),d&2048&&ku(a.alternate,a);break;default:_a(e,a,r,i)}}function As(e,a,r,i,d){for(d=d&&((a.subtreeFlags&10256)!==0||!1),a=a.child;a!==null;){var g=e,x=a,j=r,w=i,G=x.flags;switch(x.tag){case 0:case 11:case 15:As(g,x,j,w,d),_l(8,x);break;case 23:break;case 22:var Z=x.stateNode;x.memoizedState!==null?Z._visibility&2?As(g,x,j,w,d):Cl(g,x):(Z._visibility|=2,As(g,x,j,w,d)),d&&G&2048&&bu(x.alternate,x);break;case 24:As(g,x,j,w,d),d&&G&2048&&ku(x.alternate,x);break;default:As(g,x,j,w,d)}a=a.sibling}}function Cl(e,a){if(a.subtreeFlags&10256)for(a=a.child;a!==null;){var r=e,i=a,d=i.flags;switch(i.tag){case 22:Cl(r,i),d&2048&&bu(i.alternate,i);break;case 24:Cl(r,i),d&2048&&ku(i.alternate,i);break;default:Cl(r,i)}a=a.sibling}}var Vl=8192;function Hs(e,a,r){if(e.subtreeFlags&Vl)for(e=e.child;e!==null;)kh(e,a,r),e=e.sibling}function kh(e,a,r){switch(e.tag){case 26:Hs(e,a,r),e.flags&Vl&&e.memoizedState!==null&&p1(r,Da,e.memoizedState,e.memoizedProps);break;case 5:Hs(e,a,r);break;case 3:case 4:var i=Da;Da=To(e.stateNode.containerInfo),Hs(e,a,r),Da=i;break;case 22:e.memoizedState===null&&(i=e.alternate,i!==null&&i.memoizedState!==null?(i=Vl,Vl=16777216,Hs(e,a,r),Vl=i):Hs(e,a,r));break;default:Hs(e,a,r)}}function jh(e){var a=e.alternate;if(a!==null&&(e=a.child,e!==null)){a.child=null;do a=e.sibling,e.sibling=null,e=a;while(e!==null)}}function Fl(e){var a=e.deletions;if((e.flags&16)!==0){if(a!==null)for(var r=0;r<a.length;r++){var i=a[r];Ht=i,Sh(i,e)}jh(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)yh(e),e=e.sibling}function yh(e){switch(e.tag){case 0:case 11:case 15:Fl(e),e.flags&2048&&Pn(9,e,e.return);break;case 3:Fl(e);break;case 12:Fl(e);break;case 22:var a=e.stateNode;e.memoizedState!==null&&a._visibility&2&&(e.return===null||e.return.tag!==13)?(a._visibility&=-3,go(e)):Fl(e);break;default:Fl(e)}}function go(e){var a=e.deletions;if((e.flags&16)!==0){if(a!==null)for(var r=0;r<a.length;r++){var i=a[r];Ht=i,Sh(i,e)}jh(e)}for(e=e.child;e!==null;){switch(a=e,a.tag){case 0:case 11:case 15:Pn(8,a,a.return),go(a);break;case 22:r=a.stateNode,r._visibility&2&&(r._visibility&=-3,go(a));break;default:go(a)}e=e.sibling}}function Sh(e,a){for(;Ht!==null;){var r=Ht;switch(r.tag){case 0:case 11:case 15:Pn(8,r,a);break;case 23:case 22:if(r.memoizedState!==null&&r.memoizedState.cachePool!==null){var i=r.memoizedState.cachePool.pool;i!=null&&i.refCount++}break;case 24:jl(r.memoizedState.cache)}if(i=r.child,i!==null)i.return=r,Ht=i;else e:for(r=e;Ht!==null;){i=Ht;var d=i.sibling,g=i.return;if(mh(i),i===r){Ht=null;break e}if(d!==null){d.return=g,Ht=d;break e}Ht=g}}}var E0={getCacheForType:function(e){var a=Dt(xt),r=a.data.get(e);return r===void 0&&(r=e(),a.data.set(e,r)),r},cacheSignal:function(){return Dt(xt).controller.signal}},L0=typeof WeakMap=="function"?WeakMap:Map,$e=0,st=null,qe=null,Ue=0,Ze=0,ua=null,Bn=!1,ws=!1,ju=!1,yn=0,gt=0,Un=0,Vr=0,yu=0,ga=0,Es=0,Jl=null,ta=null,Su=!1,mo=0,Nh=0,fo=1/0,po=null,Qn=null,St=0,In=null,Ls=null,Sn=0,Nu=0,Tu=null,Th=null,Gl=0,Ru=null;
vendor: 18,162 bytes, line 48
48function ma(){return($e&2)!==0&&Ue!==0?Ue&-Ue:E.T!==null?Mu():Qc()}function Rh(){if(ga===0)if((Ue&536870912)===0||Ie){var e=Wr;Wr<<=1,(Wr&3932160)===0&&(Wr=262144),ga=e}else ga=536870912;return e=ca.current,e!==null&&(e.flags|=32),ga}function aa(e,a,r){(e===st&&(Ze===2||Ze===9)||e.cancelPendingCommit!==null)&&(Ms(e,0),Kn(e,Ue,ga,!1)),dt(e,r),(($e&2)===0||e!==st)&&(e===st&&(($e&2)===0&&(Vr|=r),gt===4&&Kn(e,Ue,ga,!1)),Qa(e))}function Ah(e,a,r){if(($e&6)!==0)throw Error(o(327));var i=!r&&(a&127)===0&&(a&e.expiredLanes)===0||ot(e,a),d=i?_0(e,a):Hu(e,a,!0),g=i;do{if(d===0){ws&&!i&&Kn(e,a,0,!1);break}else{if(r=e.current.alternate,g&&!M0(r)){d=Hu(e,a,!1),g=!1;continue}if(d===2){if(g=a,e.errorRecoveryDisabledLanes&g)var x=0;else x=e.pendingLanes&-536870913,x=x!==0?x:x&536870912?536870912:0;if(x!==0){a=x;e:{var j=e;d=Jl;var w=j.current.memoizedState.isDehydrated;if(w&&(Ms(j,x).flags|=256),x=Hu(j,x,!1),x!==2){if(ju&&!w){j.errorRecoveryDisabledLanes|=g,Vr|=g,d=4;break e}g=ta,ta=d,g!==null&&(ta===null?ta=g:ta.push.apply(ta,g))}d=x}if(g=!1,d!==2)continue}}if(d===1){Ms(e,0),Kn(e,a,0,!0);break}e:{switch(i=e,g=d,g){case 0:case 1:throw Error(o(345));case 4:if((a&4194048)!==a)break;case 6:Kn(i,a,ga,!Bn);break e;case 2:ta=null;break;case 3:case 5:break;default:throw Error(o(329))}if((a&62914560)===a&&(d=mo+300-qt(),10<d)){if(Kn(i,a,ga,!Bn),Oe(i,0,!0)!==0)break e;Sn=a,i.timeoutHandle=rv(Hh.bind(null,i,r,ta,po,Su,a,ga,Vr,Es,Bn,g,"Throttled",-0,0),d);break e}Hh(i,r,ta,po,Su,a,ga,Vr,Es,Bn,g,null,-0,0)}}break}while(!0);Qa(e)}function Hh(e,a,r,i,d,g,x,j,w,G,Z,te,B,Q){if(e.timeoutHandle=-1,te=a.subtreeFlags,te&8192||(te&16785408)===16785408){te={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:on},kh(a,g,te);var Re=(g&62914560)===g?mo-qt():(g&4194048)===g?Nh-qt():0;if(Re=h1(te,Re),Re!==null){Sn=g,e.cancelPendingCommit=Re(Ch.bind(null,e,a,g,r,i,d,x,j,w,Z,te,null,B,Q)),Kn(e,g,x,!G);return}}Ch(e,a,g,r,i,d,x,j,w)}function M0(e){for(var a=e;;){var r=a.tag;if((r===0||r===11||r===15)&&a.flags&16384&&(r=a.updateQueue,r!==null&&(r=r.stores,r!==null)))for(var i=0;i<r.length;i++){var d=r[i],g=d.getSnapshot;d=d.value;try{if(!ia(g(),d))return!1}catch{return!1}}if(r=a.child,a.subtreeFlags&16384&&r!==null)r.return=a,a=r;else{if(a===e)break;for(;a.sibling===null;){if(a.return===null||a.return===e)return!0;a=a.return}a.sibling.return=a.return,a=a.sibling}}return!0}function Kn(e,a,r,i){a&=~yu,a&=~Vr,e.suspendedLanes|=a,e.pingedLanes&=~a,i&&(e.warmLanes|=a),i=e.expirationTimes;for(var d=a;0<d;){var g=31-Vt(d),x=1<<g;i[g]=-1,d&=~x}r!==0&&kr(e,r,a)}function ho(){return($e&6)===0?(zl(0),!1):!0}function Au(){if(qe!==null){if(Ze===0)var e=qe.return;else e=qe,gn=Hr=null,Pd(e),ys=null,Sl=0,e=qe;for(;e!==null;)sh(e.alternate,e),e=e.return;qe=null}}function Ms(e,a){var r=e.timeoutHandle;r!==-1&&(e.timeoutHandle=-1,Z0(r)),r=e.cancelPendingCommit,r!==null&&(e.cancelPendingCommit=null,r()),Sn=0,Au(),st=e,qe=r=dn(e.current,null),Ue=a,Ze=0,ua=null,Bn=!1,ws=ot(e,a),ju=!1,Es=ga=yu=Vr=Un=gt=0,ta=Jl=null,Su=!1,(a&8)!==0&&(a|=a&32);var i=e.entangledLanes;if(i!==0)for(e=e.entanglements,i&=a;0<i;){var d=31-Vt(i),g=1<<d;a|=e[d],i&=~g}return yn=a,Ci(),r}function wh(e,a){Ve=null,E.H=Ll,a===js||a===Bi?(a=Uf(),Ze=3):a===Ld?(a=Uf(),Ze=4):Ze=a===su?8:a!==null&&typeof a=="object"&&typeof a.then=="function"?6:1,ua=a,qe===null&&(gt=1,ro(e,ka(a,e.current)))}function Eh(){var e=ca.current;return e===null?!0:(Ue&4194048)===Ue?Na===null:(Ue&62914560)===Ue||(Ue&536870912)!==0?e===Na:!1}function Lh(){var e=E.H;return E.H=Ll,e===null?Ll:e}function Mh(){var e=E.A;return E.A=E0,e}function vo(){gt=4,Bn||(Ue&4194048)!==Ue&&ca.current!==null||(ws=!0),(Un&134217727)===0&&(Vr&134217727)===0||st===null||Kn(st,Ue,ga,!1)}function Hu(e,a,r){var i=$e;$e|=2;var d=Lh(),g=Mh();(st!==e||Ue!==a)&&(po=null,Ms(e,a)),a=!1;var x=gt;e:do try{if(Ze!==0&&qe!==null){var j=qe,w=ua;switch(Ze){case 8:Au(),x=6;break e;case 3:case 2:case 9:case 6:ca.current===null&&(a=!0);var G=Ze;if(Ze=0,ua=null,Ds(e,j,w,G),r&&ws){x=0;break e}break;default:G=Ze,Ze=0,ua=null,Ds(e,j,w,G)}}D0(),x=gt;break}catch(Z){wh(e,Z)}while(!0);return a&&e.shellSuspendCounter++,gn=Hr=null,$e=i,E.H=d,E.A=g,qe===null&&(st=null,Ue=0,Ci()),x}function D0(){for(;qe!==null;)Dh(qe)}function _0(e,a){var r=$e;$e|=2;var i=Lh(),d=Mh();st!==e||Ue!==a?(po=null,fo=qt()+500,Ms(e,a)):ws=ot(e,a);e:do try{if(Ze!==0&&qe!==null){a=qe;var g=ua;t:switch(Ze){case 1:Ze=0,ua=null,Ds(e,a,g,1);break;case 2:case 9:if(Pf(g)){Ze=0,ua=null,_h(a);break}a=function(){Ze!==2&&Ze!==9||st!==e||(Ze=7),Qa(e)},g.then(a,a);break e;case 3:Ze=7;break e;case 4:Ze=5;break e;case 7:Pf(g)?(Ze=0,ua=null,_h(a)):(Ze=0,ua=null,Ds(e,a,g,7));break;case 5:var x=null;switch(qe.tag){case 26:x=qe.memoizedState;case 5:case 27:var j=qe;if(x?bv(x):j.stateNode.complete){Ze=0,ua=null;var w=j.sibling;if(w!==null)qe=w;else{var G=j.return;G!==null?(qe=G,xo(G)):qe=null}break t}}Ze=0,ua=null,Ds(e,a,g,5);break;case 6:Ze=0,ua=null,Ds(e,a,g,6);break;case 8:Au(),gt=6;break e;default:throw Error(o(462))}}O0();break}catch(Z){wh(e,Z)}while(!0);return gn=Hr=null,E.H=i,E.A=d,$e=r,qe!==null?0:(st=null,Ue=0,Ci(),gt)}function O0(){for(;qe!==null&&!zt();)Dh(qe)}function Dh(e){var a=nh(e.alternate,e,yn);e.memoizedProps=e.pendingProps,a===null?xo(e):qe=a}function _h(e){var a=e,r=a.alternate;switch(a.tag){case 15:case 0:a=$p(r,a,a.pendingProps,a.type,void 0,Ue);break;case 11:a=$p(r,a,a.pendingProps,a.type.render,a.ref,Ue);break;case 5:Pd(a);default:sh(r,a),a=qe=Mf(a,yn),a=nh(r,a,yn)}e.memoizedProps=e.pendingProps,a===null?xo(e):qe=a}function Ds(e,a,r,i){gn=Hr=null,Pd(a),ys=null,Sl=0;var d=a.return;try{if(S0(e,d,a,r,Ue)){gt=1,ro(e,ka(r,e.current)),qe=null;return}}catch(g){if(d!==null)throw qe=d,g;gt=1,ro(e,ka(r,e.current)),qe=null;return}a.flags&32768?(Ie||i===1?e=!0:ws||(Ue&536870912)!==0?e=!1:(Bn=e=!0,(i===2||i===9||i===3||i===6)&&(i=ca.current,i!==null&&i.tag===13&&(i.flags|=16384))),Oh(a,e)):xo(a)}function xo(e){var a=e;do{if((a.flags&32768)!==0){Oh(a,Bn);return}e=a.return;var r=R0(a.alternate,a,yn);if(r!==null){qe=r;return}if(a=a.sibling,a!==null){qe=a;return}qe=a=e}while(a!==null);gt===0&&(gt=5)}function Oh(e,a){do{var r=A0(e.alternate,e);if(r!==null){r.flags&=32767,qe=r;return}if(r=e.return,r!==null&&(r.flags|=32768,r.subtreeFlags=0,r.deletions=null),!a&&(e=e.sibling,e!==null)){qe=e;return}qe=e=r}while(e!==null);gt=6,qe=null}function Ch(e,a,r,i,d,g,x,j,w){e.cancelPendingCommit=null;do bo();while(St!==0);if(($e&6)!==0)throw Error(o(327));if(a!==null){if(a===e.current)throw Error(o(177));if(g=a.lanes|a.childLanes,g|=hd,It(e,r,g,x,j,w),e===st&&(qe=st=null,Ue=0),Ls=a,In=e,Sn=r,Nu=g,Tu=d,Th=i,(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,J0(vr,function(){return zh(),null})):(e.callbackNode=null,e.callbackPriority=0),i=(a.flags&13878)!==0,(a.subtreeFlags&13878)!==0||i){i=E.T,E.T=null,d=z.p,z.p=2,x=$e,$e|=4;try{H0(e,a,r)}finally{$e=x,z.p=d,E.T=i}}St=1,Vh(),Fh(),Jh()}}function Vh(){if(St===1){St=0;var e=In,a=Ls,r=(a.flags&13878)!==0;if((a.subtreeFlags&13878)!==0||r){r=E.T,E.T=null;var i=z.p;z.p=2;var d=$e;$e|=4;try{vh(a,e);var g=Gu,x=Sf(e.containerInfo),j=g.focusedElem,w=g.selectionRange;if(x!==j&&j&&j.ownerDocument&&yf(j.ownerDocument.documentElement,j)){if(w!==null&&ud(j)){var G=w.start,Z=w.end;if(Z===void 0&&(Z=G),"selectionStart"in j)j.selectionStart=G,j.selectionEnd=Math.min(Z,j.value.length);else{var te=j.ownerDocument||document,B=te&&te.defaultView||window;if(B.getSelection){var Q=B.getSelection(),Re=j.textContent.length,Me=Math.min(w.start,Re),at=w.end===void 0?Me:Math.min(w.end,Re);!Q.extend&&Me>at&&(x=at,at=Me,Me=x);var O=jf(j,Me),D=jf(j,at);if(O&&D&&(Q.rangeCount!==1||Q.anchorNode!==O.node||Q.anchorOffset!==O.offset||Q.focusNode!==D.node||Q.focusOffset!==D.offset)){var J=te.createRange();J.setStart(O.node,O.offset),Q.removeAllRanges(),Me>at?(Q.addRange(J),Q.extend(D.node,D.offset)):(J.setEnd(D.node,D.offset),Q.addRange(J))}}}}for(te=[],Q=j;Q=Q.parentNode;)Q.nodeType===1&&te.push({element:Q,left:Q.scrollLeft,top:Q.scrollTop});for(typeof j.focus=="function"&&j.focus(),j=0;j<te.length;j++){var ee=te[j];ee.element.scrollLeft=ee.left,ee.element.scrollTop=ee.top}}Lo=!!Ju,Gu=Ju=null}finally{$e=d,z.p=i,E.T=r}}e.current=a,St=2}}function Fh(){if(St===2){St=0;var e=In,a=Ls,r=(a.flags&8772)!==0;if((a.subtreeFlags&8772)!==0||r){r=E.T,E.T=null;var i=z.p;z.p=2;var d=$e;$e|=4;try{gh(e,a.alternate,a)}finally{$e=d,z.p=i,E.T=r}}St=3}}function Jh(){if(St===4||St===3){St=0,wn();var e=In,a=Ls,r=Sn,i=Th;(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?St=5:(St=0,Ls=In=null,Gh(e,e.pendingLanes));var d=e.pendingLanes;if(d===0&&(Qn=null),La(r),a=a.stateNode,Pt&&typeof Pt.onCommitFiberRoot=="function")try{Pt.onCommitFiberRoot(xr,a,void 0,(a.current.flags&128)===128)}catch{}if(i!==null){a=E.T,d=z.p,z.p=2,E.T=null;try{for(var g=e.onRecoverableError,x=0;x<i.length;x++){var j=i[x];g(j.value,{componentStack:j.stack})}}finally{E.T=a,z.p=d}}(Sn&3)!==0&&bo(),Qa(e),d=e.pendingLanes,(r&261930)!==0&&(d&42)!==0?e===Ru?Gl++:(Gl=0,Ru=e):Gl=0,zl(0)}}function Gh(e,a){(e.pooledCacheLanes&=a)===0&&(a=e.pooledCache,a!=null&&(e.pooledCache=null,jl(a)))}function bo(){return Vh(),Fh(),Jh(),zh()}function zh(){if(St!==5)return!1;var e=In,a=Nu;Nu=0;var r=La(Sn),i=E.T,d=z.p;try{z.p=32>r?32:r,E.T=null,r=Tu,Tu=null;var g=In,x=Sn;if(St=0,Ls=In=null,Sn=0,($e&6)!==0)throw Error(o(331));var j=$e;if($e|=4,yh(g.current),bh(g,g.current,x,r),$e=j,zl(0,!1),Pt&&typeof Pt.onPostCommitFiberRoot=="function")try{Pt.onPostCommitFiberRoot(xr,g)}catch{}return!0}finally{z.p=d,E.T=i,Gh(e,a)}}function qh(e,a,r){a=ka(r,a),a=ru(e.stateNode,a,2),e=Gn(e,a,2),e!==null&&(dt(e,2),Qa(e))}function We(e,a,r){if(e.tag===3)qh(e,e,r);else for(;a!==null;){if(a.tag===3){qh(a,e,r);break}else if(a.tag===1){var i=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&(Qn===null||!Qn.has(i))){e=ka(r,e),r=Pp(2),i=Gn(a,r,2),i!==null&&(Bp(r,i,a,e),dt(i,2),Qa(i));break}}a=a.return}}function wu(e,a,r){var i=e.pingCache;if(i===null){i=e.pingCache=new L0;var d=new Set;i.set(a,d)}else d=i.get(a),d===void 0&&(d=new Set,i.set(a,d));d.has(r)||(ju=!0,d.add(r),e=C0.bind(null,e,a,r),a.then(e,e))}function C0(e,a,r){var i=e.pingCache;i!==null&&i.delete(a),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,st===e&&(Ue&r)===r&&(gt===4||gt===3&&(Ue&62914560)===Ue&&300>qt()-mo?($e&2)===0&&Ms(e,0):yu|=r,Es===Ue&&(Es=0)),Qa(e)}function Ph(e,a){a===0&&(a=Ft()),e=Tr(e,a),e!==null&&(dt(e,a),Qa(e))}function V0(e){var a=e.memoizedState,r=0;a!==null&&(r=a.retryLane),Ph(e,r)}function F0(e,a){var r=0;switch(e.tag){case 31:case 13:var i=e.stateNode,d=e.memoizedState;d!==null&&(r=d.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(o(314))}i!==null&&i.delete(a),Ph(e,r)}function J0(e,a){return rl(e,a)}var ko=null,_s=null,Eu=!1,jo=!1,Lu=!1,Yn=0;function Qa(e){e!==_s&&e.next===null&&(_s===null?ko=_s=e:_s=_s.next=e),jo=!0,Eu||(Eu=!0,z0())}function zl(e,a){if(!Lu&&jo){Lu=!0;do for(var r=!1,i=ko;i!==null;){if(e!==0){var d=i.pendingLanes;if(d===0)var g=0;else{var x=i.suspendedLanes,j=i.pingedLanes;g=(1<<31-Vt(42|e)+1)-1,g&=d&~(x&~j),g=g&201326741?g&201326741|1:g?g|2:0}g!==0&&(r=!0,Ih(i,g))}else g=Ue,g=Oe(i,i===st?g:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),(g&3)===0||ot(i,g)||(r=!0,Ih(i,g));i=i.next}while(r);Lu=!1}}function G0(){Bh()}function Bh(){jo=Eu=!1;var e=0;Yn!==0&&$0()&&(e=Yn);for(var a=qt(),r=null,i=ko;i!==null;){var d=i.next,g=Uh(i,a);g===0?(i.next=null,r===null?ko=d:r.next=d,d===null&&(_s=r)):(r=i,(e!==0||(g&3)!==0)&&(jo=!0)),i=d}St!==0&&St!==5||zl(e),Yn!==0&&(Yn=0)}function Uh(e,a){for(var r=e.suspendedLanes,i=e.pingedLanes,d=e.expirationTimes,g=e.pendingLanes&-62914561;0<g;){var x=31-Vt(g),j=1<<x,w=d[x];w===-1?((j&r)===0||(j&i)!==0)&&(d[x]=Rt(j,a)):w<=a&&(e.expiredLanes|=j),g&=~j}if(a=st,r=Ue,r=Oe(e,e===a?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),i=e.callbackNode,r===0||e===a&&(Ze===2||Ze===9)||e.cancelPendingCommit!==null)return i!==null&&i!==null&&sl(i),e.callbackNode=null,e.callbackPriority=0;if((r&3)===0||ot(e,r)){if(a=r&-r,a===e.callbackPriority)return a;switch(i!==null&&sl(i),La(r)){case 2:case 8:r=Si;break;case 32:r=vr;break;case 268435456:r=sn;break;default:r=vr}return i=Qh.bind(null,e),r=rl(r,i),e.callbackPriority=a,e.callbackNode=r,a}return i!==null&&i!==null&&sl(i),e.callbackPriority=2,e.callbackNode=null,2}function Qh(e,a){if(St!==0&&St!==5)return e.callbackNode=null,e.callbackPriority=0,null;var r=e.callbackNode;if(bo()&&e.callbackNode!==r)return null;var i=Ue;return i=Oe(e,e===st?i:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),i===0?null:(Ah(e,i,a),Uh(e,qt()),e.callbackNode!=null&&e.callbackNode===r?Qh.bind(null,e):null)}function Ih(e,a){if(bo())return null;Ah(e,a,!0)}function z0(){W0(function(){($e&6)!==0?rl(hr,G0):Bh()})}function Mu(){if(Yn===0){var e=bs;e===0&&(e=Zr,Zr<<=1,(Zr&261888)===0&&(Zr=256)),Yn=e}return Yn}function Kh(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Hi(""+e)}function Yh(e,a){var r=a.ownerDocument.createElement("input");return r.name=a.name,r.value=a.value,e.id&&r.setAttribute("form",e.id),a.parentNode.insertBefore(r,a),e=new FormData(e),r.parentNode.removeChild(r),e}function q0(e,a,r,i,d){if(a==="submit"&&r&&r.stateNode===d){var g=Kh((d[Xt]||null).action),x=i.submitter;x&&(a=(a=x[Xt]||null)?Kh(a.formAction):x.getAttribute("formAction"),a!==null&&(g=a,x=null));var j=new Mi("action","action",null,i,d);e.push({event:j,listeners:[{instance:null,listener:function(){if(i.defaultPrevented){if(Yn!==0){var w=x?Yh(d,x):new FormData(d);Zd(r,{pending:!0,data:w,method:d.method,action:g},null,w)}}else typeof g=="function"&&(j.preventDefault(),w=x?Yh(d,x):new FormData(d),Zd(r,{pending:!0,data:w,method:d.method,action:g},g,w))},currentTarget:d}]})}}for(var Du=0;Du<pd.length;Du++){var _u=pd[Du],P0=_u.toLowerCase(),B0=_u[0].toUpperCase()+_u.slice(1);Ma(P0,"on"+B0)}Ma(Rf,"onAnimationEnd"),Ma(Af,"onAnimationIteration"),Ma(Hf,"onAnimationStart"),Ma("dblclick","onDoubleClick"),Ma("focusin","onFocus"),Ma("focusout","onBlur"),Ma(l0,"onTransitionRun"),Ma(i0,"onTransitionStart"),Ma(o0,"onTransitionCancel"),Ma(wf,"onTransitionEnd"),ss("onMouseEnter",["mouseout","mouseover"]),ss("onMouseLeave",["mouseout","mouseover"]),ss("onPointerEnter",["pointerout","pointerover"]),ss("onPointerLeave",["pointerout","pointerover"]),jr("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),jr("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),jr("onBeforeInput",["compositionend","keypress","textInput","paste"]),jr("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),jr("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),jr("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var ql="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(" "),U0=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(ql));function Xh(e,a){a=(a&4)!==0;for(var r=0;r<e.length;r++){var i=e[r],d=i.event;i=i.listeners;e:{var g=void 0;if(a)for(var x=i.length-1;0<=x;x--){var j=i[x],w=j.instance,G=j.currentTarget;if(j=j.listener,w!==g&&d.isPropagationStopped())break e;g=j,d.currentTarget=G;try{g(d)}catch(Z){Oi(Z)}d.currentTarget=null,g=w}else for(x=0;x<i.length;x++){if(j=i[x],w=j.instance,G=j.currentTarget,j=j.listener,w!==g&&d.isPropagationStopped())break e;g=j,d.currentTarget=G;try{g(d)}catch(Z){Oi(Z)}d.currentTarget=null,g=w}}}}function Pe(e,a){var r=a[Ic];r===void 0&&(r=a[Ic]=new Set);var i=e+"__bubble";r.has(i)||($h(a,e,2,!1),r.add(i))}function Ou(e,a,r){var i=0;a&&(i|=4),$h(r,e,i,a)}var yo="_reactListening"+Math.random().toString(36).slice(2);function Cu(e){if(!e[yo]){e[yo]=!0,Pm.forEach(function(r){r!=="selectionchange"&&(U0.has(r)||Ou(r,!1,e),Ou(r,!0,e))});var a=e.nodeType===9?e:e.ownerDocument;a===null||a[yo]||(a[yo]=!0,Ou("selectionchange",!1,a))}}function $h(e,a,r,i){switch(Rv(a)){case 2:var d=b1;break;case 8:d=k1;break;default:d=$u}r=d.bind(null,a,r,e),d=void 0,!ad||a!=="touchstart"&&a!=="touchmove"&&a!=="wheel"||(d=!0),i?d!==void 0?e.addEventListener(a,r,{capture:!0,passive:d}):e.addEventListener(a,r,!0):d!==void 0?e.addEventListener(a,r,{passive:d}):e.addEventListener(a,r,!1)}function Vu(e,a,r,i,d){var g=i;if((a&1)===0&&(a&2)===0&&i!==null)e:for(;;){if(i===null)return;var x=i.tag;if(x===3||x===4){var j=i.stateNode.containerInfo;if(j===d)break;if(x===4)for(x=i.return;x!==null;){var w=x.tag;if((w===3||w===4)&&x.stateNode.containerInfo===d)return;x=x.return}for(;j!==null;){if(x=as(j),x===null)return;if(w=x.tag,w===5||w===6||w===26||w===27){i=g=x;continue e}j=j.parentNode}}i=i.return}tf(function(){var G=g,Z=ed(r),te=[];e:{var B=Ef.get(e);if(B!==void 0){var Q=Mi,Re=e;switch(e){case"keypress":if(Ei(r)===0)break e;case"keydown":case"keyup":Q=Fy;break;case"focusin":Re="focus",Q=ld;break;case"focusout":Re="blur",Q=ld;break;case"beforeblur":case"afterblur":Q=ld;break;case"click":if(r.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":Q=rf;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":Q=Ry;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":Q=zy;break;case Rf:case Af:case Hf:Q=wy;break;case wf:Q=Py;break;case"scroll":case"scrollend":Q=Ny;break;case"wheel":Q=Uy;break;case"copy":case"cut":case"paste":Q=Ly;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":Q=lf;break;case"toggle":case"beforetoggle":Q=Iy}var Me=(a&4)!==0,at=!Me&&(e==="scroll"||e==="scrollend"),O=Me?B!==null?B+"
48Capture":null:B;Me=[];for(var D=G,J;D!==null;){var ee=D;if(J=ee.stateNode,ee=ee.tag,ee!==5&&ee!==26&&ee!==27||J===null||O===null||(ee=dl(D,O),ee!=null&&Me.push(Pl(D,ee,J))),at)break;D=D.return}0<Me.length&&(B=new Q(B,Re,null,r,Z),te.push({event:B,listeners:Me}))}}if((a&7)===0){e:{if(B=e==="mouseover"||e==="pointerover",Q=e==="mouseout"||e==="pointerout",B&&r!==Wc&&(Re=r.relatedTarget||r.fromElement)&&(as(Re)||Re[ts]))break e;if((Q||B)&&(B=Z.window===Z?Z:(B=Z.ownerDocument)?B.defaultView||B.parentWindow:window,Q?(Re=r.relatedTarget||r.toElement,Q=G,Re=Re?as(Re):null,Re!==null&&(at=u(Re),Me=Re.tag,Re!==at||Me!==5&&Me!==27&&Me!==6)&&(Re=null)):(Q=null,Re=G),Q!==Re)){if(Me=rf,ee="onMouseLeave",O="onMouseEnter",D="mouse",(e==="pointerout"||e==="pointerover")&&(Me=lf,ee="onPointerLeave",O="onPointerEnter",D="pointer"),at=Q==null?B:cl(Q),J=Re==null?B:cl(Re),B=new Me(ee,D+"leave",Q,r,Z),B.target=at,B.relatedTarget=J,ee=null,as(Z)===G&&(Me=new Me(O,D+"enter",Re,r,Z),Me.target=J,Me.relatedTarget=at,ee=Me),at=ee,Q&&Re)t:{for(Me=Q0,O=Q,D=Re,J=0,ee=O;ee;ee=Me(ee))J++;ee=0;for(var Le=D;Le;Le=Me(Le))ee++;for(;0<J-ee;)O=Me(O),J--;for(;0<ee-J;)D=Me(D),ee--;for(;J--;){if(O===D||D!==null&&O===D.alternate){Me=O;break t}O=Me(O),D=Me(D)}Me=null}else Me=null;Q!==null&&Zh(te,B,Q,Me,!1),Re!==null&&at!==null&&Zh(te,at,Re,Me,!0)}}
vendor: 5,196 bytes, lines 48-49
48e:{if(B=G?cl(G):window,Q=B.nodeName&&B.nodeName.toLowerCase(),Q==="select"||Q==="input"&&B.type==="file")var Ke=pf;else if(mf(B))if(hf)Ke=n0;else{Ke=t0;var we=e0}else Q=B.nodeName,!Q||Q.toLowerCase()!=="input"||B.type!=="checkbox"&&B.type!=="radio"?G&&Zc(G.elementType)&&(Ke=pf):Ke=a0;if(Ke&&(Ke=Ke(e,G))){ff(te,Ke,r,Z);break e}we&&we(e,B,G),e==="focusout"&&G&&B.type==="number"&&G.memoizedProps.value!=null&&$c(B,"number",B.value)}switch(we=G?cl(G):window,e){case"focusin":(mf(we)||we.contentEditable==="true")&&(us=we,gd=G,xl=null);break;case"focusout":xl=gd=us=null;break;case"mousedown":md=!0;break;case"contextmenu":case"mouseup":case"dragend":md=!1,Nf(te,r,Z);break;case"selectionchange":if(s0)break;case"keydown":case"keyup":Nf(te,r,Z)}var Je;if(od)e:{switch(e){case"compositionstart":var Qe="onCompositionStart";break e;case"compositionend":Qe="onCompositionEnd";break e;case"compositionupdate":Qe="onCompositionUpdate";break e}Qe=void 0}else ds?uf(e,r)&&(Qe="onCompositionEnd"):e==="keydown"&&r.keyCode===229&&(Qe="onCompositionStart");Qe&&(of&&r.locale!=="ko"&&(ds||Qe!=="onCompositionStart"?Qe==="onCompositionEnd"&&ds&&(Je=af()):(Dn=Z,nd="value"in Dn?Dn.value:Dn.textContent,ds=!0)),we=So(G,Qe),0<we.length&&(Qe=new sf(Qe,e,null,r,Z),te.push({event:Qe,listeners:we}),Je?Qe.data=Je:(Je=gf(r),Je!==null&&(Qe.data=Je)))),(Je=Yy?Xy(e,r):$y(e,r))&&(Qe=So(G,"onBeforeInput"),0<Qe.length&&(we=new sf("onBeforeInput","beforeinput",null,r,Z),te.push({event:we,listeners:Qe}),we.data=Je)),q0(te,e,G,r,Z)}Xh(te,a)})}function Pl(e,a,r){return{instance:e,listener:a,currentTarget:r}}function So(e,a){for(var r=a+"Capture",i=[];e!==null;){var d=e,g=d.stateNode;if(d=d.tag,d!==5&&d!==26&&d!==27||g===null||(d=dl(e,r),d!=null&&i.unshift(Pl(e,d,g)),d=dl(e,a),d!=null&&i.push(Pl(e,d,g))),e.tag===3)return i;e=e.return}return[]}function Q0(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Zh(e,a,r,i,d){for(var g=a._reactName,x=[];r!==null&&r!==i;){var j=r,w=j.alternate,G=j.stateNode;if(j=j.tag,w!==null&&w===i)break;j!==5&&j!==26&&j!==27||G===null||(w=G,d?(G=dl(r,g),G!=null&&x.unshift(Pl(r,G,w))):d||(G=dl(r,g),G!=null&&x.push(Pl(r,G,w)))),r=r.return}x.length!==0&&e.push({event:a,listeners:x})}var I0=/\r\n?/g,K0=/\u0000|\uFFFD/g;function Wh(e){return(typeof e=="string"?e:""+e).replace(I0,` 49`).replace(K0,"")}function ev(e,a){return a=Wh(a),Wh(e)===a}function tt(e,a,r,i,d,g){switch(r){case"children":typeof i=="string"?a==="body"||a==="textarea"&&i===""||is(e,i):(typeof i=="number"||typeof i=="bigint")&&a!=="body"&&is(e,""+i);break;case"className":Ri(e,"class",i);break;case"tabIndex":Ri(e,"tabindex",i);break;case"dir":case"role":case"viewBox":case"width":case"height":Ri(e,r,i);break;case"style":Wm(e,i,g);break;case"data":if(a!=="object"){Ri(e,"data",i);break}case"src":case"href":if(i===""&&(a!=="a"||r!=="href")){e.removeAttribute(r);break}if(i==null||typeof i=="function"||typeof i=="symbol"||typeof i=="boolean"){e.removeAttribute(r);break}i=Hi(""+i),e.setAttribute(r,i);break;case"action":case"formAction":if(typeof i=="function"){e.setAttribute(r,"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 g=="function"&&(r==="formAction"?(a!=="input"&&tt(e,a,"name",d.name,d,null),tt(e,a,"formEncType",d.formEncType,d,null),tt(e,a,"formMethod",d.formMethod,d,null),tt(e,a,"formTarget",d.formTarget,d,null)):(tt(e,a,"encType",d.encType,d,null),tt(e,a,"method",d.method,d,null),tt(e,a,"target",d.target,d,null)));if(i==null||typeof i=="symbol"||typeof i=="boolean"){e.removeAttribute(r);break}i=Hi(""+i),e.setAttribute(r,i);break;case"onClick":i!=null&&(e.onclick=on);break;case"onScroll":i!=null&&Pe("scroll",e);break;case"onScrollEnd":i!=null&&Pe("scrollend",e);break;case"dangerouslySetInnerHTML":if(i!=null){if(typeof i!="object"||!("__html"in i))throw Error(o(61));if(r=i.__html,r!=null){if(d.children!=null)throw Error(o(60));e.innerHTML=r}}break;case"multiple":e.multiple=i&&typeof i!="function"&&typeof i!="symbol";break;case"muted":e.muted=i&&typeof i!="function"&&typeof i!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(i==null||typeof i=="function"||typeof i=="boolean"||typeof i=="symbol"){e.removeAttribute("xlink:href");break}r=Hi(""+i),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":i!=null&&typeof i!="function"&&typeof i!="symbol"?e.setAttribute(r,""+i):e.removeAttribute(r);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"playsInl
49ine":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":i&&typeof i!="function"&&typeof i!="symbol"?e.setAttribute(r,""):e.removeAttribute(r);break;case"capture":case"download":i===!0?e.setAttribute(r,""):i!==!1&&i!=null&&typeof i!="function"&&typeof i!="symbol"?e.setAttribute(r,i):e.removeAttribute(r);break;case"cols":case"rows":case"size":case"span":i!=null&&typeof i!="function"&&typeof i!="symbol"&&!isNaN(i)&&1<=i?e.setAttribute(r,i):e.removeAttribute(r);break;case"rowSpan":case"start":i==null||typeof i=="function"||typeof i=="symbol"||isNaN(i)?e.removeAttribute(r):e.setAttribute(r,i);break;case"popover":Pe("beforetoggle",e),Pe("toggle",e),Ti(e,"popover",i);break;case"xlinkActuate":ln(e,"http://www.w3.org/1999/xlink","xlink:actuate",i);break;case"xlinkArcrole":ln(e,"http://www.w3.org/1999/xlink","xlink:arcrole",i);break;case"xlinkRole":ln(e,"http://www.w3.org/1999/xlink","xlink:role",i);break;case"xlinkShow":ln(e,"http://www.w3.org/1999/xlink","xlink:show",i);break;case"xlinkTitle":ln(e,"http://www.w3.org/1999/xlink","xlink:title",i);break;case"xlinkType":ln(e,"http://www.w3.org/1999/xlink","xlink:type",i);break;case"xmlBase":ln(e,"http://www.w3.org/XML/1998/namespace","xml:base",i);break;case"xmlLang":ln(e,"http://www.w3.org/XML/1998/namespace","xml:lang",i);break;case"xmlSpace":ln(e,"http://www.w3.org/XML/1998/namespace","xml:space",i);break;case"is":Ti(e,"is",i);break;case"innerText":case"textContent":break;default:(!(2<r.length)||r[0]!=="o"&&r[0]!=="O"||r[1]!=="n"&&r[1]!=="N")&&(r=yy.get(r)||r,Ti(e,r,i))}}function Fu(e,a,r,i,d,g){switch(r){case"style":Wm(e,i,g);break;case"dangerouslySetInnerHTML":if(i!=null){if(typeof i!="object"||!("__html"in i))throw Error(o(61));if(r=i.__html,r!=null){if(d.children!=null)throw Error(o(60));e.innerHTML=r}}break;case"children":typeof i=="string"?is(e,i):(typeof i=="number"||typeof i=="bigint")&&is(e,""+i);break;case"onScroll":i!=null&&Pe("scroll",e);break;case"onScrollEnd":i!=null&&Pe("scrollend",e);break;case"onClick":i!=null&&(e.onclick=on);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Bm.hasOwnProperty(r))e:{if(r[0]==="o"&&r[1]==="n"&&(d=r.endsWith("Capture"),a=r.slice(2,d?r.length-7:void 0),g=e[Xt]||null,g=g!=null?g[r]:null,typeof g=="function"&&e.removeEventListener(a,g,d),typeof i=="function")){typeof g!="function"&&g!==null&&(r in e?e[r]=null:e.hasAttribute(r)&&e.removeAttribute(r)),e.addEventListener(a,i,d);break e}
vendor: 5,649 bytes, line 49
49r in e?e[r]=i:i===!0?e.setAttribute(r,""):Ti(e,r,i)}}}function Ot(e,a,r){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Pe("error",e),Pe("load",e);var i=!1,d=!1,g;for(g in r)if(r.hasOwnProperty(g)){var x=r[g];if(x!=null)switch(g){case"src":i=!0;break;case"srcSet":d=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(o(137,a));default:tt(e,a,g,x,r,null)}}d&&tt(e,a,"srcSet",r.srcSet,r,null),i&&tt(e,a,"src",r.src,r,null);return;case"input":Pe("invalid",e);var j=g=x=d=null,w=null,G=null;for(i in r)if(r.hasOwnProperty(i)){var Z=r[i];if(Z!=null)switch(i){case"name":d=Z;break;case"type":x=Z;break;case"checked":w=Z;break;case"defaultChecked":G=Z;break;case"value":g=Z;break;case"defaultValue":j=Z;break;case"children":case"dangerouslySetInnerHTML":if(Z!=null)throw Error(o(137,a));break;default:tt(e,a,i,Z,r,null)}}Ym(e,g,j,w,G,x,d,!1);return;case"select":Pe("invalid",e),i=x=g=null;for(d in r)if(r.hasOwnProperty(d)&&(j=r[d],j!=null))switch(d){case"value":g=j;break;case"defaultValue":x=j;break;case"multiple":i=j;default:tt(e,a,d,j,r,null)}a=g,r=x,e.multiple=!!i,a!=null?ls(e,!!i,a,!1):r!=null&&ls(e,!!i,r,!0);return;case"textarea":Pe("invalid",e),g=d=i=null;for(x in r)if(r.hasOwnProperty(x)&&(j=r[x],j!=null))switch(x){case"value":i=j;break;case"defaultValue":d=j;break;case"children":g=j;break;case"dangerouslySetInnerHTML":if(j!=null)throw Error(o(91));break;default:tt(e,a,x,j,r,null)}$m(e,i,d,g);return;case"option":for(w in r)if(r.hasOwnProperty(w)&&(i=r[w],i!=null))switch(w){case"selected":e.selected=i&&typeof i!="function"&&typeof i!="symbol";break;default:tt(e,a,w,i,r,null)}return;case"dialog":Pe("beforetoggle",e),Pe("toggle",e),Pe("cancel",e),Pe("close",e);break;case"iframe":case"object":Pe("load",e);break;case"video":case"audio":for(i=0;i<ql.length;i++)Pe(ql[i],e);break;case"image":Pe("error",e),Pe("load",e);break;case"details":Pe("toggle",e);break;case"embed":case"source":case"link":Pe("error",e),Pe("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(G in r)if(r.hasOwnProperty(G)&&(i=r[G],i!=null))switch(G){case"children":case"dangerouslySetInnerHTML":throw Error(o(137,a));default:tt(e,a,G,i,r,null)}return;default:if(Zc(a)){for(Z in r)r.hasOwnProperty(Z)&&(i=r[Z],i!==void 0&&Fu(e,a,Z,i,r,void 0));return}}for(j in r)r.hasOwnProperty(j)&&(i=r[j],i!=null&&tt(e,a,j,i,r,null))}function Y0(e,a,r,i){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var d=null,g=null,x=null,j=null,w=null,G=null,Z=null;for(Q in r){var te=r[Q];if(r.hasOwnProperty(Q)&&te!=null)switch(Q){case"checked":break;case"value":break;case"defaultValue":w=te;default:i.hasOwnProperty(Q)||tt(e,a,Q,null,i,te)}}for(var B in i){var Q=i[B];if(te=r[B],i.hasOwnProperty(B)&&(Q!=null||te!=null))switch(B){case"type":g=Q;break;case"name":d=Q;break;case"checked":G=Q;break;case"defaultChecked":Z=Q;break;case"value":x=Q;break;case"defaultValue":j=Q;break;case"children":case"dangerouslySetInnerHTML":if(Q!=null)throw Error(o(137,a));break;default:Q!==te&&tt(e,a,B,Q,i,te)}}Xc(e,x,j,w,G,Z,g,d);return;case"select":Q=x=j=B=null;for(g in r)if(w=r[g],r.hasOwnProperty(g)&&w!=null)switch(g){case"value":break;case"multiple":Q=w;default:i.hasOwnProperty(g)||tt(e,a,g,null,i,w)}for(d in i)if(g=i[d],w=r[d],i.hasOwnProperty(d)&&(g!=null||w!=null))switch(d){case"value":B=g;break;case"defaultValue":j=g;break;case"multiple":x=g;default:g!==w&&tt(e,a,d,g,i,w)}a=j,r=x,i=Q,B!=null?ls(e,!!r,B,!1):!!i!=!!r&&(a!=null?ls(e,!!r,a,!0):ls(e,!!r,r?[]:"",!1));return;case"textarea":Q=B=null;for(j in r)if(d=r[j],r.hasOwnProperty(j)&&d!=null&&!i.hasOwnProperty(j))switch(j){case"value":break;case"children":break;default:tt(e,a,j,null,i,d)}for(x in i)if(d=i[x],g=r[x],i.hasOwnProperty(x)&&(d!=null||g!=null))switch(x){case"value":B=d;break;case"defaultValue":Q=d;break;case"children":break;case"dangerouslySetInnerHTML":if(d!=null)throw Error(o(91));break;default:d!==g&&tt(e,a,x,d,i,g)}Xm(e,B,Q);return;case"option":for(var Re in r)if(B=r[Re],r.hasOwnProperty(Re)&&B!=null&&!i.hasOwnProperty(Re))switch(Re){case"selected":e.selected=!1;break;default:tt(e,a,Re,null,i,B)}for(w in i)if(B=i[w],Q=r[w],i.hasOwnProperty(w)&&B!==Q&&(B!=null||Q!=null))switch(w){case"selected":e.selected=B&&typeof B!="function"&&typeof B!="symbol";break;default:tt(e,a,w,B,i,Q)}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 Me in r)B=r[Me],r.hasOwnProperty(Me)&&B!=null&&!i.hasOwnProperty(Me)&&tt(e,a,Me,null,i,B);for(G in i)if(B=i[G],Q=r[G],i.hasOwnProperty(G)&&B!==Q&&(B!=null||Q!=null))switch(G){case"children":case"dangerouslySetInnerHTML":if(B!=null)throw Error(o(137,a));break;default:tt(e,a,G,B,i,Q)}return;default:if(Zc(a)){for(var at in r)B=r[at],r.hasOwnProperty(at)&&B!==void 0&&!i.hasOwnProperty(at)&&Fu(e,a,at,void 0,i,B);for(Z in i)B=i[Z],Q=r[Z],!i.hasOwnProperty(Z)||B===Q||B===void 0&&Q===void 0||Fu(e,a,Z,B,i,Q);return}}for(var O in r)B=r[O],r.hasOwnProperty(O)&&B!=null&&!i.hasOwnProperty(O)&&tt(e,a,O,null,i,B);for(te in i)B=i[te],Q=r[te],!i.hasOwnProperty(te)||B===Q||B==null&&Q==null||tt(e,a,te,B,i,Q)}function tv(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function X0(){if(typeof performance.getEntriesByType=="function"){for(var e=0,a=0,r=performance.getEntriesByType("resource"),i=0;i<r.length;i++){var d=r[i],g=d.transferSize,x=d.initiatorType,j=d.duration;
vendor: 13,539 bytes, line 49
49if(g&&j&&tv(x)){for(x=0,j=d.responseEnd,i+=1;i<r.length;i++){var w=r[i],G=w.startTime;if(G>j)break;var Z=w.transferSize,te=w.initiatorType;Z&&tv(te)&&(w=w.responseEnd,x+=Z*(w<j?1:(j-G)/(w-G)))}if(--i,a+=8*(g+x)/(d.duration/1e3),e++,10<e)break}}if(0<e)return a/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var Ju=null,Gu=null;function No(e){return e.nodeType===9?e:e.ownerDocument}function av(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function nv(e,a){if(e===0)switch(a){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&a==="foreignObject"?0:e}function zu(e,a){return e==="textarea"||e==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.children=="bigint"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var qu=null;function $0(){var e=window.event;return e&&e.type==="popstate"?e===qu?!1:(qu=e,!0):(qu=null,!1)}var rv=typeof setTimeout=="function"?setTimeout:void 0,Z0=typeof clearTimeout=="function"?clearTimeout:void 0,sv=typeof Promise=="function"?Promise:void 0,W0=typeof queueMicrotask=="function"?queueMicrotask:typeof sv<"u"?function(e){return sv.resolve(null).then(e).catch(e1)}:rv;function e1(e){setTimeout(function(){throw e})}function Xn(e){return e==="head"}function lv(e,a){var r=a,i=0;do{var d=r.nextSibling;if(e.removeChild(r),d&&d.nodeType===8)if(r=d.data,r==="/$"||r==="/&"){if(i===0){e.removeChild(d),Fs(a);return}i--}else if(r==="$"||r==="$?"||r==="$~"||r==="$!"||r==="&")i++;else if(r==="html")Bl(e.ownerDocument.documentElement);else if(r==="head"){r=e.ownerDocument.head,Bl(r);for(var g=r.firstChild;g;){var x=g.nextSibling,j=g.nodeName;g[ol]||j==="SCRIPT"||j==="STYLE"||j==="LINK"&&g.rel.toLowerCase()==="stylesheet"||r.removeChild(g),g=x}}else r==="body"&&Bl(e.ownerDocument.body);r=d}while(r);Fs(a)}function iv(e,a){var r=e;e=0;do{var i=r.nextSibling;if(r.nodeType===1?a?(r._stashedDisplay=r.style.display,r.style.display="none"):(r.style.display=r._stashedDisplay||"",r.getAttribute("style")===""&&r.removeAttribute("style")):r.nodeType===3&&(a?(r._stashedText=r.nodeValue,r.nodeValue=""):r.nodeValue=r._stashedText||""),i&&i.nodeType===8)if(r=i.data,r==="/$"){if(e===0)break;e--}else r!=="$"&&r!=="$?"&&r!=="$~"&&r!=="$!"||e++;r=i}while(r)}function Pu(e){var a=e.firstChild;for(a&&a.nodeType===10&&(a=a.nextSibling);a;){var r=a;switch(a=a.nextSibling,r.nodeName){case"HTML":case"HEAD":case"BODY":Pu(r),Kc(r);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(r.rel.toLowerCase()==="stylesheet")continue}e.removeChild(r)}}function t1(e,a,r,i){for(;e.nodeType===1;){var d=r;if(e.nodeName.toLowerCase()!==a.toLowerCase()){if(!i&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(i){if(!e[ol])switch(a){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(g=e.getAttribute("rel"),g==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(g!==d.rel||e.getAttribute("href")!==(d.href==null||d.href===""?null:d.href)||e.getAttribute("crossorigin")!==(d.crossOrigin==null?null:d.crossOrigin)||e.getAttribute("title")!==(d.title==null?null:d.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(g=e.getAttribute("src"),(g!==(d.src==null?null:d.src)||e.getAttribute("type")!==(d.type==null?null:d.type)||e.getAttribute("crossorigin")!==(d.crossOrigin==null?null:d.crossOrigin))&&g&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(a==="input"&&e.type==="hidden"){var g=d.name==null?null:""+d.name;if(d.type==="hidden"&&e.getAttribute("name")===g)return e}else return e;if(e=Ta(e.nextSibling),e===null)break}return null}function a1(e,a,r){if(a==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!r||(e=Ta(e.nextSibling),e===null))return null;return e}function ov(e,a){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!a||(e=Ta(e.nextSibling),e===null))return null;return e}function Bu(e){return e.data==="$?"||e.data==="$~"}function Uu(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function n1(e,a){var r=e.ownerDocument;if(e.data==="$~")e._reactRetry=a;else if(e.data!=="$?"||r.readyState!=="loading")a();else{var i=function(){a(),r.removeEventListener("DOMContentLoaded",i)};r.addEventListener("DOMContentLoaded",i),e._reactRetry=i}}function Ta(e){for(;e!=null;e=e.nextSibling){var a=e.nodeType;if(a===1||a===3)break;if(a===8){if(a=e.data,a==="$"||a==="$!"||a==="$?"||a==="$~"||a==="&"||a==="F!"||a==="F")break;if(a==="/$"||a==="/&")return null}}return e}var Qu=null;function cv(e){e=e.nextSibling;for(var a=0;e;){if(e.nodeType===8){var r=e.data;if(r==="/$"||r==="/&"){if(a===0)return Ta(e.nextSibling);a--}else r!=="$"&&r!=="$!"&&r!=="$?"&&r!=="$~"&&r!=="&"||a++}e=e.nextSibling}return null}function dv(e){e=e.previousSibling;for(var a=0;e;){if(e.nodeType===8){var r=e.data;if(r==="$"||r==="$!"||r==="$?"||r==="$~"||r==="&"){if(a===0)return e;a--}else r!=="/$"&&r!=="/&"||a++}e=e.previousSibling}return null}function uv(e,a,r){switch(a=No(r),e){case"html":if(e=a.documentElement,!e)throw Error(o(452));return e;case"head":if(e=a.head,!e)throw Error(o(453));return e;case"body":if(e=a.body,!e)throw Error(o(454));return e;default:throw Error(o(451))}}function Bl(e){for(var a=e.attributes;a.length;)e.removeAttributeNode(a[0]);Kc(e)}var Ra=new Map,gv=new Set;function To(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Nn=z.d;z.d={f:r1,r:s1,D:l1,C:i1,L:o1,m:c1,X:u1,S:d1,M:g1};function r1(){var e=Nn.f(),a=ho();return e||a}function s1(e){var a=ns(e);a!==null&&a.tag===5&&a.type==="form"?wp(a):Nn.r(e)}var Os=typeof document>"u"?null:document;function mv(e,a,r){var i=Os;if(i&&typeof a=="string"&&a){var d=xa(a);d='link[rel="'+e+'"][href="'+d+'"]',typeof r=="string"&&(d+='[crossorigin="'+r+'"]'),gv.has(d)||(gv.add(d),e={rel:e,crossOrigin:r,href:a},i.querySelector(d)===null&&(a=i.createElement("link"),Ot(a,"link",e),At(a),i.head.appendChild(a)))}}function l1(e){Nn.D(e),mv("dns-prefetch",e,null)}function i1(e,a){Nn.C(e,a),mv("preconnect",e,a)}function o1(e,a,r){Nn.L(e,a,r);var i=Os;if(i&&e&&a){var d='link[rel="preload"][as="'+xa(a)+'"]';a==="image"&&r&&r.imageSrcSet?(d+='[imagesrcset="'+xa(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(d+='[imagesizes="'+xa(r.imageSizes)+'"]')):d+='[href="'+xa(e)+'"]';var g=d;switch(a){case"style":g=Cs(e);break;case"script":g=Vs(e)}Ra.has(g)||(e=v({rel:"preload",href:a==="image"&&r&&r.imageSrcSet?void 0:e,as:a},r),Ra.set(g,e),i.querySelector(d)!==null||a==="style"&&i.querySelector(Ul(g))||a==="script"&&i.querySelector(Ql(g))||(a=i.createElement("link"),Ot(a,"link",e),At(a),i.head.appendChild(a)))}}function c1(e,a){Nn.m(e,a);var r=Os;if(r&&e){var i=a&&typeof a.as=="string"?a.as:"script",d='link[rel="modulepreload"][as="'+xa(i)+'"][href="'+xa(e)+'"]',g=d;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":g=Vs(e)}if(!Ra.has(g)&&(e=v({rel:"modulepreload",href:e},a),Ra.set(g,e),r.querySelector(d)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(Ql(g)))return}i=r.createElement("link"),Ot(i,"link",e),At(i),r.head.appendChild(i)}}}function d1(e,a,r){Nn.S(e,a,r);var i=Os;if(i&&e){var d=rs(i).hoistableStyles,g=Cs(e);a=a||"default";var x=d.get(g);if(!x){var j={loading:0,preload:null};if(x=i.querySelector(Ul(g)))j.loading=5;else{e=v({rel:"stylesheet",href:e,"data-precedence":a},r),(r=Ra.get(g))&&Iu(e,r);var w=x=i.createElement("link");At(w),Ot(w,"link",e),w._p=new Promise(function(G,Z){w.onload=G,w.onerror=Z}),w.addEventListener("load",function(){j.loading|=1}),w.addEventListener("error",function(){j.loading|=2}),j.loading|=4,Ro(x,a,i)}x={type:"stylesheet",instance:x,count:1,state:j},d.set(g,x)}}}function u1(e,a){Nn.X(e,a);var r=Os;if(r&&e){var i=rs(r).hoistableScripts,d=Vs(e),g=i.get(d);g||(g=r.querySelector(Ql(d)),g||(e=v({src:e,async:!0},a),(a=Ra.get(d))&&Ku(e,a),g=r.createElement("script"),At(g),Ot(g,"link",e),r.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},i.set(d,g))}}function g1(e,a){Nn.M(e,a);var r=Os;if(r&&e){var i=rs(r).hoistableScripts,d=Vs(e),g=i.get(d);g||(g=r.querySelector(Ql(d)),g||(e=v({src:e,async:!0,type:"module"},a),(a=Ra.get(d))&&Ku(e,a),g=r.createElement("script"),At(g),Ot(g,"link",e),r.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},i.set(d,g))}}function fv(e,a,r,i){var d=(d=he.current)?To(d):null;if(!d)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(a=Cs(r.href),r=rs(d).hoistableStyles,i=r.get(a),i||(i={type:"style",instance:null,count:0,state:null},r.set(a,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(r.rel==="stylesheet"&&typeof r.href=="string"&&typeof r.precedence=="string"){e=Cs(r.href);var g=rs(d).hoistableStyles,x=g.get(e);if(x||(d=d.ownerDocument||d,x={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},g.set(e,x),(g=d.querySelector(Ul(e)))&&!g._p&&(x.instance=g,x.state.loading=5),Ra.has(e)||(r={rel:"preload",as:"style",href:r.href,crossOrigin:r.crossOrigin,integrity:r.integrity,media:r.media,hrefLang:r.hrefLang,referrerPolicy:r.referrerPolicy},Ra.set(e,r),g||m1(d,e,r,x.state))),a&&i===null)throw Error(o(528,""));return x}if(a&&i!==null)throw Error(o(529,""));return null;case"script":return a=r.async,r=r.src,typeof r=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=Vs(r),r=rs(d).hoistableScripts,i=r.get(a),i||(i={type:"script",instance:null,count:0,state:null},r.set(a,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function Cs(e){return'href="'+xa(e)+'"'}function Ul(e){return'link[rel="stylesheet"]['+e+"]"}function pv(e){return v({},e,{"data-precedence":e.precedence,precedence:null})}function m1(e,a,r,i){e.querySelector('link[rel="preload"][as="style"]['+a+"]")?i.loading=1:(a=e.createElement("link"),i.preload=a,a.addEventListener("load",function(){return i.loading|=1}),a.addEventListener("error",function(){return i.loading|=2}),Ot(a,"link",r),At(a),e.head.appendChild(a))}function Vs(e){return'[src="'+xa(e)+'"]'}function Ql(e){return"script[async]"+e}function hv(e,a,r){if(a.count++,a.instance===null)switch(a.type){case"style":var i=e.querySelector('style[data-href~="'+xa(r.href)+'"]');if(i)return a.instance=i,At(i),i;var d=v({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),At(i),Ot(i,"style",d),Ro(i,r.precedence,e),a.instance=i;case"stylesheet":d=Cs(r.href);var g=e.querySelector(Ul(d));if(g)return a.state.loading|=4,a.instance=g,At(g),g;i=pv(r),(d=Ra.get(d))&&Iu(i,d),g=(e.ownerDocument||e).createElement("link"),At(g);var x=g;return x._p=new Promise(function(j,w){x.onload=j,x.onerror=w}),Ot(g,"link",i),a.state.loading|=4,Ro(g,r.precedence,e),a.instance=g;case"script":return g=Vs(r.src),(d=e.querySelector(Ql(g)))?(a.instance=d,At(d),d):(i=r,(d=Ra.get(g))&&(i=v({},r),Ku(i,d)),e=e.ownerDocument||e,d=e.createElement("script"),At(d),Ot(d,"link",i),e.head.appendChild(d),a.instance=d);case"void":return null;default:throw Error(o(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(i=a.instance,a.state.loading|=4,Ro(i,r.precedence,e));return a.instance}function Ro(e,a,r){for(var i=r.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),d=i.length?i[i.length-1]:null,g=d,x=0;x<i.length;x++){var j=i[x];if(j.dataset.precedence===a)g=j;else if(g!==d)break}g?g.parentNode.insertBefore(e,g.nextSibling):(a=r.nodeType===9?r.head:r,a.insertBefore(e,a.firstChild))}function Iu(e,a){e.crossOrigin==null&&(e.crossOrigin=a.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=a.referrerPolicy),e.title==null&&(e.title=a.title)}function Ku(e,a){e.crossOrigin==null&&(e.crossOrigin=a.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=a.referrerPolicy),e.integrity==null&&(e.integrity=a.integrity)}var Ao=null;function vv(e,a,r){if(Ao===null){var i=new Map,d=Ao=new Map;d.set(r,i)}else d=Ao,i=d.get(r),i||(i=new Map,d.set(r,i));if(i.has(e))return i;for(i.set(e,null),r=r.getElementsByTagName(e),d=0;d<r.length;d++){var g=r[d];if(!(g[ol]||g[Lt]||e==="link"&&g.getAttribute("rel")==="stylesheet")&&g.namespaceURI!=="http://www.w3.org/2000/svg"){var x=g.getAttribute(a)||"";x=e+x;var j=i.get(x);j?j.push(g):i.set(x,[g])}}return i}function xv(e,a,r){e=e.ownerDocument||e,e.head.insertBefore(r,a==="title"?e.querySelector("head > title"):null)}function f1(e,a,r){if(r===1||a.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;switch(a.rel){case"stylesheet":return e=a.disabled,typeof a.precedence=="string"&&e==null;default:return!0}case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function bv(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function p1(e,a,r,i){if(r.type==="stylesheet"&&(typeof i.media!="str
49ing"||matchMedia(i.media).matches!==!1)&&(r.state.loading&4)===0){if(r.instance===null){var d=Cs(i.href),g=a.querySelector(Ul(d));if(g){a=g._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(e.count++,e=Ho.bind(e),a.then(e,e)),r.state.loading|=4,r.instance=g,At(g);return}g=a.ownerDocument||a,i=pv(i),(d=Ra.get(d))&&Iu(i,d),g=g.createElement("link"),At(g);var x=g;x._p=new Promise(function(j,w){x.onload=j,x.onerror=w}),Ot(g,"link",i),r.instance=g}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(r,a),(a=r.state.preload)&&(r.state.loading&3)===0&&(e.count++,r=Ho.bind(e),a.addEventListener("load",r),a.addEventListener("error",r))}}var Yu=0;function h1(e,a){return e.stylesheets&&e.count===0&&Eo(e,e.stylesheets),0<e.count||0<e.imgCount?function(r){var i=setTimeout(function(){if(e.stylesheets&&Eo(e,e.stylesheets),e.unsuspend){var g=e.unsuspend;e.unsuspend=null,g()}},6e4+a);0<e.imgBytes&&Yu===0&&(Yu=62500*X0());var d=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Eo(e,e.stylesheets),e.unsuspend)){var g=e.unsuspend;e.unsuspend=null,g()}},(e.imgBytes>Yu?50:800)+a);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(d)}}:null}function Ho(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Eo(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var wo=null;function Eo(e,a){e.stylesheets=null,e.unsuspend!==null&&(e.count++,wo=new Map,a.forEach(v1,e),wo=null,Ho.call(e))}function v1(e,a){if(!(a.state.loading&4)){var r=wo.get(e);if(r)var i=r.get(null);else{r=new Map,wo.set(e,r);for(var d=e.querySelectorAll("link[data-precedence],style[data-precedence]"),g=0;g<d.length;g++){var x=d[g];(x.nodeName==="LINK"||x.getAttribute("media")!=="not all")&&(r.set(x.dataset.precedence,x),i=x)}i&&r.set(null,i)}d=a.instance,x=d.getAttribute("data-precedence"),g=r.get(x)||i,g===i&&r.set(null,d),r.set(x,d),this.count++,i=Ho.bind(this),d.addEventListener("load",i),d.addEventListener("error",i),g?g.parentNode.insertBefore(d,g.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(d,e.firstChild)),a.state.loading|=4}}var Il={$$typeof:F,Provider:null,Consumer:null,_currentValue:C,_currentValue2:C,_threadCount:0};function x1(e,a,r,i,d,g,x,j,w){this.tag=1,this.containerInfo=e,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=Ln(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ln(0),this.hiddenUpdates=Ln(null),this.identifierPrefix=i,this.onUncaughtError=d,this.onCaughtError=g,this.onRecoverableError=x,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=w,this.incompleteTransitions=new Map}function kv(e,a,r,i,d,g,x,j,w,G,Z,te){return e=new x1(e,a,r,x,w,G,Z,te,j),a=1,g===!0&&(a|=24),g=oa(3,null,null,a),e.current=g,g.stateNode=e,a=Hd(),a.refCount++,e.pooledCache=a,a.refCount++,g.memoizedState={element:i,isDehydrated:r,cache:a},Md(g),e}function jv(e){return e?(e=fs,e):fs}function yv(e,a,r,i,d,g){d=jv(d),i.context===null?i.context=d:i.pendingContext=d,i=Jn(a),i.payload={element:r},g=g===void 0?null:g,g!==null&&(i.callback=g),r=Gn(e,i,a),r!==null&&(aa(r,e,a),Tl(r,e,a))}function Sv(e,a){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var r=e.retryLane;e.retryLane=r!==0&&r<a?r:a}}function Xu(e,a){Sv(e,a),(e=e.alternate)&&Sv(e,a)}function Nv(e){if(e.tag===13||e.tag===31){var a=Tr(e,67108864);a!==null&&aa(a,e,67108864),Xu(e,67108864)}}function Tv(e){if(e.tag===13||e.tag===31){var a=ma();a=es(a);var r=Tr(e,a);r!==null&&aa(r,e,a),Xu(e,a)}}var Lo=!0;function b1(e,a,r,i){var d=E.T;E.T=null;var g=z.p;try{z.p=2,$u(e,a,r,i)}finally{z.p=g,E.T=d}}function k1(e,a,r,i){var d=E.T;E.T=null;var g=z.p;try{z.p=8,$u(e,a,r,i)}finally{z.p=g,E.T=d}}function $u(e,a,r,i){if(Lo){var d=Zu(i);if(d===null)Vu(e,a,i,Mo,r),Av(e,i);else if(y1(d,e,a,r,i))i.stopPropagation();else if(Av(e,i),a&4&&-1<j1.indexOf(e)){for(;d!==null;){var g=ns(d);if(g!==null)switch(g.tag){case 3:if(g=g.stateNode,g.current.memoizedState.isDehydrated){var x=qa(g.pendingLanes);if(x!==0){var j=g;for(j.pendingLanes|=2,j.entangledLanes|=2;x;){var w=1<<31-Vt(x);j.entanglements[1]|=w,x&=~w}Qa(g),($e&6)===0&&(fo=qt()+500,zl(0))}}break;case 31:case 13:j=Tr(g,2),j!==null&&aa(j,g,2),ho(),Xu(g,2)}if(g=Zu(i),g===null&&Vu(e,a,i,Mo,r),g===d)break;d=g}d!==null&&i.stopPropagation()}else Vu(e,a,i,null,r)}}function Zu(e){return e=ed(e),Wu(e)}var Mo=null;function Wu(e){if(Mo=null,e=as(e),e!==null){var a=u(e);if(a===null)e=null;else{var r=a.tag;if(r===13){if(e=m(a),e!==null)return e;e=null}else if(r===31){if(e=f(a),e!==null)return e;e=null}else if(r===3){if(a.stateNode.current.memoizedState.isDehydrated)return a.tag===3?a.stateNode.containerInfo:null;e=null}else a!==e&&(e=null)}}return Mo=e,null}function Rv(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close"
vendor: 6,256 bytes, line 49
49: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(Bc()){case hr:return 2;case Si:return 8;case vr:case ll:return 32;case sn:return 268435456;default:return 32}default:return 32}}var eg=!1,$n=null,Zn=null,Wn=null,Kl=new Map,Yl=new Map,er=[],j1="mousedown 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 Av(e,a){switch(e){case"focusin":case"focusout":$n=null;break;case"dragenter":case"dragleave":Zn=null;break;case"mouseover":case"mouseout":Wn=null;break;case"pointerover":case"pointerout":Kl.delete(a.pointerId);break;case"gotpointercapture":case"lostpointercapture":Yl.delete(a.pointerId)}}function Xl(e,a,r,i,d,g){return e===null||e.nativeEvent!==g?(e={blockedOn:a,domEventName:r,eventSystemFlags:i,nativeEvent:g,targetContainers:[d]},a!==null&&(a=ns(a),a!==null&&Nv(a)),e):(e.eventSystemFlags|=i,a=e.targetContainers,d!==null&&a.indexOf(d)===-1&&a.push(d),e)}function y1(e,a,r,i,d){switch(a){case"focusin":return $n=Xl($n,e,a,r,i,d),!0;case"dragenter":return Zn=Xl(Zn,e,a,r,i,d),!0;case"mouseover":return Wn=Xl(Wn,e,a,r,i,d),!0;case"pointerover":var g=d.pointerId;return Kl.set(g,Xl(Kl.get(g)||null,e,a,r,i,d)),!0;case"gotpointercapture":return g=d.pointerId,Yl.set(g,Xl(Yl.get(g)||null,e,a,r,i,d)),!0}return!1}function Hv(e){var a=as(e.target);if(a!==null){var r=u(a);if(r!==null){if(a=r.tag,a===13){if(a=m(r),a!==null){e.blockedOn=a,zm(e.priority,function(){Tv(r)});return}}else if(a===31){if(a=f(r),a!==null){e.blockedOn=a,zm(e.priority,function(){Tv(r)});return}}else if(a===3&&r.stateNode.current.memoizedState.isDehydrated){e.blockedOn=r.tag===3?r.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Do(e){if(e.blockedOn!==null)return!1;for(var a=e.targetContainers;0<a.length;){var r=Zu(e.nativeEvent);if(r===null){r=e.nativeEvent;var i=new r.constructor(r.type,r);Wc=i,r.target.dispatchEvent(i),Wc=null}else return a=ns(r),a!==null&&Nv(a),e.blockedOn=r,!1;a.shift()}return!0}function wv(e,a,r){Do(e)&&r.delete(a)}function S1(){eg=!1,$n!==null&&Do($n)&&($n=null),Zn!==null&&Do(Zn)&&(Zn=null),Wn!==null&&Do(Wn)&&(Wn=null),Kl.forEach(wv),Yl.forEach(wv)}function _o(e,a){e.blockedOn===a&&(e.blockedOn=null,eg||(eg=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,S1)))}var Oo=null;function Ev(e){Oo!==e&&(Oo=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Oo===e&&(Oo=null);for(var a=0;a<e.length;a+=3){var r=e[a],i=e[a+1],d=e[a+2];if(typeof i!="function"){if(Wu(i||r)===null)continue;break}var g=ns(r);g!==null&&(e.splice(a,3),a-=3,Zd(g,{pending:!0,data:d,method:r.method,action:i},i,d))}}))}function Fs(e){function a(w){return _o(w,e)}$n!==null&&_o($n,e),Zn!==null&&_o(Zn,e),Wn!==null&&_o(Wn,e),Kl.forEach(a),Yl.forEach(a);for(var r=0;r<er.length;r++){var i=er[r];i.blockedOn===e&&(i.blockedOn=null)}for(;0<er.length&&(r=er[0],r.blockedOn===null);)Hv(r),r.blockedOn===null&&er.shift();if(r=(e.ownerDocument||e).$$reactFormReplay,r!=null)for(i=0;i<r.length;i+=3){var d=r[i],g=r[i+1],x=d[Xt]||null;if(typeof g=="function")x||Ev(r);else if(x){var j=null;if(g&&g.hasAttribute("formAction")){if(d=g,x=g[Xt]||null)j=x.formAction;else if(Wu(d)!==null)continue}else j=x.action;typeof j=="function"?r[i+1]=j:(r.splice(i,3),i-=3),Ev(r)}}}function Lv(){function e(g){g.canIntercept&&g.info==="react-transition"&&g.intercept({handler:function(){return new Promise(function(x){return d=x})},focusReset:"manual",scroll:"manual"})}function a(){d!==null&&(d(),d=null),i||setTimeout(r,20)}function r(){if(!i&&!navigation.transition){var g=navigation.currentEntry;g&&g.url!=null&&navigation.navigate(g.url,{state:g.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var i=!1,d=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",a),navigation.addEventListener("navigateerror",a),setTimeout(r,100),function(){i=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",a),navigation.removeEventListener("navigateerror",a),d!==null&&(d(),d=null)}}}function tg(e){this._internalRoot=e}Co.prototype.render=tg.prototype.render=function(e){var a=this._internalRoot;if(a===null)throw Error(o(409));var r=a.current,i=ma();yv(r,i,e,a,null,null)},Co.prototype.unmount=tg.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var a=e.containerInfo;yv(e.current,2,null,e,null,null),ho(),a[ts]=null}};function Co(e){this._internalRoot=e}Co.prototype.unstable_scheduleHydration=function(e){if(e){var a=Qc();e={blockedOn:null,target:e,priority:a};for(var r=0;r<er.length&&a!==0&&a<er[r].priority;r++);er.splice(r,0,e),r===0&&Hv(e)}};var Mv=s.version;if(Mv!=="19.2.1")throw Error(o(527,Mv,"19.2.1"));z.findDOMNode=function(e){var a=e._reactInternals;if(a===void 0)throw typeof e.render=="function"?Error(o(188)):(e=Object.keys(e).join(","),Error(o(268,e)));return e=h(a),e=e!==null?b(e):null,e=e===null?null:e.stateNode,e};var N1={bundleType:0,version:"19.2.1",rendererPackageName:"react-dom",currentDispatcherRef:E,reconcilerVersion:"19.2.1"};
49if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Vo=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Vo.isDisabled&&Vo.supportsFiber)try{xr=Vo.inject(N1),Pt=Vo}catch{}}return Wl.createRoot=function(e,a){if(!c(e))throw Error(o(299));var r=!1,i="",d=Jp,g=Gp,x=zp;return a!=null&&(a.unstable_strictMode===!0&&(r=!0),a.identifierPrefix!==void 0&&(i=a.identifierPrefix),a.onUncaughtError!==void 0&&(d=a.onUncaughtError),a.onCaughtError!==void 0&&(g=a.onCaughtError),a.onRecoverableError!==void 0&&(x=a.onRecoverableError)),a=kv(e,1,!1,null,null,r,i,null,d,g,x,Lv),e[ts]=a.current,Cu(e),new tg(a)},Wl.hydrateRoot=function(e,a,r){if(!c(e))throw Error(o(299));var i=!1,d="",g=Jp,x=Gp,j=zp,w=null;return r!=null&&(r.unstable_strictMode===!0&&(i=!0),r.identifierPrefix!==void 0&&(d=r.identifierPrefix),r.onUncaughtError!==void 0&&(g=r.onUncaughtError),r.onCaughtError!==void 0&&(x=r.onCaughtError),r.onRecoverableError!==void 0&&(j=r.onRecoverableError),r.formState!==void 0&&(w=r.formState)),a=kv(e,1,!0,a,r??null,i,d,w,g,x,j,Lv),a.context=jv(null),r=a.current,i=ma(),i=es(i),d=Jn(i),d.callback=null,Gn(r,d,i),r=i,a.current.lanes=r,dt(a,r),Qa(a),e[ts]=a.current,Cu(e),new Co(a)},Wl.version="19.2.1",Wl}var sx;function US(){if(sx)return og.exports;sx=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(s){console.error(s)}}return t(),og.exports=BS(),og.exports}var QS=US(),IS=(function(){function t(){this.keyToValue=new Map,this.valueToKey=new Map}return t.prototype.set=function(s,l){this.keyToValue.set(s,l),this.valueToKey.set(l,s)},t.prototype.getByKey=function(s){return this.keyToValue.get(s)},t.prototype.getByValue=function(s){return this.valueToKey.get(s)},t.prototype.clear=function(){this.keyToValue.clear(),this.valueToKey.clear()},t})(),qb=(function(){function t(s){this.generateIdentifier=s,this.kv=new IS}return t.prototype.register=function(s,l){this.kv.getByValue(s)||(l||(l=this.generateIdentifier(s)),this.kv.set(l,s))},t.prototype.clear=function(){this.kv.clear()},t.prototype.getIdentifier=function(s){return this.kv.getByValue(s)},t.prototype.getValue=function(s){return this.kv.getByKey(s)},t})(),KS=(function(){var t=function(s,l){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,c){o.__proto__=c}||function(o,c){for(var u in c)Object.prototype.hasOwnProperty.call(c,u)&&(o[u]=c[u])},t(s,l)};return function(s,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");t(s,l);function o(){this.constructor=s}s.prototype=l===null?Object.create(l):(o.prototype=l.prototype,new o)}})(),YS=(function(t){KS(s,t);function s(){var l=t.call(this,function(o){return o.name})||this;return l.classToAllowedProps=new Map,l}return s.prototype.register=function(l,o){typeof o=="object"?(o.allowProps&&this.classToAllowedProps.set(l,o.allowProps),t.prototype.register.call(this,l,o.identifier)):t.prototype.register.call(this,l,o)},s.prototype.getAllowedProps=function(l){return this.classToAllowedProps.get(l)},s})(qb),XS=function(t,s){var l=typeof Symbol=="function"&&t[Symbol.iterator];if(!l)return t;var o=l.call(t),c,u=[],m;try{for(;(s===void 0||s-- >0)&&!(c=o.next()).done;)u.push(c.value)}catch(f){m={error:f}}finally{try{c&&!c.done&&(l=o.return)&&l.call(o)}finally{if(m)throw m.error}}return u};function $S(t){if("values"in Object)return Object.values(t);var s=[];for(var l in t)t.hasOwnProperty(l)&&s.push(t[l]);return s}function ZS(t,s){var l=$S(t);if("find"in l)return l.find(s);for(var o=l,c=0;c<o.length;c++){var u=o[c];if(s(u))return u}}function Is(t,s){Object.entries(t).forEach(function(l){var o=XS(l,2),c=o[0],u=o[1];return s(u,c)})}function ec(t,s){return t.indexOf(s)!==-1}function lx(t,s){for(var l=0;l<t.length;l++){var o=t[l];if(s(o))return o}}var WS=(function(){function t(){this.transfomers={}}return t.prototype.register=function(s){this.transfomers[s.name]=s},t.prototype.findApplicable=function(s){return ZS(this.transfomers,function(l){return l.isApplicable(s)})},t.prototype.findByName=function(s){return this.transfomers[s]},t})(),eN=function(t){return Object.prototype.toString.call(t).slice(8,-1)},Pb=function(t){return typeof t>"u"},tN=function(t){return t===null},ii=function(t){return typeof t!="object"||t===null||t===Object.prototype?!1:Object.getPrototypeOf(t)===null?!0:Object.getPrototypeOf(t)===Object.prototype},Vg=function(t){return ii(t)&&Object.keys(t).length===0},cr=function(t){return Array.isArray(t)},aN=function(t){return typeof t=="string"},nN=function(t){return typeof t=="number"&&!isNaN(t)},rN=function(t){return typeof t=="boolean"},sN=function(t){return t instanceof RegExp},oi=function(t){return t instanceof Map},ci=function(t){return t instanceof Set},Bb=function(t){return eN(t)==="Symbol"},lN=function(t){return t instanceof Date&&!isNaN(t.valueOf())},iN=function(t){return t instanceof Error},ix=function(t){return typeof t=="number"&&isNaN(t)},oN=function(t){return rN(t)||tN(t)||Pb(t)||nN(t)||aN(t)||Bb(t)},cN=function(t){return typeof t=="bigint"},dN=function(t){return t===1/0||t===-1/0},uN=function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)},gN=function(t){return t instanceof URL},Ub=function(t){return t.replace(/\./g,"\\.")},gg=function(t){return t.map(String).map(Ub).join(".")},ni=function(t){for(var s=[],l="",o=0;o<t.length;o++){var c=t.charAt(o),u=c==="\\"&&t.charAt(o+1)===".";if(u){l+=".",o++;continue}var m=c===".";if(m){s.push(l),l="";continue}l+=c}var f=l;return s.push(f),s},Fg=function(){return Fg=Object.assign||function(t){for(var s,l=1,o=arguments.length;l<o;l++){s=arguments[l];for(var c in s)Object.prototype.hasOwnProperty.call(s,c)&&(t[c]=s[c])}return t},Fg.apply(this,arguments)},Jg=function(t,s){var l=typeof Symbol=="function"&&t[Symbol.iterator];if(!l)return t;var o=l.call(t),c,u=[],m;try{for(;(s===void 0||s-- >0)&&!(c=o.next()).done;)u.push(c.value)}catch(f){m={error:f}}finally{try{c&&!c.done&&(l=o.return)&&l.call(o)}finally{if(m)throw m.error}}return u},Gg=function(t,s){for(var l=0,o=s.length,c=t.length;l<o;l++,c++)t[c]=s[l];return t};function Ia(t,s,l,o){return{isApplicable:t,annotation:s,transform:l,untransform:o}}var Qb=[Ia(Pb,"undefined",function(){return null},function(){}),Ia(cN,"bigint",function(t){return t.toString()},function(t){return typeof BigInt<"u"?BigInt(t):(console.error("Please add a BigInt polyfill."),t)}),Ia(lN,"Date",function(t){return t.toISOString()},function(t){return new Date(t)}),Ia(iN,"Error",function(t,s){var l={name:t.name,message:t.message};return s.allowedErrorProps.forEach(function(o){l[o]=t[o]}),l},function(t,s){var l=new Error(t.message);return l.name=t.name,l.stack=t.stack,s.allowedErrorProps.forEach(function(o){l[o]=t[o]}),l}),Ia(sN,"regexp",function(t){return""+t},function(t){var s=t.slice(1,t.lastIndexOf("/")),l=t.slice(t.lastIndexOf("/")+1);return new RegExp(s,l)}
49),Ia(ci,"set",function(t){return Gg([],Jg(t.values()))},function(t){return new Set(t)}),Ia(oi,"map",function(t){return Gg([],Jg(t.entries()))},function(t){return new Map(t)}),Ia(function(t){return ix(t)||dN(t)},"number",function(t){return ix(t)?"NaN":t>0?"Infinity":"-Infinity"},Number),Ia(function(t){return t===0&&1/t===-1/0},"number",function(){return"-0"},Number),Ia(gN,"URL",function(t){return t.toString()},function(t){return new URL(t)})];function Hc(t,s,l,o){return{isApplicable:t,annotation:s,transform:l,untransform:o}}var Ib=Hc(function(t,s){if(Bb(t)){var l=!!s.symbolRegistry.getIdentifier(t);return l}return!1},function(t,s){var l=s.symbolRegistry.getIdentifier(t);return["symbol",l]},function(t){return t.description},function(t,s,l){var o=l.symbolRegistry.getValue(s[1]);if(!o)throw new Error("Trying to deserialize unknown symbol");return o}),mN=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce(function(t,s){return t[s.name]=s,t},{}),Kb=Hc(uN,function(t){return["typed-array",t.constructor.name]},function(t){return Gg([],Jg(t))},function(t,s){var l=mN[s[1]];if(!l)throw new Error("Trying to deserialize unknown typed array");return new l(t)});function Yb(t,s){if(t?.constructor){var l=!!s.classRegistry.getIdentifier(t.constructor);return l}return!1}var Xb=Hc(Yb,function(t,s){var l=s.classRegistry.getIdentifier(t.constructor);return["class",l]},function(t,s){var l=s.classRegistry.getAllowedProps(t.constructor);if(!l)return Fg({},t);var o={};return l.forEach(function(c){o[c]=t[c]}),o},function(t,s,l){var o=l.classRegistry.getValue(s[1]);if(!o)throw new Error("Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564");return Object.assign(Object.create(o.prototype),t)}),$b=Hc(function(t,s){return!!s.customTransformerRegistry.findApplicable(t)},function(t,s){var l=s.customTransformerRegistry.findApplicable(t);return["custom",l.name]},function(t,s){var l=s.customTransformerRegistry.findApplicable(t);return l.serialize(t)},function(t,s,l){var o=l.customTransformerRegistry.findByName(s[1]);if(!o)throw new Error("Trying to deserialize unknown custom value");return o.deserialize(t)}),fN=[Xb,Ib,$b,Kb],ox=function(t,s){var l=lx(fN,function(c){return c.isApplicable(t,s)});if(l)return{value:l.transform(t,s),type:l.annotation(t,s)};var o=lx(Qb,function(c){return c.isApplicable(t,s)});if(o)return{value:o.transform(t,s),type:o.annotation}},Zb={};Qb.forEach(function(t){Zb[t.annotation]=t});var pN=function(t,s,l){if(cr(s))switch(s[0]){case"symbol":return Ib.untransform(t,s,l);case"class":return Xb.untransform(t,s,l);case"custom":return $b.untransform(t,s,l);case"typed-array":return Kb.untransform(t,s,l);default:throw new Error("Unknown transformation: "+s)}else{var o=Zb[s];if(!o)throw new Error("Unknown transformation: "+s);return o.untransform(t,l)}},Bs=function(t,s){for(var l=t.keys();s>0;)l.next(),s--;return l.next().value};function Wb(t){if(ec(t,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(ec(t,"prototype"))throw new Error("prototype is not allowed as a property");if(ec(t,"constructor"))throw new Error("constructor is not allowed as a property")}var hN=function(t,s){Wb(s);for(var l=0;l<s.length;l++){var o=s[l];if(ci(t))t=Bs(t,+o);else if(oi(t)){var c=+o,u=+s[++l]==0?"key":"value",m=Bs(t,c);switch(u){case"key":t=m;break;case"value":t=t.get(m);break}}else t=t[o]}return t},zg=function(t,s,l){if(Wb(s),s.length===0)return l(t);for(var o=t,c=0;c<s.length-1;c++){var u=s[c];if(cr(o)){var m=+u;o=o[m]}else if(ii(o))o=o[u];else if(ci(o)){var f=+u;o=Bs(o,f)}else if(oi(o)){var p=c===s.length-2;if(p)break;var f=+u,h=+s[++c]==0?"key":"value",b=Bs(o,f);switch(h){case"key":o=b;break;case"value":o=o.get(b);break}}}var v=s[s.length-1];if(cr(o)?o[+v]=l(o[+v]):ii(o)&&(o[v]=l(o[v])),ci(o)){var S=Bs(o,+v),T=l(S);S!==T&&(o.delete(S),o.add(T))}if(oi(o)){var f=+s[s.length-2],A=Bs(o,f),h=+v==0?"key":"value";switch(h){case"key":{var y=l(A);o.set(y,o.get(A)),y!==A&&o.delete(A);break}case"value":{o.set(A,l(o.get(A)));break}}}return t},Rn=function(t,s){var l=typeof Symbol=="function"&&t[Symbol.iterator];if(!l)return t;var o=l.call(t),c,u=[],m;try{for(;(s===void 0||s-- >0)&&!(c=o.next()).done;)u.push(c.value)}catch(f){m={error:f}}finally{try{c&&!c.done&&(l=o.return)&&l.call(o)}finally{if(m)throw m.error}}return u},sr=function(t,s){for(var l=0,o=s.length,c=t.length;l<o;l++,c++)t[c]=s[l];return t};function qg(t,s,l){if(l===void 0&&(l=[]),!!t){if(!cr(t)){Is(t,function(m,f){return qg(m,s,sr(sr([],Rn(l)),Rn(ni(f))))});return}var o=Rn(t,2),c=o[0],u=o[1];u&&Is(u,function(m,f){qg(m,s,sr(sr([],Rn(l)),Rn(ni(f))))}),s(c,l)}}function vN(t,s,l){return qg(s,function(o,c){t=zg(t,c,function(u){return pN(u,o,l)})}),t}function xN(t,s){function l(m,f){var p=hN(t,ni(f));
49m.map(ni).forEach(function(h){t=zg(t,h,function(){return p})})}if(cr(s)){var o=Rn(s,2),c=o[0],u=o[1];c.forEach(function(m){t=zg(t,ni(m),function(){return t})}),u&&Is(u,l)}else Is(s,l);return t}var bN=function(t,s){return ii(t)||cr(t)||oi(t)||ci(t)||Yb(t,s)};function kN(t,s,l){var o=l.get(t);o?o.push(s):l.set(t,[s])}function jN(t,s){var l={},o=void 0;return t.forEach(function(c){if(!(c.length<=1)){s||(c=c.map(function(p){return p.map(String)}).sort(function(p,h){return p.length-h.length}));var u=Rn(c),m=u[0],f=u.slice(1);m.length===0?o=f.map(gg):l[gg(m)]=f.map(gg)}}),o?Vg(l)?[o]:[o,l]:Vg(l)?void 0:l}var ek=function(t,s,l,o,c,u,m){var f;c===void 0&&(c=[]),u===void 0&&(u=[]),m===void 0&&(m=new Map);var p=oN(t);if(!p){kN(t,c,s);var h=m.get(t);if(h)return o?{transformedValue:null}:h}if(!bN(t,l)){var b=ox(t,l),v=b?{transformedValue:b.value,annotations:[b.type]}:{transformedValue:t};return p||m.set(t,v),v}if(ec(u,t))return{transformedValue:null};var S=ox(t,l),T=(f=S?.value)!==null&&f!==void 0?f:t,A=cr(T)?[]:{},y={};Is(T,function(L,_){var F=ek(L,s,l,o,sr(sr([],Rn(c)),[_]),sr(sr([],Rn(u)),[t]),m);A[_]=F.transformedValue,cr(F.annotations)?y[_]=F.annotations:ii(F.annotations)&&Is(F.annotations,function($,P){y[Ub(_)+"."+P]=$})});var R=Vg(y)?{transformedValue:A,annotations:S?[S.type]:void 0}:{transformedValue:A,annotations:S?[S.type,y]:y};return p||m.set(t,R),R};function tk(t){return Object.prototype.toString.call(t).slice(8,-1)}function cx(t){return tk(t)==="Array"}function yN(t){if(tk(t)!=="Object")return!1;const s=Object.getPrototypeOf(t);return!!s&&s.constructor===Object&&s===Object.prototype}function SN(t,s,l,o,c){const u={}.propertyIsEnumerable.call(o,s)?"enumerable":"nonenumerable";u==="enumerable"&&(t[s]=l),c&&u==="nonenumerable"&&Object.defineProperty(t,s,{value:l,enumerable:!1,writable:!0,configurable:!0})}function Pg(t,s={}){if(cx(t))return t.map(c=>Pg(c,s));if(!yN(t))return t;const l=Object.getOwnPropertyNames(t),o=Object.getOwnPropertySymbols(t);return[...l,...o].reduce((c,u)=>{if(cx(s.props)&&!s.props.includes(u))return c;const m=t[u],f=Pg(m,s);return SN(c,u,f,t,s.nonenumerable),c},{})}var Gr=function(){return Gr=Object.assign||function(t){for(var s,l=1,o=arguments.length;l<o;l++){s=arguments[l];for(var c in s)Object.prototype.hasOwnProperty.call(s,c)&&(t[c]=s[c])}return t},Gr.apply(this,arguments)},NN=function(t,s){var l=typeof Symbol=="function"&&t[Symbol.iterator];if(!l)return t;var o=l.call(t),c,u=[],m;try{for(;(s===void 0||s-- >0)&&!(c=o.next()).done;)u.push(c.value)}catch(f){m={error:f}}finally{try{c&&!c.done&&(l=o.return)&&l.call(o)}finally{if(m)throw m.error}}return u},TN=function(t,s){for(var l=0,o=s.length,c=t.length;l<o;l++,c++)t[c]=s[l];return t},tn=(function(){function t(s){var l=s===void 0?{}:s,o=l.dedupe,c=o===void 0?!1:o;this.classRegistry=new YS,this.symbolRegistry=new qb(function(u){var m;return(m=u.description)!==null&&m!==void 0?m:""}),this.customTransformerRegistry=new WS,this.allowedErrorProps=[],this.dedupe=c}return t.prototype.serialize=function(s){var l=new Map,o=ek(s,l,this,this.dedupe),c={json:o.transformedValue};o.annotations&&(c.meta=Gr(Gr({},c.meta),{values:o.annotations}));var u=jN(l,this.dedupe);return u&&(c.meta=Gr(Gr({},c.meta),{referentialEqualities:u})),c},t.prototype.deserialize=function(s){var l=s.json,o=s.meta,c=Pg(l);return o?.values&&(c=vN(c,o.values,this)),o?.referentialEqualities&&(c=xN(c,o.referentialEqualities)),c},t.prototype.stringify=function(s){return JSON.stringify(this.serialize(s))},t.prototype.parse=function(s){return this.deserialize(JSON.parse(s))},t.prototype.registerClass=function(s,l){this.classRegistry.register(s,l)},t.prototype.registerSymbol=function(s,l){this.symbolRegistry.register(s,l)},t.prototype.registerCustom=function(s,l){this.customTransformerRegistry.register(Gr({name:l},s))},t.prototype.allowErrorProps=function(){for(var s,l=[],o=0;o<arguments.length;o++)l[o]=arguments[o];(s=this.allowedErrorProps).push.apply(s,TN([],NN(l)))},t.defaultInstance=new t,t.serialize=t.defaultInstance.serialize.bind(t.defaultInstance),t.deserialize=t.defaultInstance.deserialize.bind(t.defaultInstance),t.stringify=t.defaultInstance.stringify.bind(t.defaultInstance),t.parse=t.defaultInstance.parse.bind(t.defaultInstance),t.registerClass=t.defaultInstance.registerClass.bind(t.defaultInstance),t.registerSymbol=t.defaultInstance.registerSymbol.bind(t.defaultInstance),t.registerCustom=t.defaultInstance.registerCustom.bind(t.defaultInstance),t.allowErrorProps=t.defaultInstance.allowErrorProps.bind(t.defaultInstance),t})();tn.serialize;tn.deserialize;tn.stringify;tn.parse;tn.registerClass;tn.registerCustom;tn.registerSymbol;tn.allowErrorProps;function RN(t,s){if(t instanceof RegExp)return{keys:!1,pattern:t};var l,o,c,u,m=[],f="",p=t.split("/");for(p[0]||p.shift();c=p.shift();
49)l=c[0],l==="*"?(m.push(l),f+=c[1]==="?"?"(?:/(.*))?":"/(.*)"):l===":"?(o=c.indexOf("?",1),u=c.indexOf(".",1),m.push(c.substring(1,~o?o:~u?u:c.length)),f+=~o&&!~u?"(?:/([^/]+?))?":"/([^/]+?)",~u&&(f+=(~o?"?":"")+"\\"+c.substring(u))):f+="/"+c;return{keys:m,pattern:new RegExp("^"+f+(s?"(?=$|/)":"/?$"),"i")}}var mg={exports:{}},fg={};/** 50 * @license React 51 * use-sync-external-store-shim.production.js 52 * 53 * Copyright (c) Meta Platforms, Inc. and affiliates. 54 * 55 * This source code is licensed under the MIT license found in the 56 * LICENSE file in the root directory of this source tree. 57 */var dx;function AN(){if(dx)return fg;dx=1;var t=kc();function s(v,S){return v===S&&(v!==0||1/v===1/S)||v!==v&&S!==S}var l=typeof Object.is=="function"?Object.is:s,o=t.useState,c=t.useEffect,u=t.useLayoutEffect,m=t.useDebugValue;function f(v,S){var T=S(),A=o({inst:{value:T,getSnapshot:S}}),y=A[0].inst,R=A[1];return u(function(){y.value=T,y.getSnapshot=S,p(y)&&R({inst:y})},[v,T,S]),c(function(){return p(y)&&R({inst:y}),v(function(){p(y)&&R({inst:y})})},[v]),m(T),T}function p(v){var S=v.getSnapshot;v=v.value;try{var T=S();return!l(v,T)}catch{return!0}}function h(v,S){return S()}var b=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?h:f;return fg.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:b,fg}var ux;function HN(){return ux||(ux=1,mg.exports=AN()),mg.exports}var wN=HN();const EN=jc.useInsertionEffect,LN=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",MN=LN?k.useLayoutEffect:k.useEffect,DN=EN||MN,ak=t=>{const s=k.useRef([t,(...l)=>s[0](...l)]).current;return DN(()=>{s[0]=t}),s[1]},_N="popstate",pm="pushState",hm="replaceState",ON="hashchange",gx=[_N,pm,hm,ON],CN=t=>{for(const s of gx)addEventListener(s,t);return()=>{for(const s of gx)removeEventListener(s,t)}},nk=(t,s)=>wN.useSyncExternalStore(CN,t,s),VN=()=>location.search,FN=({ssrSearch:t=""}={})=>nk(VN,()=>t),mx=()=>location.pathname,JN=({ssrPath:t}={})=>nk(mx,t?()=>t:mx),GN=(t,{replace:s=!1,state:l=null}={})=>history[s?hm:pm](l,"",t),zN=(t={})=>[JN(t),GN],fx=Symbol.for("wouter_v3");if(typeof history<"u"&&typeof window[fx]>"u"){for(const t of[pm,hm]){const s=history[t];history[t]=function(){const l=s.apply(this,arguments),o=new Event(t);return o.arguments=arguments,dispatchEvent(o),l}}Object.defineProperty(window,fx,{value:!0})}const qN=(t,s)=>s.toLowerCase().indexOf(t.toLowerCase())?"~"+s:s.slice(t.length)||"/",rk=(t="")=>t==="/"?"":t,PN=(t,s)=>t[0]==="~"?t.slice(1):rk(s)+t,BN=(t="",s)=>qN(px(rk(t)),px(s)),px=t=>{try{return decodeURI(t)}catch{return t}},sk={hook:zN,searchHook:FN,parser:RN,base:"",ssrPath:void 0,ssrSearch:void 0,ssrContext:void 0,hrefs:t=>t},lk=k.createContext(sk),xi=()=>k.useContext(lk),ik={},ok=k.createContext(ik),UN=()=>k.useContext(ok),wc=t=>{const[s,l]=t.hook(t);return[BN(t.base,s),ak((o,c)=>l(PN(o,t.base),c))]},bi=()=>wc(xi()),ck=(t,s,l,o)=>{const{pattern:c,keys:u}=s instanceof RegExp?{keys:!1,pattern:s}:t(s||"*",o),m=c.exec(l)||[],[f,...p]=m;return f!==void 0?[!0,(()=>{const h=u!==!1?Object.fromEntries(u.map((v,S)=>[v,p[S]])):m.groups;let b={...p};return h&&Object.assign(b,h),b})(),...o?[f]:[]]:[!1,null]},dk=({children:t,...s})=>{const l=xi(),o=s.hook?sk:l;let c=o;const[u,m]=s.ssrPath?.split("?")??[];m&&(s.ssrSearch=m,s.ssrPath=u),s.hrefs=s.hrefs??s.hook?.hrefs;let f=k.useRef({}),p=f.current,h=p;for(let b in o){const v=b==="base"?o[b]+(s[b]||""):s[b]||o[b];p===h&&v!==h[b]&&(f.current=h={...h}),h[b]=v,(v!==o[b]||v!==c[b])&&(c=h)}return k.createElement(lk.Provider,{value:c,children:t})},hx=({children:t,component:s},l)=>s?k.createElement(s,{params:l}):typeof t=="function"?t(l):t,QN=t=>{let s=k.useRef(ik);const l=s.current;return s.current=Object.keys(t).length!==Object.keys(l).length||Object.entries(t).some(([o,c])=>c!==l[o])?t:l},fe=({path:t,nest:s,match:l,...o})=>{const c=xi(),[u]=wc(c),[m,f,p]=l??ck(c.parser,t,u,s),h=QN({...UN(),...f});if(!m)return null;const b=p?k.createElement(dk,{base:p},hx(o,h)):hx(o,h);return k.createElement(ok.Provider,{value:h,children:b})},N=k.forwardRef((t,s)=>{const l=xi(),[o,c]=wc(l),{to:u="",href:m=u,onClick:f,asChild:p,children:h,className:b,replace:v,state:S,...T}=t,A=ak(R=>{R.ctrlKey||R.metaKey||R.altKey||R.shiftKey||R.button!==0||(f?.(R),R.defaultPrevented||(R.preventDefault(),c(m,t)))}),y=l.hrefs(m[0]==="~"?m.slice(1):l.base+m,l);return p&&k.isValidElement(h)?k.cloneElement(h,{onClick:A,href:y}):k.createElement("a",{...T,onClick:A,href:y,className:b?.call?b(o===m):b,children:h,ref:s})}),Bg=t=>Array.isArray(t)?t.flatMap(s=>Bg(s&&s.type===k.Fragment?s.props.children:s)):[t],IN=({children:t,location:s})=>{const l=xi(),[o]=wc(l);typeof window<"u"&&(window.__WOUTER_ROUTES__||(window.__WOUTER_ROUTES__=[]),Bg(t).forEach(u=>{if(k.isValidElement(u)&&u.props.path){const m=u.props.path;window.__WOUTER_ROUTES__.includes(m)||window.__WOUTER_ROUTES__.push(m)}}));for(const c of Bg(t)){let u=0;if(k.isValidElement(c)&&(u=ck(l.parser,c.props.path,s||o,c.props.nest))[0])return k.cloneElement(c,{match:u})}return null};var KN=(t,s,l,o,c,u,m,f)=>
vendor: 7,515 bytes, line 57
57{let p=document.documentElement,h=["light","dark"];function b(T){(Array.isArray(t)?t:[t]).forEach(A=>{let y=A==="class",R=y&&u?c.map(L=>u[L]||L):c;y?(p.classList.remove(...R),p.classList.add(u&&u[T]?u[T]:T)):p.setAttribute(A,T)}),v(T)}function v(T){f&&h.includes(T)&&(p.style.colorScheme=T)}function S(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(o)b(o);else try{let T=localStorage.getItem(s)||l,A=m&&T==="system"?S():T;b(A)}catch{}},YN=k.createContext(void 0),XN={setTheme:t=>{},themes:[]},$N=()=>{var t;return(t=k.useContext(YN))!=null?t:XN};k.memo(({forcedTheme:t,storageKey:s,attribute:l,enableSystem:o,enableColorScheme:c,defaultTheme:u,value:m,themes:f,nonce:p,scriptProps:h})=>{let b=JSON.stringify([l,s,u,t,f,m,o,c]).slice(1,-1);return k.createElement("script",{...h,suppressHydrationWarning:!0,nonce:typeof window>"u"?p:"",dangerouslySetInnerHTML:{__html:`(${KN.toString()})(${b})`}})});var ki=zb();const uk=eb(ki);function ZN(t){if(typeof document>"u")return;let s=document.head||document.getElementsByTagName("head")[0],l=document.createElement("style");l.type="text/css",s.appendChild(l),l.styleSheet?l.styleSheet.cssText=t:l.appendChild(document.createTextNode(t))}const WN=t=>{switch(t){case"success":return aT;case"info":return rT;case"warning":return nT;case"error":return sT;default:return null}},eT=Array(12).fill(0),tT=({visible:t,className:s})=>se.createElement("div",{className:["sonner-loading-wrapper",s].filter(Boolean).join(" "),"data-visible":t},se.createElement("div",{className:"sonner-spinner"},eT.map((l,o)=>se.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${o}`})))),aT=se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},se.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),nT=se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},se.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),rT=se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},se.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),sT=se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},se.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),lT=se.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},se.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),se.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),iT=()=>{const[t,s]=se.useState(document.hidden);return se.useEffect(()=>{const l=()=>{s(document.hidden)};return document.addEventListener("visibilitychange",l),()=>window.removeEventListener("visibilitychange",l)},[]),t};let Ug=1;class oT{constructor(){this.subscribe=s=>(this.subscribers.push(s),()=>{const l=this.subscribers.indexOf(s);this.subscribers.splice(l,1)}),this.publish=s=>{this.subscribers.forEach(l=>l(s))},this.addToast=s=>{this.publish(s),this.toasts=[...this.toasts,s]},this.create=s=>{var l;const{message:o,...c}=s,u=typeof s?.id=="number"||((l=s.id)==null?void 0:l.length)>0?s.id:Ug++,m=this.toasts.find(p=>p.id===u),f=s.dismissible===void 0?!0:s.dismissible;return this.dismissedToasts.has(u)&&this.dismissedToasts.delete(u),m?this.toasts=this.toasts.map(p=>p.id===u?(this.publish({...p,...s,id:u,title:o}),{...p,...s,id:u,dismissible:f,title:o}):p):this.addToast({title:o,...c,dismissible:f,id:u}),u},this.dismiss=s=>(s?(this.dismissedToasts.add(s),requestAnimationFrame(()=>this.subscribers.forEach(l=>l({id:s,dismiss:!0})))):this.toasts.forEach(l=>{this.subscribers.forEach(o=>o({id:l.id,dismiss:!0}))}),s),this.message=(s,l)=>this.create({...l,message:s}),this.error=(s,l)=>this.create({...l,message:s,type:"error"}),this.success=(s,l)=>this.create({...l,type:"success",message:s}),this.info=(s,l)=>this.create({...l,type:"info",message:s}),this.warning=(s,l)=>this.create({...l,type:"warning",message:s}),this.loading=(s,l)=>this.create({...l,type:"loading",message:s}),this.promise=(s,l)=>{if(!l)return;let o;l.loading!==void 0&&(o=this.create({...l,promise:s,type:"loading",message:l.loading,description:typeof l.description!="function"?l.description:void 0}));const c=Promise.resolve(s instanceof Function?s():s);let u=o!==void 0,m;const f=c.then(async h=>{if(m=["resolve",h],se.isValidElement(h))u=!1,this.create({id:o,type:"default",message:h});else if(dT(h)&&!h.ok){u=!1;const v=typeof l.error=="function"?await l.error(`HTTP error! status: ${h.status}`):l.error,S=typeof l.description=="function"?await l.description(`HTTP error! status: ${h.status}`):l.description,A=typeof v=="object"&&!se.isValidElement(v)?v:{message:v};this.create({id:o,type:"error",description:S,...A})}else if(h instanceof Error){u=!1;const v=typeof l.error=="function"?await l.error(h):l.error,S=typeof l.description=="function"?await l.description(h):l.description,A=typeof v=="object"&&!se.isValidElement(v)?v:{message:v};this.create({id:o,type:"error",description:S,...A})}else if(l.success!==void 0){u=!1;const v=typeof l.success=="function"?await l.success(h):l.success,S=typeof l.description=="function"?await l.description(h):l.description,A=typeof v=="object"&&!se.isValidElement(v)?v:{message:v};this.create({id:o,type:"success",description:S,...A})}}).catch(async h=>{if(m=["reject",h],l.error!==void 0){u=!1;const b=typeof l.error=="function"?await l.error(h):l.error,v=typeof l.description=="function"?await l.description(h):l.description,T=typeof b=="object"&&!se.isValidElement(b)?b:{message:b};this.create({id:o,type:"error",description:v,...T})}}).finally(()=>{u&&(this.dismiss(o),o=void 0),l.finally==null||l.finally.call(l)}),p=()=>new Promise((h,b)=>f.then(()=>m[0]==="reject"?b(m[1]):h(m[1])).catch(b));return typeof o!="string"&&typeof o!="number"?{unwrap:p}:Object.assign(o,{unwrap:p})},this.custom=(s,l)=>{const o=l?.id||Ug++;return this.create({jsx:s(o),id:o,...l}),o},this.getActiveToasts=()=>this.toasts.filter(s=>!this.dismissedToasts.has(s.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const na=new oT,cT=(t,s)=>{const l=s?.id||Ug++;return na.addToast({title:t,...s,id:l}),l},dT=t=>t&&typeof t=="object"&&"ok"in t&&typeof t.ok=="boolean"&&"status"in t&&typeof t.status=="number",uT=cT,gT=()=>na.toasts,mT=()=>na.getActiveToasts(),gc=Object.assign(uT,{success:na.success,info:na.info,warning:na.warning,error:na.error,custom:na.custom,message:na.message,promise:na.promise,dismiss:na.dismiss,loading:na.loading},{getHistory:gT,getToasts:mT});ZN
vendor: 14,873 bytes, line 57
57("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function
vendor: 1,545 bytes, line 57
57qo(t){return t.label!==void 0}const fT=3,pT="24px",hT="16px",vx=4e3,vT=356,xT=14,bT=45,kT=200;function Ka(...t){return t.filter(Boolean).join(" ")}function jT(t){const[s,l]=t.split("-"),o=[];return s&&o.push(s),l&&o.push(l),o}const yT=t=>{var s,l,o,c,u,m,f,p,h;const{invert:b,toast:v,unstyled:S,interacting:T,setHeights:A,visibleToasts:y,heights:R,index:L,toasts:_,expanded:F,removeToast:$,defaultRichColors:P,closeButton:U,style:M,cancelButtonStyle:V,actionButtonStyle:re,className:W="",descriptionClassName:oe="",duration:le,position:ue,gap:de,expandByDefault:ge,classNames:E,icons:z,closeButtonAriaLabel:C="Close toast"}=t,[ce,je]=se.useState(null),[H,I]=se.useState(null),[q,K]=se.useState(!1),[ie,he]=se.useState(!1),[ae,Se]=se.useState(!1),[De,Fe]=se.useState(!1),[ze,Be]=se.useState(!1),[Et,yt]=se.useState(0),[rn,Ga]=se.useState(0),wa=se.useRef(v.duration||le||vx),nl=se.useRef(null),la=se.useRef(null),rl=L===0,sl=L+1<=y,zt=v.type,wn=v.dismissible!==!1,qt=v.className||"",Bc=v.descriptionClassName||"",hr=se.useMemo(()=>R.findIndex(Oe=>Oe.toastId===v.id)||0,[R,v.id]),Si=se.useMemo(()=>{var Oe;return(Oe=v.closeButton)!=null?Oe:U},[v.closeButton,U]),vr=se.useMemo(()=>v.duration||le||vx,[v.duration,le]),ll=se.useRef(0),sn=se.useRef(0),Ni=se.useRef(0),En=se.useRef(null),[xr,Pt]=ue.split("-"),Ea=se.useMemo(()=>R.reduce((Oe,ot,Rt)=>Rt>=hr?Oe:Oe+ot.height,0),[R,hr]),Vt=iT(),Uc=v.invert||b,il=zt==="loading";sn.current=se.useMemo(()=>hr*de+Ea,[hr,Ea]),se.useEffect(()=>{wa.current=vr},[vr]),se.useEffect(()=>{K(!0)},[]),se.useEffect(()=>
vendor: 4,223 bytes, line 57
57{const Oe=la.current;if(Oe){const ot=Oe.getBoundingClientRect().height;return Ga(ot),A(Rt=>[{toastId:v.id,height:ot,position:v.position},...Rt]),()=>A(Rt=>Rt.filter(Ft=>Ft.toastId!==v.id))}},[A,v.id]),se.useLayoutEffect(()=>{if(!q)return;const Oe=la.current,ot=Oe.style.height;Oe.style.height="auto";const Rt=Oe.getBoundingClientRect().height;Oe.style.height=ot,Ga(Rt),A(Ft=>Ft.find(dt=>dt.toastId===v.id)?Ft.map(dt=>dt.toastId===v.id?{...dt,height:Rt}:dt):[{toastId:v.id,height:Rt,position:v.position},...Ft])},[q,v.title,v.description,A,v.id,v.jsx,v.action,v.cancel]);const za=se.useCallback(()=>{he(!0),yt(sn.current),A(Oe=>Oe.filter(ot=>ot.toastId!==v.id)),setTimeout(()=>{$(v)},kT)},[v,$,A,sn]);se.useEffect(()=>{if(v.promise&&zt==="loading"||v.duration===1/0||v.type==="loading")return;let Oe;return F||T||Vt?(()=>{if(Ni.current<ll.current){const Ft=new Date().getTime()-ll.current;wa.current=wa.current-Ft}Ni.current=new Date().getTime()})():(()=>{wa.current!==1/0&&(ll.current=new Date().getTime(),Oe=setTimeout(()=>{v.onAutoClose==null||v.onAutoClose.call(v,v),za()},wa.current))})(),()=>clearTimeout(Oe)},[F,T,v,zt,Vt,za]),se.useEffect(()=>{v.delete&&(za(),v.onDismiss==null||v.onDismiss.call(v,v))},[za,v.delete]);function Zr(){var Oe;if(z?.loading){var ot;return se.createElement("div",{className:Ka(E?.loader,v==null||(ot=v.classNames)==null?void 0:ot.loader,"sonner-loader"),"data-visible":zt==="loading"},z.loading)}return se.createElement(tT,{className:Ka(E?.loader,v==null||(Oe=v.classNames)==null?void 0:Oe.loader),visible:zt==="loading"})}const Wr=v.icon||z?.[zt]||WN(zt);var br,qa;return se.createElement("li",{tabIndex:0,ref:la,className:Ka(W,qt,E?.toast,v==null||(s=v.classNames)==null?void 0:s.toast,E?.default,E?.[zt],v==null||(l=v.classNames)==null?void 0:l[zt]),"data-sonner-toast":"","data-rich-colors":(br=v.richColors)!=null?br:P,"data-styled":!(v.jsx||v.unstyled||S),"data-mounted":q,"data-promise":!!v.promise,"data-swiped":ze,"data-removed":ie,"data-visible":sl,"data-y-position":xr,"data-x-position":Pt,"data-index":L,"data-front":rl,"data-swiping":ae,"data-dismissible":wn,"data-type":zt,"data-invert":Uc,"data-swipe-out":De,"data-swipe-direction":H,"data-expanded":!!(F||ge&&q),"data-testid":v.testId,style:{"--index":L,"--toasts-before":L,"--z-index":_.length-L,"--offset":`${ie?Et:sn.current}px`,"--initial-height":ge?"auto":`${rn}px`,...M,...v.style},onDragEnd:()=>{Se(!1),je(null),En.current=null},onPointerDown:Oe=>{Oe.button!==2&&(il||!wn||(nl.current=new Date,yt(sn.current),Oe.target.setPointerCapture(Oe.pointerId),Oe.target.tagName!=="BUTTON"&&(Se(!0),En.current={x:Oe.clientX,y:Oe.clientY})))},onPointerUp:()=>{var Oe,ot,Rt;if(De||!wn)return;En.current=null;const Ft=Number(((Oe=la.current)==null?void 0:Oe.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Ln=Number(((ot=la.current)==null?void 0:ot.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),dt=new Date().getTime()-((Rt=nl.current)==null?void 0:Rt.getTime()),It=ce==="x"?Ft:Ln,kr=Math.abs(It)/dt;if(Math.abs(It)>=bT||kr>.11){yt(sn.current),v.onDismiss==null||v.onDismiss.call(v,v),I(ce==="x"?Ft>0?"right":"left":Ln>0?"down":"up"),za(),Fe(!0);return}else{var Kt,Yt;(Kt=la.current)==null||Kt.style.setProperty("--swipe-amount-x","0px"),(Yt=la.current)==null||Yt.style.setProperty("--swipe-amount-y","0px")}Be(!1),Se(!1),je(null)},onPointerMove:Oe=>{var ot,Rt,Ft;if(!En.current||!wn||((ot=window.getSelection())==null?void 0:ot.toString().length)>0)return;const dt=Oe.clientY-En.current.y,It=Oe.clientX-En.current.x;var kr;const Kt=(kr=t.swipeDirections)!=null?kr:jT(ue);!ce&&(Math.abs(It)>1||Math.abs(dt)>1)&&je(Math.abs(It)>Math.abs(dt)?"x":"y");let Yt={x:0,y:0};const es=La=>1/(1.5+Math.abs(La)/20);if(ce==="y"){if(Kt.includes("top")||Kt.includes("bottom"))if(Kt.includes("top")&&dt<0||Kt.includes("bottom")&&dt>0)Yt.y=dt;else{const La=dt*es(dt);Yt.y=Math.abs(La)<Math.abs(dt)?La:dt}}else if(ce==="x"&&(Kt.includes("left")||Kt.includes("right")))if(Kt.includes("left")&&It<0||Kt.includes("right")&&It>0)Yt.x=It;else{const La=It*es(It);Yt.x=Math.abs(La)<Math.abs(It)?La:It}(Math.abs(Yt.x)>0||Math.abs(Yt.y)>0)&&Be(!0),(Rt=la.current)==null||Rt.style.setProperty("--swipe-amount-x",`${Yt.x}
57px`),(Ft=la.current)==null||Ft.style.setProperty("--swipe-amount-y",`${Yt.y}px`)}},Si&&!v.jsx&&zt!=="loading"?se.createElement("button",{"aria-label":C,"data-disabled":il,"data-close-button":!0,onClick:il||!wn?()=>{}:()=>{za(),v.onDismiss==null||v.onDismiss.call(v,v)},className:Ka(E?.closeButton,v==null||(o=v.classNames)==null?void 0:o.closeButton)},(qa=z?.close)!=null?qa:lT):null,(zt||v.icon||v.promise)&&v.icon!==null&&(z?.[zt]!==null||v.icon)?se.createElement("div",{"data-icon":"",className:Ka(E?.icon,v==null||(c=v.classNames)==null?void 0:c.icon)},v.promise||v.type==="loading"&&!v.icon?v.icon||Zr():null,v.type!=="loading"?Wr:null):null,se.createElement("div",{"data-content":"",className:Ka(E?.content,v==null||(u=v.classNames)==null?void 0:u.content)},se.createElement("div",{"data-title":"",className:Ka(E?.title,v==null||(m=v.classNames)==null?void 0:m.title)},v.jsx?v.jsx:typeof v.title=="function"?v.title():v.title),v.description?se.createElement("div",{"data-description":"",className:Ka(oe,Bc,E?.description,v==null||(f=v.classNames)==null?void 0:f.description)},typeof v.description=="function"?v.description():v.description):null),se.isValidElement(v.cancel)?v.cancel:v.cancel&&qo(v.cancel)?se.createElement("button",{"data-button":!0,"data-cancel":!0,style:v.cancelButtonStyle||V,onClick:Oe=>{qo(v.cancel)&&wn&&(v.cancel.onClick==null||v.cancel.onClick.call(v.cancel,Oe),za())},className:Ka(E?.cancelButton,v==null||(p=v.classNames)==null?void 0:p.cancelButton)},v.cancel.label):null,se.isValidElement(v.action)?v.action:v.action&&qo(v.action)?se.createElement("button",{"data-button":!0,"data-action":!0,style:v.actionButtonStyle||re,onClick:Oe=>{qo(v.action)&&(v.action.onClick==null||v.action.onClick.call(v.action,Oe),!Oe.defaultPrevented&&za())},className:Ka(E?.actionButton,v==null||(h=v.classNames)==null?void 0:h.actionButton)},v.action.label):null)};function xx(){if(typeof window>"u"||typeof document>"u")return"ltr";const t=document.documentElement.getAttribute("dir");return t==="auto"||!t?window.getComputedStyle(document.documentElement).direction:t}function ST(t,s){const l={};return[t,s].forEach((o,c)=>{const u=c===1,m=u?"--mobile-offset":"--offset",f=u?hT:pT;function p(h){["top","right","bottom","left"].forEach(b=>{l[`${m}-${b}`]=typeof h=="number"?`${h}px`:h})}typeof o=="number"||typeof o=="string"?p(o):typeof o=="object"?["top","right","bottom","left"].forEach(h=>{o[h]===void 0?l[`${m}-${h}`]=f:l[`${m}-${h}`]=typeof o[h]=="number"?`${o[h]}px`:o[h]}):p(f)}),l}const NT=se.forwardRef(function(s,l){const{id:o,invert:c,position:u="bottom-right",hotkey:m=["altKey","KeyT"],expand:f,closeButton:p,className:h,offset:b,mobileOffset:v,theme:S="light",richColors:T,duration:A,style:y,visibleToasts:R=fT,toastOptions:L,dir:_=xx(),gap:F=xT,icons:$,containerAriaLabel:P="Notifications"}=s,[U,M]=se.useState([]),V=se.useMemo(()=>o?U.filter(q=>q.toasterId===o):U.filter(q=>!q.toasterId),[U,o]),re=se.useMemo(()=>Array.from(new Set([u].concat(V.filter(q=>q.position).map(q=>q.position)))),[V,u]),[W,oe]=se.useState([]),[le,ue]=se.useState(!1),[de,ge]=se.useState(!1),[E,z]=se.useState(S!=="system"?S:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),C=se.useRef(null),ce=m.join("+").replace(/Key/g,"").replace(/Digit/g,""),je=se.useRef(null),H=se.useRef(!1),I=se.useCallback(q=>{M(K=>{var ie;return(ie=K.find(he=>he.id===q.id))!=null&&ie.delete||na.dismiss(q.id),K.filter(({id:he})=>he!==q.id)})},[]);return se.useEffect(()=>na.subscribe(q=>{if(q.dismiss){requestAnimationFrame(()=>{M(K=>K.map(ie=>ie.id===q.id?{...ie,delete:!0}:ie))});return}setTimeout(()=>{uk.flushSync(()=>{M(K=>{const ie=K.findIndex(he=>he.id===q.id);return ie!==-1?[...K.slice(0,ie),{...K[ie],...q},...K.slice(ie+1)]:[q,...K]})})})}),[U]),se.useEffect(()=>{if(S!=="system"){z(S);return}if(S==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?z("dark"):z("light")),typeof window>"u")return;const q=window.matchMedia("(prefers-color-scheme: dark)");try{q.addEventListener("change",({matches:K})=>{z(K?"dark":"light")})}catch{q.addListener(({matches:ie})=>{try{z(ie?"dark":"light")}catch(he){console.error(he)}})}},[S]),se.useEffect(()=>{U.length<=1&&ue(!1)},[U]),se.useEffect(()=>{const q=K=>{var ie;if(m.every(Se=>K[Se]||K.code===Se)){var ae;ue(!0),(ae=C.current)==null||ae.focus()}K.code==="Escape"&&(document.activeElement===C.current||(ie=C.current)!=null&&ie.contains(document.activeElement))&&ue(!1)};return document.addEventListener("keydown",q),()=>document.removeEventListener("keydown",q)},[m]),se.useEffect(()=>{if(C.current)return()=>{je.current&&(je.current.focus({preventScroll:!0}),je.current=null,H.current=!1)}},[C.current]),se.createElement("section",{ref:l,"aria-label":`${P} ${ce}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},re.map((q,K)=>{var ie;const[he,ae]=q.split("-");return V.length?se.createElement("ol",{key:q,dir:_==="auto"?xx():_,tabIndex:-1,ref:C,className:h,"data-sonner-toaster":!0,"data-sonner-theme":E,"data-y-position":he,"data-x-position":ae,style:{"--front-toast-height":`${((ie=W[0])==null?void 0:ie.height)||0}px`,"--width":`${vT}px`,"--gap":`${F}px`,...y,...ST(b,v)},onBlur:Se=>{H.current&&!Se.currentTarget.contains(Se.relatedTarget)&&(H.current=!1,je.current&&(je.current.focus({preventScroll:!0}),je.current=null))},onFocus:Se=>{Se.target instanceof HTMLElement&&Se.target.dataset.dismissible==="false"||H.current||(H.current=!0,je.current=Se.relatedTarget)},onMouseEnter:()=>ue(!0),onMouseMove:()=>ue(!0),onMouseLeave:()=>{de||ue(!1)},onDragEnd:()=>ue(!1),onPointerDown:Se=>{Se.target instanceof HTMLElement&&Se.target.dataset.dismissible==="false"||ge(!0)},onPointerUp:()=>ge(!1)},V.filter(Se=>!Se.position&&K===0||Se.position===q).map((Se,De)=>{var Fe,ze;return se.createElement(yT,{key:Se.id,icons:$,index:De,toast:Se,defaultRichColors:T,duration:(Fe=L?.duration)!=null?Fe:A,className:L?.className,descriptionClassName:L?.descriptionClassName,invert:c,visibleToasts:R,closeButton:(ze=L?.closeButton)!=null?ze:p,interacting:de,position:q,style:L?.style,unstyled:L?.unstyled,classNames:L?.classNames,cancelButtonStyle:L?.cancelButtonStyle,actionButtonStyle:L?.actionButtonStyle,closeButtonAriaLabel:L?.closeButtonAriaLabel,removeToast:I,toasts:V.filter(
vendor: 10,732 bytes, line 57
57Be=>Be.position==Se.position),heights:W.filter(Be=>Be.position==Se.position),setHeights:oe,expandByDefault:f,gap:F,expanded:le,swipeDirections:s.swipeDirections})})):null}))}),TT=({...t})=>{const{theme:s="system"}=$N();return n.jsx(NT,{"data-loc":"client/src/components/ui/sonner.tsx:8",theme:s,className:"toaster group",style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)"},...t})};function nt(t,s,{checkForDefaultPrevented:l=!0}={}){return function(c){if(t?.(c),l===!1||!c.defaultPrevented)return s?.(c)}}function bx(t,s){if(typeof t=="function")return t(s);t!=null&&(t.current=s)}function gk(...t){return s=>{let l=!1;const o=t.map(c=>{const u=bx(c,s);return!l&&typeof u=="function"&&(l=!0),u});if(l)return()=>{for(let c=0;c<o.length;c++){const u=o[c];typeof u=="function"?u():bx(t[c],null)}}}}function ft(...t){return k.useCallback(gk(...t),t)}function $s(t,s=[]){let l=[];function o(u,m){const f=k.createContext(m),p=l.length;l=[...l,m];const h=v=>{const{scope:S,children:T,...A}=v,y=S?.[t]?.[p]||f,R=k.useMemo(()=>A,Object.values(A));return n.jsx(y.Provider,{value:R,children:T})};h.displayName=u+"Provider";function b(v,S){const T=S?.[t]?.[p]||f,A=k.useContext(T);if(A)return A;if(m!==void 0)return m;throw new Error(`\`${v}\` must be used within \`${u}\``)}return[h,b]}const c=()=>{const u=l.map(m=>k.createContext(m));return function(f){const p=f?.[t]||u;return k.useMemo(()=>({[`__scope${t}`]:{...f,[t]:p}}),[f,p])}};return c.scopeName=t,[o,RT(c,...s)]}function RT(...t){const s=t[0];if(t.length===1)return s;const l=()=>{const o=t.map(c=>({useScope:c(),scopeName:c.scopeName}));return function(u){const m=o.reduce((f,{useScope:p,scopeName:h})=>{const v=p(u)[`__scope${h}`];return{...f,...v}},{});return k.useMemo(()=>({[`__scope${s.scopeName}`]:m}),[m])}};return l.scopeName=s.scopeName,l}function di(t){const s=HT(t),l=k.forwardRef((o,c)=>{const{children:u,...m}=o,f=k.Children.toArray(u),p=f.find(ET);if(p){const h=p.props.children,b=f.map(v=>v===p?k.Children.count(h)>1?k.Children.only(null):k.isValidElement(h)?h.props.children:null:v);return n.jsx(s,{...m,ref:c,children:k.isValidElement(h)?k.cloneElement(h,void 0,b):null})}return n.jsx(s,{...m,ref:c,children:u})});return l.displayName=`${t}.Slot`,l}var AT=di("Slot");function HT(t){const s=k.forwardRef((l,o)=>{const{children:c,...u}=l;if(k.isValidElement(c)){const m=MT(c),f=LT(u,c.props);return c.type!==k.Fragment&&(f.ref=o?gk(o,m):m),k.cloneElement(c,f)}return k.Children.count(c)>1?k.Children.only(null):null});return s.displayName=`${t}.SlotClone`,s}var mk=Symbol("radix.slottable");function wT(t){const s=({children:l})=>n.jsx(n.Fragment,{children:l});return s.displayName=`${t}.Slottable`,s.__radixId=mk,s}function ET(t){return k.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===mk}function LT(t,s){const l={...s};for(const o in s){const c=t[o],u=s[o];/^on[A-Z]/.test(o)?c&&u?l[o]=(...f)=>{const p=u(...f);return c(...f),p}:c&&(l[o]=c):o==="style"?l[o]={...c,...u}:o==="className"&&(l[o]=[c,u].filter(Boolean).join(" "))}return{...t,...l}}function MT(t){let s=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,l=s&&"isReactWarning"in s&&s.isReactWarning;return l?t.ref:(s=Object.getOwnPropertyDescriptor(t,"ref")?.get,l=s&&"isReactWarning"in s&&s.isReactWarning,l?t.props.ref:t.props.ref||t.ref)}var DT=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],rt=DT.reduce((t,s)=>{const l=di(`Primitive.${s}`),o=k.forwardRef((c,u)=>{const{asChild:m,...f}=c,p=m?l:s;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),n.jsx(p,{...f,ref:u})});return o.displayName=`Primitive.${s}`,{...t,[s]:o}},{});function _T(t,s){t&&ki.flushSync(()=>t.dispatchEvent(s))}function Br(t){const s=k.useRef(t);return k.useEffect(()=>{s.current=t}),k.useMemo(()=>(...l)=>s.current?.(...l),[])}function OT(t,s=globalThis?.document){const l=Br(t);k.useEffect(()=>{const o=c=>{c.key==="Escape"&&l(c)};return s.addEventListener("keydown",o,{capture:!0}),()=>s.removeEventListener("keydown",o,{capture:!0})},[l,s])}var CT="DismissableLayer",Qg="dismissableLayer.update",VT="dismissableLayer.pointerDownOutside",FT="dismissableLayer.focusOutside",kx,fk=k.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),vm=k.forwardRef((t,s)=>{const{disableOutsidePointerEvents:l=!1,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:u,onInteractOutside:m,onDismiss:f,...p}=t,h=k.useContext(fk),[b,v]=k.useState(null),S=b?.ownerDocument??globalThis?.document,[,T]=k.useState({}),A=ft(s,M=>v(M)),y=Array.from(h.layers),[R]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),L=y.indexOf(R),_=b?y.indexOf(b):-1,F=h.layersWithOutsidePointerEventsDisabled.size>0,$=_>=L,P=zT(M=>{const V=M.target,re=[...h.branches].some(W=>W.contains(V));!$||re||(c?.(M),m?.(M),M.defaultPrevented||f?.())},S),U=qT(M=>{const V=M.target;[...h.branches].some(W=>W.contains(V))||(u?.(M),m?.(M),M.defaultPrevented||f?.())},S);return OT(M=>{_===h.layers.size-1&&(o?.(M),!M.defaultPrevented&&f&&(M.preventDefault(),f()))},S),k.useEffect(()=>{if(b)return l&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(kx=S.body.style.pointerEvents,S.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(b)),h.layers.add(b),jx(),()=>{l&&h.layersWithOutsidePointerEventsDisabled.size===1&&(S.body.style.pointerEvents=kx)}},[b,S,l,h]),k.useEffect(()=>()=>{b&&(h.layers.delete(b),h.layersWithOutsidePointerEventsDisabled.delete(b),jx())},[b,h]),k.useEffect(()=>{const M=()=>T({});return document.addEventListener(Qg,M),()=>document.removeEventListener(Qg,M)},[]),n.jsx(rt.div,{...p,ref:A,style:{pointerEvents:F?$?"auto":"none":void 0,...t.style},onFocusCapture:nt(t.onFocusCapture,U.onFocusCapture),onBlurCapture:nt(t.onBlurCapture,U.onBlurCapture),onPointerDownCapture:nt(t.onPointerDownCapture,P.onPointerDownCapture)})});vm.displayName=CT;var JT="DismissableLayerBranch",GT=k.forwardRef((t,s)=>{const l=k.useContext(fk),o=k.useRef(null),c=ft(s,o);return k.useEffect(()=>{const u=o.current;if(u)return l.branches.add(u),()=>{l.branches.delete(u)}},[l.branches]),n.jsx(rt.div,{...t,ref:c})});GT.displayName=JT;function zT(t,s=globalThis?.document){const l=Br(t),o=k.useRef(!1),c=k.useRef(()=>{});return k.useEffect(()=>{const u=f=>{if(f.target&&!o.current){let p=function(){pk(VT,l,h,{discrete:!0})};const h={originalEvent:f};f.pointerType==="touch"?(s.removeEventListener("click",c.current),c.current=p,s.addEventListener("click",c.current,{once:!0})):p()}else s.removeEventListener("click",c.current);o.current=!1},m=window.setTimeout(()=>{s.addEventListener("pointerdown",u)},0);return()=>{window.clearTimeout(m),s.removeEventListener("pointerdown",u),s.removeEventListener("click",c.current)}},[s,l]),{onPointerDownCapture:()=>o.current=!0}}function qT(t,s=globalThis?.document){const l=Br(t),o=k.useRef(!1);return k.useEffect(()=>{const c=u=>{u.target&&!o.current&&pk(FT,l,{originalEvent:u},{discrete:!1})};return s.addEventListener("focusin",c),()=>s.removeEventListener("focusin",c)},[s,l]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function jx(){const t=new CustomEvent(Qg);document.dispatchEvent(t)}function pk(t,s,l,{discrete:o}){const c=l.originalEvent.target,u=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:l});s&&c.addEventListener(t,s,{once:!0}),o?_T(c,u):c.dispatchEvent(u)}var Ct=globalThis?.document?k.useLayoutEffect:()=>{},PT=jc[" useId ".trim().toString()]||(()=>{}),BT=0;function ji(t){const[s,l]=k.useState(PT());return Ct(()=>{l(o=>o??String(BT++))},[t]),s?`radix-${s}`:""}const UT=["top","right","bottom","left"],dr=Math.min,fa=Math.max,mc=Math.round,Po=Math.floor,Za=t=>({x:t,y:t}),QT={left:"right",right:"left",bottom:"top",top:"bottom"},IT={start:"end",end:"start"};function Ig(t,s,l){return fa(t,dr(s,l))}function An(t,s){return typeof t=="function"?t(s):t}function Hn(t){return t.split("-")[0]}function Zs(t){return t.split("-")[1]}function xm(t){return t==="x"?"y":"x"}function bm(t){return t==="y"?"height":"width"}const KT=new Set(["top","bottom"]);function $a(t){return KT.has(Hn(t))?"y":"x"}function km(t){return xm($a(t))}function YT(t,s,l){l===void 0&&(l=!1);const o=Zs(t),c=km(t),u=bm(c);let m=c==="x"?o===(l?"end":"start")?"right":"left":o==="start"?"bottom":"top";return s.reference[u]>s.floating[u]&&(m=fc(m)),[m,fc(m)]}function XT(t){const s=fc(t);return[Kg(t),s,Kg(s)]}function Kg(t){return t.replace(/start|end/g,s=>IT[s])}const yx=["left","right"],Sx=["right","left"],$T=["top","bottom"],ZT=["bottom","top"];function WT(t,s,l){switch(t){case"top":case"bottom":return l?s?Sx:yx:s?yx:Sx;case"left":case"right":return s?$T:ZT;default:return[]}}function e3(t,s,l,o){const c=Zs(t);let u=WT(Hn(t),l==="start",o);return c&&(u=u.map(m=>m+"-"+c),s&&(u=u.concat(u.map(Kg)))),u}function fc(t){return t.replace(/left|right|bottom|top/g,s=>QT[s])}function t3(t){return{top:0,right:0,bottom:0,left:0,...t}}function hk(t){return typeof t!="number"?t3(t):{top:t,right:t,bottom:t,left:t}}function pc(t){const{x:s,y:l,width:o,height:c}=t;return{width:o,height:c,top:l,left:s,right:s+o,bottom:l+c,x:s,y:l}}function Nx(t,s,l){let{reference:o,floating:c}=t;const u=$a(s),m=km(s),f=bm(m),p=Hn(s),h=u==="y",b=o.x+o.width/2-c.width/2,v=o.y+o.height/2-c.height/2,S=o[f]/2-c[f]/2;let T;switch(p){case"top":T={x:b,y:o.y-c.height};break;case"bottom":T={x:b,y:o.y+o.height};break;case"right":T={x:o.x+o.width,y:v};break;case"left":T={x:o.x-c.width,y:v};break;default:T={x:o.x,y:o.y}}switch(Zs(s)){case"start":T[m]-=S*(l&&h?-1:1);break;case"end":T[m]+=S*(l&&h?-1:1);break}return T}const a3=async(t,s,l)=>{const{placement:o="bottom",strategy:c="absolute",middleware:u=[],platform:m}=l,f=u.filter(Boolean),p=await(m.isRTL==null?void 0:m.isRTL(s));let h=await m.getElementRects({reference:t,floating:s,strategy:c}),{x:b,y:v}=Nx(h,o,p),S=o,T={},A=0;for(let y=0;y<f.length;y++){const{name:R,fn:L}=f[y],{x:_,y:F,data:$,reset:P}=await L({x:b,y:v,initialPlacement:o,placement:S,strategy:c,middlewareData:T,rects:h,platform:m,elements:{reference:t,floating:s}});b=_??b,v=F??v,T={...T,[R]:{...T[R],...$}},P&&A<=50&&(A++,typeof P=="object"&&(P.placement&&(S=P.placement),P.rects&&(h=P.rects===!0?await m.getElementRects({reference:t,floating:s,strategy:c}):P.rects),{x:b,y:v}=Nx(h,S,p)),y=-1)}return{x:b,y:v,placement:S,strategy:c,middlewareData:T}};async function ui(t,s){var l;s===void 0&&(s={});const{x:o,y:c,platform:u,rects:m,elements:f,strategy:p}=t,{boundary:h="clippingAncestors",rootBoundary:b="viewport",elementContext:v="floating",altBoundary:S=!1,padding:T=0}=An(s,t),A=hk(T),R=f[S?v==="floating"?"reference":"floating":v],L=pc(await u.getClippingRect
vendor: 14,075 bytes, line 57
57({element:(l=await(u.isElement==null?void 0:u.isElement(R)))==null||l?R:R.contextElement||await(u.getDocumentElement==null?void 0:u.getDocumentElement(f.floating)),boundary:h,rootBoundary:b,strategy:p})),_=v==="floating"?{x:o,y:c,width:m.floating.width,height:m.floating.height}:m.reference,F=await(u.getOffsetParent==null?void 0:u.getOffsetParent(f.floating)),$=await(u.isElement==null?void 0:u.isElement(F))?await(u.getScale==null?void 0:u.getScale(F))||{x:1,y:1}:{x:1,y:1},P=pc(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({elements:f,rect:_,offsetParent:F,strategy:p}):_);return{top:(L.top-P.top+A.top)/$.y,bottom:(P.bottom-L.bottom+A.bottom)/$.y,left:(L.left-P.left+A.left)/$.x,right:(P.right-L.right+A.right)/$.x}}const n3=t=>({name:"arrow",options:t,async fn(s){const{x:l,y:o,placement:c,rects:u,platform:m,elements:f,middlewareData:p}=s,{element:h,padding:b=0}=An(t,s)||{};if(h==null)return{};const v=hk(b),S={x:l,y:o},T=km(c),A=bm(T),y=await m.getDimensions(h),R=T==="y",L=R?"top":"left",_=R?"bottom":"right",F=R?"clientHeight":"clientWidth",$=u.reference[A]+u.reference[T]-S[T]-u.floating[A],P=S[T]-u.reference[T],U=await(m.getOffsetParent==null?void 0:m.getOffsetParent(h));let M=U?U[F]:0;(!M||!await(m.isElement==null?void 0:m.isElement(U)))&&(M=f.floating[F]||u.floating[A]);const V=$/2-P/2,re=M/2-y[A]/2-1,W=dr(v[L],re),oe=dr(v[_],re),le=W,ue=M-y[A]-oe,de=M/2-y[A]/2+V,ge=Ig(le,de,ue),E=!p.arrow&&Zs(c)!=null&&de!==ge&&u.reference[A]/2-(de<le?W:oe)-y[A]/2<0,z=E?de<le?de-le:de-ue:0;return{[T]:S[T]+z,data:{[T]:ge,centerOffset:de-ge-z,...E&&{alignmentOffset:z}},reset:E}}}),r3=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(s){var l,o;const{placement:c,middlewareData:u,rects:m,initialPlacement:f,platform:p,elements:h}=s,{mainAxis:b=!0,crossAxis:v=!0,fallbackPlacements:S,fallbackStrategy:T="bestFit",fallbackAxisSideDirection:A="none",flipAlignment:y=!0,...R}=An(t,s);if((l=u.arrow)!=null&&l.alignmentOffset)return{};const L=Hn(c),_=$a(f),F=Hn(f)===f,$=await(p.isRTL==null?void 0:p.isRTL(h.floating)),P=S||(F||!y?[fc(f)]:XT(f)),U=A!=="none";!S&&U&&P.push(...e3(f,y,A,$));const M=[f,...P],V=await ui(s,R),re=[];let W=((o=u.flip)==null?void 0:o.overflows)||[];if(b&&re.push(V[L]),v){const de=YT(c,m,$);re.push(V[de[0]],V[de[1]])}if(W=[...W,{placement:c,overflows:re}],!re.every(de=>de<=0)){var oe,le;const de=(((oe=u.flip)==null?void 0:oe.index)||0)+1,ge=M[de];if(ge&&(!(v==="alignment"?_!==$a(ge):!1)||W.every(C=>$a(C.placement)===_?C.overflows[0]>0:!0)))return{data:{index:de,overflows:W},reset:{placement:ge}};let E=(le=W.filter(z=>z.overflows[0]<=0).sort((z,C)=>z.overflows[1]-C.overflows[1])[0])==null?void 0:le.placement;if(!E)switch(T){case"bestFit":{var ue;const z=(ue=W.filter(C=>{if(U){const ce=$a(C.placement);return ce===_||ce==="y"}return!0}).map(C=>[C.placement,C.overflows.filter(ce=>ce>0).reduce((ce,je)=>ce+je,0)]).sort((C,ce)=>C[1]-ce[1])[0])==null?void 0:ue[0];z&&(E=z);break}case"initialPlacement":E=f;break}if(c!==E)return{reset:{placement:E}}}return{}}}};function Tx(t,s){return{top:t.top-s.height,right:t.right-s.width,bottom:t.bottom-s.height,left:t.left-s.width}}function Rx(t){return UT.some(s=>t[s]>=0)}const s3=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(s){const{rects:l}=s,{strategy:o="referenceHidden",...c}=An(t,s);switch(o){case"referenceHidden":{const u=await ui(s,{...c,elementContext:"reference"}),m=Tx(u,l.reference);return{data:{referenceHiddenOffsets:m,referenceHidden:Rx(m)}}}case"escaped":{const u=await ui(s,{...c,altBoundary:!0}),m=Tx(u,l.floating);return{data:{escapedOffsets:m,escaped:Rx(m)}}}default:return{}}}}},vk=new Set(["left","top"]);async function l3(t,s){const{placement:l,platform:o,elements:c}=t,u=await(o.isRTL==null?void 0:o.isRTL(c.floating)),m=Hn(l),f=Zs(l),p=$a(l)==="y",h=vk.has(m)?-1:1,b=u&&p?-1:1,v=An(s,t);let{mainAxis:S,crossAxis:T,alignmentAxis:A}=typeof v=="number"?{mainAxis:v,crossAxis:0,alignmentAxis:null}:{mainAxis:v.mainAxis||0,crossAxis:v.crossAxis||0,alignmentAxis:v.alignmentAxis};return f&&typeof A=="number"&&(T=f==="end"?A*-1:A),p?{x:T*b,y:S*h}:{x:S*h,y:T*b}}const i3=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(s){var l,o;const{x:c,y:u,placement:m,middlewareData:f}=s,p=await l3(s,t);return m===((l=f.offset)==null?void 0:l.placement)&&(o=f.arrow)!=null&&o.alignmentOffset?{}:{x:c+p.x,y:u+p.y,data:{...p,placement:m}}}}},o3=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(s){const{x:l,y:o,placement:c}=s,{mainAxis:u=!0,crossAxis:m=!1,limiter:f={fn:R=>{let{x:L,y:_}=R;return{x:L,y:_}}},...p}=An(t,s),h={x:l,y:o},b=await ui(s,p),v=$a(Hn(c)),S=xm(v);let T=h[S],A=h[v];if(u){const R=S==="y"?"top":"left",L=S==="y"?"bottom":"right",_=T+b[R],F=T-b[L];T=Ig(_,T,F)}if(m){const R=v==="y"?"top":"left",L=v==="y"?"bottom":"right",_=A+b[R],F=A-b[L];A=Ig(_,A,F)}const y=f.fn({...s,[S]:T,[v]:A});return{...y,data:{x:y.x-l,y:y.y-o,enabled:{[S]:u,[v]:m}}}}}},c3=function(t){return t===void 0&&(t={}),{options:t,fn(s){const{x:l,y:o,placement:c,rects:u,middlewareData:m}=s,{offset:f=0,mainAxis:p=!0,crossAxis:h=!0}=An(t,s),b={x:l,y:o},v=$a(c),S=xm(v);let T=b[S],A=b[v];const y=An(f,s),R=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(p){const F=S==="y"?"height":"width",$=u.reference[S]-u.floating[F]+R.mainAxis,P=u.reference[S]+u.reference[F]-R.mainAxis;T<$?T=$:T>P&&(T=P)}if(h){var L,_;const F=S==="y"?"width":"height",$=vk.has(Hn(c)),P=u.reference[v]-u.floating[F]+($&&((L=m.offset)==null?void 0:L[v])||0)+($?0:R.crossAxis),U=u.reference[v]+u.reference[F]+($?0:((_=m.offset)==null?void 0:_[v])||0)-($?R.crossAxis:0);A<P?A=P:A>U&&(A=U)}return{[S]:T,[v]:A}}}},d3=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(s){var l,o;const{placement:c,rects:u,platform:m,elements:f}=s,{apply:p=()=>{},...h}=An(t,s),b=await ui(s,h),v=Hn(c),S=Zs(c),T=$a(c)==="y",{width:A,height:y}=u.floating;let R,L;v==="top"||v==="bottom"?(R=v,L=S===(await(m.isRTL==null?void 0:m.isRTL(f.floating))?"start":"end")?"left":"right"):(L=v,R=S==="end"?"top":"bottom");const _=y-b.top-b.bottom,F=A-b.left-b.right,$=dr(y-b[R],_),P=dr(A-b[L],F),U=!s.middlewareData.shift;let M=$,V=P;if((l=s.middlewareData.shift)!=null&&l.enabled.x&&(V=F),(o=s.middlewareData.shift)!=null&&o.enabled.y&&(M=_),U&&!S){const W=fa(b.left,0),oe=fa(b.right,0),le=fa(b.top,0),ue=fa(b.bottom,0);T?V=A-2*(W!==0||oe!==0?W+oe:fa(b.left,b.right)):M=y-2*(le!==0||ue!==0?le+ue:fa(b.top,b.bottom))}await p({...s,availableWidth:V,availableHeight:M});const re=await m.getDimensions(f.floating);return A!==re.width||y!==re.height?{reset:{rects:!0}}:{}}}};function Ec(){return typeof window<"u"}function Ws(t){return xk(t)?(t.nodeName||"").toLowerCase():"#document"}function ha(t){var s;return(t==null||(s=t.ownerDocument)==null?void 0:s.defaultView)||window}function an(t){var s;return(s=(xk(t)?t.ownerDocument:t.document)||window.document)==null?void 0:s.documentElement}function xk(t){return Ec()?t instanceof Node||t instanceof ha(t).Node:!1}function Ca(t){return Ec()?t instanceof Element||t instanceof ha(t).Element:!1}function Wa(t){return Ec()?t instanceof HTMLElement||t instanceof ha(t).HTMLElement:!1}function Ax(t){return!Ec()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof ha(t).ShadowRoot}const u3=new Set(["inline","contents"]);function yi(t){const{overflow:s,overflowX:l,overflowY:o,display:c}=Va(t);return/auto|scroll|overlay|hidden|clip/.test(s+o+l)&&!u3.has(c)}const g3=new Set(["table","td","th"]);function m3(t){return g3.has(Ws(t))}const f3=[":popover-open",":modal"];function Lc(t){return f3.some(s=>{try{return t.matches(s)}catch{return!1}})}const p3=["transform","translate","scale","rotate","perspective"],h3=["transform","translate","scale","rotate","perspective","filter"],v3=["paint","layout","strict","content"];function jm(t){const s=ym(),l=Ca(t)?Va(t):t;return p3.some(o=>l[o]?l[o]!=="none":!1)||(l.containerType?l.containerType!=="normal":!1)||!s&&(l.backdropFilter?l.backdropFilter!=="none":!1)||!s&&(l.filter?l.filter!=="none":!1)||h3.some(o=>(l.willChange||"").includes(o))||v3.some(o=>(l.contain||"").includes(o))}function x3(t){let s=ur(t);for(;Wa(s)&&!Ks(s);){if(jm(s))return s;if(Lc(s))return null;s=ur(s)}return null}function ym(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const b3=new Set(["html","body","#document"]);function Ks(t){return b3.has(Ws(t))}function Va(t){return ha(t).getComputedStyle(t)}function Mc(t){return Ca(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function ur(t){if(Ws(t)==="html")return t;const s=t.assignedSlot||t.parentNode||Ax(t)&&t.host||an(t);return Ax(s)?s.host:s}function bk(t){const s=ur(t);return Ks(s)?t.ownerDocument?t.ownerDocument.body:t.body:Wa(s)&&yi(s)?s:bk(s)}function gi(t,s,l){var o;s===void 0&&(s=[]),l===void 0&&(l=!0);const c=bk(t),u=c===((o=t.ownerDocument)==null?void 0:o.body),m=ha(c);if(u){const f=Yg(m);return s.concat(m,m.visualViewport||[],yi(c)?c:[],f&&l?gi(f):[])}return s.concat(c,gi(c,[],l))}function Yg(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function kk(t){const s=Va(t);let l=parseFloat(s.width)||0,o=parseFloat(s.height)||0;const c=Wa(t),u=c?t.offsetWidth:l,m=c?t.offsetHeight:o,f=mc(l)!==u||mc(o)!==m;return f&&(l=u,o=m),{width:l,height:o,$:f}}function Sm(t){return Ca(t)?t:t.contextElement}function Us(t){const s=Sm(t);if(!Wa(s))return Za(1);const l=s.getBoundingClientRect(),{width:o,height:c,$:u}=kk(s);let m=(u?mc(l.width):l.width)/o,f=(u?mc(l.height):l.height)/c;return(!m||!Number.isFinite(m))&&(m=1),(!f||!Number.isFinite(f))&&(f=1),{x:m,y:f}}const k3=Za(0);function jk(t){const s=ha(t);return!ym()||!s.visualViewport?k3:{x:s.visualViewport.offsetLeft,y:s.visualViewport.offsetTop}}function j3(t,s,l){return s===void 0&&(s=!1),!l||s&&l!==ha(t)?!1:s}function Ur(t,s,l,o){s===void 0&&(s=!1),l===void 0&&(l=!1);const c=t.getBoundingClientRect(),u=Sm(t);let m=Za(1);s&&(o?Ca(o)&&(m=Us(o)):m=Us(t));const f=j3(u,l,o)?jk(u):Za(0);let p=(c.left+f.x)/m.x,h=(c.top+f.y)/m.y,b=c.width/m.x,v=c.height/m.y;if(u){const S=ha(u),T=o&&Ca(o)?ha(o):o;let A=S,y=Yg(A);for(;y&&o&&T!==A;){const R=Us(y),L=y.getBoundingClientRect(),_=Va(y),F=L.left+(y.clientLeft+parseFloat(_.paddingLeft))*R.x,$=L.top+(y.clientTop+parseFloat(_.paddingTop))*R.y;p*=R.x,h*=R.y,b*=R.x,v*=R.y,p+=F,h+=$,A=ha(y),y=Yg(A)}}return pc({width:b,height:v,x:p,y:h})}function Dc(t,s){const l=Mc(t).scrollLeft;return s?s.left+l:Ur(an(t)).left+l}function yk(t,s){const l=t.getBoundingClientRect(),o=l.left+s.scrollLeft-Dc(t,l),c=l.top+s.scrollTop;return{x:o,y:c}}function y3(t){let{elements:s,rect:l,offsetParent:o,strategy:c}=t;const u=c==="fixed",m=an(o),f=s?Lc(s.floating):!1;if(o===m||f&&u)return l;let p={scrollLeft:0,scrollTop:0},h=Za(1);const b=Za(0),v=Wa(o);if((v||!v&&!u)&&((Ws(o)!=="body"||yi(m))&&(p=Mc(o)),Wa(o))){const T=Ur(o);h=Us(o),b.x=T.x+o.clientLeft,b.y=T.y+o.clientTop}const S=m&&!v&&!u?yk(m,p):Za(0);return{width:l.width*h.x,height:l.height*h.y,x:l.x*h.x-p.scrollLeft*h.x+b.x+S.x,y:l.y*h.y-p.scrollTop*h.y+b.y+S.y}}function S3(t){return Array.from(t.getClientRects())}function N3(t){const s=an(t),l=Mc(t),o=t.ownerDocument.body,c=fa(s.scrollWidth,s.clientWidth,o.scrollWidth,o.clientWidth),u=fa(s.scrollHeight,s.clientHeight,o.scrollHeight,o.clientHeight);let m=-l.scrollLeft+Dc(t);const f=-l.scrollTop;return Va(o).direction==="rtl"&&(m+=fa(s.clientWidth,o.clientWidth)-c),{width:c,height:u,x:m,y:f}}const Hx=25;function T3(t,s){const l=ha(t),o=an(t),c=l.visualViewport;let u=o.clientWidth,m=o.clientHeight,f=0,p=0;if(c){u=c.width,m=c.height;const b=ym();(!b||b&&s==="fixed")&&(f=c.offsetLeft,p=c.offsetTop)}const h=Dc(o);if(h<=0){const b=o.ownerDocument,v=b.body,S=getComputedStyle(v),T=b.compatMode==="CSS1Compat"&&parseFloat(S.marginLeft)+parseFloat(S.marginRight)||0,A=Math.abs(o.clientWidth-v.clientWidth-T);A<=Hx&&(u-=A)}else h<=Hx&&(u+=h);return{width:u,height:m,x:f,y:p}}const R3=new Set(["absolute","fixed"]);function A3(t,s){const l=Ur(t,!0,s==="fixed"),o=l.top+t.clientTop,c=l.left+t.clientLeft,u=Wa(t)?Us(t):Za(1),m=t.clientWidth*u.x,f=t.clientHeight*u.y,p=c*u.x,h=o*u.y;return{width:m,height:f,x:p,y:h}}function wx(t,s,l){let o;if(s==="viewport")o=T3(t,l);else if(s==="document")o=N3(an(t));else if(Ca(s))o=A3(s,l);else{const c=jk(t);o={x:s.x-c.x,y:s.y-c.y,width:s.width,height:s.height}}return pc(o)}function Sk(t,s){const l=ur(t);return l===s||!Ca(l)||Ks(l)?!1:Va(l).position==="fixed"||Sk(l,s)}function H3(t,s){const l=s.get(t);if(l)return l;let o=gi(t,[],!1).filter(f=>Ca(f)&&Ws(f)!=="body"),c=null;const u=Va(t).position==="fixed";let m=u?ur(t):t;for(;Ca(m)&&!Ks(m);){const f=Va(m),p=jm(m);!p&&f.position==="fixed"&&(c=null),(u?!p&&!c:!p&&f.position==="static"&&!!c&&R3.has(c.position)||yi(m)&&!p&&Sk(t,m))?o=o.filter(b=>b!==m):c=f,m=ur(m)}return s.set(t,o),o}function w3(t){let{element:s,boundary:l,rootBoundary:o,strategy:c}=t;const m=[...l==="clippingAncestors"?Lc(s)?[]:H3(s,this._c):[].concat(l),o],f=m[0],p=m.reduce((h,b)=>{const v=wx(s,b,c);return h.top=fa(v.top,h.top),h.right=dr(v.right,h.right),h.bottom=dr(v.bottom,h.bottom),h.left=fa(v.left,h.left),h},wx(s,f,c));return{width:p.right-p.left,height:p.bottom-p.top,x:p.left,y:p.top}}function E3(t){const{width:s,height:l}=kk(t);return{width:s,height:l}}function L3(t,s,l){const o=Wa(s),c=an(s),u=l==="fixed",m=Ur(t,!0,u,s);let f={scrollLeft:0,scrollTop:0};const p=Za(0);function h(){p.x=Dc(c)}if(o||!o&&!u)if((Ws(s)!=="body"||yi(c))&&(f=Mc(s)),o){const T=Ur(s,!0,u,s);p.x=T.x+s.clientLeft,p.y=T.y+s.clientTop}else c&&h();u&&!o&&c&&h();const b=c&&!o&&!u?yk(c,f):Za(0),v=m.left+f.scrollLeft-p.x-b.x,S=m.top+f.scrollTop-p.y-b.y;return{x:v,y:S,width:m.width,height:m.height}}function pg(t){return Va(t).position==="static"}function Ex(t,s){if(!Wa(t)||Va(t).position==="fixed")return null;if(s)return s(t);let l=t.offsetParent;return an(t)===l&&(l=l.ownerDocument.body),l}function Nk(t,s){const l=ha(t);if(Lc(t))return l;if(!Wa(t)){let c=ur(t);for(;
vendor: 9,011 bytes, line 57
57c&&!Ks(c);){if(Ca(c)&&!pg(c))return c;c=ur(c)}return l}let o=Ex(t,s);for(;o&&m3(o)&&pg(o);)o=Ex(o,s);return o&&Ks(o)&&pg(o)&&!jm(o)?l:o||x3(t)||l}const M3=async function(t){const s=this.getOffsetParent||Nk,l=this.getDimensions,o=await l(t.floating);return{reference:L3(t.reference,await s(t.floating),t.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function D3(t){return Va(t).direction==="rtl"}const _3={convertOffsetParentRelativeRectToViewportRelativeRect:y3,getDocumentElement:an,getClippingRect:w3,getOffsetParent:Nk,getElementRects:M3,getClientRects:S3,getDimensions:E3,getScale:Us,isElement:Ca,isRTL:D3};function Tk(t,s){return t.x===s.x&&t.y===s.y&&t.width===s.width&&t.height===s.height}function O3(t,s){let l=null,o;const c=an(t);function u(){var f;clearTimeout(o),(f=l)==null||f.disconnect(),l=null}function m(f,p){f===void 0&&(f=!1),p===void 0&&(p=1),u();const h=t.getBoundingClientRect(),{left:b,top:v,width:S,height:T}=h;if(f||s(),!S||!T)return;const A=Po(v),y=Po(c.clientWidth-(b+S)),R=Po(c.clientHeight-(v+T)),L=Po(b),F={rootMargin:-A+"px "+-y+"px "+-R+"px "+-L+"px",threshold:fa(0,dr(1,p))||1};let $=!0;function P(U){const M=U[0].intersectionRatio;if(M!==p){if(!$)return m();M?m(!1,M):o=setTimeout(()=>{m(!1,1e-7)},1e3)}M===1&&!Tk(h,t.getBoundingClientRect())&&m(),$=!1}try{l=new IntersectionObserver(P,{...F,root:c.ownerDocument})}catch{l=new IntersectionObserver(P,F)}l.observe(t)}return m(!0),u}function C3(t,s,l,o){o===void 0&&(o={});const{ancestorScroll:c=!0,ancestorResize:u=!0,elementResize:m=typeof ResizeObserver=="function",layoutShift:f=typeof IntersectionObserver=="function",animationFrame:p=!1}=o,h=Sm(t),b=c||u?[...h?gi(h):[],...gi(s)]:[];b.forEach(L=>{c&&L.addEventListener("scroll",l,{passive:!0}),u&&L.addEventListener("resize",l)});const v=h&&f?O3(h,l):null;let S=-1,T=null;m&&(T=new ResizeObserver(L=>{let[_]=L;_&&_.target===h&&T&&(T.unobserve(s),cancelAnimationFrame(S),S=requestAnimationFrame(()=>{var F;(F=T)==null||F.observe(s)})),l()}),h&&!p&&T.observe(h),T.observe(s));let A,y=p?Ur(t):null;p&&R();function R(){const L=Ur(t);y&&!Tk(y,L)&&l(),y=L,A=requestAnimationFrame(R)}return l(),()=>{var L;b.forEach(_=>{c&&_.removeEventListener("scroll",l),u&&_.removeEventListener("resize",l)}),v?.(),(L=T)==null||L.disconnect(),T=null,p&&cancelAnimationFrame(A)}}const V3=i3,F3=o3,J3=r3,G3=d3,z3=s3,Lx=n3,q3=c3,P3=(t,s,l)=>{const o=new Map,c={platform:_3,...l},u={...c.platform,_c:o};return a3(t,s,{...c,platform:u})};var B3=typeof document<"u",U3=function(){},tc=B3?k.useLayoutEffect:U3;function hc(t,s){if(t===s)return!0;if(typeof t!=typeof s)return!1;if(typeof t=="function"&&t.toString()===s.toString())return!0;let l,o,c;if(t&&s&&typeof t=="object"){if(Array.isArray(t)){if(l=t.length,l!==s.length)return!1;for(o=l;o--!==0;)if(!hc(t[o],s[o]))return!1;return!0}if(c=Object.keys(t),l=c.length,l!==Object.keys(s).length)return!1;for(o=l;o--!==0;)if(!{}.hasOwnProperty.call(s,c[o]))return!1;for(o=l;o--!==0;){const u=c[o];if(!(u==="_owner"&&t.$$typeof)&&!hc(t[u],s[u]))return!1}return!0}return t!==t&&s!==s}function Rk(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function Mx(t,s){const l=Rk(t);return Math.round(s*l)/l}function hg(t){const s=k.useRef(t);return tc(()=>{s.current=t}),s}function Q3(t){t===void 0&&(t={});const{placement:s="bottom",strategy:l="absolute",middleware:o=[],platform:c,elements:{reference:u,floating:m}={},transform:f=!0,whileElementsMounted:p,open:h}=t,[b,v]=k.useState({x:0,y:0,strategy:l,placement:s,middlewareData:{},isPositioned:!1}),[S,T]=k.useState(o);hc(S,o)||T(o);const[A,y]=k.useState(null),[R,L]=k.useState(null),_=k.useCallback(C=>{C!==U.current&&(U.current=C,y(C))},[]),F=k.useCallback(C=>{C!==M.current&&(M.current=C,L(C))},[]),$=u||A,P=m||R,U=k.useRef(null),M=k.useRef(null),V=k.useRef(b),re=p!=null,W=hg(p),oe=hg(c),le=hg(h),ue=k.useCallback(()=>{if(!U.current||!M.current)return;const C={placement:s,strategy:l,middleware:S};oe.current&&(C.platform=oe.current),P3(U.current,M.current,C).then(ce=>{const je={...ce,isPositioned:le.current!==!1};de.current&&!hc(V.current,je)&&(V.current=je,ki.flushSync(()=>{v(je)}))})},[S,s,l,oe,le]);tc(()=>{h===!1&&V.current.isPositioned&&(V.current.isPositioned=!1,v(C=>({...C,isPositioned:!1})))},[h]);const de=k.useRef(!1);tc(()=>(de.current=!0,()=>{de.current=!1}),[]),tc(()=>{if($&&(U.current=$),P&&(M.current=P),$&&P){if(W.current)return W.current($,P,ue);ue()}},[$,P,ue,W,re]);const ge=k.useMemo(()=>({reference:U,floating:M,setReference:_,setFloating:F}),[_,F]),E=k.useMemo(()=>({reference:$,floating:P}),[$,P]),z=k.useMemo(()=>{const C={position:l,left:0,top:0};if(!E.floating)return C;const ce=Mx(E.floating,b.x),je=Mx(E.floating,b.y);return f?{...C,transform:"translate("+ce+"px, "+je+"px)",...Rk(E.floating)>=1.5&&{willChange:"transform"}}:{position:l,left:ce,top:je}},[l,f,E.floating,b.x,b.y]);return k.useMemo(()=>({...b,update:ue,refs:ge,elements:E,floatingStyles:z}),[b,ue,ge,E,z])}const I3=t=>{function s(l){return{}.hasOwnProperty.call(l,"current")}return{name:"arrow",options:t,fn(l){const{element:o,padding:c}=typeof t=="function"?t(l):t;return o&&s(o)?o.current!=null?Lx({element:o.current,padding:c}).fn(l):{}:o?Lx({element:o,padding:c}).fn(l):{}}}},K3=(t,s)=>({...V3(t),options:[t,s]}),Y3=(t,s)=>({...F3(t),options:[t,s]}),X3=(t,s)=>({...q3(t),options:[t,s]}),$3=(t,s)=>({...J3(t),options:[t,s]}),Z3=(t,s)=>({...G3(t),options:[t,s]}),W3=(t,s)=>({...z3(t),options:[t,s]}),eR=(t,s)=>({...I3(t),options:[t,s]});var tR="Arrow",Ak=k.forwardRef((t,s)=>{const{children:l,width:o=10,height:c=5,...u}=t;return n.jsx(rt.svg,{...u,ref:s,width:o,height:c,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?l:n.jsx("polygon",{points:"0,0 30,0 15,10"})})});Ak.displayName=tR;var aR=Ak;function nR(t){const[s,l]=k.useState(void 0);return Ct(()=>{if(t){l({width:t.offsetWidth,height:t.offsetHeight});const o=new ResizeObserver(c=>{if(!Array.isArray(c)||!c.length)return;const u=c[0];let m,f;if("borderBoxSize"in u){const p=u.borderBoxSize,h=Array.isArray(p)?p[0]:p;m=h.inlineSize,f=h.blockSize}else m=t.offsetWidth,f=t.offsetHeight;l({width:m,height:f})});return o.observe(t,{box:"border-box"}),()=>o.unobserve(t)}else l(void 0)},[t]),s}var Nm="Popper",[Hk,_c]=$s(Nm),[rR,wk]=Hk(Nm),Ek=t=>{const{__scopePopper:s,children:l}=t,[o,c]=k.useState(null);return n.jsx(rR,{scope:s,anchor:o,onAnchorChange:c,children:l})};Ek.displayName=Nm;var Lk="PopperAnchor",Mk=k.forwardRef((t,s)=>{const{__scopePopper:l,virtualRef:o,...c}=t,u=wk(Lk,l),m=k.useRef(null),f=ft(s,m),p=k.useRef(null);return k.useEffect(()=>{const h=p.current;p.current=o?.current||m.current,h!==p.current&&u.onAnchorChange(p.current)}),o?null:n.jsx(rt.div,{...c,ref:f})});Mk.displayName=Lk;var Tm="PopperContent",[sR,lR]=Hk(Tm),Dk=k.forwardRef((t,s)=>{const{__scopePopper:l,side:o="bottom",sideOffset:c=0,align:u="center",alignOffset:m=0,arrowPadding:f=0,avoidCollisions:p=!0,collisionBoundary:h=[],collisionPadding:b=0,sticky:v="partial",hideWhenDetached:S=!1,updatePositionStrategy:T="optimized",onPlaced:A,...y}=t,R=wk(Tm,l),[L,_]=k.useState(null),F=ft(s,ae=>_(ae)),[$,P]=k.useState(null),U=nR($),M=U?.width??0,V=U?.height??0,re=o+(u!=="center"?"-"+u:""),W=typeof b=="number"?b:{top:0,right:0,bottom:0,left:0,...b},oe=Array.isArray(h)?h:[h],le=oe.length>0,ue={padding:W,boundary:oe.filter(oR),altBoundary:le},{refs:de,floatingStyles:ge,placement:E,isPositioned:z,middlewareData:C}=Q3({strategy:"fixed",placement:re,whileElementsMounted:(...ae)=>C3(...ae,{animationFrame:T==="always"}),elements:{reference:R.anchor},middleware:[K3({mainAxis:c+V,alignmentAxis:m}),p&&Y3({mainAxis:!0,crossAxis:!1,limiter:v==="partial"?X3():void 0,...ue}),p&&$3({...ue}),Z3({...ue,apply:({elements:ae,rects:Se,availableWidth:De,availableHeight:Fe})=>{const{width:ze,height:Be}=Se.reference,Et=ae.floating.style;Et.setProperty("--radix-popper-available-width",`${De}px`),Et.setProperty("--radix-popper-available-height",`${Fe}px`),Et.setProperty("--radix-popper-anchor-width",`${ze}px`),Et.setProperty("--radix-popper-anchor-height",`${Be}px`)}}),$&&eR({element:$,padding:f}),cR({arrowWidth:M,arrowHeight:V}),S&&W3({strategy:"referenceHidden",...ue})]}),[ce,je]=Ck(E),H=Br(A);Ct(()=>{z&&H?.()},[z,H]);const I=C.arrow?.x,q=C.arrow?.y,K=C.arrow?.centerOffset!==0,[ie,he]=k.useState();return Ct(()=>{L&&he(window.getComputedStyle(L).zIndex)},[L]),n.jsx("div",{ref:de.setFloating,"data-radix-popper-content-wrapper":"",style:{...ge,transform:z?ge.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ie,"--radix-popper-transform-origin":[C.transformOrigin?.x,C.transformOrigin?.y].join(" "),...C.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:n.jsx(sR,{scope:l,placedSide:ce,onArrowChange:P,arrowX:I,arrowY:q,shouldHideArrow:K,children:n.jsx(rt.div,{"data-side":ce,"data-align":je,...y,ref:F,style:{...y.style,animation:z?void 0:"none"}})})})});Dk.displayName=Tm;var _k="PopperArrow",iR={top:"bottom",right:"left",bottom:"top",left:"r
57ight"},Ok=k.forwardRef(function(s,l){const{__scopePopper:o,...c}=s,u=lR(_k,o),m=iR[u.placedSide];return n.jsx("span",{ref:u.onArrowChange,style:{position:"absolute",left:u.arrowX,top:u.arrowY,[m]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[u.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[u.placedSide],visibility:u.shouldHideArrow?"hidden":void 0},children:n.jsx(aR,{...c,ref:l,style:{...c.style,display:"block"}})})});Ok.displayName=_k;function oR(t){return t!==null}var cR=t=>({name:"transformOrigin",options:t,fn(s){const{placement:l,rects:o,middlewareData:c}=s,m=c.arrow?.centerOffset!==0,f=m?0:t.arrowWidth,p=m?0:t.arrowHeight,[h,b]=Ck(l),v={start:"0%",center:"50%",end:"100%"}[b],S=(c.arrow?.x??0)+f/2,T=(c.arrow?.y??0)+p/2;let A="",y="";return h==="bottom"?(A=m?v:`${S}px`,y=`${-p}px`):h==="top"?(A=m?v:`${S}px`,y=`${o.floating.height+p}px`):h==="right"?(A=`${-p}px`,y=m?v:`${T}px`):h==="left"&&(A=`${o.floating.width+p}px`,y=m?v:`${T}px`),{data:{x:A,y}}}});function Ck(t){const[s,l="center"]=t.split("-");return[s,l]}var dR=Ek,Vk=Mk,Fk=Dk,Jk=Ok,uR="Portal",Gk=k.forwardRef((t,s)=>{const{container:l,...o}=t,[c,u]=k.useState(!1);Ct(()=>u(!0),[]);const m=l||c&&globalThis?.document?.body;return m?uk.createPortal(n.jsx(rt.div,{...o,ref:s}),m):null});Gk.displayName=uR;function gR(t,s){return k.useReducer((l,o)=>s[l][o]??l,t)}var Rm=t=>{const{present:s,children:l}=t,o=mR(s),c=typeof l=="function"?l({present:o.isPresent}):k.Children.only(l),u=ft(o.ref,fR(c));return typeof l=="function"||o.isPresent?k.cloneElement(c,{ref:u}):null};Rm.displayName="Presence";function mR(t){const[s,l]=k.useState(),o=k.useRef(null),c=k.useRef(t),u=k.useRef("none"),m=t?"mounted":"unmounted",[f,p]=gR(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return k.useEffect(()=>{const h=Bo(o.current);u.current=f==="mounted"?h:"none"},[f]),Ct(()=>{const h=o.current,b=c.current;if(b!==t){const S=u.current,T=Bo(h);t?p("MOUNT"):T==="none"||h?.display==="none"?p("UNMOUNT"):p(b&&S!==T?"ANIMATION_OUT":"UNMOUNT"),c.current=t}},[t,p]),Ct(()=>{if(s){let h;const b=s.ownerDocument.defaultView??window,v=T=>{const y=Bo(o.current).includes(CSS.escape(T.animationName));if(T.target===s&&y&&(p("ANIMATION_END"),!c.current)){const R=s.style.animationFillMode;s.style.animationFillMode="forwards",h=b.setTimeout(()=>{s.style.animationFillMode==="forwards"&&(s.style.animationFillMode=R)})}},S=T=>{T.target===s&&(u.current=Bo(o.current))};return s.addEventListener("animationstart",S),s.addEventListener("animationcancel",v),s.addEventListener("animationend",v),()=>{b.clearTimeout(h),s.removeEventListener("animationstart",S),s.removeEventListener("animationcancel",v),s.removeEventListener("animationend",v)}}else p("ANIMATION_END")},[s,p]),{isPresent:["mounted","unmountSuspended"].includes(f),ref:k.useCallback(h=>{o.current=h?getComputedStyle(h):null,l(h)},[])}}function Bo(t){return t?.animationName||"none"}function fR(t){let s=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,l=s&&"isReactWarning"in s&&s.isReactWarning;return l?t.ref:(s=Object.getOwnPropertyDescriptor(t,"ref")?.get,l=s&&"isReactWarning"in s&&s.isReactWarning,l?t.props.ref:t.props.ref||t.ref)}var pR=jc[" useInsertionEffect ".trim().toString()]||Ct;function mi({prop:t,defaultProp:s,onChange:l=()=>{},caller:o}){const[c,u,m]=hR({defaultProp:s,onChange:l}),f=t!==void 0,p=f?t:c;{const b=k.useRef(t!==void 0);k.useEffect(()=>{const v=b.current;v!==f&&console.warn(`${o} is changing from ${v?"controlled":"uncontrolled"} to ${f?"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.`),b.current=f},[f,o])}const h=k.useCallback(b=>{if(f){const v=vR(b)?b(t):b;v!==t&&m.current?.(v)}else u(b)},[f,t,u,m]);return[p,h]}function hR({defaultProp:t,onChange:s}){const[l,o]=k.useState(t),c=k.useRef(l),u=k.useRef(s);return pR(()=>{u.current=s},[s]),k.useEffect(()=>{c.current!==l&&(u.current?.(l),c.current=l)},[l,c]),[l,o,u]}function vR(t){return typeof t=="function"}var zk=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"}),xR="VisuallyHidden",qk=k.forwardRef((t,s)=>n.jsx(rt.span,{...t,ref:s,style:{...zk,...t.style}}));qk.displayName=xR;var bR=qk,[Oc]=$s("Tooltip",[_c]),Am=_c(),Pk="TooltipProvider",kR=700,Dx="tooltip.open",[jR,Bk]=Oc(Pk),Uk=t=>{const{__scopeTooltip:s,delayDuration:l=kR,skipDelayDuration:o=300,disableHoverableContent:c=!1,children:u}=t,m=k.useRef(!0),f=k.useRef(!1),p=k.useRef(0);return k.useEffect(()=>{const h=p.current;return()=>window.clearTimeout(h)},[]),n.jsx(jR,{scope:s,isOpenDelayedRef:m,delayDuration:l,onOpen:k.useCallback(()=>{window.clearTimeout(p.current),m.current=!1},[]),onClose:k.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>m.current=!0,o)},[o]),isPointerInTransitRef:f,onPointerInTransitChange:k.useCallback(h=>{f.current=h},[]),disableHoverableContent:c,children:u})};Uk.displayName=Pk;var Qk="Tooltip",[_4,Cc]=Oc(Qk),Xg="TooltipTrigger",yR=k.forwardRef((t,s)=>{const{__scopeTooltip:l,...o}=t,c=Cc(Xg,l),u=Bk(Xg,l),m=Am(l),f=k.useRef(null),p=ft(s,f,c.onTriggerChange),h=k.useRef(!1),b=k.useRef(!1),v=k.useCallback(()=>h.current=!1,[]);return k.useEffect(()=>()=>document.removeEventListener("pointerup",v),[v]),n.jsx(Vk,{asChild:!0,...m,children:n.jsx(rt.button,{"aria-describedby":c.open?c.c
vendor: 12,580 bytes, line 57
57ontentId:void 0,"data-state":c.stateAttribute,...o,ref:p,onPointerMove:nt(t.onPointerMove,S=>{S.pointerType!=="touch"&&!b.current&&!u.isPointerInTransitRef.current&&(c.onTriggerEnter(),b.current=!0)}),onPointerLeave:nt(t.onPointerLeave,()=>{c.onTriggerLeave(),b.current=!1}),onPointerDown:nt(t.onPointerDown,()=>{c.open&&c.onClose(),h.current=!0,document.addEventListener("pointerup",v,{once:!0})}),onFocus:nt(t.onFocus,()=>{h.current||c.onOpen()}),onBlur:nt(t.onBlur,c.onClose),onClick:nt(t.onClick,c.onClose)})})});yR.displayName=Xg;var SR="TooltipPortal",[O4,NR]=Oc(SR,{forceMount:void 0}),Ys="TooltipContent",TR=k.forwardRef((t,s)=>{const l=NR(Ys,t.__scopeTooltip),{forceMount:o=l.forceMount,side:c="top",...u}=t,m=Cc(Ys,t.__scopeTooltip);return n.jsx(Rm,{present:o||m.open,children:m.disableHoverableContent?n.jsx(Ik,{side:c,...u,ref:s}):n.jsx(RR,{side:c,...u,ref:s})})}),RR=k.forwardRef((t,s)=>{const l=Cc(Ys,t.__scopeTooltip),o=Bk(Ys,t.__scopeTooltip),c=k.useRef(null),u=ft(s,c),[m,f]=k.useState(null),{trigger:p,onClose:h}=l,b=c.current,{onPointerInTransitChange:v}=o,S=k.useCallback(()=>{f(null),v(!1)},[v]),T=k.useCallback((A,y)=>{const R=A.currentTarget,L={x:A.clientX,y:A.clientY},_=LR(L,R.getBoundingClientRect()),F=MR(L,_),$=DR(y.getBoundingClientRect()),P=OR([...F,...$]);f(P),v(!0)},[v]);return k.useEffect(()=>()=>S(),[S]),k.useEffect(()=>{if(p&&b){const A=R=>T(R,b),y=R=>T(R,p);return p.addEventListener("pointerleave",A),b.addEventListener("pointerleave",y),()=>{p.removeEventListener("pointerleave",A),b.removeEventListener("pointerleave",y)}}},[p,b,T,S]),k.useEffect(()=>{if(m){const A=y=>{const R=y.target,L={x:y.clientX,y:y.clientY},_=p?.contains(R)||b?.contains(R),F=!_R(L,m);_?S():F&&(S(),h())};return document.addEventListener("pointermove",A),()=>document.removeEventListener("pointermove",A)}},[p,b,m,h,S]),n.jsx(Ik,{...t,ref:u})}),[AR,HR]=Oc(Qk,{isInside:!1}),wR=wT("TooltipContent"),Ik=k.forwardRef((t,s)=>{const{__scopeTooltip:l,children:o,"aria-label":c,onEscapeKeyDown:u,onPointerDownOutside:m,...f}=t,p=Cc(Ys,l),h=Am(l),{onClose:b}=p;return k.useEffect(()=>(document.addEventListener(Dx,b),()=>document.removeEventListener(Dx,b)),[b]),k.useEffect(()=>{if(p.trigger){const v=S=>{S.target?.contains(p.trigger)&&b()};return window.addEventListener("scroll",v,{capture:!0}),()=>window.removeEventListener("scroll",v,{capture:!0})}},[p.trigger,b]),n.jsx(vm,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:u,onPointerDownOutside:m,onFocusOutside:v=>v.preventDefault(),onDismiss:b,children:n.jsxs(Fk,{"data-state":p.stateAttribute,...h,...f,ref:s,style:{...f.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:[n.jsx(wR,{children:o}),n.jsx(AR,{scope:l,isInside:!0,children:n.jsx(bR,{id:p.contentId,role:"tooltip",children:c||o})})]})})});TR.displayName=Ys;var Kk="TooltipArrow",ER=k.forwardRef((t,s)=>{const{__scopeTooltip:l,...o}=t,c=Am(l);return HR(Kk,l).isInside?null:n.jsx(Jk,{...c,...o,ref:s})});ER.displayName=Kk;function LR(t,s){const l=Math.abs(s.top-t.y),o=Math.abs(s.bottom-t.y),c=Math.abs(s.right-t.x),u=Math.abs(s.left-t.x);switch(Math.min(l,o,c,u)){case u:return"left";case c:return"right";case l:return"top";case o:return"bottom";default:throw new Error("unreachable")}}function MR(t,s,l=5){const o=[];switch(s){case"top":o.push({x:t.x-l,y:t.y+l},{x:t.x+l,y:t.y+l});break;case"bottom":o.push({x:t.x-l,y:t.y-l},{x:t.x+l,y:t.y-l});break;case"left":o.push({x:t.x+l,y:t.y-l},{x:t.x+l,y:t.y+l});break;case"right":o.push({x:t.x-l,y:t.y-l},{x:t.x-l,y:t.y+l});break}return o}function DR(t){const{top:s,right:l,bottom:o,left:c}=t;return[{x:c,y:s},{x:l,y:s},{x:l,y:o},{x:c,y:o}]}function _R(t,s){const{x:l,y:o}=t;let c=!1;for(let u=0,m=s.length-1;u<s.length;m=u++){const f=s[u],p=s[m],h=f.x,b=f.y,v=p.x,S=p.y;b>o!=S>o&&l<(v-h)*(o-b)/(S-b)+h&&(c=!c)}return c}function OR(t){const s=t.slice();return s.sort((l,o)=>l.x<o.x?-1:l.x>o.x?1:l.y<o.y?-1:l.y>o.y?1:0),CR(s)}function CR(t){if(t.length<=1)return t.slice();const s=[];for(let o=0;o<t.length;o++){const c=t[o];for(;s.length>=2;){const u=s[s.length-1],m=s[s.length-2];if((u.x-m.x)*(c.y-m.y)>=(u.y-m.y)*(c.x-m.x))s.pop();else break}s.push(c)}s.pop();const l=[];for(let o=t.length-1;o>=0;o--){const c=t[o];for(;l.length>=2;){const u=l[l.length-1],m=l[l.length-2];if((u.x-m.x)*(c.y-m.y)>=(u.y-m.y)*(c.x-m.x))l.pop();else break}l.push(c)}return l.pop(),s.length===1&&l.length===1&&s[0].x===l[0].x&&s[0].y===l[0].y?s:s.concat(l)}var VR=Uk;function Yk(t){var s,l,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var c=t.length;for(s=0;s<c;s++)t[s]&&(l=Yk(t[s]))&&(o&&(o+=" "),o+=l)}else for(l in t)t[l]&&(o&&(o+=" "),o+=l);return o}function Xk(){for(var t,s,l=0,o="",c=arguments.length;l<c;l++)(t=arguments[l])&&(s=Yk(t))&&(o&&(o+=" "),o+=s);return o}const Hm="-",FR=t=>{const s=GR(t),{conflictingClassGroups:l,conflictingClassGroupModifiers:o}=t;return{getClassGroupId:m=>{const f=m.split(Hm);return f[0]===""&&f.length!==1&&f.shift(),$k(f,s)||JR(m)},getConflictingClassGroupIds:(m,f)=>{const p=l[m]||[];return f&&o[m]?[...p,...o[m]]:p}}},$k=(t,s)=>{if(t.length===0)return s.classGroupId;const l=t[0],o=s.nextPart.get(l),c=o?$k(t.slice(1),o):void 0;if(c)return c;if(s.validators.length===0)return;const u=t.join(Hm);return s.validators.find(({validator:m})=>m(u))?.classGroupId},_x=/^\[(.+)\]$/,JR=t=>{if(_x.test(t)){const s=_x.exec(t)[1],l=s?.substring(0,s.indexOf(":"));if(l)return"arbitrary.."+l}},GR=t=>{const{theme:s,classGroups:l}=t,o={nextPart:new Map,validators:[]};for(const c in l)$g(l[c],o,c,s);return o},$g=(t,s,l,o)=>{t.forEach(c=>{if(typeof c=="string"){const u=c===""?s:Ox(s,c);u.classGroupId=l;return}if(typeof c=="function"){if(zR(c)){$g(c(o),s,l,o);return}s.validators.push({validator:c,classGroupId:l});return}Object.entries(c).forEach(([u,m])=>{$g(m,Ox(s,u),l,o)})})},Ox=(t,s)=>{let l=t;return s.split(Hm).forEach(o=>{l.nextPart.has(o)||l.nextPart.set(o,{nextPart:new Map,validators:[]}),l=l.nextPart.get(o)}),l},zR=t=>t.isThemeGetter,qR=t=>{if(t<1)return{get:()=>{},set:()=>{}};let s=0,l=new Map,o=new Map;const c=(u,m)=>{l.set(u,m),s++,s>t&&(s=0,o=l,l=new Map)};return{get(u){let m=l.get(u);if(m!==void 0)return m;if((m=o.get(u))!==void 0)return c(u,m),m},set(u,m){l.has(u)?l.set(u,m):c(u,m)}}},Zg="!",Wg=":",PR=Wg.length,BR=t=>{const{prefix:s,experimentalParseClassName:l}=t;let o=c=>{const u=[];let m=0,f=0,p=0,h;for(let A=0;A<c.length;A++){let y=c[A];if(m===0&&f===0){if(y===Wg){u.push(c.slice(p,A)),p=A+PR;continue}if(y==="/"){h=A;continue}}y==="["?m++:y==="]"?m--:y==="("?f++:y===")"&&f--}const b=u.length===0?c:c.substring(p),v=UR(b),S=v!==b,T=h&&h>p?h-p:void 0;return{modifiers:u,hasImportantModifier:S,baseClassName:v,maybePostfixModifierPosition:T}};if(s){const c=s+Wg,u=o;o=m=>m.startsWith(c)?u(m.substring(c.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:m,maybePostfixModifierPosition:void 0}}if(l){const c=o;o=u=>l({className:u,parseClassName:c})}return o},UR=t=>t.endsWith(Zg)?t.substring(0,t.length-1):t.startsWith(Zg)?t.substring(1):t,QR=t=>{const s=Object.fromEntries(t.orderSensitiveModifiers.map(o=>[o,!0]));return o=>{if(o.length<=1)return o;const c=[];let u=[];return o.forEach(m=>{m[0]==="["||s[m]?(c.push(...u.sort(),m),u=[]):u.push(m)}),c.push(...u.sort()),c}},IR=t=>({cache:qR(t.cacheSize),parseClassName:BR(t),sortModifiers:QR(t),...FR(t)}),KR=/\s+/,YR=(t,s)=>{const{parseClassName:l,getClassGroupId:o,getConflictingClassGroupIds:c,sortModifiers:u}=s,m=[],f=t.trim().split(KR);let p="";for(let h=f.length-1;h>=0;h-=1){const b=f[h],{isExternal:v,modifiers:S,hasImportantModifier:T,baseClassName:A,maybePostfixModifierPosition:y}=l(b);if(v){p=b+(p.length>0?" "+p:p);continue}let R=!!y,L=o(R?A.substring(0,y):A);if(!L){if(!R){p=b+(p.length>0?" "+p:p);continue}if(L=o(A),!L){p=b+(p.length>0?" "+p:p);continue}R=!1}const _=u(S).join(":"),F=T?_+Zg:_,$=F+L;if(m.includes($))continue;m.push($);const P=c(L,R);for(let U=0;U<P.length;++U){const M=P[U];m.push(F+M)}p=b+(p.length>0?" "+p:p)}return p};function XR(){let t=0,s,l,o="";for(;t<arguments.length;)(s=arguments[t++])&&(l=Zk(s))&&(o&&(o+=" "),o+=l);return o}const Zk=t=>{if(typeof t=="string")return t;let s,l="";for(let o=0;o<t.length;o++)t[o]&&(s=Zk(t[o]))&&(l&&(l+=" "),l+=s);return l};function $R(t,...s){let l,o,c,u=m;function m(p){const h=s.reduce((b,v)=>v(b),t());return l=IR(h),o=l.cache.get,c=l.cache.set,u=f,f(p)}function f(p){const h=o(p);if(h)return h;const b=YR(p,l);return c(p,b),b}return function(){return u(XR.apply(null,arguments))}}const Nt=t=>{const s=l=>l[t]||[];return s.isThemeGetter=!0,s},Wk=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ej=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ZR=/^\d+\/\d+$/,WR=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,eA=/\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$/,tA=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,aA=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,nA=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Gs=t=>ZR.test(t),Ge=t=>!!t&&!Number.isNaN(Number(t)),ar=t=>!!t&&Number.isInteger(Number(t)),vg=t=>t.endsWith("%")&&Ge(t.slice(0,-1)),Tn=t=>WR.test(t),rA=()=>!0,sA=t=>eA.test(t)&&!tA.test(t),tj=()=>!1,lA=t=>aA.test(t),iA=t=>nA.test(t),oA=t=>!Ae(t)&&!He(t),cA=t=>el(t,rj,tj),Ae=t=>Wk.test(t),Fr=t=>el(t,sj,sA),xg=t=>el(t,fA,Ge),Cx=t=>el(t,aj,tj),dA=t=>el(t,nj,iA),Uo=t=>el(t,lj,lA),He=t=>ej.test(t),ei=t=>tl(t,sj),uA=t=>tl(t,pA),Vx=t=>tl(t,aj),gA=t=>tl(t,rj),mA=t=>tl(t,nj),Qo=t=>tl(t,lj,!0),el=(t,s,l)=>{const o=Wk.exec(t);return o?o[1]?s(o[1]):l(o[2]):!1},tl=(t,s,l=!1)=>{const o=ej.exec(t);return o?o[1]?s(o[1]):l:!1},aj=t=>t==="position"||t==="percentage",nj=t=>t==="image"||t==="url",rj=t=>t==="length"||t==="size"||t==="bg-size",sj=t=>t==="length",fA=t=>t==="number",pA=t=>t==="family-name",lj=t=>t==="shadow",hA=()=>{const t=Nt("color"),s=Nt("font"),l=Nt("text"),o=Nt("font-weight"),c=Nt("tracking"),u=Nt("leading"),m=Nt("breakpoint"),f=Nt("container"),p=Nt("spacing"),h=Nt("radius"),b=Nt("shadow"),v=Nt("inset-shadow"),S=Nt("text-shadow"),T=Nt("drop-shadow"),A=Nt("blur"),y=Nt("perspective"),R=Nt("aspect"),L=Nt("ease"),_=Nt("animate"),F=()=>["auto","avoid","all","avoid-page","page","left","right","column"],$=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],P=()=>[...$(),He,Ae],U=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],V=()=>[He,Ae,p],re=()=>[Gs,"full","auto",...V()],W=()=>[ar,"none","subgrid",He,Ae],oe=()=>["auto",{span:["full",ar,He,Ae]},ar,He,Ae],le=()=>[ar,"auto",He,Ae],ue=()=>["auto","min","max","fr",He,Ae],de=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ge=()=>["start","end","center","stretch","center-safe","end-safe"],E=()=>["auto",...V()],z=()=>[Gs,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...V()],C=()=>[t,He,Ae],ce=()=>[...$(),Vx,Cx,{position:[He,Ae]}],je=()=>["no-repeat",{repeat:["","x","y","space","round"]}],H=()=>["auto","cover","contain",gA,cA,{size:[He,Ae]}],I=()=>[vg,ei,Fr],q=()=>["","none","full",h,He,Ae],K=()=>["",Ge,ei,Fr],ie=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ae=()=>[Ge,vg,Vx,Cx],Se=()=>["","none",A,He,Ae],De=()=>["none",Ge,He,Ae],Fe=()=>["none",Ge,He,Ae],ze=()=>[Ge,He,Ae],Be=()=>[Gs,"full",...V()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Tn],breakpoint:[Tn],color:[rA],container:[Tn],"drop-shadow":[Tn],ease:["in","out","in-out"],font:[oA],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Tn],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Tn],shadow:[Tn],spacing:["px",Ge],text:[Tn],"text-shadow":[Tn],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Gs,Ae,He,R]}
vendor: 12,874 bytes, line 57
57],container:["container"],columns:[{columns:[Ge,Ae,He,f]}],"break-after":[{"break-after":F()}],"break-before":[{"break-before":F()}],"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:U()}],"overflow-x":[{"overflow-x":U()}],"overflow-y":[{"overflow-y":U()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:re()}],"inset-x":[{"inset-x":re()}],"inset-y":[{"inset-y":re()}],start:[{start:re()}],end:[{end:re()}],top:[{top:re()}],right:[{right:re()}],bottom:[{bottom:re()}],left:[{left:re()}],visibility:["visible","invisible","collapse"],z:[{z:[ar,"auto",He,Ae]}],basis:[{basis:[Gs,"full","auto",f,...V()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ge,Gs,"auto","initial","none",Ae]}],grow:[{grow:["",Ge,He,Ae]}],shrink:[{shrink:["",Ge,He,Ae]}],order:[{order:[ar,"first","last","none",He,Ae]}],"grid-cols":[{"grid-cols":W()}],"col-start-end":[{col:oe()}],"col-start":[{"col-start":le()}],"col-end":[{"col-end":le()}],"grid-rows":[{"grid-rows":W()}],"row-start-end":[{row:oe()}],"row-start":[{"row-start":le()}],"row-end":[{"row-end":le()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ue()}],"auto-rows":[{"auto-rows":ue()}],gap:[{gap:V()}],"gap-x":[{"gap-x":V()}],"gap-y":[{"gap-y":V()}],"justify-content":[{justify:[...de(),"normal"]}],"justify-items":[{"justify-items":[...ge(),"normal"]}],"justify-self":[{"justify-self":["auto",...ge()]}],"align-content":[{content:["normal",...de()]}],"align-items":[{items:[...ge(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ge(),{baseline:["","last"]}]}],"place-content":[{"place-content":de()}],"place-items":[{"place-items":[...ge(),"baseline"]}],"place-self":[{"place-self":["auto",...ge()]}],p:[{p:V()}],px:[{px:V()}],py:[{py:V()}],ps:[{ps:V()}],pe:[{pe:V()}],pt:[{pt:V()}],pr:[{pr:V()}],pb:[{pb:V()}],pl:[{pl:V()}],m:[{m:E()}],mx:[{mx:E()}],my:[{my:E()}],ms:[{ms:E()}],me:[{me:E()}],mt:[{mt:E()}],mr:[{mr:E()}],mb:[{mb:E()}],ml:[{ml:E()}],"space-x":[{"space-x":V()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":V()}],"space-y-reverse":["space-y-reverse"],size:[{size:z()}],w:[{w:[f,"screen",...z()]}],"min-w":[{"min-w":[f,"screen","none",...z()]}],"max-w":[{"max-w":[f,"screen","none","prose",{screen:[m]},...z()]}],h:[{h:["screen","lh",...z()]}],"min-h":[{"min-h":["screen","lh","none",...z()]}],"max-h":[{"max-h":["screen","lh",...z()]}],"font-size":[{text:["base",l,ei,Fr]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,He,xg]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",vg,Ae]}],"font-family":[{font:[uA,Ae,s]}],"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,He,Ae]}],"line-clamp":[{"line-clamp":[Ge,"none",He,xg]}],leading:[{leading:[u,...V()]}],"list-image":[{"list-image":["none",He,Ae]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",He,Ae]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:C()}],"text-color":[{text:C()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ie(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ge,"from-font","auto",He,Fr]}],"text-decoration-color":[{decoration:C()}],"underline-offset":[{"underline-offset":[Ge,"auto",He,Ae]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:V()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",He,Ae]}],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",He,Ae]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ce()}],"bg-repeat":[{bg:je()}],"bg-size":[{bg:H()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ar,He,Ae],radial:["",He,Ae],conic:[ar,He,Ae]},mA,dA]}],"bg-color":[{bg:C()}],"gradient-from-pos":[{from:I()}],"gradient-via-pos":[{via:I()}],"gradient-to-pos":[{to:I()}],"gradient-from":[{from:C()}],"gradient-via":[{via:C()}],"gradient-to":[{to:C()}],rounded:[{rounded:q()}],"rounded-s":[{"rounded-s":q()}],"rounded-e":[{"rounded-e":q()}],"rounded-t":[{"rounded-t":q()}],"rounded-r":[{"rounded-r":q()}],"rounded-b":[{"rounded-b":q()}],"rounded-l":[{"rounded-l":q()}],"rounded-ss":[{"rounded-ss":q()}],"rounded-se":[{"rounded-se":q()}],"rounded-ee":[{"rounded-ee":q()}],"rounded-es":[{"rounded-es":q()}],"rounded-tl":[{"rounded-tl":q()}],"rounded-tr":[{"rounded-tr":q()}],"rounded-br":[{"rounded-br":q()}],"rounded-bl":[{"rounded-bl":q()}],"border-w":[{border:K()}],"border-w-x":[{"border-x":K()}],"border-w-y":[{"border-y":K()}],"border-w-s":[{"border-s":K()}],"border-w-e":[{"border-e":K()}],"border-w-t":[{"border-t":K()}],"border-w-r":[{"border-r":K()}],"border-w-b":[{"border-b":K()}],"border-w-l":[{"border-l":K()}],"divide-x":[{"divide-x":K()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":K()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ie(),"hidden","none"]}],"divide-style":[{divide:[...ie(),"hidden","none"]}],"border-color":[{border:C()}],"border-color-x":[{"border-x":C()}],"border-color-y":[{"border-y":C()}],"border-color-s":[{"border-s":C()}],"border-color-e":[{"border-e":C()}],"border-color-t":[{"border-t":C()}],"border-color-r":[{"border-r":C()}],"border-color-b":[{"border-b":C()}],"border-color-l":[{"border-l":C()}],"divide-color":[{divide:C()}],"outline-style":[{outline:[...ie(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ge,He,Ae]}],"outline-w":[{outline:["",Ge,ei,Fr]}],"outline-color":[{outline:C()}],shadow:[{shadow:["","none",b,Qo,Uo]}],"shadow-color":[{shadow:C()}],"inset-shadow":[{"inset-shadow":["none",v,Qo,Uo]}],"inset-shadow-color":[{"inset-shadow":C()}],"ring-w":[{ring:K()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:C()}],"ring-offset-w":[{"ring-offset":[Ge,Fr]}],"ring-offset-color":[{"ring-offset":C()}],"inset-ring-w":[{"inset-ring":K()}],"inset-ring-color":[{"inset-ring":C()}],"text-shadow":[{"text-shadow":["none",S,Qo,Uo]}],"text-shadow-color":[{"text-shadow":C()}],opacity:[{opacity:[Ge,He,Ae]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"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":[Ge]}],"mask-image-linear-from-pos":[{"mask-linear-from":ae()}],"mask-image-linear-to-pos":[{"mask-linear-to":ae()}],"mask-image-linear-from-color":[{"mask-linear-from":C()}],"mask-image-linear-to-color":[{"mask-linear-to":C()}],"mask-image-t-from-pos":[{"mask-t-from":ae()}],"mask-image-t-to-pos":[{"mask-t-to":ae()}],"mask-image-t-from-color":[{"mask-t-from":C()}],"mask-image-t-to-color":[{"mask-t-to":C()}],"mask-image-r-from-pos":[{"mask-r-from":ae()}],"mask-image-r-to-pos":[{"mask-r-to":ae()}],"mask-image-r-from-color":[{"mask-r-from":C()}],"mask-image-r-to-color":[{"mask-r-to":C()}],"mask-image-b-from-pos":[{"mask-b-from":ae()}],"mask-image-b-to-pos":[{"mask-b-to":ae()}],"mask-image-b-from-color":[{"mask-b-from":C()}],"mask-image-b-to-color":[{"mask-b-to":C()}],"mask-image-l-from-pos":[{"mask-l-from":ae()}],"mask-image-l-to-pos":[{"mask-l-to":ae()}],"mask-image-l-from-color":[{"mask-l-from":C()}],"mask-image-l-to-color":[{"mask-l-to":C()}],"mask-image-x-from-pos":[{"mask-x-from":ae()}],"mask-image-x-to-pos":[{"mask-x-to":ae()}],"mask-image-x-from-color":[{"mask-x-from":C()}],"mask-image-x-to-color":[{"mask-x-to":C()}],"mask-image-y-from-pos":[{"mask-y-from":ae()}],"mask-image-y-to-pos":[{"mask-y-to":ae()}],"mask-image-y-from-color":[{"mask-y-from":C()}],"mask-image-y-to-color":[{"mask-y-to":C()}],"mask-image-radial":[{"mask-radial":[He,Ae]}],"mask-image-radial-from-pos":[{"mask-radial-from":ae()}],"mask-image-radial-to-pos":[{"mask-radial-to":ae()}],"mask-image-radial-from-color":[{"mask-radial-from":C()}],"mask-image-radial-to-color":[{"mask-radial-to":C()}],"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":$()}],"mask-image-conic-pos":[{"mask-conic":[Ge]}],"mask-image-conic-from-pos":[{"mask-conic-from":ae()}],"mask-image-conic-to-pos":[{"mask-conic-to":ae()}],"mask-image-conic-from-color":[{"mask-conic-from":C()}],"mask-image-conic-to-color":[{"mask-conic-to":C()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ce()}],"mask-repeat":[{mask:je()}],"mask-size":[{mask:H()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",He,Ae]}],filter:[{filter:["","none",He,Ae]}],blur:[{blur:Se()}],brightness:[{brightness:[Ge,He,Ae]}],contrast:[{contrast:[Ge,He,Ae]}],"drop-shadow":[{"drop-shadow":["","none",T,Qo,Uo]}],"drop-shadow-color":[{"drop-shadow":C()}],grayscale:[{grayscale:["",Ge,He,Ae]}],"hue-rotate":[{"hue-rotate":[Ge,He,Ae]}],invert:[{invert:["",Ge,He,Ae]}],saturate:[{saturate:[Ge,He,Ae]}],sepia:[{sepia:["",Ge,He,Ae]}],"backdrop-filter":[{"backdrop-filter":["","none",He,Ae]}],"backdrop-blur":[{"backdrop-blur":Se()}],"backdrop-brightness":[{"backdrop-brightness":[Ge,He,Ae]}],"backdrop-contrast":[{"backdrop-contrast":[Ge,He,Ae]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ge,He,Ae]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ge,He,Ae]}],"backdrop-invert":[{"backdrop-invert":["",Ge,He,Ae]}],"backdrop-opacity":[{"backdrop-opacity":[Ge,He,Ae]}],"backdrop-saturate":[{"backdrop-saturate":[Ge,He,Ae]}],"backdrop-sepia":[{"backdrop-sepia":["",Ge,He,Ae]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":V()}],"border-spacing-x":[{"border-spacing-x":V()}],"border-spacing-y":[{"border-spacing-y":V()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",He,Ae]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ge,"initial",He,Ae]}],ease:[{ease:["linear","initial",L,He,Ae]}],delay:[{delay:[Ge,He,Ae]}],animate:[{animate:["none",_,He,Ae]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,He,Ae]}],"perspective-origin":[{"perspective-origin":P()}],rotate:[{rotate:De()}],"rotate-x":[{"rotate-x":De()}],"rotate-y":[{"rotate-y":De()}],"rotate-z":[{"rotate-z":De()}],scale:[{scale:Fe()}],"scale-x":[{"scale-x":Fe()}],"scale-y":[{"scale-y":Fe()}],"scale-z":[{"scale-z":Fe()}],"scale-3d":["scale-3d"],skew:[{skew:ze()}],"skew-x":[{"skew-x":ze()}],"skew-y":[{"skew-y":ze()}],transform:[{transform:[He,Ae,"","none","gpu","cpu"]}],"transform-origin":[{origin:P()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Be()}],"translate-x":[{"translate-x":Be()}],"translate-y":[{"translate-y":Be()}],"translate-z":[{"translate-z":Be()}],"translate-none":["translate-none"],accent:[{accent:C()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:C()}
vendor: 11,141 bytes, lines 57-157
57],"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",He,Ae]}],"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":V()}],"scroll-mx":[{"scroll-mx":V()}],"scroll-my":[{"scroll-my":V()}],"scroll-ms":[{"scroll-ms":V()}],"scroll-me":[{"scroll-me":V()}],"scroll-mt":[{"scroll-mt":V()}],"scroll-mr":[{"scroll-mr":V()}],"scroll-mb":[{"scroll-mb":V()}],"scroll-ml":[{"scroll-ml":V()}],"scroll-p":[{"scroll-p":V()}],"scroll-px":[{"scroll-px":V()}],"scroll-py":[{"scroll-py":V()}],"scroll-ps":[{"scroll-ps":V()}],"scroll-pe":[{"scroll-pe":V()}],"scroll-pt":[{"scroll-pt":V()}],"scroll-pr":[{"scroll-pr":V()}],"scroll-pb":[{"scroll-pb":V()}],"scroll-pl":[{"scroll-pl":V()}],"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",He,Ae]}],fill:[{fill:["none",...C()]}],"stroke-w":[{stroke:[Ge,ei,Fr,xg]}],stroke:[{stroke:["none",...C()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","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","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","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-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-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-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-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"]}},vA=$R(hA);function sa(...t){return vA(Xk(t))}function xA({delayDuration:t=0,...s}){return n.jsx(VR,{"data-loc":"client/src/components/ui/tooltip.tsx:11","data-slot":"tooltip-provider",delayDuration:t,...s})}/** 58 * @license lucide-react v0.453.0 - ISC 59 * 60 * This source code is licensed under the ISC license. 61 * See the LICENSE file in the root directory of this source tree. 62 */const bA=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ij=(...t)=>t.filter((s,l,o)=>!!s&&o.indexOf(s)===l).join(" ");/** 63 * @license lucide-react v0.453.0 - ISC 64 * 65 * This source code is licensed under the ISC license. 66 * See the LICENSE file in the root directory of this source tree. 67 */var kA={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"};/** 68 * @license lucide-react v0.453.0 - ISC 69 * 70 * This source code is licensed under the ISC license. 71 * See the LICENSE file in the root directory of this source tree. 72 */const jA=k.forwardRef(({color:t="currentColor",size:s=24,strokeWidth:l=2,absoluteStrokeWidth:o,className:c="",children:u,iconNode:m,...f},p)=>k.createElement("svg",{ref:p,...kA,width:s,height:s,stroke:t,strokeWidth:o?Number(l)*24/Number(s):l,className:ij("lucide",c),...f},[...m.map(([h,b])=>k.createElement(h,b)),...Array.isArray(u)?u:[u]]));/** 73 * @license lucide-react v0.453.0 - ISC 74 * 75 * This source code is licensed under the ISC license. 76 * See the LICENSE file in the root directory of this source tree. 77 */const Gt=(t,s)=>{const l=k.forwardRef(({className:o,...c},u)=>k.createElement(jA,{ref:u,iconNode:s,className:ij(`lucide-${bA(t)}`,o),...c}));return l.displayName=`${t}`,l};/** 78 * @license lucide-react v0.453.0 - ISC 79 * 80 * This source code is licensed under the ISC license. 81 * See the LICENSE file in the root directory of this source tree. 82 */const yA=Gt("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** 83 * @license lucide-react v0.453.0 - ISC 84 * 85 * This source code is licensed under the ISC license. 86 * See the LICENSE file in the root directory of this source tree. 87 */const SA=Gt("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** 88 * @license lucide-react v0.453.0 - ISC 89 * 90 * This source code is licensed under the ISC license. 91 * See the LICENSE file in the root directory of this source tree. 92 */const wm=Gt("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** 93 * @license lucide-react v0.453.0 - ISC 94 * 95 * This source code is licensed under the ISC license. 96 * See the LICENSE file in the root directory of this source tree. 97 */const NA=Gt("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** 98 * @license lucide-react v0.453.0 - ISC 99 * 100 * This source code is licensed under the ISC license. 101 * See the LICENSE file in the root directory of this source tree. 102 */const TA=Gt("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** 103 * @license lucide-react v0.453.0 - ISC 104 * 105 * This source code is licensed under the ISC license. 106 * See the LICENSE file in the root directory of this source tree. 107 */const Em=Gt("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 108 * @license lucide-react v0.453.0 - ISC 109 * 110 * This source code is licensed under the ISC license. 111 * See the LICENSE file in the root directory of this source tree. 112 */const RA=Gt("Clock3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16.5 12",key:"1aq6pp"}]]);/** 113 * @license lucide-react v0.453.0 - ISC 114 * 115 * This source code is licensed under the ISC license. 116 * See the LICENSE file in the root directory of this source tree. 117 */const oj=Gt("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** 118 * @license lucide-react v0.453.0 - ISC 119 * 120 * This source code is licensed under the ISC license. 121 * See the LICENSE file in the root directory of this source tree. 122 */const Lm=Gt("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** 123 * @license lucide-react v0.453.0 - ISC 124 * 125 * This source code is licensed under the ISC license. 126 * See the LICENSE file in the root directory of this source tree. 127 */const rr=Gt("MapPin",[["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"}]]);/** 128 * @license lucide-react v0.453.0 - ISC 129 * 130 * This source code is licensed under the ISC license. 131 * See the LICENSE file in the root directory of this source tree. 132 */const AA=Gt("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/** 133 * @license lucide-react v0.453.0 - ISC 134 * 135 * This source code is licensed under the ISC license. 136 * See the LICENSE file in the root directory of this source tree. 137 */const gr=Gt("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** 138 * @license lucide-react v0.453.0 - ISC 139 * 140 * This source code is licensed under the ISC license. 141 * See the LICENSE file in the root directory of this source tree. 142 */const HA=Gt("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/** 143 * @license lucide-react v0.453.0 - ISC 144 * 145 * This source code is licensed under the ISC license. 146 * See the LICENSE file in the root directory of this source tree. 147 */const wA=Gt("TriangleAlert",[["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"}]]);/** 148 * @license lucide-react v0.453.0 - ISC 149 * 150 * This source code is licensed under the ISC license. 151 * See the LICENSE file in the root directory of this source tree. 152 */const EA=Gt("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/** 153 * @license lucide-react v0.453.0 - ISC 154 * 155 * This source code is licensed under the ISC license. 156 * See the LICENSE file in the root directory of this source tree. 157 */const LA=Gt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}
157],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);class MA extends k.Component{constructor(s){super(s),this.state={hasError:!1,error:null}}static getDerivedStateFromError(s){return{hasError:!0,error:s}}render(){return this.state.hasError?n.jsx("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:27",className:"flex items-center justify-center min-h-screen p-8 bg-background",children:n.jsxs("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:28",className:"flex flex-col items-center w-full max-w-2xl p-8",children:[n.jsx(wA,{"data-loc":"client/src/components/ErrorBoundary.tsx:29",size:48,className:"text-destructive mb-6 flex-shrink-0"}),n.jsx("h2",{"data-loc":"client/src/components/ErrorBoundary.tsx:34",className:"text-xl mb-4",children:"An unexpected error occurred."}),n.jsx("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:36",className:"p-4 w-full rounded bg-muted overflow-auto mb-6",children:n.jsx("pre",{"data-loc":"client/src/components/ErrorBoundary.tsx:37",className:"text-sm text-muted-foreground whitespace-break-spaces",children:this.state.error?.stack})}),n.jsxs("button",{"data-loc":"client/src/components/ErrorBoundary.tsx:42",onClick:()=>window.location.reload(),className:sa("flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground","hover:opacity-90 cursor-pointer"),children:[n.jsx(HA,{"data-loc":"client/src/components/ErrorBoundary.tsx:50",size:16}),"Reload Page"]})]})}):this.props.children}}const Y={name:"Hennans Grävtjänst AB",url:"https://hennan.se",founded:1996,founder:"Pär Nordström",locality:"Hennan",municipality:"Ljusdals kommun",region:"Hälsingland, Gävleborgs län",phoneFixed:"0651-820 35",phoneMobile:"070-657 14 42",phoneMobileHref:"tel:+46706571442",phoneFixedHref:"tel:+4665182035",email:"[email protected]",emailHref:"mailto:[email protected]",serviceAreas:["Hennan","Ljusdal","Färila","Järvsö","Ramsjö","Ljusdals kommun","Hälsingland"],logoUrl:"/manus-storage/logo-640_541d7d55.webp"},pe={home:"/manus-storage/og-home_361db54f.jpg",vagentreprenad:"/manus-storage/og-vagentreprenad_065e6036.jpg",grusvag:"/manus-storage/og-anlagga-grusvag_c2f180a9.jpg",skogsbilvag:"/manus-storage/og-skogsbilvag_34f35d88.jpg",vagunderhall:"/manus-storage/og-vagunderhall-dikning_6ea655fa.jpg",vagtrumma:"/manus-storage/og-vagtrumma_097fafa2.jpg",va:"/manus-storage/og-vatten-avlopp_7071c9eb.jpg",trekammarbrunn:"/manus-storage/og-trekammarbrunn_12691bc9.jpg",infiltration:"/manus-storage/og-infiltration-markbadd_f177268c.jpg",enskiltavlopp:"/manus-storage/og-enskilt-avlopp_867a0bd4.jpg",dranering:"/manus-storage/og-dranering_874449e5.jpg",markarbeten:"/manus-storage/og-markarbeten_c5b8e08b.jpg",husgrund:"/manus-storage/og-husgrund_3ae6622d.jpg",tomtplanering:"/manus-storage/og-tomtplanering_7f48308b.jpg",snorojning:"/manus-storage/og-snorojning_5ce0c1dd.jpg",tradfallning:"/manus-storage/og-tradfallning_92458389.jpg",smide:"/manus-storage/og-smide_b803002e.jpg",gravfirmaLjusdal:"/manus-storage/og-gravfirma-ljusdal_9cbab9e9.jpg",gravfirmaFarila:"/manus-storage/og-gravfirma-farila_08402ec3.jpg",gravfirmaJarvso:"/manus-storage/og-gravfirma-jarvso_d67a5a1d.jpg",gravfirmaRamsjo:"/manus-storage/og-gravfirma-ramsjo_42b24dd2.jpg",gravfirmaHennan:"/manus-storage/og-gravfirma-hennan_c56539a1.jpg",trekammarbrunnLjusdal:"/manus-storage/og-trekammarbrunn-ljusdal_34ffeab0.jpg",trekammarbrunnFarila:"/manus-storage/og-trekammarbrunn-farila_b1a416a5.jpg",trekammarbrunnJarvso:"/manus-storage/og-trekammarbrunn-jarvso_75e8c232.jpg",trekammarbrunnRamsjo:"/manus-storage/og-trekammarbrunn-ramsjo_3ae1c902.jpg",trekammarbrunnHennan:"/manus-storage/og-trekammarbrunn-hennan_b00d3a9d.jpg",markarbetenRamsjo:"/manus-storage/og-markarbeten-ramsjo_04db4cea.jpg",markarbetenLjusdal:"/manus-storage/og-markarbeten-ljusdal_b2bc7bcd.jpg",markarbetenFarila:"/manus-storage/og-markarbeten-farila_98981ed5.jpg",markarbetenJarvso:"/manus-storage/og-markarbeten-jarvso_1ce1d90b.jpg",markarbetenHennan:"/manus-storage/og-markarbeten-hennan_873ab3db.jpg",draneringLjusdal:"/manus-storage/og-dranering-ljusdal_6ecc9cf9.jpg",draneringFarila:"/manus-storage/og-dranering-farila_6d0d6037.jpg",draneringJarvso:"/manus-storage/og-dranering-jarvso_9fb5a457.jpg",draneringRamsjo:"/manus-storage/og-dranering-ramsjo_6e9eb7d9.jpg",draneringHennan:"/manus-storage/og-dranering-hennan_b608b84f.jpg",snorojningLjusdal:"/manus-storage/og-snorojning-ljusdal_9d5683df.jpg",snorojningFarila:"/manus-storage/og-snorojning-farila_d003183b.jpg",snorojningJarvso:"/manus-storage/og-snorojning-jarvso_52e59bbb.jpg",snorojningRamsjo:"/manus-storage/og-snorojning-ramsjo_a0baab42.jpg",snorojningHennan:"/manus-storage/og-snorojning-hennan_4a17c32f.jpg",tradfallningLjusdal:"/manus-storage/og-tradfallning-ljusdal_09771c07.jpg",tradfallningFarila:"/manus-storage/og-tradfallning-farila_9b27482a.jpg",tradfallningJarvso:"/manus-storage/og-tradfallning-jarvso_7d270f5b.jpg",tradfallningRamsjo:"/manus-storage/og-tradfallning-ramsjo_d68a9b49.jpg",tradfallningHennan:"/manus-storage/og-tradfallning-hennan_41d93fc3.jpg",avloppLjusdal:"/manus-storage/og-avloppsanlaggning-ljusdal_a551b0d6.jpg",avloppFarila:"/manus-storage/og-avloppsanlaggning-farila_4acc9124.jpg",avloppJarvso:"/manus-storage/og-avloppsanlaggning-jarvso_bf08815c.jpg",avloppRamsjo:"/manus-storage/og-avloppsanlaggning-ramsjo_ad09c5b6.jpg",avloppHennan:"/manus-storage/og-avloppsanlaggning-hennan_c255ecc6.jpg",husgrundLjusdal:"/manus-storage/og-husgrund-ljusdal_0bb7bb42.jpg",husgrundFarila:"/manus-storage/og-husgrund-farila_7d9e7edb.jpg",husgrundJarvso:"/manus-storage/og-husgrund-jarvso_e8af98c5.jpg",husgrundRamsjo:"/manus-storage/og-husgrund-ramsjo_55fdda77.jpg",husgrundHennan:"/manus-storage/og-husgrund-hennan_bb10e069.jpg",tomtLjusdal:"/manus-storage/og-tomtplanering-ljusdal_54303f54.jpg",tomtFarila:"/manus-storage/og-tomtplanering-farila_a1c5b1e3.jpg",tomtJarvso:"/manus-storage/og-tomtplanering-jarvso_38a0205f.jpg",tomtRamsjo:"/manus-storage/og-tomtplanering-ramsjo_b9d63a5a.jpg",tomtHennan:"/manus-storage/og-tomtplanering-hennan_51c74ff0.jpg",projekt:"/manus-storage/og-projekt_6fb71780.jpg",priserDranering:"/manus-storage/og-priser-dranering_e9c7d4b2.jpg",priserAvlopp:"/manus-storage/og-priser-avlopp_4776c51a.jpg",omOss:"/manus-storage/og-om-oss_19c3e331.jpg",kontakt:"/manus-storage/og-kontakt_3692bd6a.jpg",snorojningPris:"/manus-storage/og-snorojning-pris_2f3901b6.jpg",integritetspolicy:"/manus-storage/og-integritetspolicy_1fdc3bd0.jpg",tack:"/manus-storage/og-tack_0525bd4e.jpg"},ne={hero:"/manus-storage/hero-1280_b4632c0d.webp",vagentreprenad:"/manus-storage/vagentreprenad-1280_b5c729fb.webp",grusvag:"/manus-storage/grusvag-1280_d6674b5e.webp",skogsbilvag:"/manus-storage/skogsbilvag-1280_4716df9b.webp",vagunderhall:"/manus-storage/vagunderhall-1280_8d81fcd2.webp",vagtrumma:"/manus-storage/vagtrumma-1280_470667f4.webp",va:"/manus-storage/va-1280_476850d5.webp",infiltration:"/manus-storage/infiltration-1280_ff40ae4c.webp",dranering:"/manus-storage/dranering-1280_b63626b4.webp",markarbeten:"/manus-storage/markarbeten-1280_dffef2cb.webp",snorojning:"/manus-storage/snorojning-1280_98246a25.webp",tradfallning:"/manus-storage/tradfallning-1280_4b88bb43.webp",smide:"/manus-storage/smide-1280_81399efe.webp",omOss:"/manus-storage/omOss-1280_255ed397.webp",logo:"/manus-storage/logo-640_541d7d55.webp"},Qr={[ne.hero]:"/manus-storage/hero-640_a7a9e591.webp 640w, /manus-storage/hero-960_7a2d973f.webp 960w, /manus-storage/hero-1280_b4632c0d.webp 1280w",[ne.vagentreprenad]:"/manus-storage/vagentreprenad-640_b518f0e9.webp 640w, /manus-storage/vagentreprenad-960_355d87af.webp 960w, /manus-storage/vagentreprenad-1280_b5c729fb.webp 1280w",[ne.grusvag]:"/manus-storage/grusvag-640_cf26fdcd.webp 640w, /manus-storage/grusvag-960_9bdf24f5.webp 960w, /manus-storage/grusvag-1280_d6674b5e.webp 1280w",[ne.skogsbilvag]:"/manus-storage/skogsbilvag-640_54a1696d.webp 640w, /manus-storage/skogsbilvag-960_c3a9040d.webp 960w, /manus-storage/skogsbilvag-1280_4716df9b.webp 1280w",[ne.vagunderhall]:"/manus-storage/vagunderhall-640_16324603.webp 640w, /manus-storage/vagunderhall-960_8313b842.webp 960w, /manus-storage/vagunderhall-1280_8d81fcd2.webp 1280w",[ne.vagtrumma]:"/manus-storage/vagtrumma-640_0fb5a4bd.webp 640w, /manus-storage/vagtrumma-960_d2920891.webp 960w, /manus-storage/vagtrumma-1280_470667f4.webp 1280w",[ne.va]:"/manus-storage/va-640_c89754fd.webp 640w, /manus-storage/va-960_81cc89b6.webp 960w, /manus-storage/va-1280_476850d5.webp 1280w",[ne.infiltration]:"/manus-storage/infiltration-640_909563a5.webp 640w, /manus-storage/infiltration-960_4a6ed4db.webp 960w, /manus-storage/infiltration-1280_ff40ae4c.webp 1280w",[ne.dranering]:"/manus-storage/dranering-640_c8b77937.webp 640w, /manus-storage/dranering-960_bc112890.webp 960w, /manus-storage/dranering-1280_b63626b4.webp 1280w",[ne.markarbeten]:"/manus-storage/markarbeten-640_97353048.webp 640w, /manus-storage/markarbeten-960_069c7e8a.webp 960w, /manus-storage/markarbeten-1280_dffef2cb.webp 1280w",[ne.snorojning]:"/manus-storage/snorojning-640_cda4ea7e.webp 640w, /manus-storage/snorojning-960_9e4de551.webp 960w, /manus-storage/snorojning-1280_98246a25.webp 1280w",[ne.tradfallning]:"/manus-storage/tradfallning-640_84f4fc69.webp 640w, /manus-storage/tradfallning-960_da3662d7.webp 960w, /manus-storage/tradfallning-1280_4b88bb43.webp 1280w",[ne.smide]:"/manus-storage/smide-640_de4c6930.webp 640w, /manus-storage/smide-960_a9429128.webp 960w, /manus-storage/smide-1280_81399efe.webp 1280w",[ne.omOss]:"/manus-storage/omOss-640_8c4b437f.webp 640w, /manus-storage/omOss-960_f90a438e.webp 960w, /manus-storage/omOss-1280_255ed397.webp 1280w",[ne.logo]:"/manus-storage/logo-640_541d7d55.webp 640w, /manus-storage/logo-960_d03bef82.webp 960w, /manus-storage/logo-1280_2d5812c1.webp 1280w"},DA="Hennans Grävtjänst",fi=t=>`${Y.url}${t==="/"?"/":t}`,_e=t=>JSON.stringify({"@context":"https://schema.org","@type":"GeneralContractor",name:Y.name,telephone:"+46706571442",email:Y.email,foundingDate:String(Y.founded),founder:{"@type":"Person",name:Y.founder},address:{"@type":"PostalAddress",addressLocality:Y.locality,addressRegion:"Gävleborgs län",addressCountry:"SE"},areaServed:Y.serviceAreas.map(s=>({"@type":"Place",name:s})),url:Y.url,image:fi(ne.hero),logo:fi(ne.logo),...t}),Fx=()=>JSON.stringify({"@context":"https://schema.org","@type":"Organization",name:Y.name,foundingDate:String(Y.founded),founder:{"@type":"Person",name:Y.founder},email:Y.email,telephone:"+46706571442",url:Y.url,logo:fi(ne.logo)}),_A=()=>JSON.stringify({"@context":"https://schema.org","@type":"WebSite",name:Y.name,url:Y.url,inLanguage:"sv-SE"}),Ee=(t,s,l)=>JSON.stringify({"@context":"https://schema.org","@type":"Service",name:t,description:s,provider:{"@type":"GeneralContractor",name:Y.name,telephone:"+46706571442"},areaServed:Y.serviceAreas.map(o=>({"@type":"Place",name:o})),url:fi(l)}),Ne=t=>JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:t.map(s=>
157({"@type":"Question",name:s.q,acceptedAnswer:{"@type":"Answer",text:s.a}}))}),xe=t=>JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:t.map((s,l)=>({"@type":"ListItem",position:l+1,name:s.name,item:fi(s.path)}))}),X={home:[{q:"Vilka omrÃ¥den arbetar ni i?",a:"Vi utgÃ¥r frÃ¥n Hennan i norra Ljusdals kommun och arbetar i hela kommunen â Ljusdal, Färila, Järvsö, Ramsjö â samt angränsande delar av Hälsingland. Ring 070-657 14 42 sÃ¥ stämmer vi av ditt projekt."},{q:"Var ligger Hennan?",a:"Hennan är en by vid sjön Hennan utmed riksväg 83 i norra Ljusdals kommun, Hälsingland, ungefär mitt emellan Ljusdal och Ã
nge. Här har Hennans Grävtjänst haft verkstad, kontor och maskinpark sedan 1996."},{q:"Vad kostar det att anlita en grävfirma?",a:"Priset beror pÃ¥ uppdragets omfattning, markförhÃ¥llanden och maskinbehov. Vi lämnar alltid en kostnadsfri offert innan arbetet pÃ¥börjas, sÃ¥ att du vet vad som gäller."},{q:"Har ni F-skattsedel och försäkring?",a:"Ja. Hennans Grävtjänst AB har F-skattsedel och nödvändiga försäkringar. Företaget har varit verksamt sedan 1996."},{q:"Hur snabbt kan ni pÃ¥börja ett arbete?",a:"Det varierar med säsong och beläggning. Kontakta oss tidigt i planeringen â akuta uppdrag som vattenskador eller trumbyten försöker vi alltid prioritera."}],vagentreprenad:[{q:"Bygger ni bÃ¥de nya vägar och underhÃ¥ller befintliga?",a:"Ja. Vi anlägger nya grusvägar, skogsbilvägar och infarter samt utför underhÃ¥ll som hyvling, grusning, dikning och trumbyten pÃ¥ befintliga vägar."},{q:"Arbetar ni Ã¥t vägföreningar och samfälligheter?",a:"Ja, vi arbetar Ã¥t vägsamfälligheter, skogsägare, privatpersoner och företag. Vi kan lämna offert pÃ¥ bÃ¥de enskilda Ã¥tgärder och löpande vägunderhÃ¥ll."},{q:"Vad ingÃ¥r i en vägentreprenad?",a:"Normalt terrassering, dikning, trummor, överbyggnad med bärlager och slitlager samt justering och packning. Omfattningen anpassas efter vägens användning och markförhÃ¥llanden."}],grusvag:[{q:"Vad kostar det att anlägga en grusväg?",a:"Kostnaden beror pÃ¥ längd, markförhÃ¥llanden, behov av dikning och trummor samt materialÃ¥tgÃ¥ng. Kontakta oss för en kostnadsfri offert pÃ¥ just din sträcka."},{q:"Hur lÃ¥ng tid tar det att anlägga en grusväg?",a:"En kortare infart kan vara klar pÃ¥ nÃ¥gon eller nÃ¥gra dagar, medan längre vägar med dikning och trummor tar längre tid. Vi ger en tidsplan i offerten."},{q:"Vilket grus används till en grusväg?",a:"Vanligtvis bärlager 0â32 eller 0â45 mm och slitlager 0â16 eller 0â18 mm. Rätt material och packning är avgörande för att vägen ska hÃ¥lla."}],skogsbilvag:[{q:"Vad krävs för att bygga en skogsbilväg?",a:"En skogsbilväg dimensioneras efter virkestransporter med tunga fordon. Det kräver rätt terrassering, bärighet, dikning, vändplan och trummor. Vi har lÃ¥ng erfarenhet av skogsbilvägar i Hälsingland."},{q:"Behövs tillstÃ¥nd för skogsbilväg?",a:"Nybyggnad av skogsbilväg ska normalt anmälas till Skogsstyrelsen för samrÃ¥d. Vi hjälper dig med de praktiska momenten kring anläggningen."},{q:"Utför ni upprustning av äldre skogsbilvägar?",a:"Ja, vi rustar upp äldre vägar med dikesrensning, trumbyten, förstärkning och ny slitlagergrusning sÃ¥ att de klarar dagens virkesfordon."}],vagunderhall:[{q:"Hur ofta behöver en grusväg underhÃ¥llas?",a:"Hyvling och grusning behövs normalt med nÃ¥gra Ã¥rs mellanrum, medan dikesrensning brukar behövas vart femte till tionde Ã¥r beroende pÃ¥ vattenflöden och markförhÃ¥llanden."},{q:"Varför är dikning sÃ¥ viktig?",a:"Vatten är grusvägens största fiende. Fungerande diken och trummor leder bort vattnet, minskar tjälskador och förlänger vägens livslängd avsevärt."},{q:"Utför ni löpande vägunderhÃ¥ll Ã¥t vägföreningar?",a:"Ja, vi utför bÃ¥de enskilda Ã¥tgärder och Ã¥terkommande underhÃ¥ll Ã¥t vägsamfälligheter och privata väghÃ¥llare i Ljusdals kommun."}],vagtrumma:[{q:"Vad kostar det att byta en vägtrumma?",a:"Priset beror pÃ¥ trummans dimension, längd, djup och markförhÃ¥llanden. Ett enklare trumbyte är ofta gjort pÃ¥ en dag. Begär offert sÃ¥ fÃ¥r du ett tydligt pris."},{q:"Hur vet jag att vägtrumman behöver bytas?",a:"Vanliga tecken är vatten som stÃ¥r kvar i diket, sättningar i vägbanan över trumman, rost- eller krossskador och att trumman satt igen. Vi bedömer gärna pÃ¥ plats."},{q:"Vilken storlek pÃ¥ vägtrumma behövs?",a:"Dimensionen styrs av vattenflödet. Vanliga infartstrummor ligger ofta pÃ¥ 300â600 mm, medan bäckar kan kräva större. I trakten bör trummor ocksÃ¥ läggas med hänsyn till tjäle."}],va:[{q:"Vad ingÃ¥r när ni gräver för vatten och avlopp?",a:"Vi utför hela markentreprenaden: schakt, ledningsdragning, brunnar, infiltration eller markbädd, Ã¥terfyllnad och Ã¥terställning. Allt dimensioneras frostfritt för trakten."},{q:"Behöver jag tillstÃ¥nd för enskilt avlopp?",a:"Ja, en ny eller ändrad avloppsanläggning kräver tillstÃ¥nd frÃ¥n miljöenheten i Ljusdals kommun innan arbetet pÃ¥börjas. Vi hjälper dig med underlag till ansökan."}
157,{q:"Hur djupt ska VA-ledningar ligga?",a:"I norra Hälsingland räknar man ofta med tjäldjup pÃ¥ uppemot tvÃ¥ meter. Ledningar förläggs frostfritt eller isoleras â nÃ¥got vi alltid tar höjd för i projekteringen."}],trekammarbrunn:[{q:"Vad kostar en trekammarbrunn med installation?",a:"Totalkostnaden inklusive brunn, grävning och efterföljande rening ligger ofta i spannet 70 000â150 000 kr beroende pÃ¥ markförhÃ¥llanden och val av reningssteg. Begär offert för ett exakt pris."},{q:"Hur fungerar en trekammarbrunn?",a:"Slammet avskiljs i tre kammare innan vattnet leds vidare till infiltration eller markbädd. Brunnen behöver slamtömmas regelbundet, normalt en gÃ¥ng per Ã¥r."},{q:"Räcker det med bara en trekammarbrunn?",a:"Nej, en trekammarbrunn är bara försteg. Efterföljande rening â infiltration eller markbädd â krävs för att anläggningen ska godkännas av kommunen."}],infiltration:[{q:"Vad är skillnaden mellan infiltration och markbädd?",a:"Vid infiltration renas vattnet i markens naturliga jordlager. En markbädd byggs upp med sand- och gruslager när marken inte klarar infiltration, till exempel vid täta jordar eller högt grundvatten."},{q:"Hur vet jag om min tomt klarar infiltration?",a:"Det avgörs med provgrop och ibland siktanalys av jorden. Moränjordarna i trakten varierar mycket â vi gräver provgrop och tar fram underlag till kommunens prövning."},{q:"Hur länge hÃ¥ller en infiltrationsanläggning?",a:"En korrekt utförd och rätt belastad infiltration hÃ¥ller ofta 20â30 Ã¥r. Regelbunden slamtömning av trekammarbrunnen är avgörande för livslängden."}],enskiltAvlopp:[{q:"Vad kostar ett nytt enskilt avlopp?",a:"En komplett anläggning med trekammarbrunn och infiltration eller markbädd kostar ofta 80 000â180 000 kr beroende pÃ¥ markförhÃ¥llanden och teknikval. Vi lämnar fast offert efter platsbesök."},{q:"Vem söker tillstÃ¥ndet för enskilt avlopp?",a:"Fastighetsägaren är formellt sökande hos miljöenheten i Ljusdals kommun, men vi tar fram situationsplan, provgropar och tekniskt underlag till ansökan."},{q:"MÃ¥ste gamla avlopp Ã¥tgärdas?",a:"Ja, kommunen ställer krav pÃ¥ att äldre anläggningar som inte uppfyller dagens reningskrav Ã¥tgärdas. Att byta i god tid är ofta billigare än att vänta pÃ¥ föreläggande."}],dranering:[{q:"Vad kostar dränering av en husgrund?",a:"En normalstor villa kostar ofta 100 000â200 000 kr att dränera om, beroende pÃ¥ djup, tillgänglighet och markförhÃ¥llanden. Vi lämnar kostnadsfri offert efter platsbesök."},{q:"Hur vet jag om huset behöver dräneras om?",a:"Fukt i källaren, mögellukt, saltutslag pÃ¥ väggarna eller flagnande färg är vanliga tecken. En dränering hÃ¥ller normalt 30â50 Ã¥r."},{q:"Hur lÃ¥ng tid tar en omdränering?",a:"En normalstor villa tar ofta en till tvÃ¥ veckor beroende pÃ¥ djup, markförhÃ¥llanden och väder."}],markarbeten:[{q:"Utför ni grävning för husgrund?",a:"Ja, vi schaktar och förbereder för platta pÃ¥ mark, krypgrund och källargrund, inklusive dränering, VA-anslutningar och packade materiallager."},{q:"Kan ni hjälpa till med tomtplanering?",a:"Ja, vi utför tomtplanering, finplanering, gräsmatteytor, infarter och stödmurar â frÃ¥n rÃ¥mark till färdig tomt."},{q:"Tar ni hand om massorna?",a:"Ja, vi hanterar bÃ¥de schaktmassor som ska bort och tillförsel av fyllnadsmaterial, grus och matjord."}],snorojning:[{q:"Vad kostar snöröjning?",a:"Priset beror pÃ¥ ytans storlek och om du vill ha avtal för hela säsongen eller enstaka utryckningar. Kontakta oss innan säsongen för bäst pris och garanterad plats i turlistan."},{q:"Vilka omrÃ¥den snöröjer ni?",a:"Vi snöröjer i Hennan med omnejd i norra Ljusdals kommun. Hör av dig sÃ¥ stämmer vi av om din fastighet ligger inom vÃ¥rt omrÃ¥de."},{q:"Röjer ni bÃ¥de Ã¥t privatpersoner och företag?",a:"Ja, vi röjer infarter, gÃ¥rdsplaner, parkeringar och vägar Ã¥t bÃ¥de privatpersoner, företag och vägföreningar."}],tradfallning:[{q:"Fäller ni träd nära hus och ledningar?",a:"Ja, vi utför trädfällning även i trängre lägen. Med maskinstöd kan vi ta ner träd säkert intill byggnader och vägar."},{q:"Tar ni hand om ris och stammar?",a:"Ja, vi kan ta hand om bÃ¥de ris, grot och stammar samt fräsa eller gräva bort stubbar om du vill ha ytan helt ren."},{q:"Vad kostar trädfällning?",a:"Priset beror pÃ¥ trädens storlek, antal och hur svÃ¥rÃ¥tkomliga de är. Vi lämnar gärna ett fast pris efter att ha sett träden pÃ¥ plats."}],smide:[{q:"Vilka smidesarbeten utför ni?",a:"Vi utför reparationer och tillverkning i egen verkstad â maskinreparationer, svetsarbeten, redskap och specialbeslag för lantbruk, skog och entreprenad."},{q:"Reparerar ni entreprenadmaskiner och redskap?",a:"Ja, med egen verkstad i Hennan reparerar vi skopor, plogar, redskap och maskindelar â även akuta svetsjobb under pÃ¥gÃ¥ende säsong."}],priserDranering:[{q:"Vad kostar dränering per meter?",a:"En vanlig tumregel är 3 000â6 000 kr per löpmeter husgrund, inklusive schakt, dräneringsledning, isolering och Ã¥terfyllnad. Djup och Ã¥tkomst pÃ¥verkar priset mest."},{q:"IngÃ¥r fuktisolering i priset?",a:"I vÃ¥ra dräneringsofferter ingÃ¥r normalt fuktskydd av grundmuren, dräneringsledning, makadam och fiberduk. Du fÃ¥r en tydlig specifikation i offerten."},{q:"Kan man ROT-avdrag för dränering?",a:"Ja, arbetskostnaden vid dränering av smÃ¥hus ger normalt rätt till ROT-avdrag. Vi drar avdraget direkt pÃ¥ fakturan när villkoren är uppfyllda."}],priserSnorojning:[{q:"Vad kostar snöröjning per gÃ¥ng?",a:"Enstaka utryckningar för en normal villainfart ligger ofta pÃ¥ nÃ¥gra hundralappar per tillfälle beroende pÃ¥ yta och snömängd. Säsongsavtal blir oftast billigare per gÃ¥ng."},{q:"Vad ingÃ¥r i ett säsongsavtal?",a:"Ett säsongsavtal innebär att vi röjer automatiskt vid snöfall över en avtalad gräns, ofta cirka 5 cm. Du slipper beställa varje gÃ¥ng och vet kostnaden i förväg."},{q:"Ger snöröjning rätt till RUT-avdrag?",a:"Ja, snöskottning som utförs i anslutning till bostaden ger normalt rätt till RUT-avdrag pÃ¥ arbetskostnaden."}],priserAvlopp:[{q:"Vad kostar ett komplett enskilt avlopp?",a:"En komplett anläggning med trekammarbrunn och infiltration kostar ofta 80 000â140 000 kr. Markbädd eller minireningsverk kan bli dyrare. Fast offert lämnas efter platsbesök."},{q:"Vad pÃ¥verkar priset mest?",a:"MarkförhÃ¥llanden, avstÃ¥nd, tjäldjup, val av reningsteknik och kommunens krav. Berg i schaktet eller högt grundvatten kan öka kostnaden."},{q:"Tillkommer kostnad för tillstÃ¥nd?",a:"Ja, miljöenheten i Ljusdals kommun tar en prövningsavgift för tillstÃ¥ndsansökan. Avgiften ligger normalt pÃ¥ nÃ¥gra tusen kronor."}
157],ljusdal:[{q:"Utför ni grävarbeten i centrala Ljusdal?",a:"Ja, vi arbetar i hela Ljusdals tätort och omnejd â dränering, VA, husgrunder, infarter och tomtplanering. FrÃ¥n Hennan nÃ¥r vi Ljusdal pÃ¥ under en halvtimme."},{q:"Hur är markförhÃ¥llandena i Ljusdal?",a:"I dalgÃ¥ngen vid Ljusnan dominerar sediment som sand och silt, medan höjderna runt tätorten bestÃ¥r av morän. Det pÃ¥verkar val av dränering och avloppslösning â vi bedömer alltid pÃ¥ plats."}],farila:[{q:"Arbetar ni i Färila med omnejd?",a:"Ja, Färila ligger väl inom vÃ¥rt arbetsomrÃ¥de. Vi utför allt frÃ¥n enskilda avlopp och dränering till vägunderhÃ¥ll och skogsbilvägar i Färilatrakten."},{q:"Gräver ni för enskilt avlopp i Färila?",a:"Ja, vi anlägger kompletta avloppsanläggningar i FärilaomrÃ¥det och tar fram underlag till tillstÃ¥ndsansökan hos miljöenheten i Ljusdals kommun."}],jarvso:[{q:"Tar ni uppdrag i Järvsö?",a:"Ja, vi arbetar regelbundet i JärvsöomrÃ¥det med markarbeten för fritidshus, dränering, VA och infarter."},{q:"Kan ni gräva för nybyggnation av fritidshus i Järvsö?",a:"Ja, vi utför husgrunder, VA-anslutningar, infarter och tomtplanering för bÃ¥de permanent- och fritidshus i Järvsö med omnejd."}],ramsjo:[{q:"Arbetar ni sÃ¥ lÃ¥ngt norrut som Ramsjö?",a:"Ja, Ramsjö ligger inom vÃ¥rt naturliga arbetsomrÃ¥de. FrÃ¥n Hennan är det nära, vilket hÃ¥ller nere framkörningskostnaderna jämfört med firmor söderifrÃ¥n."},{q:"UnderhÃ¥ller ni skogsbilvägar i Ramsjötrakten?",a:"Ja, skogsbilvägar är en av vÃ¥ra huvudsysslor. Vi utför dikesrensning, trumbyten, förstärkning och grusning i hela norra kommundelen."}],hennan:[{q:"Var i Hennan finns ni?",a:"Vi utgÃ¥r frÃ¥n Hennan vid riksväg 84 i norra Ljusdals kommun, med egen verkstad och maskinpark pÃ¥ orten. Ring 070-657 14 42."},{q:"Vilka tjänster erbjuder ni i Hennan?",a:"Alla vÃ¥ra tjänster: grävarbeten, vägentreprenad, enskilda avlopp, dränering, husgrunder, snöröjning, trädfällning och smide."}],husgrund:[{q:"Vilka typer av husgrunder gräver ni för?",a:"Vi schaktar och förbereder för platta pÃ¥ mark, krypgrund och källargrund â för villor, fritidshus, attefallshus och garage. Grunden byggs upp med packade materiallager, dränering och isolering enligt konstruktionsritningen."},{q:"Vad kostar markarbetet för en husgrund?",a:"Markarbetet för en normalvilla ligger ofta pÃ¥ 100 000â250 000 kr beroende pÃ¥ markförhÃ¥llanden, schaktdjup, berg och transportavstÃ¥nd. Vi lämnar fast offert efter platsbesök och genomgÃ¥ng av ritningarna."},{q:"Hur lÃ¥ng tid tar grävning för husgrund?",a:"Schakt och uppbyggnad av en normal villagrund tar ofta en till tvÃ¥ veckor, beroende pÃ¥ markförhÃ¥llanden och väder. Vi samordnar gärna med din grundläggare och husleverantör."},{q:"IngÃ¥r dränering och VA i husgrundsarbetet?",a:"Ja, normalt ingÃ¥r grundddränering, dagvattenledningar och VA-anslutningar i vÃ¥r entreprenad, sÃ¥ att grunden är helt klar för gjutning när vi lämnar."}],tomtplanering:[{q:"Vad ingÃ¥r i tomtplanering?",a:"Allt frÃ¥n grovplanering av rÃ¥mark till färdig tomt: masshantering, matjord, gräsmatteytor, infarter, gÃ¥ngar, stödmurar och dagvattenlösningar. Omfattningen anpassas efter dina önskemÃ¥l och budget."},{q:"Vad kostar tomtplanering?",a:"En enklare finplanering av villatomt börjar ofta runt 50 000 kr, medan större arbeten med murar, infart och dränering kan kosta betydligt mer. Vi lämnar kostnadsfri offert efter platsbesök."},{q:"När är bästa tiden för tomtplanering?",a:"Barmarkssäsongen frÃ¥n maj till oktober är bäst. Boka gärna i god tid före vÃ¥ren â dÃ¥ hinner gräsytorna etablera sig under sommaren."},{q:"Kan ni ta hand om överblivna massor?",a:"Ja, vi hanterar bÃ¥de bortforsling av schaktmassor och tillförsel av fyllnadsmaterial, grus och matjord med egen lastbil."}],projekt:[{q:"Kan ni visa referenser frÃ¥n tidigare arbeten?",a:"Ja, vi har arbetat i Ljusdals kommun sedan 1996 och lämnar gärna lokala referenser för den typ av arbete du planerar. Ring 070-657 14 42 sÃ¥ berättar vi mer."},{q:"Vilka typer av projekt utför ni oftast?",a:"Vanligast är skogsbilvägar och vägunderhÃ¥ll, enskilda avlopp, dräneringar, husgrunder och tomtplaneringar â frÃ¥n mindre villaarbeten till större vägentreprenader."}],trekammarbrunnLjusdal:[{q:"Installerar ni trekammarbrunn i Ljusdal?",a:"Ja, vi installerar kompletta trekammarbrunnar med efterföljande rening i hela Ljusdalstrakten. FrÃ¥n Hennan nÃ¥r vi Ljusdal pÃ¥ under en halvtimme."},{q:"Vilken rening krävs efter trekammarbrunnen i Ljusdal?",a:"Miljöenheten i Ljusdals kommun kräver alltid ett reningssteg efter brunnen â infiltration eller markbädd beroende pÃ¥ jordart. I dalgÃ¥ngen vid Ljusnan är sedimentjordar vanliga, vilket vi bedömer med provgrop."}],trekammarbrunnFarila:[{q:"Byter ni trekammarbrunn i Färila?",a:"Ja, vi byter ut äldre brunnar och anlägger nya trekammarbrunnar med infiltration eller markbädd i Färila med omnejd, inklusive underlag till kommunens tillstÃ¥nd."},{q:"Hur ser markförhÃ¥llandena för avlopp ut runt Färila?",a:"Runt Färila och Ljusnans dalgÃ¥ng varierar jordarna mellan sand, silt och morän. Vi gräver alltid provgrop för att avgöra om infiltration fungerar eller om markbädd krävs."}],trekammarbrunnJarvso:[{q:"Installerar ni trekammarbrunn i Järvsö?",a:"Ja, vi anlägger trekammarbrunnar för bÃ¥de permanentboende och fritidshus i JärvsöomrÃ¥det, komplett med grävning, anslutning och efterföljande rening."},{q:"Vad gäller för avlopp till fritidshus i Järvsö?",a:"Ãven fritidshus med vattentoalett kräver tillstÃ¥nd och godkänd rening. För hus med enklare standard finns anpassade lösningar â vi hjälper dig välja rätt nivÃ¥."}],trekammarbrunnRamsjo:[{q:"Byter ni trekammarbrunn sÃ¥ lÃ¥ngt norrut som Ramsjö?",a:"Ja, Ramsjö ligger nära vÃ¥r bas i Hennan, vilket ger kort framkörning och lägre kostnad än firmor söderifrÃ¥n. Vi installerar kompletta anläggningar i hela norra kommundelen."},{q:"Vad ska man tänka pÃ¥ vid avlopp i Ramsjötrakten?",a:"Moränjordar och tjäldjup pÃ¥ uppemot tvÃ¥ meter kräver frostsäkert utförande och rätt bedömning av infiltrationskapacitet. Vi gräver provgrop och dimensionerar därefter."}],trekammarbrunnHennan:[{q:"Installerar ni trekammarbrunn i Hennan?",a:"Ja, Hennan är vÃ¥r hemort â här har vi verkstad och maskinpark. Vi installerar trekammarbrunnar med infiltration eller markbädd med mycket kort framkörning."},{q:"Hur snabbt kan ni byta en trekammarbrunn i Hennan?",a:"Med basen pÃ¥ orten kan vi ofta planera in arbetet snabbt. Själva installationen tar normalt tvÃ¥ till fyra dagar när tillstÃ¥ndet frÃ¥n kommunen är klart."}],markarbetenRamsjo:[{q:"Utför ni mark- och grundarbeten i Ramsjö?",a:"Ja, Ramsjö ligger inom vÃ¥rt naturliga arbetsomrÃ¥de. FrÃ¥n basen i Hennan är det kort framkörning via riksväg 83/84, vilket hÃ¥ller nere kostnaden jämfört med firmor söderifrÃ¥n. Ring 070-657 14 42."},{q:"Gräver ni husgrunder i Ramsjötrakten?",a:"Ja, vi schaktar och förbereder grunder för villor, fritidshus, garage och ek
157onomibyggnader i Ramsjö med omnejd â inklusive dränering, VA-anslutningar och packade materiallager klara för gjutning."},{q:"Vad ska man tänka pÃ¥ vid grundarbeten i Ramsjö?",a:"Norra kommundelen domineras av moränjordar med inslag av block, och tjäldjupet kan nÃ¥ uppemot tvÃ¥ meter. Det kräver rätt schaktdjup, frostsäkert utförande och ordentlig dränering â nÃ¥got vi alltid tar höjd för."},{q:"Tar ni även mindre uppdrag i Ramsjö?",a:"Ja, vi tar bÃ¥de större entreprenader och mindre uppdrag som infarter, planering av gÃ¥rdsplaner och schakt för tillbyggnader. Kort framkörning gör att även smÃ¥ jobb blir prisvärda."}],markarbetenLjusdal:[{q:"Utför ni mark- och grundarbeten i Ljusdal?",a:"Ja, Ljusdals tätort med omnejd är en av vÃ¥ra vanligaste arbetsplatser. Vi utför schakt, husgrunder, infarter, tomtplanering och VA-schakt för bÃ¥de privatpersoner och företag. Ring 070-657 14 42 för kostnadsfri offert."},{q:"Hur är markförhÃ¥llandena för markarbeten i Ljusdal?",a:"I dalgÃ¥ngen vid Ljusnan är sediment- och siltjordar vanliga, vilket ställer krav pÃ¥ noggrann dränering och ibland förstärkta materiallager. Utanför dalgÃ¥ngen dominerar fast morän. Vi bedömer alltid förutsättningarna pÃ¥ plats innan vi lämnar fast pris."},{q:"Tar ni smÃ¥ uppdrag i Ljusdals tätort?",a:"Ja, vi tar allt frÃ¥n stora grundentreprenader till mindre jobb som schakt för garageinfarter, planering av gÃ¥rdsytor och grävning för kabel eller dagvatten. Inget uppdrag är för litet."},{q:"Vad kostar markarbeten i Ljusdal?",a:"Priset styrs av schaktvolym, markförhÃ¥llanden och masstransporter. Mindre uppdrag börjar kring 10 000â20 000 kronor medan ett komplett grundarbete för villa ofta ligger pÃ¥ 100 000â250 000 kronor. Vi lämnar fast offert efter platsbesök."}],markarbetenFarila:[{q:"Utför ni markarbeten i Färila?",a:"Ja, Färila ligger mitt i vÃ¥rt arbetsomrÃ¥de längs riksväg 84. Vi utför husgrunder, schakt, infarter, tomtplanering och VA-arbeten i Färila med omnejd â frÃ¥n Korskrogen till KÃ¥rböle. Ring 070-657 14 42."},{q:"Gräver ni pÃ¥ nyavverkade skogstomter runt Färila?",a:"Ja, mÃ¥nga tomter i Färilatrakten tas ur skogsmark. Vi bryter stubbar, avlägsnar block, schaktar bort humuslager och bygger upp packade materiallager sÃ¥ att tomten blir byggklar."},{q:"Vad ska man tänka pÃ¥ vid grundarbeten i Färila?",a:"Jordarna växlar mellan sand, silt och morän kring Ljusnans dalgÃ¥ng. Sandiga jordar dränerar bra medan siltiga partier kräver omsorgsfull dränering och frostsäkert utförande. Vi anpassar schaktdjup och material efter verkliga förhÃ¥llanden."},{q:"Tar ni uppdrag Ã¥t skogsägare och lantbruk i Färila?",a:"Ja, vi utför även markarbeten för ekonomibyggnader, maskinhallar, vändplaner och gÃ¥rdsplaner. Med egen maskinpark och smidesverkstad löser vi det mesta utan onödiga stillestÃ¥nd."}],markarbetenJarvso:[{q:"Utför ni markarbeten i Järvsö?",a:"Ja, vi utför mark- och grundarbeten i hela JärvsöomrÃ¥det â husgrunder, schakt, infarter och tomtplanering för bÃ¥de permanenthus och fritidshus. Ring 070-657 14 42 för kostnadsfri offert."},{q:"Klarar ni sluttningstomter kring Järvsöbacken och Ãjeberget?",a:"Ja, sluttande terräng är vÃ¥r vardag. Vi terrasserar tomter, bygger stödmurar och slänter med rätt lutning samt löser avvattningen sÃ¥ att varken grund eller infart tar skada av ytvatten frÃ¥n backen."},{q:"Gör ni markarbeten för fritidshus i Järvsö?",a:"Ja, Järvsö växer och mÃ¥nga bygger fritidshus nära backen. Vi förbereder grunder, gräver för VA och el, anlägger infarter och planerar tomten â och kan samordna arbetet även om du inte bor pÃ¥ orten."},{q:"Vad kostar markarbeten pÃ¥ en sluttningstomt i Järvsö?",a:"Sluttningstomter kräver ofta mer schakt, terrassering och ibland stödmurar, vilket ger nÃ¥got högre kostnad än plan mark. Ett komplett grundarbete ligger ofta pÃ¥ 120 000â300 000 kronor. Fast offert lämnas efter platsbesök."}],markarbetenHennan:[{q:"Utför ni markarbeten i Hennan?",a:"Ja, Hennan är vÃ¥r hemort â här har vi verkstad, maskinpark och kontor. Vi utför husgrunder, schakt, infarter, tomtplanering och VA-arbeten med mycket kort framkörning. Ring 070-657 14 42."},{q:"Hur snabbt kan ni pÃ¥börja ett markarbete i Hennan?",a:"Med basen pÃ¥ orten kan vi ofta planera in uppdrag snabbt och till lÃ¥g framkörningskostnad. Vid akuta behov, som skadade infarter eller vattenproblem, k
157an vi i regel rycka ut med kort varsel."},{q:"Vad ska man tänka pÃ¥ vid grundarbeten i Hennan?",a:"Markerna kring Hennansjön bestÃ¥r till stor del av morän med inslag av block, och tjäldjupet är stort. Vi schaktar till frostfritt djup, dränerar ordentligt och bygger upp packade lager som stÃ¥r emot tjälens rörelser."},{q:"Tar ni smÃ¥ uppdrag pÃ¥ hemorten?",a:"Ja, som lokal firma tar vi gärna även mindre jobb i Hennan â grusning av infarter, planering av gÃ¥rdsplaner, dikning och schakt för tillbyggnader. Kort framkörning gör smÃ¥ uppdrag prisvärda."}],draneringLjusdal:[{q:"Dränerar ni om husgrunder i Ljusdal?",a:"Ja, omdränering i Ljusdals tätort med omnejd är ett av vÃ¥ra vanligaste uppdrag. Vi schaktar fram grunden, monterar fuktskydd, lägger ny dräneringsledning med rätt fall och Ã¥terfyller med dränerande material. Ring 070-657 14 42 för kostnadsfri offert."},{q:"Varför drabbas hus i Ljusdals dalgÃ¥ng av fuktproblem?",a:"I dalgÃ¥ngen vid Ljusnan är silt- och sedimentjordar vanliga. De hÃ¥ller vatten och dränerar lÃ¥ngsamt, vilket gör att äldre grunder utan fungerande dränering ofta blir fuktbelastade. Rätt uppbyggd dränering med grovt dränerande Ã¥terfyllnad löser problemet."},{q:"Vad kostar dränering av en villa i Ljusdal?",a:"En normalstor villa i tätorten landar ofta pÃ¥ 100 000â200 000 kronor beroende pÃ¥ schaktdjup, källartyp och Ã¥tkomlighet. Som privatperson kan du använda ROT-avdrag för arbetskostnaden. Vi lämnar fast offert efter platsbesök."},{q:"Klarar ni dränering pÃ¥ trÃ¥nga tomter i centrala Ljusdal?",a:"Ja, i äldre kvarter stÃ¥r husen ofta nära tomtgräns och ledningar. Vi anpassar maskinval, arbetar etappvis runt huset och samordnar med ledningsägare sÃ¥ att arbetet kan utföras utan att grannfastighet eller planteringar skadas."}],draneringFarila:[{q:"Utför ni dränering i Färila?",a:"Ja, vi dränerar om husgrunder i Färila med omnejd â villor, äldre gÃ¥rdshus och fritidshus. Vi tar hela arbetet frÃ¥n schakt och fuktskydd till ny dräneringsledning, dagvattenavledning och Ã¥terställd marklutning."},{q:"Hur pÃ¥verkar markförhÃ¥llandena i Färila en dränering?",a:"Runt Färila växlar jordarna mellan sand, silt och morän. Sandiga jordar avleder vatten bra, medan siltiga partier hÃ¥ller fukt och kräver noggrant fall och grov dränerande Ã¥terfyllnad. Vi bedömer jordarten i schakten innan Ã¥terfyllnaden byggs upp."},{q:"Dränerar ni gamla gÃ¥rdshus med naturstensgrund?",a:"Ja, äldre gÃ¥rdshus i Färilatrakten har ofta natursten- eller murad grund som kräver varsam hantering. Vi schaktar etappvis, stöttar där det behövs och väljer fuktskydd som fungerar mot ojämna grundmurar."},{q:"Hur lÃ¥ng tid tar en omdränering i Färila?",a:"En normalstor villa tar oftast en till tvÃ¥ veckor. Djupa källargrunder, bergnära schakt eller besvärliga markförhÃ¥llanden kan förlänga arbetet. Vi lämnar tidplan tillsammans med offerten."}],draneringJarvso:[{q:"Dränerar ni husgrunder i Järvsö?",a:"Ja, vi utför omdränering i hela JärvsöomrÃ¥det, för bÃ¥de permanentboende och fritidshus. Vi schaktar fram grundmuren, monterar fuktskydd, lägger ny dräneringsledning och löser bortledningen av bÃ¥de dräneringsvatten och takvatten."},{q:"Vad krävs vid dränering av hus i sluttning kring Järvsöbacken?",a:"Sluttande tomter ger ytvatten och trycksatt markvatten mot husets uppströmssida. Där behövs ofta avskärande dikning eller dräneringsledning ovanför huset som fÃ¥ngar upp vattnet innan det nÃ¥r grunden, i kombination med normal grunddränering."},{q:"Kan ni sköta dränering av fritidshus när jag inte är pÃ¥ plats?",a:"Ja, mÃ¥nga fastighetsägare i Järvsö bor pÃ¥ annan ort. Vi dokumenterar arbetet med foton, rapporterar löpande och kan hantera hela projektet utan att du behöver närvara vid arbetsdagarna."},{q:"Vad kostar dränering i Järvsö?",a:"Priset styrs av schaktdjup, källartyp, tomtens lutning och Ã¥tkomlighet. Ett normalt villaprojekt ligger ofta pÃ¥ 100 000â200 000 kronor, och sluttningstomter med avskärande dikning kan bli nÃ¥got högre. Offert lämnas efter platsbesök."}],draneringRamsjo:[{q:"Dränerar ni om husgrunder i Ramsjö?",a:"Ja, Ramsjö ligger inom vÃ¥rt naturliga arbetsomrÃ¥de. FrÃ¥n basen i Hennan är framkörningen kort via riksväg 83/84, vilket hÃ¥ller nere kostnaden jämfört med firmor söderifrÃ¥n. Ring 070-657 14 42 för offert."},{q:"Hur pÃ¥verkar tjälen en dränering i Ramsjö?",a:"I norra kommundelen kan tjäldjupet nÃ¥ uppemot tvÃ¥ meter. Dräneringsledningen läggs därför med säkert fall och tillräckligt djup, och Ã¥terfyllnaden görs med tjälsäkert dränerande material sÃ¥ att ledningen inte förskjuts av tjälrörelser."},{q:"Var leds dräneringsvattnet om det saknas kommunalt dagvatten?",a:"Utanför tätbebyggt omrÃ¥de finns sällan dagvattenledning att ansluta till. Vi leder i stället vattnet till dräneringsbrunn med utlopp till dike, eller anlägger stenkista med tillräcklig volym för husets takyta och grund."},{q:"Tar ni även mindre fuktÃ¥tgärder i Ramsjö?",a:"Ja, ibland räcker det med att Ã¥tgärda marklutning, byta stuprörsanslutningar och lägga separat dagvattenledning. Vi bedömer alltid om en full omdränering behövs eller om mindre Ã¥tgärder löser problemet."}],draneringHennan:[{q:"Dränerar ni husgrunder i Hennan?",a:"Ja, Hennan är vÃ¥r hemort med verkstad, kontor och maskinpark pÃ¥ plats. Det ger mycket kort framkörning och snabb inställelse vid fuktproblem i grunden. Ring 070-657 14 42 för kostnadsfri bedömning."},{q:"Hur snabbt kan ni komma ut vid vatten i källaren i Hennan?",a:"Med basen pÃ¥ orten kan vi i regel komma ut med kort varsel för att bedöma läget, leda bort ytvatten akut och planera in en fullständig omdränering när schaktet kan utföras."},{q:"Vad ska man tänka pÃ¥ vid dränering kring Hennansjön?",a:"Markerna kring sjön Hennan bestÃ¥r till stor del av morän med
157inslag av block, och närheten till sjön kan ge högre grundvattennivÃ¥. Det pÃ¥verkar schaktdjup, val av dränerande material och hur dräneringsvattnet kan ledas bort."},{q:"Tar ni mindre dräneringsjobb pÃ¥ hemorten?",a:"Ja, vi tar gärna även mindre uppdrag i Hennan â dränering runt garage och uthus, dikning för att avlasta tomten, justering av marklutning och nya dagvattenledningar frÃ¥n stuprör."}],avloppsanlaggningLjusdal:[{q:"Anlägger ni kompletta avloppsanläggningar i Ljusdal?",a:"Ja, vi tar hela entreprenaden i Ljusdalstrakten: provgrop, tillstÃ¥ndsunderlag till miljöenheten, schakt, trekammarbrunn eller minireningsverk samt infiltration eller markbädd. Ring 070-657 14 42 för kostnadsfri offert."},{q:"Vilken avloppslösning passar min fastighet i Ljusdal?",a:"Det avgörs av jordart, grundvattennivÃ¥ och skyddsavstÃ¥nd. I dalgÃ¥ngen vid Ljusnan är sedimentjordar vanliga och infiltration fungerar ofta bra, medan tätare jordar kräver markbädd. Vi gräver provgrop och rekommenderar därefter."},{q:"Hjälper ni till med tillstÃ¥ndet hos Ljusdals kommun?",a:"Ja, vi tar fram situationsplan, provgropsresultat och teknisk beskrivning som bilagor till din ansökan hos miljöenheten. Arbetet pÃ¥börjas när tillstÃ¥ndet är beviljat."},{q:"Vad kostar en ny avloppsanläggning i Ljusdal?",a:"En komplett anläggning med trekammarbrunn och infiltration kostar ofta 90 000â140 000 kronor beroende pÃ¥ markförhÃ¥llanden och avstÃ¥nd. Markbädd blir nÃ¥got dyrare. Vi lämnar alltid fast offert efter platsbesök."}],avloppsanlaggningFarila:[{q:"Anlägger ni avloppsanläggningar i Färila?",a:"Ja, vi anlägger och byter kompletta avloppsanläggningar i Färila med omnejd â trekammarbrunn med infiltration eller markbädd, inklusive tillstÃ¥ndsunderlag och bortforsling av gammal anläggning."},{q:"Fungerar infiltration i markerna runt Färila?",a:"Ofta, men inte alltid. Runt Färila och Ljusnans dalgÃ¥ng växlar jordarna mellan sand, silt och morän. Sandiga jordar är utmärkta för infiltration, medan siltiga och täta jordar kräver markbädd. Provgropen ger svaret."},{q:"Hur lÃ¥ng tid tar en avloppsanläggning i Färila?",a:"Själva grävarbetet tar normalt tre till fem dagar. Ljusdals kommun anger cirka tio veckors handläggningstid för ansökan om enskilt avlopp, sÃ¥ kontakta oss tidigt i planeringen."},{q:"Byter ni ut gamla stenkistor och sjunkbrunnar?",a:"Ja, äldre anläggningar utan godkänd rening underkänns vid kommunens tillsyn. Vi river den gamla lösningen och anlägger en komplett godkänd anläggning med brunn och efterrening."}],avloppsanlaggningJarvso:[{q:"Anlägger ni avloppsanläggningar i Järvsö?",a:"Ja, vi anlägger kompletta avloppsanläggningar för bÃ¥de permanenthus och fritidshus i JärvsöomrÃ¥det â frÃ¥n provgrop och tillstÃ¥ndsunderlag till färdig anläggning med rening."},{q:"Vad gäller för avlopp till fritidshus i Järvsö?",a:"Ãven fritidshus med vattentoalett kräver tillstÃ¥nd och godkänd rening. För hus med enklare standard finns anpassade lösningar med lägre kostnad â vi hjälper dig välja rätt nivÃ¥ för användningen."},{q:"Klarar ni sluttningstomter kring Järvsöbacken?",a:"Ja, sluttande terräng kan till och med vara en fördel eftersom självfall ofta gÃ¥r att ordna utan pumpbrunn. Vi placerar anläggningen sÃ¥ att bÃ¥de självfall och skyddsavstÃ¥nd till vattentäkter uppfylls."},{q:"Vad kostar ett nytt avlopp i Järvsö?",a:"En komplett anläggning med trekammarbrunn och infiltration kostar ofta 90 000â140 000 kronor. Behövs markbädd eller pumpbrunn stiger priset. Vi lämnar fast offert efter kostnadsfritt platsbesök."}],avloppsanlaggningRamsjo:[{q:"Anlägger ni avloppsanläggningar sÃ¥ lÃ¥ngt norrut som Ramsjö?",a:"Ja, Ramsjö ligger nära vÃ¥r bas i Hennan â en kvart bort. Det ger kort framkörning och lägre totalkostnad än firmor söderifrÃ¥n. Vi anlägger kompletta anläggningar i hela norra kommundelen."},{q:"Vad kräver markerna kring Ramsjö av en avloppsanläggning?",a:"Blockig morän och tjäldjup pÃ¥ uppemot tvÃ¥ meter kräver frostsäkert utförande, rätt schaktdjup och noggrann bedömning av infiltrationskapaciteten. Vi gräver provgrop och dimensionerar efter verkliga förhÃ¥llanden."},{q:"Tar ni avloppsjobb Ã¥t fritidshusägare i Ramsjötrakten?",a:"Ja, mÃ¥nga fastigheter i trakten är fritidshus och gÃ¥rdar med äldre avlopp. Vi tar hela entreprenaden och kan planera arbetet sÃ¥ att det passar även dig som inte bor pÃ¥ orten."},{q:"Hjälper ni till med kommunens tillstÃ¥nd?",a:"Ja, vi tar fram provgropsresultat, situationsplan och teknisk beskrivning till ansökan hos miljöenheten i Ljusdals kommun, och pÃ¥börjar grävningen när tillstÃ¥ndet är klart."}],avloppsanlaggningHennan:[{q:"Anlägger ni avloppsanläggningar i Hennan?",a:"Ja, Hennan är vÃ¥r hemort med verkstad och maskinpark. Vi anlägger kompletta avloppsanläggningar med trekammarbrunn och infiltration eller markbädd med mycket kort framkörning."},{q:"Hur snabbt kan ni anlägga ett avlopp i Hennan?",a:"Med basen pÃ¥ orten kan vi ofta planera in arbetet snabbt. Själva anläggningsarbetet tar normalt tre till fem dagar när
157kommunens tillstÃ¥nd är beviljat."},{q:"Vad ingÃ¥r när ni anlägger en avloppsanläggning?",a:"Provgrop, underlag till tillstÃ¥ndsansökan, schakt, brunn eller reningsverk, ledningar, infiltration eller markbädd, Ã¥terfyllning och grovplanering â samt bortforsling av eventuell gammal anläggning."},{q:"Kan ni bedöma om min gamla anläggning behöver bytas?",a:"Ja, vi tittar pÃ¥ anläggningens Ã¥lder, funktion och status vid ett kostnadsfritt platsbesök. Anläggningar äldre än 20â30 Ã¥r eller utan efterrening underkänns i regel vid kommunens tillsyn."}],husgrundLjusdal:[{q:"Gräver ni husgrunder i Ljusdal?",a:"Ja, vi schaktar och förbereder husgrunder i hela Ljusdals tätort med omnejd â platta pÃ¥ mark, krypgrund och källargrund för villor, garage och tillbyggnader. Ring 070-657 14 42 för kostnadsfri offert."},{q:"Vad kostar markarbetet för en husgrund i Ljusdal?",a:"Markarbetet för en normalvilla ligger ofta pÃ¥ 100 000â250 000 kronor beroende pÃ¥ schaktdjup, markförhÃ¥llanden och transportavstÃ¥nd. Vi lämnar fast offert efter platsbesök och genomgÃ¥ng av ritningarna."},{q:"Hur är markförhÃ¥llandena för husgrunder i Ljusdal?",a:"I dalgÃ¥ngen vid Ljusnan är sediment- och siltjordar vanliga, vilket kan kräva extra noggrann dränering och ibland förstärkning. Utanför dalgÃ¥ngen dominerar morän. Vi bedömer förutsättningarna pÃ¥ plats innan offert."},{q:"Samordnar ni med husleverantör och grundläggare?",a:"Ja, vi arbetar regelbundet mot husleverantörers grundritningar och samordnar schakt, dränering och VA med din grundläggare sÃ¥ att grunden är klar för gjutning enligt tidplan."}],husgrundFarila:[{q:"Gräver ni husgrunder i Färila?",a:"Ja, vi utför kompletta grundarbeten i Färila med omnejd â schakt, packade materiallager, grunddränering och VA-anslutningar, klart för gjutning. Kostnadsfri offert efter platsbesök."},{q:"Vad ska man tänka pÃ¥ vid husgrund i Färilatrakten?",a:"Jordarna växlar mellan sand, silt och morän kring Ljusnans dalgÃ¥ng. Siltiga jordar är tjälfarliga och kräver rätt schaktdjup och dränering, medan sandiga lägen är enklare. Vi bedömer marken innan arbetet planeras."},{q:"Gräver ni grunder för fritidshus och attefallshus?",a:"Ja, vi gör grunder i alla storlekar â frÃ¥n attefallshus och garage till fullstora villor och maskinhallar. Ãven mindre uppdrag blir prisvärda tack vare kort framkörning inom kommunen."},{q:"Hur lÃ¥ng tid tar grundarbetet?",a:"Schakt och uppbyggnad av en normal villagrund tar ofta en till tvÃ¥ veckor beroende pÃ¥ markförhÃ¥llanden och väder. Vi ger en tidsplan i offerten och samordnar med efterföljande entreprenörer."}],husgrundJarvso:[{q:"Gräver ni husgrunder i Järvsö?",a:"Ja, vi schaktar och förbereder husgrunder för bÃ¥de permanenthus och fritidshus i Järvsö med omnejd, inklusive sluttningslägen kring Järvsöbacken och Ãjeberget."},{q:"Klarar ni grundarbeten pÃ¥ sluttningstomter i Järvsö?",a:"Ja, sluttningstomter är vanliga i Järvsö och kräver genomtänkt masshantering, stödmurar och ibland souterränggrund. Vi har maskiner och erfarenhet för att bygga stabilt även i brant terräng."},{q:"Vad kostar en husgrund i Järvsö?",a:"Markarbetet för en normalvilla ligger ofta pÃ¥ 100 000â250 000 kronor. Sluttningslägen med souterräng eller omfattande masshantering kan kosta mer. Vi lämnar fast offert efter platsbesök."},{q:"Gräver ni grunder för fritidshus i JärvsöomrÃ¥det?",a:"Ja, en stor del av vÃ¥ra grunduppdrag i Järvsö gäller fritidshus. Vi kan planera arbetet sÃ¥ att det passar även dig som inte bor pÃ¥ orten, och samordnar gärna direkt med din husleverantör."}],husgrundRamsjo:[{q:"Gräver ni husgrunder sÃ¥ lÃ¥ngt norrut som Ramsjö?",a:"Ja, Ramsjö ligger nära vÃ¥r bas i Hennan â kort framkörning via riksväg 83/84 hÃ¥ller nere kostnaden jämfört med firmor söderifrÃ¥n. Vi gräver grunder i hela norra kommundelen."},{q:"Vad kräver marken i Ramsjö av en husgrund?",a:"Blockig skogsmorän och tjäldjup pÃ¥ uppemot tvÃ¥ meter kräver rätt schaktdjup, frostsäkert utförande och ordentlig dränering. Vi tar alltid höjd för de norrländska förhÃ¥llandena i bÃ¥de konstruktion och offert."}
157,{q:"Gräver ni grunder för garage och ekonomibyggnader i Ramsjö?",a:"Ja, vi förbereder grunder för villor, fritidshus, garage, maskinhallar och ekonomibyggnader â frÃ¥n schakt och packade lager till dränering och VA, klart för gjutning."},{q:"Vad kostar en husgrund i Ramsjötrakten?",a:"Markarbetet ligger ofta pÃ¥ 100 000â250 000 kronor beroende pÃ¥ markförhÃ¥llanden och block i marken. Den korta framkörningen frÃ¥n Hennan gör oss ofta mer prisvärda än firmor längre söderifrÃ¥n."}],husgrundHennan:[{q:"Gräver ni husgrunder i Hennan?",a:"Ja, Hennan är vÃ¥r hemort â här finns verkstad och maskinpark. Vi schaktar och förbereder husgrunder med mycket kort framkörning och kan ofta planera in arbetet snabbt."},{q:"Vad ingÃ¥r i ert grundarbete?",a:"Schakt, packade materiallager, grunddränering, dagvattenledningar och VA-anslutningar â grunden lämnas klar för gjutning. Vi samordnar gärna med din grundläggare och husleverantör."},{q:"Hur snabbt kan ni pÃ¥börja ett grundarbete i Hennan?",a:"Med basen pÃ¥ orten kan vi ofta planera in arbetet med kort varsel under barmarkssäsongen. Kontakta oss tidigt sÃ¥ reserverar vi tid som passar din byggstart."},{q:"Vad ska man tänka pÃ¥ vid husgrund i Hennantrakten?",a:"Moränjordar med block och djup tjäle kräver rätt schaktdjup och frostsäkert utförande. Med 30 Ã¥rs erfarenhet av markerna kring Hennan vet vi vad som krävs för en stabil och torr grund."}],tomtplaneringLjusdal:[{q:"Utför ni tomtplanering i Ljusdal?",a:"Ja, vi planerar tomter i hela Ljusdalstrakten â frÃ¥n grovplanering av rÃ¥mark till färdig tomt med matjord, gräsytor, infart och dagvattenlösning. Ring 070-657 14 42 för kostnadsfri offert."},{q:"Vad kostar tomtplanering i Ljusdal?",a:"En enklare finplanering av villatomt börjar ofta runt 50 000 kronor, medan större arbeten med stödmurar, infart och dränering kostar mer. Vi lämnar fast offert efter platsbesök."},{q:"Anlägger ni infarter och gÃ¥rdsplaner?",a:"Ja, vi bygger infarter och gÃ¥rdsplaner med rätt överbyggnad â geotextil, bärlager och slitlager â sÃ¥ att ytan hÃ¥ller för trafik Ã¥ret om utan spÃ¥rbildning."},{q:"Hjälper ni till med dagvatten pÃ¥ tomten?",a:"Ja, rätt fall frÃ¥n huset, dagvattenledningar och eventuell stenkista eller dagvattenkassett ingÃ¥r ofta i vÃ¥ra tomtplaneringar. Bra dagvattenhantering skyddar bÃ¥de grund och gräsytor."}],tomtplaneringFarila:[{q:"Utför ni tomtplanering i Färila?",a:"Ja, vi utför grov- och finplanering av tomter i Färila med omnejd â masshantering, matjord, gräsmatteytor, infarter, gÃ¥ngar och stödmurar efter dina önskemÃ¥l."},{q:"Kan ni planera en nyavverkad skogstomt?",a:"Ja, vi tar hand om stubbrytning, masshantering och terrassering av rÃ¥mark och bygger upp tomten frÃ¥n grunden â vanligt vid nybyggnation i skogslägen runt Färila."},{q:"När bör man boka tomtplanering i Färila?",a:"Barmarkssäsongen maj till oktober är bäst. Boka i god tid före vÃ¥ren sÃ¥ hinner gräsytorna etablera sig under sommaren. Vintertid planerar vi gärna kommande säsongs arbeten."},{q:"Vad kostar tomtplanering i Färila?",a:"En enklare finplanering börjar ofta runt 50 000 kronor. Omfattning, massbalans och murar avgör priset â vi lämnar alltid kostnadsfri offert efter platsbesök."}],tomtplaneringJarvso:[{q:"Utför ni tomtplanering i Järvsö?",a:"Ja, vi planerar tomter för bÃ¥de permanenthus och fritidshus i JärvsöomrÃ¥det â frÃ¥n grovplanering till färdiga gräsytor, infarter och uteplatser."},{q:"Klarar ni sluttningstomter i Järvsö?",a:"Ja, sluttande tomter kring Järvsöbacken och Ãjeberget kräver terrassering, stödmurar och genomtänkt dagvattenhantering. Vi formar tomten i nivÃ¥er sÃ¥ att den blir bÃ¥de användbar och stabil."},{q:"Bygger ni stödmurar och uteplatser?",a:"Ja, vi bygger stödmurar av block eller natursten, terrasserade uteplatser och trappor i slänt â vanliga inslag pÃ¥ Järvsös sluttningstomter."},{q:"Vad kostar tomtplanering i Järvsö?",a:"Plana tomter börjar ofta runt 50 000 kronor för finplanering, medan sluttningstomter med murar och terrassering kostar mer. Vi lämnar fast offert efter kostnadsfritt platsbesök."}],tomtplaneringRamsjo:[{q:"Utför ni tomtplanering sÃ¥ lÃ¥ngt norrut som Ramsjö?",a:"Ja, Ramsjö ligger en kvart frÃ¥n vÃ¥r bas i Hennan. Kort framkörning gör att även mindre tomtarbeten blir prisvärda jämfört med firmor söderifrÃ¥n."},{q:"Vad ska man tänka pÃ¥ vid tomtplanering i Ramsjö?",a:"Blockig morän kräver ofta mer masshantering och sortering än sedimentjordar. Block kan Ã¥teranvändas till murar och utfyllnad â vi planerar massbalansen sÃ¥ att transporterna minimeras."},{q:"Tar ni mindre tomtuppdrag i Ramsjötrakten?",a:"Ja, vi tar bÃ¥de större planeringar och mindre uppdrag som gÃ¥rdsplaner, infarter och grusytor. Vi kombinerar gärna med andra arbeten i trakten för bästa pris."},{q:"Kan ni planera tomten runt ett fritidshus i Ramsjö?",a:"Ja, mÃ¥nga fastigheter i trakten är fritidshus och gÃ¥rdar. Vi planerar arbetet sÃ¥ att det passar även dig som inte bor pÃ¥ orten och skickar bilder löpande under arbetets gÃ¥ng."}],tomtplaneringHennan:[{q:"Utför ni tomtplanering i Hennan?",a:"Ja, Hennan är vÃ¥r hemort â vi planerar tomter, gÃ¥rdsplaner och infarter med mycket kort framkörning och lokalkännedom om markerna sedan 1996."},{q:"Vad ingÃ¥r i en tomtplanering?",a:"Allt frÃ¥n grovplanering av rÃ¥mark till färdig tomt: masshantering, matjord, gräsmatteytor, infarter, gÃ¥ngar, stödmurar och dagvattenlösningar â omfattningen anpassas efter önskemÃ¥l och budget."},{q:"Hur snabbt kan ni pÃ¥börja ett tomtarbete i Hennan?",a:"Med basen pÃ¥ orten kan vi ofta planera in arbetet med kort varsel under barmarkssäsongen. Kontakta oss tidigt i planeringen sÃ¥ reserverar vi tid."},{q:"Vad kostar tomtplanering i Hennan?",a:"En enklare finplanering börjar ofta runt 50 000 kronor. Den korta framkörningen gör att även smÃ¥ uppdrag som gÃ¥rdsplaner och infarter blir prisvärda. Kostnadsfri offert efter platsbesök."}],snorojningLjusdal:[{q:"Snöröjer ni i Ljusdal?",a:"Ja, vi plogar infarter, gÃ¥rdsplaner, parkeringar och vägar i Ljusdals tätort med omnejd. De flesta kunder tecknar säsongsavtal sÃ¥ att vi kommer automatiskt när snödjupet passerar den gräns vi kommit överens om. Ring 070-657 14 42 för pris."},{q:"Tar ni parkeringar och företagsytor i Ljusdal?",a:"Ja, i tätorten är parkeringar, lastzoner och entréer vanliga uppdrag. Ytorna behöver vara röjda tidigt pÃ¥ morgonen innan verksamheten öppnar, och vi lägger rundan sÃ¥ att de kunderna ligger först."},{q:"Var läggs snön när tomten är liten?",a:"PÃ¥ trÃ¥nga tomter i centrala
157Ljusdal blir upplagsplatsen snabbt en flaskhals. Vi kommer överens om var högarna fÃ¥r ligga utan att skymma sikten mot gata och infart, och kan forsla bort snön med lastbil när den tar för mycket plats."},{q:"Vad kostar snöröjning i Ljusdal?",a:"Priset beror pÃ¥ ytans storlek, hur ofta det ska plogas och avstÃ¥ndet frÃ¥n Hennan. Som privatperson kan du ofta använda RUT-avdrag för snöskottning vid bostaden. Boka före säsongen för bäst pris och plats i turlistan."}],snorojningFarila:[{q:"Plogar ni i Färila?",a:"Ja, vi snöröjer i Färila med omnejd â villor, gÃ¥rdar, fritidshus och byvägar. BÃ¥de säsongsavtal och enstaka utryckningar efter större oväder gÃ¥r bra i mÃ¥n av kapacitet."},{q:"Klarar ni lÃ¥nga infarter och gÃ¥rdsvägar?",a:"Ja, kring Färila är infarterna ofta hundra meter eller mer och gÃ¥r genom öppen mark där snön driver. Med traktor och vikplog tar vi hela sträckan i ett svep och lägger vallarna sÃ¥ att de inte fyller igen vid nästa blÃ¥st."},{q:"Tar ni avtal med vägföreningar i Färila?",a:"Ja, vi plogar hela vägsträckor för vägföreningar och samfälligheter, inklusive siktröjning i korsningar och isrivning när vägbanan bygger pÃ¥ sig. Ett avtal per förening är enklare än att varje fastighet löser det själv."},{q:"Kan ni ploga Ã¥t fritidshus i Färila?",a:"Ja, mÃ¥nga vill ha infarten framkomlig till helgen utan att betala för plogning hela vintern. Vi kommer överens om vilka veckor eller tillfällen som gäller, sÃ¥ att huset är Ã¥tkomligt när ni kommer upp."}],snorojningJarvso:[{q:"Snöröjer ni i Järvsö?",a:"Ja, vi plogar infarter, gÃ¥rdsplaner och vägar i JärvsöomrÃ¥det för permanentboende, fritidshus och verksamheter. Säsongsavtal ger dig plats i rundan och prioritet när snön kommer."},{q:"Hur hanterar ni branta infarter kring Järvsöbacken?",a:"Sluttande infarter blir hala när plogen skrapar ner till isen. Vi plogar med marginal och sandar backar och vändplaner vid behov, sÃ¥ att bilen tar sig upp även när vädret växlar mellan töväder och kyla."},{q:"Kan ni ploga uthyrningsstugor i Järvsö?",a:"Ja, uthyrning kräver att infart och parkering är röjda vid varje gästbyte, inte bara efter snöfall. Vi lägger upp röjningen efter era bytesdagar sÃ¥ att gästerna kommer fram."},{q:"Vad kostar snöröjning i Järvsö?",a:"Priset styrs av ytans storlek, antalet tillfällen och framkörningen frÃ¥n Hennan. Branta ytor som kräver sandning kostar nÃ¥got mer. Vi lämnar pris efter att vi sett platsen eller fÃ¥tt mÃ¥tt och bilder."}],snorojningRamsjo:[{q:"Plogar ni i Ramsjö?",a:"Ja, Ramsjö ligger nära Hennan och vi plogar infarter, gÃ¥rdsplaner och vägar i omrÃ¥det. Den korta framkörningen gör att vi är pÃ¥ plats tidigt även efter kraftiga snöfall."},{q:"Hur mycket snö kommer det i Ramsjö?",a:"Ramsjö ligger högt och nordligt i kommunen, vilket ger längre vinter och mer snö än i dalgÃ¥ngen kring Ljusdal. Snön ligger normalt frÃ¥n november till april och röjningen behöver planeras för fler tillfällen per säsong."},{q:"Röjer ni skogsbilvägar och längre sträckor?",a:"Ja, vi plogar skogsbilvägar och längre grusvägar Ã¥t markägare och vägföreningar. Vid behov river vi is och drar ut vallarna sÃ¥ att vägen inte snöar igen i nästa oväder."},{q:"Kan ni ploga Ã¥t fritidshus som inte används hela vintern?",a:"Ja, vi plogar vid överenskomna tillfällen sÃ¥ att huset är Ã¥tkomligt när ni kommer upp. MÃ¥nga kombinerar det med enstaka utryckningar efter stora snöfall för att undvika snötryck pÃ¥ tak och altaner."}],snorojningHennan:[{q:"Snöröjer ni i Hennan?",a:"Ja, Hennan är vÃ¥r hemort. Maskinerna stÃ¥r här och vi är först ute pÃ¥ orten när det snöat. Det ger kort inställelse och gör att infarten är röjd innan arbetsdagen börjar."},{q:"Hur snabbt är ni pÃ¥ plats efter ett snöfall?",a:"Med basen i byn börjar vi röja här. Avtalskunder i Hennan plogas normalt samma morgon som snöfallet, före kunder längre bort i kommunen."},{q:"Plogar ni längs riksväg 83 och byvägarna?",a:"Ja, vi plogar infarter och tomtvägar längs riksvägen och de mindre byvägarna kring sjön Hennan. Vindutsatta lägen driver snabbt igen, och där lägger vi vallarna sÃ¥ att snön inte blÃ¥ser tillbaka."},{q:"Kan jag betala per gÃ¥ng i stället för säsongsavtal?",a:"Ja, i mÃ¥n av kapacitet plogar vi även vid enstaka tillfällen. Avtalskunder prioriteras när snön kommer, sÃ¥ säsongsavtal är tr
157yggare om infarten mÃ¥ste vara framkomlig varje dag."}],tradfallningLjusdal:[{q:"Fäller ni träd i Ljusdal?",a:"Ja, vi fäller träd med maskinstöd i Ljusdals tätort med omnejd â även stora träd nära hus, garage och ledningar. Vi tar hand om ris och stammar och kan gräva bort stubbarna i samma uppdrag."},{q:"Kan ni fälla träd som stÃ¥r tätt intill huset?",a:"Ja, det är den vanligaste anledningen till att vi kallas in. Med maskin som stöttar och styr fallriktningen, och sektionsfällning där det behövs, kan trädet tas ner kontrollerat även när utrymmet är begränsat."},{q:"Vad gäller för träd nära luftledning i Ljusdal?",a:"Träd nära luftledning ska aldrig fällas pÃ¥ egen hand. Vi bedömer avstÃ¥ndet pÃ¥ plats och samordnar med ledningsägaren när det behövs, sÃ¥ att arbetet kan utföras utan risk för avbrott eller personskada."},{q:"Behöver jag marklov för att fälla träd i Ljusdal?",a:"Inom detaljplanerat omrÃ¥de kan marklov krävas för trädfällning, och skyddade alléer eller enskilda träd kan ha särskilda bestämmelser. Kontrollera med kommunen innan arbetet â vi hjälper gärna till att beskriva Ã¥tgärden."}],tradfallningFarila:[{q:"Utför ni trädfällning i Färila?",a:"Ja, vi fäller träd i Färila med omnejd â riskträd vid gÃ¥rdar, granar som dött av barkborre och avverkning inför bygge eller markarbeten. Ris och stammar tar vi hand om."},{q:"Tar ni granar som angripits av barkborre?",a:"Ja, döda granar är vanliga i trakten och blir sprödare för varje Ã¥r som gÃ¥r. Torra träd är svÃ¥rare att styra vid fällning, sÃ¥ de bör tas ner medan de fortfarande hÃ¥ller. Vi fäller med maskinstöd och forslar bort virket."},{q:"Kan ni fälla träd vid gamla gÃ¥rdshus?",a:"Ja, kring äldre gÃ¥rdar i Färilatrakten stÃ¥r ofta stora lövträd nära byggnader med känsliga tak och naturstensgrunder. Vi fäller i sektioner och lägger fallet där marken tar smällen utan att byggnaden skadas."},{q:"Vad händer med veden och riset?",a:"Stammarna kapas i de längder du önskar â mÃ¥nga vill behÃ¥lla veden â och riset flisas eller forslas bort. Vill du bli av med stubbarna gräver vi bort dem med maskin, vilket är effektivt när flera träd tas ner samtidigt."}],tradfallningJarvso:[{q:"Fäller ni träd i Järvsö?",a:"Ja, vi fäller träd i JärvsöomrÃ¥det för villaägare, fritidshusägare och verksamheter. Vanliga uppdrag är riskträd efter storm, träd som skuggar tomten och avverkning inför nybyggnation."},{q:"Klarar ni trädfällning pÃ¥ sluttningstomter?",a:"Ja, i sluttande terräng mÃ¥ste bÃ¥de fallriktning och maskinens uppställning tänkas igenom eftersom trädet fÃ¥r extra rörelse nedÃ¥t. Vi förankrar med maskin och fäller i sektioner när lutningen kräver det."},{q:"Fäller ni träd nära uthyrningsstugor?",a:"Ja, träd som lutar över stugor eller parkering är en risk för bÃ¥de byggnad och gäster. Vi planerar arbetet mellan gästbyten sÃ¥ att verksamheten kan fortsätta, och städ
157ar tomten innan nästa gäst kommer."},{q:"Vad kostar trädfällning i Järvsö?",a:"Priset styrs av antal träd, storlek, svÃ¥righetsgrad och hur mycket som ska forslas bort. Skicka gärna bilder med din förfrÃ¥gan, sÃ¥ kan vi ofta ge en preliminär bedömning direkt och därefter fast offert."}],tradfallningRamsjo:[{q:"Utför ni trädfällning i Ramsjö?",a:"Ja, Ramsjö ligger nära Hennan och vi fäller träd Ã¥t fastighetsägare, markägare och fritidshusägare i omrÃ¥det. Kort framkörning gör att även mindre uppdrag blir prisvärda."},{q:"Kan ni ta ner riskträd efter storm?",a:"Ja, stormfällda och halvfallna träd är farligast av alla eftersom spänningarna i stammen är svÃ¥ra att läsa. Vi lossar dem med maskin i stället för att sÃ¥ga i spänt virke, och röjer upp platsen efterÃ¥t."},{q:"Fäller ni träd längs skogsbilvägar?",a:"Ja, träd som fallit över eller lutar mot vägen hindrar framkomligheten för bÃ¥de virkestransporter och räddningstjänst. Vi kapar upp, drar av virket och siktröjer kanterna vid behov."},{q:"Gräver ni bort stubbar i samma uppdrag?",a:"Ja, med maskin pÃ¥ plats är det effektivt att ta stubbarna direkt â särskilt när flera träd fälls samtidigt eller ytan ska bli gräsmatta, infart eller byggplats."}],tradfallningHennan:[{q:"Fäller ni träd i Hennan?",a:"Ja, Hennan är vÃ¥r hemort och vi fäller träd här Ã¥ret om â riskträd vid hus, granar efter barkborreangrepp och avverkning inför bygge. Maskinerna stÃ¥r i byn, sÃ¥ inställelsen är kort."},{q:"Hur snabbt kan ni komma vid ett akut riskträd?",a:"Med bas i Hennan kan vi ofta se pÃ¥ trädet samma eller nästa dag. Träd som lutar över hus eller väg efter storm behandlar vi som brÃ¥dskande och tar ner sÃ¥ snart det är säkert att arbeta."},{q:"Tar ni träd nära sjön Hennan och strandtomterna?",a:"Ja, strandnära lägen har ofta mjuk mark som inte bär tunga maskiner hur som helst. Vi väljer uppställning och maskin efter markens bärighet sÃ¥ att tomten inte körs sönder."},{q:"Kan ni kombinera trädfällning med markarbeten?",a:"Ja, det är ofta smartast. Ska tomten planeras eller en grund grävas tar vi ner träden, gräver bort stubbarna och fortsätter direkt med markarbetet i samma entreprenad â en uppställning i stället för tvÃ¥."}]},ve=t=>{const s=` | ${DA}`,l=`${t}${s}`;if(l.length<=65)return l;const o=65-s.length,c=t.slice(0,o+1),u=c.lastIndexOf(" ");return`${c.slice(0,u>20?u:o)}${s}`},Mm=[{path:"/",title:"Grävfirma i Ljusdal & Hälsingland | Hennans Grävtjänst AB",description:"Grävfirma i Hennan och Ljusdals kommun sedan 1996. Vägentreprenad, enskilt avlopp, dränering och markarbeten. Kostnadsfri offert: 070-657 14 42.",ogImage:pe.home,jsonLd:[_e(),Fx(),_A(),Ne(X.home)]},{path:"/vagentreprenad",title:ve("Vägentreprenad i Hälsingland â bygga & underhÃ¥lla väg"),description:"Vi anlägger och underhÃ¥ller grusvägar, skogsbilvägar och infarter i Ljusdals kommun. Dikning, trummor, hyvling och grusning. Begär kostnadsfri offert.",ogImage:pe.vagentreprenad,jsonLd:[Ee("Vägentreprenad","Anläggning och underhÃ¥ll av grusvägar, skogsbilvägar och infarter i Ljusdals kommun med omnejd.","/vagentreprenad"),Ne(X.vagentreprenad),xe([{name:"Hem",path:"/"},{name:"Vägentreprenad",path:"/vagentreprenad"}])]},{path:"/vagentreprenad/anlagga-grusvag",title:ve("Anlägga grusväg â sÃ¥ gÃ¥r det till & vad det kostar"),description:"Funderar du pÃ¥ att anlägga grusväg? Vi bygger hÃ¥llbara grusvägar med rätt terrassering, dikning och material i hela Ljusdals kommun. Kostnadsfri offert.",ogImage:pe.grusvag,jsonLd:[Ee("Anlägga grusväg","Nyanläggning av grusvägar och infarter med terrassering, dikning, trummor och rätt överbyggnad.","/vagentreprenad/anlagga-grusvag"),Ne(X.grusvag),xe([{name:"Hem",path:"/"},{name:"Vägentreprenad",path:"/vagentreprenad"},{name:"Anlägga grusväg",path:"/vagentreprenad/anlagga-grusvag"}])]},{path:"/vagentreprenad/skogsbilvag",title:ve("Skogsbilväg â anläggning & upprustning i Hälsingland"),description:"Vi bygger och rustar skogsbilvägar som klarar tunga virkestransporter. Terrassering, bärighet, vändplaner och trummor. Verksamma i hela Ljusdals kommun.",ogImage:pe.skogsbilvag,jsonLd:[Ee("Skogsbilväg","Anläggning och upprustning av skogsbilvägar för virkestransporter i Hälsingland.","/vagentreprenad/skogsbilvag"),Ne(X.skogsbilvag),xe([{name:"Hem",path:"/"},{name:"Vägentreprenad",path:"/vagentreprenad"},{name:"Skogsbilväg",path:"/vagentreprenad/skogsbilvag"}])]},{path:"/vagentreprenad/vagunderhall-dikning",title:ve("VägunderhÃ¥ll & dikning â förläng grusvägens livslängd"),description:"Hyvling, grusning, dikesrensning och kantskärning för grusvägar i Ljusdals kommun. Vi hjälper vägföreningar och privata väghÃ¥llare. Begär offert i dag.",ogImage:pe.vagunderhall,jsonLd:[Ee("VägunderhÃ¥ll och dikning","Löpande underhÃ¥ll av grusvägar: hyvling, grusning, dikesrensning och kantskärning.","/vagentreprenad/vagunderhall-dikning"),Ne(X.vagunderhall),xe([{name:"Hem",path:"/"},{name:"Vägentreprenad",path:"/vagentreprenad"},{name:"VägunderhÃ¥ll & dikning",path:"/vagentreprenad/vagunderhall-dikning"}])]},{path:"/vagentreprenad/vagtrumma",title:ve("Vägtrumma â byte & installation av trummor"),description:"Dags att byta vägtrumma? Vi installerar och byter vägtrummor i rätt dimension, lagda frostsäkert för Hälsinglands klimat. Snabb hjälp â begär offert.",ogImage:pe.vagtrumma,jsonLd:[Ee("Vägtrumma","Byte och nyinstallation av vägtrummor i alla dimensioner.","/vagentreprenad/vagtrumma"),Ne(X.vagtrumma),xe([{name:"Hem",path:"/"},{name:"Vägentreprenad",path:"/vagentreprenad"},{name:"Vägtrumma",path:"/vagentreprenad/vagtrumma"}])]},{path:"/vatten-avlopp",title:ve("Vatten & avlopp â grävning för VA i Ljusdals kommun"),description:"Markentreprenad för vatten och avlopp: enskilda avlopp, trekammarbrunnar, infiltration och VA-ledningar lagda frostfritt. Kostnadsfri offert â ring oss.",ogImage:pe.va,jsonLd:[Ee("Vatten och avlopp","Grävning och anläggning av enskilda avlopp, trekammarbrunnar, infiltration och VA-ledningar.","/vatten-avlopp"),Ne(X.va),xe([{name:"Hem",path:"/"},{name:"Vatten & avlopp",path:"/vatten-avlopp"}])]},{path:"/vatten-avlopp/trekammarbrunn",title:ve("Trekammarbrunn â installation med grävning & tillstÃ¥nd"),description:"Vi installerar trekammarbrunnar med efterföljande rening â komplett med grävning, anslutning och underlag för kommunens tillstÃ¥nd. Begär kostnadsfri offert.",ogImage:pe.trekammarbrunn,jsonLd:[Ee("Trekammarbrunn","Installation av trekammarbrunn med grävning, anslutning och efterföljande rening.","/vatten-avlopp/trekammarbrunn"),Ne(X.trekammarbrunn),xe([{name:"Hem",path:"/"},{name:"Vatten & avlopp",path:"/vatten-avlopp"},{name:"Trekammarbrunn",path:"/vatten-avlopp/trekammarbrunn"}])]},{path:"/vatten-avlopp/infiltration-markbadd",title:ve("Infiltration & markbädd â rätt rening för din tomt"),description:"Infiltration eller markbädd? Vi gräver provgrop, bedömer jordarten och anlägger den rening som passar din mark och kommunens krav. Kostnadsfri offert.",ogImage:pe.infiltration,jsonLd:[Ee("Infiltration och markbädd","Anläggning av infiltrationsanläggningar och markbäddar för enskilda avlopp.","/vatten-avlopp/infiltration-markbadd"),Ne(X.infiltration),xe([{name:"Hem",path:"/"},{name:"Vatten & avlopp",path:"/vatten-avlopp"},{name:"Infiltration & markbädd",path:"/vatten-avlopp/infiltration-markbadd"}])]},{path:"/vatten-avlopp/enskilt-avlopp",title:ve("Enskilt avlopp â komplett anläggning"),description:"Nytt enskilt avlopp? Vi sköter helheten: provgrop, tillstÃ¥ndsunderlag, grävning, trekammarbrunn och infiltration eller markbädd. Fast offert efter platsbesök.",ogImage:pe.enskiltavlopp,jsonLd:[Ee("Enskilt avlopp","K
157ompletta enskilda avloppsanläggningar: provgrop, tillstÃ¥ndsunderlag, grävning och installation.","/vatten-avlopp/enskilt-avlopp"),Ne(X.enskiltAvlopp),xe([{name:"Hem",path:"/"},{name:"Vatten & avlopp",path:"/vatten-avlopp"},{name:"Enskilt avlopp",path:"/vatten-avlopp/enskilt-avlopp"}])]},{path:"/dranering",title:ve("Dränering av husgrund â torr källare som hÃ¥ller"),description:"Fukt i källaren? Vi dränerar om husgrunder med modern fuktisolering och rätt Ã¥terfyllnad. Verksamma i hela Ljusdals kommun. Kostnadsfri offert â ring oss.",ogImage:pe.dranering,jsonLd:[Ee("Dränering","Omdränering av husgrunder med fuktisolering, dräneringsledning och Ã¥terfyllnad.","/dranering"),Ne(X.dranering),xe([{name:"Hem",path:"/"},{name:"Dränering",path:"/dranering"}])]},{path:"/markarbeten",title:ve("Markarbeten â husgrunder, tomtplanering & schakt"),description:"Markarbeten i Ljusdals kommun: husgrunder, tomtplanering, infarter, schakt och masshantering. Ãver 30 Ã¥r i branschen. Begär kostnadsfri offert i dag.",ogImage:pe.markarbeten,jsonLd:[Ee("Markarbeten","Husgrunder, tomtplanering, schakt, infarter och masshantering.","/markarbeten"),Ne(X.markarbeten),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"}])]},{path:"/markarbeten/husgrund",title:ve("Husgrund â grävning & markarbete för din grund"),description:"Vi gräver och förbereder husgrunder för villor, fritidshus och garage: schakt, dränering, VA och packade lager klara för gjutning. Kostnadsfri offert.",ogImage:pe.husgrund,jsonLd:[Ee("Husgrund","Schakt och markarbete för platta pÃ¥ mark, krypgrund och källargrund, inklusive dränering och VA.","/markarbeten/husgrund"),Ne(X.husgrund),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"},{name:"Husgrund",path:"/markarbeten/husgrund"}])]},{path:"/markarbeten/tomtplanering",title:ve("Tomtplanering â frÃ¥n rÃ¥mark till färdig tomt"),description:"Tomtplanering i Ljusdals kommun: grovplanering, matjord, gräsytor, infarter, stödmurar och dagvatten. Vi formar tomten efter dina behov. Begär offert.",ogImage:pe.tomtplanering,jsonLd:[Ee("Tomtplanering","Grov- och finplanering av tomter: masshantering, matjord, gräsytor, infarter och stödmurar.","/markarbeten/tomtplanering"),Ne(X.tomtplanering),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"},{name:"Tomtplanering",path:"/markarbeten/tomtplanering"}])]},{path:"/snorojning",title:ve("Snöröjning i Hennan & norra Ljusdals kommun"),description:"Snöröjning för privatpersoner, företag och vägföreningar i Hennan med omnejd. Säsongsavtal eller enstaka utryckningar. Boka innan säsongen börjar.",ogImage:pe.snorojning,jsonLd:[Ee("Snöröjning","Snöröjning av infarter, gÃ¥rdsplaner, parkeringar och vägar i Hennan med omnejd.","/snorojning"),Ne(X.snorojning),xe([{name:"Hem",path:"/"},{name:"Snöröjning",path:"/snorojning"}])]},{path:"/tradfallning",title:ve("Trädfällning med maskinstöd â säkert & effektivt"),description:"Trädfällning nära hus, vägar och ledningar i Ljusdals kommun. Vi tar hand om ris och stammar och kan gräva bort stubbar. Begär kostnadsfri offert.",ogImage:pe.tradfallning,jsonLd:[Ee("Trädfällning","Säker trädfällning med maskinstöd, även nära byggnader. Bortforsling av ris och stammar.","/tradfallning"),Ne(X.tradfallning),xe([{name:"Hem",path:"/"},{name:"Trädfällning",path:"/tradfallning"}])]},{path:"/smide",title:ve("Smide & verkstad â reparationer och tillverkning"),description:"Smidesarbeten i egen verkstad i Hennan: maskinreparationer, svetsning, redskap och specialtillverkning för lantbruk, skog och entreprenad. Ring oss.",ogImage:pe.smide,jsonLd:[Ee("Smide","Smide, svetsning och maskinreparationer i egen verkstad i Hennan.","/smide"),Ne(X.smide),xe([{name:"Hem",path:"/"},{name:"Smide",path:"/smide"}])]},{path:"/gravfirma-ljusdal",title:ve("Grävfirma i Ljusdal â markarbeten & entreprenad"),description:"Söker du grävfirma i Ljusdal? Vi utför dränering, enskilda avlopp, husgrunder och vägarbeten i hela Ljusdalstrakten. 30 Ã¥rs erfarenhet. Kostnadsfri offert.",ogImage:pe.gravfirmaLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Lju
157sdal"}]}),Ee("Grävarbeten i Ljusdal","Markarbeten, dränering, enskilda avlopp och vägentreprenad i Ljusdal med omnejd.","/gravfirma-ljusdal"),Ne(X.ljusdal),xe([{name:"Hem",path:"/"},{name:"Grävfirma Ljusdal",path:"/gravfirma-ljusdal"}])]},{path:"/gravfirma-farila",title:ve("Grävfirma i Färila â avlopp, dränering & vägar"),description:"Grävfirma verksam i Färila: enskilda avlopp, dränering, markarbeten, skogsbilvägar och vägunderhÃ¥ll. Lokal firma med 30 Ã¥rs erfarenhet. Begär offert.",ogImage:pe.gravfirmaFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Grävarbeten i Färila","Enskilda avlopp, dränering, markarbeten och vägentreprenad i Färila med omnejd.","/gravfirma-farila"),Ne(X.farila),xe([{name:"Hem",path:"/"},{name:"Grävfirma Färila",path:"/gravfirma-farila"}])]},{path:"/gravfirma-jarvso",title:ve("Grävfirma i Järvsö â markarbeten för hus & fritidshus"),description:"Grävfirma i Järvsö för husgrunder, VA, dränering och tomtplanering. Vi hjälper bÃ¥de fastboende och fritidshusägare. Kostnadsfri offert â ring i dag.",ogImage:pe.gravfirmaJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Grävarbeten i Järvsö","Husgrunder, VA-anslutningar, dränering och tomtplanering i Järvsö med omnejd.","/gravfirma-jarvso"),Ne(X.jarvso),xe([{name:"Hem",path:"/"},{name:"Grävfirma Järvsö",path:"/gravfirma-jarvso"}])]},{path:"/gravfirma-ramsjo",title:ve("Grävfirma i Ramsjö â nära hjälp i norra kommundelen"),description:"Grävfirma nära Ramsjö: skogsbilvägar, vägunderhÃ¥ll, avlopp och markarbeten. Vi finns i Hennan â kort framkörning i norra Ljusdals kommun. Begär offert.",ogImage:pe.gravfirmaRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Grävarbeten i Ramsjö","Skogsbilvägar, vägunderhÃ¥ll, enskilda avlopp och markarbeten i Ramsjö med omnejd.","/gravfirma-ramsjo"),Ne(X.ramsjo),xe([{name:"Hem",path:"/"},{name:"Grävfirma Ramsjö",path:"/gravfirma-ramsjo"}])]},{path:"/gravfirma-hennan",title:ve("Grävfirma i Hennan â din lokala maskinentreprenör"),description:"Hennans Grävtjänst utgÃ¥r frÃ¥n Hennan vid riksväg 84. Grävarbeten, vägar, avlopp, snöröjning och smide â med egen verkstad pÃ¥ orten. Ring 070-657 14 42.",ogImage:pe.gravfirmaHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Grävarbeten i Hennan","Grävarbeten, vägentreprenad, avlopp, snöröjning och smide i Hennan.","/gravfirma-hennan"),Ne(X.hennan),xe([{name:"Hem",path:"/"},{name:"Grävfirma Hennan",path:"/gravfirma-hennan"}])]},{path:"/trekammarbrunn-ljusdal",title:ve("Trekammarbrunn i Ljusdal â installation & byte"),description:"Trekammarbrunn i Ljusdal? Vi installerar och byter brunnar med infiltration eller markbädd i hela Ljusdalstrakten, inklusive tillstÃ¥ndsunderlag. Begär offert.",ogImage:pe.trekammarbrunnLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ljusdal"}]}),Ee("Trekammarbrunn i Ljusdal","Installation och byte av trekammarbrunn med efterföljande rening i Ljusdal med omnejd.","/trekammarbrunn-ljusdal"),Ne(X.trekammarbrunnLjusdal),xe([{name:"Hem",path:"/"},{name:"Trekammarbrunn",path:"/vatten-avlopp/trekammarbrunn"},{name:"Trekammarbrunn Ljusdal",path:"/trekammarbrunn-ljusdal"}])]},{path:"/trekammarbrunn-farila",title:ve("Trekammarbrunn i Färila â installation & byte"),description:"Dags för ny trekammarbrunn i Färila? Vi gräver, installerar och ordnar underlag för kommunens tillstÃ¥nd. Lokal firma med 30 Ã¥rs erfarenhet. Begär offert.",ogImage:pe.trekammarbrunnFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Trekammarbrunn i Färila","Installation och byte av trekammarbrunn med infiltration eller markbädd i Färila med omnejd.","/trekammarbrunn-farila"),Ne(X.trekammarbrunnFarila),xe([{name:"Hem",path:"/"},{name:"Trekammarbrunn",path:"/vatten-avlopp/trekammarbrunn"},{name:"Trekammarbrunn Färila",path:"/trekammarbrunn-farila"}])]},{path:"/trekammarbrunn-jarvso",title:ve("Trekammarbrunn i Järvsö â för hus & fritidshus"),description:"Trekammarbrunn i Järvsö för permanent- och fritidshus. Komplett installation med grävning, rening och tillstÃ¥ndsunderlag. Kostnadsfri offert â ring oss.",ogImage:pe.trekammarbrunnJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Trekammarbrunn i Järvsö","Installation av trekammarbrunn för permanent- och fritidshus i Järvsö med omnejd.","/trekammarbrunn-jarvso"),Ne(X.trekammarbrunnJarvso),xe([{name:"Hem",path:"/"},{name:"Trekammarbrunn",path:"/vatten-avlopp/trekammarbrunn"},{name:"Trekammarbrunn Järvsö",path:"/trekammarbrunn-jarvso"}])]},{path:"/trekammarbrunn-ramsjo",title:ve("Trekammarbrunn i Ramsjö â nära & prisvärt"),description:"Trekammarbrunn i Ramsjö med kort framkörning frÃ¥
157n Hennan. Komplett installation med provgrop, grävning och rening anpassad för norrländska förhÃ¥llanden.",ogImage:pe.trekammarbrunnRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Trekammarbrunn i Ramsjö","Installation och byte av trekammarbrunn i Ramsjö och norra Ljusdals kommun.","/trekammarbrunn-ramsjo"),Ne(X.trekammarbrunnRamsjo),xe([{name:"Hem",path:"/"},{name:"Trekammarbrunn",path:"/vatten-avlopp/trekammarbrunn"},{name:"Trekammarbrunn Ramsjö",path:"/trekammarbrunn-ramsjo"}])]},{path:"/trekammarbrunn-hennan",title:ve("Trekammarbrunn i Hennan â lokal installation"),description:"Trekammarbrunn i Hennan â vi finns pÃ¥ orten med verkstad och maskinpark. Snabb installation med infiltration eller markbädd. Ring 070-657 14 42 för offert.",ogImage:pe.trekammarbrunnHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Trekammarbrunn i Hennan","Installation och byte av trekammarbrunn i Hennan med omnejd.","/trekammarbrunn-hennan"),Ne(X.trekammarbrunnHennan),xe([{name:"Hem",path:"/"},{name:"Trekammarbrunn",path:"/vatten-avlopp/trekammarbrunn"},{name:"Trekammarbrunn Hennan",path:"/trekammarbrunn-hennan"}])]},{path:"/markarbeten-ramsjo",title:ve("Markarbeten i Ramsjö â grund & schakt nära dig"),description:"Mark- och grundarbeten i Ramsjö: husgrunder, schakt, infarter och tomtplanering. Kort framkörning frÃ¥n Hennan â lokal firma sedan 1996. Begär offert.",ogImage:pe.markarbetenRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Markarbeten i Ramsjö","Mark- och grundarbeten i Ramsjö: husgrunder, schakt, infarter och tomtplanering.","/markarbeten-ramsjo"),Ne(X.markarbetenRamsjo),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"},{name:"Markarbeten Ramsjö",path:"/markarbeten-ramsjo"}])]},{path:"/markarbeten-ljusdal",title:ve("Markarbeten i Ljusdal â schakt, grund & tomt"),description:"Mark- och grundarbeten i Ljusdal: husgrunder, schakt, infarter, tomtplanering och VA. Lokal grävfirma sedan 1996 med fast offert. Ring 070-657 14 42.",ogImage:pe.markarbetenLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ljusdal"}]}),Ee("Markarbeten i Ljusdal","Mark- och grundarbeten i Ljusdal: husgrunder, schakt, infarter och tomtplanering.","/markarbeten-ljusdal"),Ne(X.markarbetenLjusdal),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"},{name:"Markarbeten Ljusdal",path:"/markarbeten-ljusdal"}])]},{path:"/markarbeten-farila",title:ve("Markarbeten i Färila â grund, schakt & infart"),description:"Markarbeten i Färila: husgrunder, schakt pÃ¥ skogstomter, infarter och tomtplanering. Lokal grävfirma längs riksväg 84. Kostnadsfri offert â begär i dag.",ogImage:pe.markarbetenFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Markarbeten i Färila","Mark- och grundarbeten i Färila: husgrunder, schakt, infarter och tomtplanering.","/markarbeten-farila"),Ne(X.markarbetenFarila),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"},{name:"Markarbeten Färila",path:"/markarbeten-farila"}])]},{path:"/markarbeten-jarvso",title:ve("Markarbeten i Järvsö â sluttningstomt & grund"),description:"Markarbeten i Järvsö: husgrunder, terrassering av sluttningstomter, stödmurar, infarter och tomtplanering. Lokal grävfirma â begär kostnadsfri offert.",ogImage:pe.markarbetenJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Markarbeten i Järvsö","Mark- och grundarbeten i Järvsö: husgrunder, terrassering, infarter och tomtplanering.","/markarbeten-jarvso"),Ne(X.markarbetenJarvso),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"},{name:"Markarbeten Järvsö",path:"/markarbeten-jarvso"}])]},{path:"/markarbeten-hennan",title:ve("Markarbeten i Hennan â lokal firma pÃ¥ orten"),description:"Markarbeten i Hennan â vi finns pÃ¥ orten med verkstad och maskinpark. Husgrunder, schakt, infarter och tomtplanering. Ring 070-657 14 42 för offert.",ogImage:pe.markarbetenHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Markarbeten i Hennan","Mark- och grundarbeten i Hennan: husgrunder, schakt, infarter och tomtplanering.","/markarbeten-hennan"),Ne(X.markarbetenHennan),xe([{name:"Hem",path:"/"},{name:"Markarbeten",path:"/markarbeten"},{name:"Markarbeten Hennan",path:"/markarbeten-hennan"}])]},{path:"/dranering-ljusdal",title:ve("Dränering i Ljusdal â omdränering av husgrund"),description:"Dränering och omdränering av husgrund i Ljusdal. Fuktskydd, ny dräneringsledning och dagvatten. Lokal grävfirma sedan 1996. Ring 070-657 14 42.",ogImage:pe.draneringLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Lju
157sdal"}]}),Ee("Dränering i Ljusdal","Omdränering av husgrunder i Ljusdal med fuktisolering, ny dräneringsledning och dagvattenavledning.","/dranering-ljusdal"),Ne(X.draneringLjusdal),xe([{name:"Hem",path:"/"},{name:"Dränering",path:"/dranering"},{name:"Dränering Ljusdal",path:"/dranering-ljusdal"}])]},{path:"/dranering-farila",title:ve("Dränering i Färila â torr källare som hÃ¥ller"),description:"Dränering av husgrund i Färila: fuktskydd, ny dräneringsledning och rätt marklutning. Vana vid äldre gÃ¥rdshus. Kostnadsfri offert efter platsbesök.",ogImage:pe.draneringFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Dränering i Färila","Omdränering av husgrunder i Färila med fuktisolering, ny dräneringsledning och dagvattenavledning.","/dranering-farila"),Ne(X.draneringFarila),xe([{name:"Hem",path:"/"},{name:"Dränering",path:"/dranering"},{name:"Dränering Färila",path:"/dranering-farila"}])]},{path:"/dranering-jarvso",title:ve("Dränering i Järvsö â även sluttningstomter"),description:"Dränering av husgrund i Järvsö, inklusive sluttningstomter med avskärande dikning. Villor och fritidshus. Ring 070-657 14 42 för kostnadsfri offert.",ogImage:pe.draneringJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Dränering i Järvsö","Omdränering av husgrunder i Järvsö med fuktisolering, avskärande dikning och dagvattenavledning.","/dranering-jarvso"),Ne(X.draneringJarvso),xe([{name:"Hem",path:"/"},{name:"Dränering",path:"/dranering"},{name:"Dränering Järvsö",path:"/dranering-jarvso"}])]},{path:"/dranering-ramsjo",title:ve("Dränering i Ramsjö â tjälsäkert utförande"),description:"Dränering av husgrund i Ramsjö med tjälsäkert utförande, dräneringsbrunn och stenkista där dagvatten saknas. Kort framkörning frÃ¥n Hennan.",ogImage:pe.draneringRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Dränering i Ramsjö","Omdränering av husgrunder i Ramsjö med tjälsäkert utförande, fuktisolering och bortledning av dräneringsvatten.","/dranering-ramsjo"),Ne(X.draneringRamsjo),xe([{name:"Hem",path:"/"},{name:"Dränering",path:"/dranering"},{name:"Dränering Ramsjö",path:"/dranering-ramsjo"}])]},{path:"/dranering-hennan",title:ve("Dränering i Hennan â lokal firma pÃ¥ orten"),description:"Dränering av husgrund i Hennan â vi finns pÃ¥ orten med verkstad och maskiner. Kort inställelse vid fukt i källaren. Ring 070-657 14 42 för offert.",ogImage:pe.draneringHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Dränering i Hennan","Omdränering av husgrunder i Hennan med fuktisolering, ny dräneringsledning och dagvattenavledning.","/dranering-hennan"),Ne(X.draneringHennan),xe([{name:"Hem",path:"/"},{name:"Dränering",path:"/dranering"},{name:"Dränering Hennan",path:"/dranering-hennan"}])]},{path:"/snorojning-ljusdal",title:ve("Snöröjning i Ljusdal â avtal & enstaka utryckning"),description:"Snöröjning i Ljusdal: infarter, gÃ¥rdsplaner och parkeringar plogade i tid. Säsongsavtal eller per gÃ¥ng, RUT-avdrag vid bostad. Ring 070-657 14 42.",ogImage:pe.snorojningLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ljusdal"}]}),Ee("Snöröjning i Ljusdal","Plogning av infarter, gÃ¥rdsplaner, parkeringar och vägar i Ljusdals tätort med omnejd.","/snorojning-ljusdal"),Ne(X.snorojningLjusdal),xe([{name:"Hem",path:"/"},{name:"Snöröjning",path:"/snorojning"},{name:"Snöröjning Ljusdal",path:"/snorojning-ljusdal"}])]},{path:"/snorojning-farila",title:ve("Snöröjning i Färila â gÃ¥rdar, byvägar & fritidshus"),description:"Snöröjning i Färila med traktor och vikplog: lÃ¥nga infarter, gÃ¥rdsplaner och byvägar. Säsongsavtal för villor, gÃ¥rdar och vägföreningar. Begär pris.",ogImage:pe.snorojningFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Snöröjning i Färila","Plogning av infarter, gÃ¥rdsplaner och byvägar i Färila med omnejd, för villor, gÃ¥rdar och vägföreningar.","/snorojning-farila"),Ne(X.snorojningFarila),xe([{name:"Hem",path:"/"},{name:"Snöröjning",path:"/snorojning"},{name:"Snöröjning Färila",path:"/snorojning-farila"}])]},{path:"/snorojning-jarvso",title:ve("Snöröjning i Järvsö â även branta infarter"),description:"Snöröjning i Järvsö för villor, fritidshus och uthyrning. Vi plogar branta infarter och sandar backar vid behov. Säsongsavtal â begär pris i dag.",ogImage:pe.snorojningJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Snöröjning i Järvsö","Plogning och sandning av infarter, gÃ¥rdsplaner och parkeringar i JärvsöomrÃ¥det, inklusive branta lägen.","/snorojning-jarvso"),Ne(X.snorojningJarvso),xe([{name:"Hem",path:"/"},{name:"Snöröjning",path:"/snorojning"},{name:"Snöröjning Järvsö",path:"/snorojning-jarvso"}])]},{path:"/snorojning-ramsjo",title:ve("Snöröjning i Ramsjö â nära, snabbt & prisvärt"),description:"Snöröjning i Ramsjö med kort framkörning frÃ¥
157n Hennan. Vi plogar infarter, gÃ¥rdsplaner och skogsbilvägar i kommunens snörikaste del. Begär pris.",ogImage:pe.snorojningRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Snöröjning i Ramsjö","Plogning av infarter, gÃ¥rdsplaner, vägar och skogsbilvägar i Ramsjö och norra Ljusdals kommun.","/snorojning-ramsjo"),Ne(X.snorojningRamsjo),xe([{name:"Hem",path:"/"},{name:"Snöröjning",path:"/snorojning"},{name:"Snöröjning Ramsjö",path:"/snorojning-ramsjo"}])]},{path:"/snorojning-hennan",title:ve("Snöröjning i Hennan â vi finns pÃ¥ orten"),description:"Snöröjning i Hennan med maskiner pÃ¥ orten. Avtalskunder plogas normalt samma morgon som snöfallet. Ring 070-657 14 42 och boka före säsongen.",ogImage:pe.snorojningHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Snöröjning i Hennan","Plogning av infarter, gÃ¥rdsplaner och byvägar i Hennan med kort inställelse frÃ¥n egen bas pÃ¥ orten.","/snorojning-hennan"),Ne(X.snorojningHennan),xe([{name:"Hem",path:"/"},{name:"Snöröjning",path:"/snorojning"},{name:"Snöröjning Hennan",path:"/snorojning-hennan"}])]},{path:"/tradfallning-ljusdal",title:ve("Trädfällning i Ljusdal â även nära hus & ledning"),description:"Trädfällning i Ljusdal med maskinstöd: stora träd nära hus, garage och ledningar. Vi tar ris, stammar och stubbar. Begär kostnadsfri offert i dag.",ogImage:pe.tradfallningLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ljusdal"}]}),Ee("Trädfällning i Ljusdal","Trädfällning med maskinstöd i Ljusdals tätort med omnejd, inklusive sektionsfällning och bortforsling.","/tradfallning-ljusdal"),Ne(X.tradfallningLjusdal),xe([{name:"Hem",path:"/"},{name:"Trädfällning",path:"/tradfallning"},{name:"Trädfällning Ljusdal",path:"/tradfallning-ljusdal"}])]},{path:"/tradfallning-farila",title:ve("Trädfällning i Färila â riskträd & barkborregran"),description:"Trädfällning i Färila: riskträd vid gÃ¥rdar, döda granar efter barkborre och avverkning inför bygge. Vi tar hand om ved, ris och stubbar. Begär offert.",ogImage:pe.tradfallningFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Trädfällning i Färila","Trädfällning av riskträd, barkborreskadade granar och avverkning inför byggnation i Färila med omnejd.","/tradfallning-farila"),Ne(X.tradfallningFarila),xe([{name:"Hem",path:"/"},{name:"Trädfällning",path:"/tradfallning"},{name:"Trädfällning Färila",path:"/tradfallning-farila"}])]},{path:"/tradfallning-jarvso",title:ve("Trädfällning i Järvsö â även i sluttning"),description:"Trädfällning i Järvsö för villor, fritidshus och uthyrning. Vi klarar sluttningstomter och riskträd efter storm. Skicka bilder och fÃ¥ en bedömning.",ogImage:pe.tradfallningJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Trädfällning i Järvsö","Trädfällning i JärvsöomrÃ¥det, inklusive sluttningstomter, riskträd och avverkning inför nybyggnation.","/tradfallning-jarvso"),Ne(X.tradfallningJarvso),xe([{name:"Hem",path:"/"},{name:"Trädfällning",path:"/tradfallning"},{name:"Trädfällning Järvsö",path:"/tradfallning-jarvso"}])]},{path:"/tradfallning-ramsjo",title:ve("Trädfällning i Ramsjö â nära & prisvärt"),description:"Trädfällning i Ramsjö med kort framkörning frÃ¥n Hennan. Stormfällda riskträd, träd över skogsbilväg och stubbgrävning i samma uppdrag. Begär offert.",ogImage:pe.tradfallningRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Trädfällning i Ramsjö","Trädfällning, stormröjning och stubbgrävning i Ramsjö och norra Ljusdals kommun.","/tradfallning-ramsjo"),Ne(X.tradfallningRamsjo),xe([{name:"Hem",path:"/"},{name:"Trädfällning",path:"/tradfallning"},{name:"Trädfällning Ramsjö",path:"/tradfallning-ramsjo"}])]},{path:"/tradfallning-hennan",title:ve("Trädfällning i Hennan â lokal firma pÃ¥ orten"),description:"Trädfällning i Hennan med maskiner pÃ¥ orten. Akuta riskträd bedöms ofta samma eller nästa dag. Kombinera gärna med markarbeten â ring 070-657 14 42.",ogImage:pe.tradfallningHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Trädfällning i Hennan","Trädfällning, stubbgrävning och stormröjning i Hennan med kort inställelse frÃ¥n egen bas pÃ¥ orten.","/tradfallning-hennan"),Ne(X.tradfallningHennan),xe([{name:"Hem",path:"/"},{name:"Trädfällning",path:"/tradfallning"},{name:"Trädfällning Hennan",path:"/tradfallning-hennan"}])]},{path:"/avloppsanlaggning-ljusdal",title:ve("Avloppsanläggning i Ljusdal â komplett entreprenad"),description:"Ny avloppsanläggning i Ljusdal? Vi tar hela entreprenaden: provgrop, tillstÃ¥ndsunderlag, trekammarbrunn och infiltration eller markbädd. Begär offert.",ogImage:pe.avloppLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Lju
157sdal"}]}),Ee("Avloppsanläggning i Ljusdal","Kompletta avloppsanläggningar med trekammarbrunn, infiltration eller markbädd i Ljusdal med omnejd.","/avloppsanlaggning-ljusdal"),Ne(X.avloppsanlaggningLjusdal),xe([{name:"Hem",path:"/"},{name:"Enskilt avlopp",path:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Ljusdal",path:"/avloppsanlaggning-ljusdal"}])]},{path:"/avloppsanlaggning-farila",title:ve("Avloppsanläggning i Färila â anläggning & byte"),description:"Avloppsanläggning i Färila: vi byter gamla anläggningar och anlägger nya med trekammarbrunn och rening, inklusive tillstÃ¥ndsunderlag. Begär offert i dag.",ogImage:pe.avloppFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Avloppsanläggning i Färila","Anläggning och byte av kompletta avloppsanläggningar i Färila med omnejd.","/avloppsanlaggning-farila"),Ne(X.avloppsanlaggningFarila),xe([{name:"Hem",path:"/"},{name:"Enskilt avlopp",path:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Färila",path:"/avloppsanlaggning-farila"}])]},{path:"/avloppsanlaggning-jarvso",title:ve("Avloppsanläggning i Järvsö â hus & fritidshus"),description:"Avloppsanläggning i Järvsö för permanent- och fritidshus. Komplett entreprenad med provgrop, tillstÃ¥nd, brunn och rening. Kostnadsfri offert â ring oss.",ogImage:pe.avloppJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Avloppsanläggning i Järvsö","Kompletta avloppsanläggningar för permanent- och fritidshus i Järvsö med omnejd.","/avloppsanlaggning-jarvso"),Ne(X.avloppsanlaggningJarvso),xe([{name:"Hem",path:"/"},{name:"Enskilt avlopp",path:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Järvsö",path:"/avloppsanlaggning-jarvso"}])]},{path:"/avloppsanlaggning-ramsjo",title:ve("Avloppsanläggning i Ramsjö â nära & prisvärt"),description:"Avloppsanläggning i Ramsjö med kort framkörning frÃ¥n Hennan. Komplett entreprenad anpassad för morän och djup tjäle i norra kommundelen. Begär offert.",ogImage:pe.avloppRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Avloppsanläggning i Ramsjö","Kompletta avloppsanläggningar i Ramsjö och norra Ljusdals kommun.","/avloppsanlaggning-ramsjo"),Ne(X.avloppsanlaggningRamsjo),xe([{name:"Hem",path:"/"},{name:"Enskilt avlopp",path:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Ramsjö",path:"/avloppsanlaggning-ramsjo"}])]},{path:"/avloppsanlaggning-hennan",title:ve("Avloppsanläggning i Hennan â lokal entreprenör"),description:"Avloppsanläggning i Hennan â vi finns pÃ¥ orten med verkstad och maskinpark. Komplett entreprenad frÃ¥n provgrop till färdig rening. Ring 070-657 14 42.",ogImage:pe.avloppHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Avloppsanläggning i Hennan","Kompletta avloppsanläggningar i Hennan med omnejd.","/avloppsanlaggning-hennan"),Ne(X.avloppsanlaggningHennan),xe([{name:"Hem",path:"/"},{name:"Enskilt avlopp",path:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Hennan",path:"/avloppsanlaggning-hennan"}])]},{path:"/husgrund-ljusdal",title:ve("Husgrund i Ljusdal â schakt & grundarbete"),description:"Husgrund i Ljusdal: schakt, dränering, VA och packade lager klara för gjutning. Lokal grävfirma med 30 Ã¥rs erfarenhet. Begär kostnadsfri offert i dag.",ogImage:pe.husgrundLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ljusdal"}]}),Ee("Husgrund i Ljusdal","Schakt och grundarbete för platta pÃ¥ mark, krypgrund och källargrund i Ljusdal med omnejd.","/husgrund-ljusdal"),Ne(X.husgrundLjusdal),xe([{name:"Hem",path:"/"},{name:"Husgrund",path:"/markarbeten/husgrund"},{name:"Husgrund Ljusdal",path:"/husgrund-ljusdal"}])]},{path:"/husgrund-farila",title:ve("Husgrund i Färila â grundarbete som hÃ¥ller"),description:"Husgrund i Färila: vi schaktar och bygger upp grunder för villor, fritidshus och garage â dränering och VA ingÃ¥r. Kostnadsfri offert efter platsbesök.",ogImage:pe.husgrundFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Husgrund i Färila","Schakt och grundarbete för villor, fritidshus och garage i Färila med omnejd.","/husgrund-farila"),Ne(X.husgrundFarila),xe([{name:"Hem",path:"/"},{name:"Husgrund",path:"/markarbeten/husgrund"},{name:"Husgrund Färila",path:"/husgrund-farila"}])]},{path:"/husgrund-jarvso",title:ve("Husgrund i Järvsö â även sluttningstomter"),description:"Husgrund i Järvsö för permanent- och fritidshus. Vi klarar sluttningslägen med souterräng och stödmurar. Fast offert efter platsbesök â ring oss i dag.",ogImage:pe.husgrundJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Husgrund i Järvsö","Schakt och grundarbete för permanent- och fritidshus i Järvsö, inklusive sluttningstomter.","/husgrund-jarvso"),Ne(X.husgrundJarvso),xe([{name:"Hem",path:"/"},{name:"Husgrund",path:"/markarbeten/husgrund"},{name:"Husgrund Järvsö",path:"/husgrund-jarvso"}])]},{path:"/husgrund-ramsjo",title:ve("Husgrund i Ramsjö â nära & prisvärt"),description:"Husgrund i Ramsjö med kort framkörning frÃ¥
157n Hennan. Frostsäkert grundarbete anpassat för morän och djup tjäle i norra kommundelen. Begär offert.",ogImage:pe.husgrundRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Husgrund i Ramsjö","Schakt och grundarbete i Ramsjö och norra Ljusdals kommun.","/husgrund-ramsjo"),Ne(X.husgrundRamsjo),xe([{name:"Hem",path:"/"},{name:"Husgrund",path:"/markarbeten/husgrund"},{name:"Husgrund Ramsjö",path:"/husgrund-ramsjo"}])]},{path:"/husgrund-hennan",title:ve("Husgrund i Hennan â lokal grundläggare"),description:"Husgrund i Hennan â vi finns pÃ¥ orten med verkstad och maskinpark. Schakt, dränering och VA klart för gjutning. Ring 070-657 14 42 för offert.",ogImage:pe.husgrundHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Husgrund i Hennan","Schakt och grundarbete i Hennan med omnejd.","/husgrund-hennan"),Ne(X.husgrundHennan),xe([{name:"Hem",path:"/"},{name:"Husgrund",path:"/markarbeten/husgrund"},{name:"Husgrund Hennan",path:"/husgrund-hennan"}])]},{path:"/tomtplanering-ljusdal",title:ve("Tomtplanering i Ljusdal â frÃ¥n rÃ¥mark till klar tomt"),description:"Tomtplanering i Ljusdal: grovplanering, matjord, gräsytor, infarter och dagvatten. Lokal grävfirma sedan 1996. Begär kostnadsfri offert i dag.",ogImage:pe.tomtLjusdal,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ljusdal"}]}),Ee("Tomtplanering i Ljusdal","Grov- och finplanering av tomter i Ljusdal med omnejd.","/tomtplanering-ljusdal"),Ne(X.tomtplaneringLjusdal),xe([{name:"Hem",path:"/"},{name:"Tomtplanering",path:"/markarbeten/tomtplanering"},{name:"Tomtplanering Ljusdal",path:"/tomtplanering-ljusdal"}])]},{path:"/tomtplanering-farila",title:ve("Tomtplanering i Färila â grov- & finplanering"),description:"Tomtplanering i Färila: vi planerar allt frÃ¥n nyavverkad skogstomt till färdiga gräsytor, infarter och stödmurar. Kostnadsfri offert efter platsbesök.",ogImage:pe.tomtFarila,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Färila"}]}),Ee("Tomtplanering i Färila","Grov- och finplanering av tomter i Färila med omnejd.","/tomtplanering-farila"),Ne(X.tomtplaneringFarila),xe([{name:"Hem",path:"/"},{name:"Tomtplanering",path:"/markarbeten/tomtplanering"},{name:"Tomtplanering Färila",path:"/tomtplanering-farila"}])]},{path:"/tomtplanering-jarvso",title:ve("Tomtplanering i Järvsö â sluttning & terrass"),description:"Tomtplanering i Järvsö med terrassering, stödmurar och dagvatten â vi formar sluttningstomter till användbara ytor. Ring 070-657 14 42 för offert.",ogImage:pe.tomtJarvso,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Järvsö"}]}),Ee("Tomtplanering i Järvsö","Tomtplanering med terrassering och stödmurar i Järvsö med omnejd.","/tomtplanering-jarvso"),Ne(X.tomtplaneringJarvso),xe([{name:"Hem",path:"/"},{name:"Tomtplanering",path:"/markarbeten/tomtplanering"},{name:"Tomtplanering Järvsö",path:"/tomtplanering-jarvso"}])]},{path:"/tomtplanering-ramsjo",title:ve("Tomtplanering i Ramsjö â nära & prisvärt"),description:"Tomtplanering i Ramsjö med kort framkörning frÃ¥n Hennan. GÃ¥rdsplaner, infarter och gräsytor â även mindre uppdrag blir prisvärda. Begär offert i dag.",ogImage:pe.tomtRamsjo,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Ramsjö"}]}),Ee("Tomtplanering i Ramsjö","Tomtplanering, gÃ¥rdsplaner och infarter i Ramsjö och norra Ljusdals kommun.","/tomtplanering-ramsjo"),Ne(X.tomtplaneringRamsjo),xe([{name:"Hem",path:"/"},{name:"Tomtplanering",path:"/markarbeten/tomtplanering"},{name:"Tomtplanering Ramsjö",path:"/tomtplanering-ramsjo"}])]},{path:"/tomtplanering-hennan",title:ve("Tomtplanering i Hennan â lokal entreprenör"),description:"Tomtplanering i Hennan â vi finns pÃ¥ orten och planerar tomter, gÃ¥rdsplaner och infarter med kort varsel. Ring 070-657 14 42 för kostnadsfri offert.",ogImage:pe.tomtHennan,jsonLd:[_e({areaServed:[{"@type":"Place",name:"Hennan"}]}),Ee("Tomtplanering i Hennan","Tomtplanering, gÃ¥rdsplaner och infarter i Hennan med omnejd.","/tomtplanering-hennan"),Ne(X.tomtplaneringHennan),xe([{name:"Hem",path:"/"},{name:"Tomtplanering",path:"/markarbeten/tomtplanering"},{name:"Tomtplanering Hennan",path:"/tomtplanering-hennan"}])]},{path:"/projekt",title:ve("Projekt & referenser â utförda arbeten sedan 1996"),description:"Se vilka typer av projekt vi utför: skogsbilvägar, enskilda avlopp, dräneringar, husgrunder och tomtplaneringar i Ljusdals kommun. Lokala referenser finns.",ogImage:pe.projekt,jsonLd:[Ne(X.projekt),xe([{name:"Hem",path:"/"},{name:"Projekt",path:"/projekt"}])]},{path:"/priser/vad-kostar-dranering",title:ve("Vad kostar dränering? Priser & exempel 2026"),description:"Vad kostar dränering av husgrund? Se prisexempel per meter, vad som pÃ¥verkar kostnaden och hur ROT-avdraget fungerar. Begär kostnadsfri offert frÃ¥n oss.",ogImage:pe.priserDranering,ogType:"article",jsonLd:[Ne(X.priserDranering),xe([{name:"Hem",path:"/"},{name:"Priser",path:"/priser/vad-kostar-dranering"}
157,{name:"Vad kostar dränering",path:"/priser/vad-kostar-dranering"}])]},{path:"/priser/snorojning-pris",title:ve("Snöröjning pris â vad kostar det per gÃ¥ng & säsong?"),description:"Vad kostar snöröjning? Se ungefärliga priser per utryckning och säsongsavtal, vad som pÃ¥verkar kostnaden och hur RUT-avdraget fungerar. Begär offert.",ogImage:pe.snorojningPris,ogType:"article",noindex:!0,jsonLd:[Ne(X.priserSnorojning),xe([{name:"Hem",path:"/"},{name:"Priser",path:"/priser/snorojning-pris"},{name:"Snöröjning pris",path:"/priser/snorojning-pris"}])]},{path:"/priser/vad-kostar-enskilt-avlopp",title:ve("Vad kostar enskilt avlopp? Priser & exempel 2026"),description:"Vad kostar ett nytt enskilt avlopp? Prisexempel för trekammarbrunn, infiltration och markbädd samt vad som pÃ¥verkar totalkostnaden. Kostnadsfri offert.",ogImage:pe.priserAvlopp,ogType:"article",jsonLd:[Ne(X.priserAvlopp),xe([{name:"Hem",path:"/"},{name:"Priser",path:"/priser/vad-kostar-enskilt-avlopp"},{name:"Vad kostar enskilt avlopp",path:"/priser/vad-kostar-enskilt-avlopp"}])]},{path:"/om-oss",title:ve("Om oss â grävfirma i Hennan sedan 1996"),description:"Hennans Grävtjänst AB grundades 1996 av Pär Nordström. Egen verkstad, modern maskinpark och 30 Ã¥rs erfarenhet av mark- och vägarbeten i Hälsingland.",ogImage:pe.omOss,jsonLd:[Fx(),xe([{name:"Hem",path:"/"},{name:"Om oss",path:"/om-oss"}])]},{path:"/kontakt",title:ve("Kontakt â begär kostnadsfri offert"),description:"Kontakta Hennans Grävtjänst AB: ring 070-657 14 42, mejla eller skicka offertförfrÃ¥gan direkt här. Vi svarar snabbt och offerten är alltid kostnadsfri.",ogImage:pe.kontakt,jsonLd:[_e(),xe([{name:"Hem",path:"/"},{name:"Kontakt",path:"/kontakt"}])]},{path:"/integritetspolicy",title:ve("Integritetspolicy"),description:"SÃ¥ behandlar Hennans Grävtjänst AB personuppgifter som lämnas via offertformulär och kontakt. Läs om lagring, ändamÃ¥l och dina rättigheter enligt GDPR.",ogImage:pe.integritetspolicy,jsonLd:[xe([{name:"Hem",path:"/"},{name:"Integritetspolicy",path:"/integritetspolicy"}])]},{path:"/tack",title:ve("Tack för din förfrÃ¥gan"),description:"Vi har tagit emot din offertförfrÃ¥gan och Ã¥terkommer sÃ¥ snart vi kan, oftast inom en arbetsdag. Vid brÃ¥dskande ärenden ring 070-657 14 42.",ogImage:pe.tack,noindex:!0,inSitemap:!1}],OA=Object.fromEntries(Mm.map(t=>[t.path,t])),bg=Mm[0].title,CA=Mm[0].description,VA="Hennans Grävtjänst AB";
157function Aa(t,s){let l=document.head.querySelector(t);l||(l=document.createElement("meta"),document.head.appendChild(l)),Object.entries(s).forEach(([o,c])=>l?.setAttribute(o,c))}function FA(t){const s=document.head.querySelector('link[rel="canonical"]');if(!t){s?.remove();return}const l=s??document.createElement("link");l.rel="canonical",l.href=t,s||document.head.appendChild(l)}function JA(){const[t]=bi();return k.useEffect(()=>{const s=t.replace(/\/+$/,"")||"/",l=OA[s];document.title=l?.title??bg;const o=l?.description??CA,c=l?`${Y.url}${l.path==="/"?"/":l.path}`:void 0,u=l?.ogImage?`${Y.url}${l.ogImage}`:void 0,m=!l||l.noindex;Aa('meta[name="description"]',{name:"description",content:o}),Aa('meta[name="robots"]',{name:"robots",content:m?"noindex, follow":"index, follow"}),Aa('meta[property="og:type"]',{property:"og:type",content:l?.ogType==="article"?"article":"website"}),Aa('meta[property="og:title"]',{property:"og:title",content:l?.title??bg}),Aa('meta[property="og:description"]',{property:"og:description",content:o}),Aa('meta[property="og:site_name"]',{property:"og:site_name",content:VA}),Aa('meta[name="twitter:card"]',{name:"twitter:card",content:u?"summary_large_image":"summary"}),Aa('meta[name="twitter:title"]',{name:"twitter:title",content:l?.title??bg}),Aa('meta[name="twitter:description"]',{name:"twitter:description",content:o}),FA(c),c?Aa('meta[property="og:url"]',{property:"og:url",content:c}):document.head.querySelector('meta[property="og:url"]')?.remove(),u?(Aa('meta[property="og:image"]',{property:"og:image",content:u}),Aa('meta[name="twitter:image"]',{name:"twitter:image",content:u})):(document.head.querySelector('meta[property="og:image"]')?.remove(),document.head.querySelector('meta[name="twitter:image"]')?.remove()),document.head.querySelectorAll('script[data-route-jsonld="true"]').forEach(f=>f.remove());for(const f of l?.jsonLd??[]){const p=document.createElement("script");p.type="application/ld+json",p.dataset.routeJsonld="true",p.textContent=f,document.head.appendChild(p)}},[t]),null}const Jx=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,Gx=Xk,GA=(t,s)=>l=>{var o;if(s?.variants==null)return Gx(t,l?.class,l?.className);const{variants:c,defaultVariants:u}=s,m=Object.keys(c).map(h=>{const b=l?.[h],v=u?.[h];if(b===null)return null;const S=Jx(b)||Jx(v);return c[h][S]}),f=l&&Object.entries(l).reduce((h,b)=>{let[v,S]=b;return S===void 0||(h[v]=S),h},{}),p=s==null||(o=s.compoundVariants)===null||o===void 0?void 0:o.reduce((h,b)=>{let{class:v,className:S,...T}=b;return Object.entries(T).every(A=>{let[y,R]=A;return Array.isArray(R)?R.includes({...u,...f}[y]):{...u,...f}[y]===R})?[...h,v,S]:h},[]);return Gx(t,m,p,l?.class,l?.className)},zA=GA("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-transparent shadow-xs hover:bg-accent dark:bg-transparent dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function Qt({className:t,variant:s,size:l,asChild:o=!1,...c}){const u=o?AT:"button";return n.jsx(u,{"data-loc":"client/src/components/ui/button.tsx:52","data-slot":"button",className:sa(zA({variant:s,size:l,className:t})),...c})}function Tt(t,s){typeof window>"u"||window.umami?.track(t,s)}const zx=[{label:"Vägentreprenad",href:"/vagentreprenad"},{label:"Vatten & avlopp",href:"/vatten-avlopp"},{label:"Dränering",href:"/dranering"},{label:"Markarbeten",href:"/markarbeten"},{label:"Fler tjänster",href:"/#tjanster"},{label:"Om oss",href:"/om-oss"}];function qA(){const[t,s]=k.useState(!1),[l]=bi();return n.jsxs("header",{"data-loc":"client/src/components/site/SiteHeader.tsx:22",className:"sticky top-0 z-50 border-b border-border bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/85",children:[n.jsxs("div",{"data-loc":"client/src/components/site/SiteHeader.tsx:23",className:"container flex h-24 items-center justify-between gap-4 md:h-28",children:[n.jsx(N,{"data-loc":"client/src/components/site/SiteHeader.tsx:24",href:"/",className:"flex shrink-0 items-center gap-3","aria-label":"Hennans Grävtjänst AB â till startsidan",children:n.jsx("img",{"data-loc":"client/src/components/site/SiteHeader.tsx:25",src:Y.logoUrl,
157srcSet:Qr[Y.logoUrl],sizes:"(min-width: 768px) 175px, 144px",alt:"Hennans Grävtjänst AB logotyp",className:"h-[4.5rem] w-auto md:h-[5.5rem]",width:175,height:118})}),n.jsx("nav",{"data-loc":"client/src/components/site/SiteHeader.tsx:36",className:"hidden items-center gap-1 lg:flex","aria-label":"Huvudmeny",children:zx.map(o=>n.jsx(N,{"data-loc":"client/src/components/site/SiteHeader.tsx:38",href:o.href,className:`rounded-md px-3 py-2 text-sm font-medium transition-colors hover:bg-secondary hover:text-secondary-foreground ${l===o.href?"text-primary":"text-foreground/80"}`,children:o.label},o.href))}),n.jsxs("div",{"data-loc":"client/src/components/site/SiteHeader.tsx:50",className:"flex items-center gap-2",children:[n.jsxs("a",{"data-loc":"client/src/components/site/SiteHeader.tsx:51",href:Y.phoneMobileHref,onClick:()=>Tt("phone_click",{placement:"header_desktop"}),className:"hidden items-center gap-2 rounded-md px-3 py-2 text-sm font-semibold text-primary transition-colors hover:bg-secondary md:flex",children:[n.jsx(gr,{"data-loc":"client/src/components/site/SiteHeader.tsx:56",className:"h-4 w-4","aria-hidden":"true"}),Y.phoneMobile]}),n.jsx(Qt,{"data-loc":"client/src/components/site/SiteHeader.tsx:59",asChild:!0,className:"hidden bg-accent text-accent-foreground hover:bg-accent/90 sm:inline-flex",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteHeader.tsx:60",href:"/kontakt",onClick:()=>Tt("quote_cta_click",{placement:"header_desktop",destination:"contact"}),children:"Begär offert"})}),n.jsx("button",{"data-loc":"client/src/components/site/SiteHeader.tsx:62",type:"button",className:"inline-flex h-10 w-10 items-center justify-center rounded-md border border-border lg:hidden","aria-expanded":t,"aria-label":t?"Stäng menyn":"Ãppna menyn",onClick:()=>s(o=>!o),children:t?n.jsx(LA,{"data-loc":"client/src/components/site/SiteHeader.tsx:69",className:"h-5 w-5","aria-hidden":"true"}):n.jsx(AA,{"data-loc":"client/src/components/site/SiteHeader.tsx:69",className:"h-5 w-5","aria-hidden":"true"})})]})]}),t&&n.jsx("nav",{"data-loc":"client/src/components/site/SiteHeader.tsx:75",className:"border-t border-border bg-background lg:hidden","aria-label":"Mobilmeny",children:n.jsxs("div",{"data-loc":"client/src/components/site/SiteHeader.tsx:76",className:"container flex flex-col py-2",children:[zx.map(o=>n.jsx(N,{"data-loc":"client/src/components/site/SiteHeader.tsx:78",href:o.href,onClick:()=>s(!1),className:"rounded-md px-3 py-3 text-base font-medium text-foreground/90 transition-colors hover:bg-secondary",children:o.label},o.href)),n.jsxs("div",{"data-loc":"client/src/components/site/SiteHeader.tsx:87",className:"mt-2 flex flex-col gap-2 border-t border-border pt-3 pb-2",children:[n.jsxs("a",{"data-loc":"client/src/components/site/SiteHeader.tsx:88",href:Y.phoneMobileHref,onClick:()=>Tt("phone_click",{placement:"header_mobile"}),className:"flex items-center gap-2 px-3 py-2 font-semibold text-primary",children:[n.jsx(gr,{"data-loc":"client/src/components/site/SiteHeader.tsx:89",className:"h-4 w-4","aria-hidden":"true"}),Y.phoneMobile]}),n.jsx(Qt,{"data-loc":"client/src/components/site/SiteHeader.tsx:92",asChild:!0,className:"mx-3 bg-accent text-accent-foreground hover:bg-accent/90",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteHeader.tsx:93",href:"/kontakt",onClick:()=>{Tt("quote_cta_click",{placement:"header_mobile",destination:"contact"}),s(!1)},children:"Begär kostnadsfri offert"})})]})]})})]})}const PA=[{label:"Vägentreprenad",href:"/vagentreprenad"},{label:"Anlägga grusväg",href:"/vagentreprenad/anlagga-grusvag"},{label:"Skogsbilväg",href:"/vagentreprenad/skogsbilvag"},{label:"VägunderhÃ¥ll & dikning",href:"/vagentreprenad/vagunderhall-dikning"},{label:"Vägtrumma",href:"/vagentreprenad/vagtrumma"},{label:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{label:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{label:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{label:"Dränering",href:"/dranering"},{label:"Markarbeten",href:"/markarbeten"},{label:"Husgrund",href:"/markarbeten/husgrund"},{label:"Tomtplanering",href:"/markarbeten/tomtplanering"},{label:"Snöröjning",href:"/snorojning"},{label:"Trädfällning",href:"/tradfallning"},{label:"Smide",href:"/smide"}],BA=[{label:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"},{label:"Grävfirma Färila",href:"/gravfirma-farila"},{label:"Grävfirma Järvsö",href:"/gravfirma-jarvso"},{label:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"},{label:"Grävfirma Hennan",href:"/gravfirma-hennan"}],UA=[{label:"Vad kostar dränering?",href:"/priser/vad-kostar-dranering"},{label:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"}];function QA(){return n.jsxs("footer",{"data-loc":"client/src/components/site/SiteFooter.tsx:39",className:"border-t border-border bg-background text-foreground",children:[n.jsxs("div",{"data-loc":"client/src/components/site/SiteFooter.tsx:40",className:"container grid gap-10 py-14 md:grid-cols-2 lg:grid-cols-4",children:[n.jsxs("div",{"data-loc":"client/src/components/site/SiteFooter.tsx:41",children:[n.jsx("img",{"data-loc":"client/src/components/site/SiteFooter.tsx:42",src:Y.logoUrl,
157srcSet:Qr[Y.logoUrl],sizes:"175px",alt:"Hennans Grävtjänst AB logotyp",className:"h-24 w-auto",width:175,height:118,loading:"lazy"}),n.jsx("h2",{"data-loc":"client/src/components/site/SiteFooter.tsx:52",className:"mt-4 font-display text-xl font-bold text-primary",children:Y.name}),n.jsxs("p",{"data-loc":"client/src/components/site/SiteFooter.tsx:53",className:"mt-3 max-w-xs text-sm leading-relaxed text-muted-foreground",children:["Grävfirma och maskinentreprenör i ",Y.locality,", ",Y.municipality,". Grundad ",Y.founded," av ",Y.founder,". F-skattsedel och egen verkstad."]}),n.jsxs("div",{"data-loc":"client/src/components/site/SiteFooter.tsx:56",className:"mt-5 space-y-2 text-sm",children:[n.jsxs("a",{"data-loc":"client/src/components/site/SiteFooter.tsx:57",href:Y.phoneMobileHref,onClick:()=>Tt("phone_click",{placement:"footer"}),className:"flex items-center gap-2 text-foreground/90 hover:underline",children:[n.jsx(gr,{"data-loc":"client/src/components/site/SiteFooter.tsx:58",className:"h-4 w-4 shrink-0","aria-hidden":"true"})," ",Y.phoneMobile]}),n.jsxs("a",{"data-loc":"client/src/components/site/SiteFooter.tsx:60",href:Y.emailHref,onClick:()=>Tt("email_click",{placement:"footer"}),className:"flex items-center gap-2 text-foreground/90 hover:underline",children:[n.jsx(Lm,{"data-loc":"client/src/components/site/SiteFooter.tsx:61",className:"h-4 w-4 shrink-0","aria-hidden":"true"})," ",Y.email]}),n.jsxs("p",{"data-loc":"client/src/components/site/SiteFooter.tsx:63",className:"flex items-center gap-2 text-foreground/90",children:[n.jsx(rr,{"data-loc":"client/src/components/site/SiteFooter.tsx:64",className:"h-4 w-4 shrink-0","aria-hidden":"true"})," ",Y.locality,", ",Y.municipality]})]})]}),n.jsxs("nav",{"data-loc":"client/src/components/site/SiteFooter.tsx:69","aria-label":"Tjänster",children:[n.jsx("h3",{"data-loc":"client/src/components/site/SiteFooter.tsx:70",className:"font-display text-sm font-bold tracking-wide uppercase text-muted-foreground",children:"Tjänster"}),n.jsx("ul",{"data-loc":"client/src/components/site/SiteFooter.tsx:71",className:"mt-4 grid gap-2 text-sm",children:PA.map(t=>n.jsx("li",{"data-loc":"client/src/components/site/SiteFooter.tsx:73",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteFooter.tsx:74",href:t.href,className:"text-foreground/80 hover:text-primary hover:underline",children:t.label})},t.href))})]}),n.jsxs("nav",{"data-loc":"client/src/components/site/SiteFooter.tsx:80","aria-label":"Verksamhetsområden",children:[n.jsx("h3",{"data-loc":"client/src/components/site/SiteFooter.tsx:81",className:"font-display text-sm font-bold tracking-wide uppercase text-muted-foreground",children:"Verksamhetsområde"}),n.jsx("ul",{"data-loc":"client/src/components/site/SiteFooter.tsx:82",className:"mt-4 grid gap-2 text-sm",children:BA.map(t=>n.jsx("li",{"data-loc":"client/src/components/site/SiteFooter.tsx:84",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteFooter.tsx:85",href:t.href,className:"text-foreground/80 hover:text-primary hover:underline",children:t.label})},t.href))}),n.jsx("h3",{"data-loc":"client/src/components/site/SiteFooter.tsx:89",className:"mt-8 font-display text-sm font-bold tracking-wide uppercase text-muted-foreground",children:"Prisguider"}),n.jsx("ul",{"data-loc":"client/src/components/site/SiteFooter.tsx:90",className:"mt-4 grid gap-2 text-sm",children:UA.map(t=>n.jsx("li",{"data-loc":"client/src/components/site/SiteFooter.tsx:92",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteFooter.tsx:93",href:t.href,className:"text-foreground/80 hover:text-primary hover:underline",children:t.label})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/components/site/SiteFooter.tsx:99",children:[n.jsx("h3",{"data-loc":"client/src/components/site/SiteFooter.tsx:100",className:"font-display text-sm font-bold tracking-wide uppercase text-muted-foreground",children:"Företaget"}),n.jsxs("ul",{"data-loc":"client/src/components/site/SiteFooter.tsx:101",className:"mt-4 grid gap-2 text-sm",children:[n.jsx("li",{"data-loc":"client/src/components/site/SiteFooter.tsx:102",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteFooter.tsx:102",href:"/om-oss",className:"text-foreground
157/80 hover:text-primary hover:underline",children:"Om oss"})}),n.jsx("li",{"data-loc":"client/src/components/site/SiteFooter.tsx:103",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteFooter.tsx:103",href:"/projekt",className:"text-foreground/80 hover:text-primary hover:underline",children:"Projekt & referenser"})}),n.jsx("li",{"data-loc":"client/src/components/site/SiteFooter.tsx:104",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteFooter.tsx:104",href:"/kontakt",className:"text-foreground/80 hover:text-primary hover:underline",children:"Kontakt & offert"})}),n.jsx("li",{"data-loc":"client/src/components/site/SiteFooter.tsx:105",children:n.jsx(N,{"data-loc":"client/src/components/site/SiteFooter.tsx:105",href:"/integritetspolicy",className:"text-foreground/80 hover:text-primary hover:underline",children:"Integritetspolicy"})})]}),n.jsx("p",{"data-loc":"client/src/components/site/SiteFooter.tsx:107",className:"mt-8 text-sm leading-relaxed text-muted-foreground",children:"Verksamma i hela Ljusdals kommun med omnejd: Hennan, Ljusdal, Färila, Järvsö och Ramsjö."})]})]}),n.jsx("div",{"data-loc":"client/src/components/site/SiteFooter.tsx:112",className:"border-t border-border",children:n.jsxs("div",{"data-loc":"client/src/components/site/SiteFooter.tsx:113",className:"container flex flex-col items-start justify-between gap-2 py-5 text-xs text-muted-foreground sm:flex-row sm:items-center",children:[n.jsxs("p",{"data-loc":"client/src/components/site/SiteFooter.tsx:114",children:["© ",new Date().getFullYear()," ",Y.name,". Verksam sedan ",Y.founded,"."]}),n.jsx("p",{"data-loc":"client/src/components/site/SiteFooter.tsx:115",children:"Innehar F-skattsedel."})]})})]})}function IA({children:t}){return n.jsxs("div",{"data-loc":"client/src/components/site/Layout.tsx:7",className:"flex min-h-screen flex-col bg-background text-foreground",children:[n.jsx("a",{"data-loc":"client/src/components/site/Layout.tsx:8",href:"#innehall",className:"sr-only focus:not-sr-only focus:absolute focus:z-[60] focus:bg-accent focus:px-4 focus:py-2 focus:text-accent-foreground",children:"Hoppa till innehÃ¥ll"}),n.jsx(qA,{"data-loc":"client/src/components/site/Layout.tsx:14"}),n.jsx("main",{"data-loc":"client/src/components/site/Layout.tsx:15",id:"innehall",className:"flex-1",children:t}),n.jsx(QA,{"data-loc":"client/src/components/site/Layout.tsx:16"})]})}const KA=k.createContext(void 0);function YA({children:t,defaultTheme:s="light",switchable:l=!1}){const[o,c]=k.useState(()=>l&&localStorage.getItem("theme")||s);k.useEffect(()=>{const m=document.documentElement;o==="dark"?m.classList.add("dark"):m.classList.remove("dark"),l&&localStorage.setItem("theme",o)},[o,l]);const u=l?()=>{c(m=>m==="light"?"dark":"light")}:void 0;return n.jsx(KA.Provider,{"data-loc":"client/src/contexts/ThemeContext.tsx:52",value:{theme:o,toggleTheme:u,switchable:l},children:t})}function ye({title:t="Behöver du hjälp med ditt projekt?",text:s="Ring oss direkt eller skicka en offertförfrÃ¥gan â vi Ã¥terkommer snabbt och offerten är alltid kostnadsfri."}){return n.jsx("section",{"data-loc":"client/src/components/site/CtaBand.tsx:17",className:"bg-primary text-primary-foreground",children:n.jsxs("div",{"data-loc":"client/src/components/site/CtaBand.tsx:18",className:"container flex flex-col items-start gap-6 py-12 md:flex-row md:items-center md:justify-between md:py-14",children:[n.jsxs("div",{"data-loc":"client/src/components/site/CtaBand.tsx:19",className:"max-w-2xl",children:[n.jsx("h2",{"data-loc":"client/src/components/site/CtaBand.tsx:20",className:"font-display text-2xl font-bold md:text-3xl",children:t}),n.jsx("p",{"data-loc":"client/src/components/site/CtaBand.tsx:21",className:"mt-2 text-primary-foreground/85",children:s}),n.jsxs("p",{"data-loc":"client/src/components/site/CtaBand.tsx:22",className:"mt-3 text-sm text-primary-foreground/70",children:[Y.name," · ",Y.locality,", ",Y.municipality," · ",n.jsx("a",{"data-loc":"client/src/components/site/CtaBand.tsx:23",className:"underline",href:Y.emailHref,children:Y.email})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/CtaBand.tsx:26",className:"flex flex-wrap gap-3",children:[n.jsx(Qt,{"data-loc":"client/src/components/site/CtaBand.tsx:27",asChild:!0,size:"lg",className:"bg-accent text-accent-foreground hover:bg-accent/90",children:n.jsxs("a",{"data-loc":"client/src/components/site/CtaBand.tsx:28",href:Y.phoneMobileHref,onClick:()=>Tt("phone_click",{placement:"cta_band"}),children:[n.jsx(gr,{"data-loc":"client/src/components/site/CtaBand.tsx:29",className:"h-4 w-4","aria-hidden":"true"})," Ring ",Y.phoneMobile]})}),n.jsx(Qt,{"data-loc":"client/src/components/site/CtaBand.tsx:32",asChild:!0,size:"lg",variant:"outline",className:"border-primary-foreground
157/40 text-primary-foreground hover:bg-primary-foreground/10",children:n.jsxs(N,{"data-loc":"client/src/components/site/CtaBand.tsx:33",href:"/kontakt",onClick:()=>Tt("quote_cta_click",{placement:"cta_band",destination:"contact"}),children:[n.jsx(Lm,{"data-loc":"client/src/components/site/CtaBand.tsx:34",className:"h-4 w-4","aria-hidden":"true"})," Begär offert"]})})]})]})})}function cj(t){const s=t+"CollectionProvider",[l,o]=$s(s),[c,u]=l(s,{collectionRef:{current:null},itemMap:new Map}),m=y=>{const{scope:R,children:L}=y,_=se.useRef(null),F=se.useRef(new Map).current;return n.jsx(c,{scope:R,itemMap:F,collectionRef:_,children:L})};m.displayName=s;const f=t+"CollectionSlot",p=di(f),h=se.forwardRef((y,R)=>{const{scope:L,children:_}=y,F=u(f,L),$=ft(R,F.collectionRef);return n.jsx(p,{ref:$,children:_})});h.displayName=f;const b=t+"CollectionItemSlot",v="data-radix-collection-item",S=di(b),T=se.forwardRef((y,R)=>{const{scope:L,children:_,...F}=y,$=se.useRef(null),P=ft(R,$),U=u(b,L);return se.useEffect(()=>(U.itemMap.set($,{ref:$,...F}),()=>void U.itemMap.delete($))),n.jsx(S,{[v]:"",ref:P,children:_})});T.displayName=b;function A(y){const R=u(t+"CollectionConsumer",y);return se.useCallback(()=>{const _=R.collectionRef.current;if(!_)return[];const F=Array.from(_.querySelectorAll(`[${v}]`));return Array.from(R.itemMap.values()).sort((U,M)=>F.indexOf(U.ref.current)-F.indexOf(M.ref.current))},[R.collectionRef,R.itemMap])}return[{Provider:m,Slot:h,ItemSlot:T},A,o]}var Vc="Collapsible",[XA,dj]=$s(Vc),[$A,Dm]=XA(Vc),uj=k.forwardRef((t,s)=>{const{__scopeCollapsible:l,open:o,defaultOpen:c,disabled:u,onOpenChange:m,...f}=t,[p,h]=mi({prop:o,defaultProp:c??!1,onChange:m,caller:Vc});return n.jsx($A,{scope:l,disabled:u,contentId:ji(),open:p,onOpenToggle:k.useCallback(()=>h(b=>!b),[h]),children:n.jsx(rt.div,{"data-state":Om(p),"data-disabled":u?"":void 0,...f,ref:s})})});uj.displayName=Vc;var gj="CollapsibleTrigger",mj=k.forwardRef((t,s)=>{const{__scopeCollapsible:l,...o}=t,c=Dm(gj,l);return n.jsx(rt.button,{type:"button","aria-controls":c.contentId,"aria-expanded":c.open||!1,"data-state":Om(c.open),"data-disabled":c.disabled?"":void 0,disabled:c.disabled,...o,ref:s,onClick:nt(t.onClick,c.onOpenToggle)})});mj.displayName=gj;var _m="CollapsibleContent",fj=k.forwardRef((t,s)=>{const{forceMount:l,...o}=t,c=Dm(_m,t.__scopeCollapsible);return n.jsx(Rm,{present:l||c.open,children:({present:u})=>n.jsx(ZA,{...o,ref:s,present:u})})});fj.displayName=_m;var ZA=k.forwardRef((t,s)=>{const{__scopeCollapsible:l,present:o,children:c,...u}=t,m=Dm(_m,l),[f,p]=k.useState(o),h=k.useRef(null),b=ft(s,h),v=k.useRef(0),S=v.current,T=k.useRef(0),A=T.current,y=m.open||f,R=k.useRef(y),L=k.useRef(void 0);return k.useEffect(()=>{const _=requestAnimationFrame(()=>R.current=!1);return()=>cancelAnimationFrame(_)},[]),Ct(()=>{const _=h.current;if(_){L.current=L.current||{transitionDuration:_.style.transitionDuration,animationName:_.style.animationName},_.style.transitionDuration="0s",_.style.animationName="none";const F=_.getBoundingClientRect();v.current=F.height,T.current=F.width,R.current||(_.style.transitionDuration=L.current.transitionDuration,_.style.animationName=L.current.animationName),p(o)}},[m.open,o]),n.jsx(rt.div,{"data-state":Om(m.open),"data-disabled":m.disabled?"":void 0,id:m.contentId,hidden:!y,...u,ref:b,style:{"--radix-collapsible-content-height":S?`${S}px`:void 0,"--radix-collapsible-content-width":A?`${A}px`:void 0,...t.style},children:y&&c})});function Om(t){return t?"open":"closed"}var WA=uj,eH=mj,tH=fj,aH=k.createContext(void 0);function pj(t){const s=k.useContext(aH);return t||s||"ltr"}var Ja="Accordion",nH=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Cm,rH,sH]=cj(Ja),[Fc]=$s(Ja,[sH,dj]),Vm=dj(),hj=se.forwardRef((t,s)=>{const{type:l,...o}=t,c=o,u=o;return n.jsx(Cm.Provider,{scope:t.__scopeAccordion,children:l==="multiple"?n.jsx(cH,{...u,ref:s}):n.jsx(oH,{...c,ref:s})})});hj.displayName=Ja;var[vj,lH]=Fc(Ja),[xj,iH]=Fc(Ja,{collapsible:!1}),oH=se.forwardRef((t,s)=>{const{value:l,defaultValue:o,onValueChange:c=()=>{},collapsible:u=!1,...m}=t,[f,p]=mi({prop:l,defaultProp:o??"",onChange:c,caller:Ja});return n.jsx(vj,{scope:t.__scopeAccordion,value:se.useMemo(()=>f?[f]:[],[f]),onItemOpen:p,onItemClose:se.useCallback(()=>u&&p(""),[u,p]),children:n.jsx(xj,{scope:t.__scopeAccordion,collapsible:u,children:n.jsx(bj,{...m,ref:s})})})}),cH=se.forwardRef((t,s)=>{const{value:l,defaultValue:o,onValueChange:c=()=>{},...u}=t,[m,f]=mi({prop:l,defaultProp:o??[],onChange:c,caller:Ja}),p=se.useCallback(b=>f((v=[])=>[...v,b]),[f]),h=se.useCallback(b=>f((v=[])=>v.filter(S=>S!==b)),[f]);return n.jsx(vj,{scope:t.__scopeAccordion,value:m,onItemOpen:p,onItemClose:h,children:n.jsx(xj,{scope:t.__scopeAccordion,collapsible:!0,children:n.jsx(bj,{...u,ref:s})})})}),[dH,Jc]=Fc(Ja),bj=se.forwardRef((t,s)=>{const{__scopeAccordion:l,disabled:o,dir:c,orientation:u="vertical",...m}=t,f=se.useRef(null),p=ft(f,s),h=rH(l),v=pj(c)==="ltr",S=nt(t.onKeyDown,T=>{if(!nH.includes(T.key))return;const A=T.target,y=h().filter(V=>!V.ref.current?.disabled),R=y.findIndex(V=>V.ref.current===A),L=y.length;if(R===-1)return;T.preventDefault();let _=R;const F=0,$=L-1,P=()=>{_=R+1,_>$&&(_=F)},U=()=>{_=R-1,_<F&&(_=$)};switch(T.key){case"Home":_=F;break;case"End":_=$;break;case"ArrowRight":u==="horizontal"&&(v?P():U());break;case"ArrowDown":u==="vertical"&&P();break;case"ArrowLeft":u==="horizontal"&&(v?U():P());break;case"ArrowUp":u==="vertical"&&U();break}const M=_%L;y[M].ref.current?.focus()});return n.jsx(dH,{scope:l,disabled:o,direction:c,orientation:u,children:n.jsx(Cm.
157Slot,{scope:l,children:n.jsx(rt.div,{...m,"data-orientation":u,ref:p,onKeyDown:o?void 0:S})})})}),vc="AccordionItem",[uH,Fm]=Fc(vc),kj=se.forwardRef((t,s)=>{const{__scopeAccordion:l,value:o,...c}=t,u=Jc(vc,l),m=lH(vc,l),f=Vm(l),p=ji(),h=o&&m.value.includes(o)||!1,b=u.disabled||t.disabled;return n.jsx(uH,{scope:l,open:h,disabled:b,triggerId:p,children:n.jsx(WA,{"data-orientation":u.orientation,"data-state":Rj(h),...f,...c,ref:s,disabled:b,open:h,onOpenChange:v=>{v?m.onItemOpen(o):m.onItemClose(o)}})})});kj.displayName=vc;var jj="AccordionHeader",yj=se.forwardRef((t,s)=>{const{__scopeAccordion:l,...o}=t,c=Jc(Ja,l),u=Fm(jj,l);return n.jsx(rt.h3,{"data-orientation":c.orientation,"data-state":Rj(u.open),"data-disabled":u.disabled?"":void 0,...o,ref:s})});yj.displayName=jj;var em="AccordionTrigger",Sj=se.forwardRef((t,s)=>{const{__scopeAccordion:l,...o}=t,c=Jc(Ja,l),u=Fm(em,l),m=iH(em,l),f=Vm(l);return n.jsx(Cm.ItemSlot,{scope:l,children:n.jsx(eH,{"aria-disabled":u.open&&!m.collapsible||void 0,"data-orientation":c.orientation,id:u.triggerId,...f,...o,ref:s})})});Sj.displayName=em;var Nj="AccordionContent",Tj=se.forwardRef((t,s)=>{const{__scopeAccordion:l,...o}=t,c=Jc(Ja,l),u=Fm(Nj,l),m=Vm(l);return n.jsx(tH,{role:"region","aria-labelledby":u.triggerId,"data-orientation":c.orientation,...m,...o,ref:s,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...t.style}})});Tj.displayName=Nj;function Rj(t){return t?"open":"closed"}var gH=hj,mH=kj,fH=yj,pH=Sj,hH=Tj;function vH({...t}){return n.jsx(gH,{"data-loc":"client/src/components/ui/accordion.tsx:10","data-slot":"accordion",...t})}function xH({className:t,...s}){return n.jsx(mH,{"data-loc":"client/src/components/ui/accordion.tsx:18","data-slot":"accordion-item",className:sa("border-b last:border-b-0",t),...s})}function bH({className:t,children:s,...l}){return n.jsx(fH,{"data-loc":"client/src/components/ui/accordion.tsx:32",className:"flex",children:n.jsxs(pH,{"data-loc":"client/src/components/ui/accordion.tsx:33","data-slot":"accordion-trigger",className:sa("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",t),...l,children:[s,n.jsx(wm,{"data-loc":"client/src/components/ui/accordion.tsx:42",className:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"})]})})}function kH({className:t,children:s,...l}){return n.jsx(hH,{"data-loc":"client/src/components/ui/accordion.tsx:54","data-slot":"accordion-content",className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",...l,children:n.jsx("div",{"data-loc":"client/src/components/ui/accordion.tsx:59",className:sa("pt-0 pb-4",t),children:s})})}function Te({items:t,title:s="Vanliga frågor"}){return n.jsxs("section",{"data-loc":"client/src/components/site/FaqSection.tsx:16",className:"container py-12 md:py-16",children:[n.jsx("h2",{"data-loc":"client/src/components/site/FaqSection.tsx:17",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:s}),n.jsx(vH,{"data-loc":"client/src/components/site/FaqSection.tsx:18",type:"single",collapsible:!0,className:"mt-6 max-w-3xl",children:t.map((l,o)=>n.jsxs(xH,{"data-loc":"client/src/components/site/FaqSection.tsx:20",value:`faq-${o}`,children:[n.jsx(bH,{"data-loc":"client/src/components/site/FaqSection.tsx:21",className:"text-left text-base font-semibold",children:l.q}),n.jsx(kH,{"data-loc":"client/src/components/site/FaqSection.tsx:22",className:"text-base leading-relaxed text-foreground/85",children:l.a})]},o))})]})}function Jm({title:t,description:s,href:l,image:o,imageAlt:c}){return n.jsxs(N,{"data-loc":"client/src/components/site/ServiceCard.tsx:15",href:l,className:"group flex flex-col overflow-hidden rounded-lg border border-border bg-card text-card-foreground shadow-sm transition-shadow hover:shadow-md",children:[n.jsx("img",{"data-loc":"client/src/components/site/ServiceCard.tsx:19",src:o,srcSet:Qr[o
157],sizes:"(min-width: 1024px) 33vw, (min-width: 640px) 50vw, 100vw",alt:c,className:"aspect-[3/2] w-full object-cover transition-transform duration-300 group-hover:scale-[1.03]",loading:"lazy",width:600,height:400}),n.jsxs("div",{"data-loc":"client/src/components/site/ServiceCard.tsx:29",className:"flex flex-1 flex-col p-5",children:[n.jsx("h3",{"data-loc":"client/src/components/site/ServiceCard.tsx:30",className:"font-display text-lg font-bold text-primary",children:t}),n.jsx("p",{"data-loc":"client/src/components/site/ServiceCard.tsx:31",className:"mt-2 flex-1 text-sm leading-relaxed text-foreground/80",children:s}),n.jsxs("span",{"data-loc":"client/src/components/site/ServiceCard.tsx:32",className:"mt-4 inline-flex items-center gap-1 text-sm font-semibold text-accent",children:["Läs mer ",n.jsx(yA,{"data-loc":"client/src/components/site/ServiceCard.tsx:33",className:"h-4 w-4 transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})]})]})}const jH=[{title:"Vägentreprenad",description:"Vi bygger och underhÃ¥ller grusvägar, skogsbilvägar och infarter â terrassering, dikning, trummor och grusning som hÃ¥ller för Hälsinglands klimat.",href:"/vagentreprenad",image:ne.vagentreprenad,imageAlt:"Grävmaskin som arbetar med vägentreprenad pÃ¥ grusväg i Hälsingland"},{title:"Vatten & avlopp",description:"Kompletta enskilda avlopp med trekammarbrunn, infiltration eller markbädd â frÃ¥n provgrop och tillstÃ¥ndsunderlag till färdig anläggning.",href:"/vatten-avlopp",image:ne.va,imageAlt:"Grävning för vatten och avlopp med nedläggning av VA-ledningar"},{title:"Dränering",description:"Omdränering av husgrunder med modern fuktisolering. Torr källare och skyddad grund i 30â50 Ã¥r framÃ¥t.",href:"/dranering",image:ne.dranering,imageAlt:"Dränering av husgrund med dräneringsledning och makadam"},{title:"Markarbeten",description:"Husgrunder, tomtplanering, infarter, schakt och masshantering â frÃ¥n rÃ¥mark till färdig tomt.",href:"/markarbeten",image:ne.markarbeten,imageAlt:"Markarbeten med grävmaskin för husgrund och tomtplanering"},{title:"Snöröjning",description:"Snöröjning av infarter, gÃ¥rdsplaner och vägar i Hennan med omnejd. Säsongsavtal eller enstaka utryckningar.",href:"/snorojning",image:ne.snorojning,imageAlt:"Traktor med plog som snöröjer väg i norra Ljusdals kommun"},{title:"Trädfällning",description:"Säker trädfällning med maskinstöd, även nära hus och ledningar. Vi tar hand om ris, stammar och stubbar.",href:"/tradfallning",image:ne.tradfallning,imageAlt:"Trädfällning med maskinstöd nära byggnad"},{title:"Smide & verkstad",description:"Reparationer, svetsning och specialtillverkning i egen verkstad i Hennan â för lantbruk, skog och entreprenad.",href:"/smide",image:ne.smide,imageAlt:"Svetsarbete i smidesverkstad hos Hennans Grävtjänst"}],yH=[{name:"Ljusdal",href:"/gravfirma-ljusdal"},{name:"Färila",href:"/gravfirma-farila"},{name:"Järvsö",href:"/gravfirma-jarvso"},{name:"Ramsjö",href:"/gravfirma-ramsjo"},{name:"Hennan",href:"/gravfirma-hennan"}],SH=[{icon:oj,title:"30 Ã¥rs erfarenhet",text:"Verksamma sedan 1996 â vi har byggt vägar och grävt i Hälsinglands moränmarker i tre decennier."},{icon:rr,title:"Lokal förankring",text:"Vi utgÃ¥r frÃ¥n Hennan vid riksväg 84 och känner markförhÃ¥llandena i hela Ljusdals kommun."},{icon:EA,title:"Egen verkstad",text:"Med egen smides- och maskinverkstad löser vi reparationer direkt â utan onödiga stillestÃ¥nd."},{icon:Em,title:"F-skatt & fast offert",text:"F-skattsedel, försäkringar och alltid en kostnadsfri offert innan arbetet pÃ¥börjas."}];function NH(){return n.jsxs(n.Fragment,{children:[n.jsxs("section",{"data-loc":"client/src/pages/Home.tsx:40",className:"relative overflow-hidden bg-primary text-primary-foreground",children:[n.jsx("img",{"data-loc":"client/src/pages/Home.tsx:41",src:ne.hero,srcSet:Qr[ne.hero],sizes:"100vw",alt:"Nyanlagd grusväg genom skogslandskap i Hälsingland",className:"absolute inset-0 h-full w-full object-cover opacity-45",width:1600,height:900,loading:"eager",fetchPriority:"high"}),n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:52",className:"relative container py-20 md:py-28 lg:py-32",children:[n.jsxs("p",{"data-loc":"client/src/pages/Home.tsx:53",className:"text-sm font-semibold tracking-widest uppercase text-primary-foreground
157/70",children:["Grävfirma i Ljusdals kommun sedan ",Y.founded]}),n.jsx("h1",{"data-loc":"client/src/pages/Home.tsx:56",className:"mt-3 max-w-3xl font-display text-4xl font-extrabold tracking-tight md:text-5xl lg:text-6xl",children:"Grävarbeten, vägar och avlopp â utfört av folk som kan marken"}),n.jsx("p",{"data-loc":"client/src/pages/Home.tsx:59",className:"mt-5 max-w-2xl text-lg leading-relaxed text-primary-foreground/85",children:"Hennans Grävtjänst AB hjälper privatpersoner, skogsägare och företag i Hennan, Ljusdal, Färila, Järvsö och Ramsjö med vägentreprenad, enskilda avlopp, dränering och markarbeten. Kostnadsfri offert â alltid."}),n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:62",className:"mt-8 flex flex-wrap gap-3",children:[n.jsx(Qt,{"data-loc":"client/src/pages/Home.tsx:63",asChild:!0,size:"lg",className:"bg-accent text-accent-foreground hover:bg-accent/90",children:n.jsx(N,{"data-loc":"client/src/pages/Home.tsx:64",href:"/kontakt",onClick:()=>Tt("quote_cta_click",{placement:"home_hero",destination:"contact"}),children:"Begär kostnadsfri offert"})}),n.jsx(Qt,{"data-loc":"client/src/pages/Home.tsx:66",asChild:!0,size:"lg",variant:"outline",className:"border-primary-foreground/40 text-primary-foreground hover:bg-primary-foreground/10",children:n.jsxs("a",{"data-loc":"client/src/pages/Home.tsx:67",href:Y.phoneMobileHref,onClick:()=>Tt("phone_click",{placement:"home_hero"}),children:[n.jsx(gr,{"data-loc":"client/src/pages/Home.tsx:68",className:"h-4 w-4","aria-hidden":"true"})," Ring ",Y.phoneMobile]})})]})]})]}),n.jsx("section",{"data-loc":"client/src/pages/Home.tsx:76",className:"border-b border-border bg-secondary/40",children:n.jsx("div",{"data-loc":"client/src/pages/Home.tsx:77",className:"container grid gap-6 py-10 sm:grid-cols-2 lg:grid-cols-4",children:SH.map(t=>n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:79",className:"flex gap-3",children:[n.jsx(t.icon,{"data-loc":"client/src/pages/Home.tsx:80",className:"mt-0.5 h-6 w-6 shrink-0 text-accent","aria-hidden":"true"}),n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:81",children:[n.jsx("h2",{"data-loc":"client/src/pages/Home.tsx:82",className:"font-display text-base font-bold text-primary",children:t.title}),n.jsx("p",{"data-loc":"client/src/pages/Home.tsx:83",className:"mt-1 text-sm leading-relaxed text-foreground/75",children:t.text})]})]},t.title))})}),n.jsxs("section",{"data-loc":"client/src/pages/Home.tsx:91",id:"tjanster",className:"container py-14 md:py-20",children:[n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:92",className:"max-w-2xl",children:[n.jsx("h2",{"data-loc":"client/src/pages/Home.tsx:93",className:"font-display text-3xl font-bold text-primary md:text-4xl",children:"VÃ¥ra tjänster"}),n.jsx("p",{"data-loc":"client/src/pages/Home.tsx:94",className:"mt-3 text-foreground/80",children:"FrÃ¥n skogsbilvägar och vägunderhÃ¥ll till kompletta avloppsanläggningar och husgrunder. Vi har maskinerna, erfarenheten och den lokala kännedomen."})]}),n.jsx("div",{"data-loc":"client/src/pages/Home.tsx:98",className:"mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-3",children:jH.map(t=>n.jsx(Jm,{"data-loc":"client/src/pages/Home.tsx:100",...t},t.href))})]}),n.jsx("section",{"data-loc":"client/src/pages/Home.tsx:106",className:"border-y border-border bg-secondary/40",children:n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:107",className:"container grid items-center gap-10 py-14 md:py-20 lg:grid-cols-2",children:[n.jsx("img",{"data-loc":"client/src/pages/Home.tsx:108",src:ne.omOss,srcSet:Qr[ne.omOss],sizes:"(min-width: 1024px) 50vw, 100vw",alt:"Verkstaden och maskinparken hos Hennans Grävtjänst i Hennan",className:"aspect-[4/3] w-full rounded-lg border border-border object-cover shadow-sm",width:800,height:600,loading:"lazy"}),n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:118",children:[n.jsx("h2",{"data-loc":"client/src/pages/Home.tsx:119",className:"font-display text-3xl font-bold text-primary md:text-4xl",children:"Ett familjeföretag med rötterna i Hennan"}),n.jsxs("p",{"data-loc":"client/src/pages/Home.tsx:120",className:"mt-4 leading-relaxed text-foreground
157/85",children:[Y.name," grundades ",Y.founded," av ",Y.founder,". I dag driver vi en modern maskinpark med grävmaskiner, hjullastare och lastbil â och en egen verkstad där vi utför smide och reparationer. Det gör oss snabba, flexibla och självförsörjande, även mitt i brinnande säsong."]}),n.jsx("p",{"data-loc":"client/src/pages/Home.tsx:123",className:"mt-3 leading-relaxed text-foreground/85",children:"Vi arbetar Ã¥t privatpersoner, skogsägare, vägföreningar, företag och kommunala beställare i hela Ljusdals kommun."}),n.jsx(Qt,{"data-loc":"client/src/pages/Home.tsx:126",asChild:!0,className:"mt-6 bg-primary text-primary-foreground hover:bg-primary/90",children:n.jsx(N,{"data-loc":"client/src/pages/Home.tsx:127",href:"/om-oss",children:"Läs mer om oss"})})]})]})}),n.jsxs("section",{"data-loc":"client/src/pages/Home.tsx:134",className:"container py-14 md:py-20",children:[n.jsx("h2",{"data-loc":"client/src/pages/Home.tsx:135",className:"font-display text-3xl font-bold text-primary md:text-4xl",children:"Här arbetar vi"}),n.jsx("p",{"data-loc":"client/src/pages/Home.tsx:136",className:"mt-3 max-w-2xl text-foreground/80",children:"Vi utgÃ¥r frÃ¥n Hennan i norra Ljusdals kommun och tar uppdrag i hela kommunen med omnejd. Kort framkörning betyder lägre kostnad för dig."}),n.jsx("div",{"data-loc":"client/src/pages/Home.tsx:139",className:"mt-6 flex flex-wrap gap-3",children:yH.map(t=>n.jsxs(N,{"data-loc":"client/src/pages/Home.tsx:141",href:t.href,className:"inline-flex items-center gap-2 rounded-full border border-border bg-card px-5 py-2.5 text-sm font-semibold text-primary shadow-sm transition-colors hover:border-accent hover:text-accent",children:[n.jsx(rr,{"data-loc":"client/src/pages/Home.tsx:146",className:"h-4 w-4","aria-hidden":"true"})," Grävfirma ",t.name]},t.href))})]}),n.jsx("section",{"data-loc":"client/src/pages/Home.tsx:153",className:"border-y border-border bg-secondary/40",children:n.jsx("div",{"data-loc":"client/src/pages/Home.tsx:154",className:"container py-14 md:py-20",children:n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:155",className:"max-w-3xl",children:[n.jsx("p",{"data-loc":"client/src/pages/Home.tsx:156",className:"text-sm font-semibold tracking-widest uppercase text-accent",children:"VÃ¥r hemort"}),n.jsx("h2",{"data-loc":"client/src/pages/Home.tsx:157",className:"mt-2 font-display text-3xl font-bold text-primary md:text-4xl",children:"Hennan â byn där allt utgÃ¥r ifrÃ¥n"}),n.jsxs("p",{"data-loc":"client/src/pages/Home.tsx:158",className:"mt-4 leading-relaxed text-foreground/85",children:["Hennan är en by vid sjön Hennan utmed riksväg 83, i norra delen av Ljusdals kommun i Hälsingland. Här ligger vÃ¥r verkstad, vÃ¥rt kontor och hela maskinparken sedan starten ",Y.founded,". Läget mitt emellan Ljusdal och Ã
nge gör att vi nÃ¥r det mesta av norra Hälsingland med kort framkörning â frÃ¥n Ramsjö i norr till Järvsö i söder."]}),n.jsxs("p",{"data-loc":"client/src/pages/Home.tsx:161",className:"mt-3 leading-relaxed text-foreground/85",children:["Att vi bor och verkar i Hennan märks i arbetet. Vi känner traktens moränmarker, tjäldjup och enskilda vägar â kunskap som avgör hur en ",n.jsx(N,{"data-loc":"client/src/pages/Home.tsx:162",href:"/markarbeten/husgrund",className:"font-semibold text-accent hover:underline",children:"husgrund"}),", ett ",n.jsx(N,{"data-loc":"client/src/pages/Home.tsx:162",href:"/vatten-avlopp/enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"enskilt avlopp"})," eller en ",n.jsx(N,{"data-loc":"client/src/pages/Home.tsx:162",href:"/vagentreprenad/skogsbilvag",className:"font-semibold text-accent hover:underline",children:"skogsbilväg"})," ska utföras för att hÃ¥lla. För grannar i byn och runt Hennansjön rycker vi ofta ut med mycket kort varsel."]}),n.jsx("p",{"data-loc":"client/src/pages/Home.tsx:164",className:"mt-3 leading-relaxed text-foreground/85",children:"Söker du en grävfirma i Hennan är du med andra ord redan hemma. Läs mer om vad vi gör pÃ¥ hemorten:"}),n.jsxs("div",{"data-loc":"client/src/pages/Home.tsx:167",className:"mt-6 flex flex-wrap gap-3",children:[n.jsxs(N,{"data-loc":"client/src/pages/Home.tsx:168",href:"/gravfirma-hennan",className:"inline-flex items-center gap-2 rounded-full border border-border bg-card px-5 py-2.5 text-sm font-semibold text-primary shadow-sm transition-colors hover:border-accent hover:text-accent",children:[n.jsx(rr,{"data-loc":"client/src/pages/Home.tsx:169",className:"h-4 w-4","aria-hidden":"true"})," Grävfirma Hennan"]}),n.jsxs(N,{"data-loc":"client/src/pages/Home.tsx:171",href:"/markarbeten-hennan",className:"inline-flex items-center gap-2 rounded-full border border-border bg-card px-5 py-2.5 text-sm font-semibold text-primary shadow-sm transition-colors hover:border-accent hover:text-accent",children:[n.jsx(rr,{"data-loc":"client/src/pages/Home.tsx:172",className:"h-4 w-4","aria-hidden":"true"})," Markarbeten Hennan"]}),n.jsxs(N,{"data-loc":"client/src/pages/Home.tsx:174",href:"/avloppsanlaggning-hennan",className:"inline-flex items-center gap-2 rounded-full border border-border bg-card px-5 py-2.5 text-sm font-semibold text-primary shadow-sm transition-colors hover:border-accent hover:text-accent",children:[n.jsx(rr,{"data-loc":"client/src/pages/Home.tsx:175",className:"h-4 w-4","aria-hidden":"true"})," Avloppsanläggning Hennan"]}),n.jsxs(N,{"data-loc":"client/src/pages/Home.tsx:177",href:"/husgrund-hennan",className:"inline-flex items-center gap-2 rounded-full border border-border bg-card px-5 py-2.5 text-sm font-semibold text-primary shadow-sm transition-colors hover:border-accent hover:text-accent",children:[n.jsx(rr,{"data-loc":"client/src/pages/Home.tsx:178",className:"h-4 w-4","aria-hidden":"true"})," Husgrund Hennan"]})]})]})})}),n.jsx(Te,{"data-loc":"client/src/pages/Home.tsx:185",items:X.home,title:"Vanliga frÃ¥gor till oss som grävfirma"}),n.jsx(ye,{"data-loc":"client/src/pages/Home.tsx:186"})]})}function be({items:t}){return n.jsx("nav",{"data-loc":"client/src/components/site/Breadcrumbs.tsx:8","aria-label":"Brödsmulor",className:"container pt-5",children:n.jsxs("ol",{"data-loc":"client/src/components/site/Breadcrumbs.tsx:9",className:"flex flex-wrap items-center gap-1 text-sm text-muted-foreground",children:[n.jsx("li",{"data-loc":"client/src/components/site/Breadcrumbs.tsx:10",children:n.jsx(N,{"data-loc":"client/src/components/site/Breadcrumbs.tsx:11",href:"/",className:"hover:text-primary hover:underline",children:"Hem"})}),t.map((s,l)=>n.jsxs("li",{"data-loc":"client/src/components/site/Breadcrumbs.tsx:14",className:"flex items-center gap-1",children:[n.jsx(NA,{"data-loc":"client/src/components/site/Breadcrumbs.tsx:15",className:"h-3.5 w-3.5","aria-hidden":"true"}),s.href?n.jsx(N,{"data-loc":"client/src/components/site/Breadcrumbs.tsx:17",href:s.href,className:"hover:text-primary hover:underline",children:s.name}):n.jsx("span",{"data-loc":"client/src/components/site/Breadcrumbs.tsx:19","aria-current":"page",className:"font-medium text-foreground",children:s.name})]},l))]})})}function ke({title:t,intro:s,image:l,imageAlt:o,ctaHref:c="/kontakt",ctaLabel:u="Begär kostnadsfri offert",children:m}){return n.jsx("section",{"data-loc":"client/src/components/site/PageHero.tsx:21",className:"border-b border-border bg-secondary/50",children:n.jsxs("div",{"data-loc":"client/src/components/site/PageHero.tsx:22",className:`container grid items-center gap-8 py-10 md:py-14 ${l?"lg:grid-cols-[3fr_2fr]":""}`,children:[n.jsxs("div",{"data-loc":"client/src/components/site/PageHero.tsx:23",children:[n.jsx("h1",{"data-loc":"client/src/components/site/PageHero.tsx:24",className:"font-display text-3xl font-extrabold tracking-tight text-primary md:text-4xl lg:text-[2.6rem] lg:leading-[1.15]",children:t}),n.jsx("p",{"data-loc":"client/src/components/site/PageHero.tsx:27",className:"mt-4 max-w-2xl text-base leading-relaxed text-foreground
157/85 md:text-lg",children:s}),n.jsxs("div",{"data-loc":"client/src/components/site/PageHero.tsx:28",className:"mt-6 flex flex-wrap items-center gap-3",children:[n.jsx(Qt,{"data-loc":"client/src/components/site/PageHero.tsx:29",asChild:!0,size:"lg",className:"bg-accent text-accent-foreground hover:bg-accent/90",children:c.startsWith("#")?n.jsx("a",{"data-loc":"client/src/components/site/PageHero.tsx:31",href:c,onClick:()=>Tt("quote_cta_click",{placement:"page_hero",destination:"local_form"}),children:u}):n.jsx(N,{"data-loc":"client/src/components/site/PageHero.tsx:33",href:c,onClick:()=>Tt("quote_cta_click",{placement:"page_hero",destination:"contact"}),children:u})}),n.jsx(Qt,{"data-loc":"client/src/components/site/PageHero.tsx:36",asChild:!0,size:"lg",variant:"outline",className:"border-primary/30 text-primary hover:bg-primary/5",children:n.jsxs("a",{"data-loc":"client/src/components/site/PageHero.tsx:37",href:Y.phoneMobileHref,onClick:()=>Tt("phone_click",{placement:"page_hero"}),children:[n.jsx(gr,{"data-loc":"client/src/components/site/PageHero.tsx:38",className:"h-4 w-4","aria-hidden":"true"})," ",Y.phoneMobile]})})]}),m]}),l&&n.jsx("img",{"data-loc":"client/src/components/site/PageHero.tsx:45",src:l,srcSet:Qr[l],sizes:"(min-width: 1024px) 40vw, 100vw",alt:o??t,className:"hidden aspect-[4/3] w-full rounded-lg border border-border object-cover shadow-sm lg:block",width:640,height:480,loading:"eager",fetchPriority:"high"})]})})}const TH=[{title:"Anlägga grusväg",description:"Nyanläggning av grusvägar och infarter med rätt terrassering, dikning och överbyggnad â vägar som hÃ¥ller i decennier.",href:"/vagentreprenad/anlagga-grusvag",image:ne.grusvag,imageAlt:"Nyanlagd grusväg med jämn grusyta genom skogsmark"},{title:"Skogsbilväg",description:"Byggnation och upprustning av skogsbilvägar som klarar fullastade virkesbilar â bärighet, vändplaner och avvattning.",href:"/vagentreprenad/skogsbilvag",image:ne.skogsbilvag,imageAlt:"Skogsbilväg genom tallskog sedd frÃ¥n ovan"},{title:"VägunderhÃ¥ll & dikning",description:"Hyvling, grusning, dikesrensning och kantskärning som förlänger vägens livslängd och sänker underhÃ¥llskostnaden.",href:"/vagentreprenad/vagunderhall-dikning",image:ne.vagunderhall,imageAlt:"Dikesrensning utmed grusväg med grävmaskin"},{title:"Vägtrumma",description:"Byte och nyinstallation av vägtrummor i rätt dimension, frostsäkert lagda för Hälsinglands klimat.",href:"/vagentreprenad/vagtrumma",image:ne.vagtrumma,imageAlt:"Installation av ny vägtrumma under grusväg"}];function RH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Vagentreprenad.tsx:20",items:[{name:"Vägentreprenad"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Vagentreprenad.tsx:21",title:"Vägentreprenad i Hälsingland â vägar som hÃ¥ller",intro:"Att bygga och underhÃ¥lla vägar är en av vÃ¥ra huvudsysslor sedan 1996. Vi anlägger grusvägar, skogsbilvägar och infarter, och sköter löpande underhÃ¥ll Ã¥t vägföreningar, skogsägare och privatpersoner i hela Ljusdals kommun.",image:ne.vagentreprenad,imageAlt:"Grävmaskin arbetar med vägentreprenad pÃ¥ grusväg i Hälsingland"}),n.jsx("section",{"data-loc":"client/src/pages/Vagentreprenad.tsx:28",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Vagentreprenad.tsx:29",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/Vagentreprenad.tsx:30",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Vagentreprenad.tsx:31",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Rätt byggd väg är en investering â fel byggd väg är en löpande kostnad"}),n.jsx("p",{"data-loc":"client/src/pages/Vagentreprenad.tsx:32",children:"En väg som terrasserats slarvigt, saknar fungerande diken eller har fel material i överbyggnaden bryts ner för varje tjällossning. Resultatet blir potthÃ¥l, spÃ¥rbildning och trummor som fryser sönder. Vi bygger vägar frÃ¥n grunden med rätt geometri, avvattning och materialval â anpassade efter markförhÃ¥llandena i Hälsingland, där morän, berg i dagen och tjÃ
157¤ldjup pÃ¥ uppemot tvÃ¥ meter ställer särskilda krav."}),n.jsx("p",{"data-loc":"client/src/pages/Vagentreprenad.tsx:35",children:"Vi tar uppdrag i alla storlekar: frÃ¥n en enskild infart till fritidshuset, till kilometerlÃ¥nga skogsbilvägar och Ã¥rsavtal med vägföreningar. Med egen maskinpark och verkstad i Hennan hÃ¥ller vi bÃ¥de tidplaner och priser."}),n.jsx("h2",{"data-loc":"client/src/pages/Vagentreprenad.tsx:38",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ arbetar vi"}),n.jsxs("ol",{"data-loc":"client/src/pages/Vagentreprenad.tsx:39",className:"list-decimal space-y-2 pl-5",children:[n.jsxs("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:40",children:[n.jsx("strong",{"data-loc":"client/src/pages/Vagentreprenad.tsx:40",children:"Platsbesök och bedömning"})," â vi tittar pÃ¥ marken, avvattningen och behoven tillsammans med dig."]}),n.jsxs("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:41",children:[n.jsx("strong",{"data-loc":"client/src/pages/Vagentreprenad.tsx:41",children:"Kostnadsfri offert"})," â tydlig specifikation av moment, material och pris."]}),n.jsxs("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:42",children:[n.jsx("strong",{"data-loc":"client/src/pages/Vagentreprenad.tsx:42",children:"Utförande"})," â terrassering, dikning, trummor, överbyggnad och grusning med rätt maskiner."]}
157),n.jsxs("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:43",children:[n.jsx("strong",{"data-loc":"client/src/pages/Vagentreprenad.tsx:43",children:"Avslut och skötselrÃ¥d"})," â vi gÃ¥r igenom resultatet och hur vägen underhÃ¥lls bäst."]})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/Vagentreprenad.tsx:46",className:"h-fit rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/Vagentreprenad.tsx:47",className:"font-display text-lg font-bold text-primary",children:"Vanliga uppdrag"}),n.jsxs("ul",{"data-loc":"client/src/pages/Vagentreprenad.tsx:48",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:49",children:"Nyanläggning av grusväg och infart"}),n.jsx("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:50",children:"Skogsbilväg för virkestransport"}),n.jsx("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:51",children:"Dikesrensning och kantskärning"}),n.jsx("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:52",children:"Hyvling och grusning"}),n.jsx("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:53",children:"Trumbyten och förstärkning"}),n.jsx("li",{"data-loc":"client/src/pages/Vagentreprenad.tsx:54",children:"Vändplaner och mötesplatser"})]}),n.jsxs("p",{"data-loc":"client/src/pages/Vagentreprenad.tsx:56",className:"mt-4 text-sm text-foreground/70",children:["Osäker pÃ¥ vad din väg behöver? ",n.jsx(N,{"data-loc":"client/src/pages/Vagentreprenad.tsx:57",href:"/kontakt",className:"font-semibold text-accent hover:underline",children:"Beskriv läget sÃ¥ tittar vi pÃ¥ det."})]})]})]})}),n.jsx("section",{"data-loc":"client/src/pages/Vagentreprenad.tsx:63",className:"border-t border-border bg-secondary/40",children:n.jsxs("div",{"data-loc":"client/src/pages/Vagentreprenad.tsx:64",className:"container py-12 md:py-16",children:[n.jsx("h2",{"data-loc":"client/src/pages/Vagentreprenad.tsx:65",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"VÃ¥ra vägtjänster"}),n.jsx("div",{"data-loc":"client/src/pages/Vagentreprenad.tsx:66",className:"mt-6 grid gap-6 sm:grid-cols-2 lg:grid-cols-4",children:TH.map(t=>n.jsx(Jm,{"data-loc":"client/src/pages/Vagentreprenad.tsx:67",...t},t.href))})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Vagentreprenad.tsx:72",items:X.vagentreprenad,title:"Vanliga frÃ¥gor om vägentreprenad"}),n.jsx(ye,{"data-loc":"client/src/pages/Vagentreprenad.tsx:73",title:"Dags att bygga eller rusta väg?",text:"Berätta om din väg sÃ¥ Ã¥terkommer vi med en kostnadsfri offert â ofta inom en arbetsdag."})]})}function AH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:12",items:[{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"Anlägga grusväg"}]}),n.jsx(ke,{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:13",title:"Anlägga grusväg â sÃ¥ bygger vi vägar som hÃ¥ller",intro:"En rätt byggd grusväg hÃ¥ller i decennier med minimalt underhÃ¥ll. Vi anlägger grusvägar och infarter i hela Ljusdals kommun â med rätt terrassering, avvattning och överbyggnad frÃ¥n början.",image:ne.grusvag,imageAlt:"Nyanlagd grusväg med jämn yta genom hälsingsk tallskog"}),n.jsx("section",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ gÃ¥r det till att anlägga en grusväg"}),n.jsx("p",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:23",children:"Grunden till en bra grusväg läggs lÃ¥ngt under gruset. Först röjs och terrasseras sträckningen: matjord och organiskt material schaktas bort ner till bärkraftig botten. Därefter formas vägkroppen med bombering â en svag välvning som leder bort vatten mot dikena. Diken och trummor dimensioneras efter hur mycket vatten som faktiskt rör sig i terrängen."}),n.jsx("p",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:26",children:"Ãverbyggnaden byggs sedan i lager: förstärkningslager av grövre kross, bärlager och till sist slitlager av väggrus med rätt andel finmaterial sÃ¥ att ytan binder ihop. PÃ¥ mjukare partier lägger vi geotextil som materialskiljande lager â ett billigt skydd mot att lagren blandas och bärigheten försvinner."}),n.jsx("h2",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad kostar det att anlägga grusväg?"}),n.jsx("p",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:30",children:"Kostnaden styrs främst av markförhÃ¥llandena, vägens längd och hur mycket material som krävs. En enkel infart pÃ¥ fast mark kostar betydligt mindre per meter än en ny väg över blöt eller blockrik terräng. Efter ett platsbesök lämnar vi alltid en kostnadsfri offert med tydligt specificerade moment â du vet vad du betalar för innan vi startar."}),n.jsx("p",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:33",children:"Att göra rätt frÃ¥n början är nästan alltid billigast. En underdimensionerad väg som mÃ¥ste byggas om efter nÃ¥gra tjällossningar kostar mer än en väg som byggdes ordentligt första gÃ¥ngen."}),n.jsx("h2",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grusvägar för Hälsinglands klimat"}),n.jsxs("p",{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:37",children:["I Ljusdalstrakten räknar man ofta med tjäldjup pÃ¥ uppemot en och en halv till tvÃ¥ meter. Det ställer krav pÃ¥ avvattning och materialval â vatten som blir stÃ¥ende i vägkroppen lyfter och spräcker vägen när det fryser. Vi bygger med tillräckliga diken, frostsäkert lagda trummor och material som dränerar, sÃ¥ att vägen klarar bÃ¥de vÃ¥rflod och tjÃ
157¤llossning. Läs ocksÃ¥ om vÃ¥rt ",n.jsx(N,{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:38",href:"/vagentreprenad/vagunderhall-dikning",className:"font-semibold text-accent hover:underline",children:"vägunderhÃ¥ll"})," och ",n.jsx(N,{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:38",href:"/vagentreprenad/vagtrumma",className:"font-semibold text-accent hover:underline",children:"trumbyten"}),"."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:43",items:X.grusvag,title:"Vanliga frÃ¥gor om att anlägga grusväg"}),n.jsx(ye,{"data-loc":"client/src/pages/AnlaggaGrusvag.tsx:44",title:"Funderar du pÃ¥ ny grusväg eller infart?",text:"Vi kommer gärna ut, tittar pÃ¥ marken och lämnar en kostnadsfri offert."})]})}function HH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Skogsbilvag.tsx:12",items:[{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"Skogsbilväg"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Skogsbilvag.tsx:13",title:"Skogsbilväg â anläggning och upprustning för virkestransport",intro:"En bra skogsbilväg betalar sig vid första avverkningen: kortare terrängtransport, bättre virkespriser och Ã¥tkomst Ã¥ret runt. Vi bygger och rustar skogsbilvägar i hela Ljusdals kommun.",image:ne.skogsbilvag,imageAlt:"Skogsbilväg genom tallskog i Hälsingland sedd frÃ¥n ovan"}),n.jsx("section",{"data-loc":"client/src/pages/Skogsbilvag.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Skogsbilvag.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Skogsbilvag.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Byggda för fullastade virkesbilar"}),n.jsx("p",{"data-loc":"client/src/pages/Skogsbilvag.tsx:23",children:"En skogsbilväg ska klara ekipage pÃ¥ up
157pemot 74 ton â det förlÃ¥ter inga genvägar i byggnationen. Vi terrasserar ner till bärkraftig botten, bygger överbyggnad med rätt krossmaterial och ser till att kurvradier, backkrön och vändplaner fungerar för timmerbil med släp. Väl avvägd linjeföring i terrängen minskar dessutom schaktmängderna och hÃ¥ller nere kostnaden."}),n.jsx("p",{"data-loc":"client/src/pages/Skogsbilvag.tsx:26",children:"Skogsägare i norra Hälsingland vet att avvattningen avgör vägens livslängd. Diken, skärningar och trummor dimensioneras för snösmältning och höstregn â inte bara för en torr sommardag. Vi lägger trummorna frostsäkert och förser utsatta partier med geotextil och förstärkning."}),n.jsx("h2",{"data-loc":"client/src/pages/Skogsbilvag.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Upprustning av befintliga vägar"}),n.jsx("p",{"data-loc":"client/src/pages/Skogsbilvag.tsx:30",children:"MÃ¥nga skogsbilvägar i trakten byggdes för decennier sedan och klarar inte dagens fordonsvikter. Ofta gÃ¥r det att rusta i stället för att bygga nytt: dikesrensning, nya trummor, förstärkning av svaga partier, ny slitlagergrusning och röjning av vägomrÃ¥det. Efter en genomgÃ¥ng pÃ¥ plats fÃ¥r du en offert med tydlig prioritering â vad som mÃ¥ste göras nu och vad som kan vänta."}),n.jsxs("p",{"data-loc":"client/src/pages/Skogsbilvag.tsx:33",children:["Vi utför ocksÃ¥ löpande ",n.jsx(N,{"data-loc":"client/src/pages/Skogsbilvag.tsx:34",href:"/vagentreprenad/vagunderhall-dikning",className:"font-semibold text-accent hover:underline",children:"vägunderhÃ¥ll"})," Ã¥t skogsägare och samfälligheter, sÃ¥ att vägen är körbar när avverkningen eller gallringen väl ska ske."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Skogsbilvag.tsx:39",items:X.skogsbilvag,title:"Vanliga frÃ¥gor om skogsbilvägar"}),n.jsx(ye,{"data-loc":"client/src/pages/Skogsbilvag.tsx:40",title:"Planerar du avverkning och behöver väg?",text:"Vi bedömer sträckningen, räknar pÃ¥ jobbet och lämnar en kostnadsfri offert."})]})}function wH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/VagunderhallDikning.tsx:12",items:[{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"VägunderhÃ¥ll & dikning"}]}),n.jsx(ke,{"data-loc":"client/src/pages/VagunderhallDikning.tsx:13",title:"VägunderhÃ¥ll och dikning â förläng grusvägens livslängd",intro:"Regelbundet underhÃ¥ll är den billigaste vägförsäkringen som finns. Vi hjälper vägföreningar, skogsägare och privatpersoner i Ljusdals kommun med hyvling, grusning, dikesrensning och kantskärning.",image:ne.vagunderhall,imageAlt:"Grävmaskin rensar dike utmed grusväg"}),n.jsx("section",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Diket är vägens viktigaste del"}),n.jsx("p",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:23",children:"Nio av tio vägskador börjar med vatten som inte leds bort. När diken växer igen och kantvallar hindrar avrinningen blir vattnet kvar i vägkroppen â och dÃ¥ kommer potthÃ¥len, spÃ¥rbildningen och tjälskadorna. Dikesrensning och kantskärning Ã¥terställer vägens avvattning och är ofta den Ã¥tgärd som ger mest väg för pengarna."}),n.jsx("p",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:26",children:"Vi rensar diken med grävmaskin, skär bort kantvallar sÃ¥ att vattnet nÃ¥r diket, och ser samtidigt över trummorna. Massorna kan ofta användas för att förstärka slänter eller jämna ut vägomrÃ¥det."}),n.jsx("h2",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Hyvling och grusning"}),n.jsx("p",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:30",children:"Slitlagret pÃ¥ en grusväg vandrar med trafiken â ut mot kanterna och ner i svackorna. Hyvling Ã¥terställer bomberingen sÃ¥ att vattnet rinner av, och ny slitlagergrusning med rätt gruskvalitet binder ytan. Utfört vid rätt tidpunkt, gärna när gruset är fuktigt, hÃ¥ller resultatet betydligt längre."}),n.jsx("h2",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Avtal eller enstaka insatser"}),n.jsxs("p",{"data-loc":"client/src/pages/VagunderhallDikning.tsx:34",children:["MÃ¥nga av vÃ¥ra kunder är vägföreningar och samfälligheter som vill ha en lokal entreprenör att ringa â bÃ¥de för planerat underhÃ¥ll och akuta insatser efter skyfall eller tjällossning. Vi erbjuder sÃ¥väl enstaka uppdrag som Ã¥terkommande underhÃ¥ll, och vintertid även ",n.jsx(N,{"data-loc":"client/src/pages/VagunderhallDikning.tsx:35",href:"/snorojning",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),". Behöver trummor bytas hanterar vi det ocksÃ¥ â läs mer under ",n.jsx(N,{"data-loc":"client/src/pages/VagunderhallDikning.tsx:35",href:"/vagentreprenad/vagtrumma",className:"font-semibold text-accent hover:underline",children:"vägtrumma"}),"."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/VagunderhallDikning.tsx:40",items:X.vagunderhall,title:"Vanliga frÃ¥gor om vägunderhÃ¥ll och dikning"}),n.jsx(ye,{"data-loc":"client/src/pages/VagunderhallDikning.tsx:41",title:"Dags att se över vägen?",text:"Vi tittar pÃ¥ din väg, prioriterar Ã¥tgärderna och lämnar en kostnadsfri offert."})]})}function EH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Vagtrumma.tsx:12",items:[{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"Vägtrumma"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Vagtrumma.tsx:13",title:"Vägtrumma â byte och installation av trummor",intro:"En trasig eller underdimensionerad vägtrumma kan spola bort hela vägen vid vÃ¥rfloden. Vi byter och installerar vägtrummor i alla dimensioner i Ljusdals kommun â snabbt och frostsäkert.",image:ne.vagtrumma,imageAlt:"Installation av ny vägtrumma i plast under grusväg"}),n.jsx("section",{"data-loc":"client/src/pages/Vagtrumma.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Vagtrumma.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Vagtrumma.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"När behöver vägtrumman bytas?"}),n.jsx("p",{"data-loc":"client/src/pages/Vagtrumma.tsx:23",children:"Tydliga varningstecken är vatten som blir stÃ¥ende uppströms vägen, sättningar i vägbanan över trumman, rost eller deformation i trumändarna och is som bildas i trumman vintertid. En trumma som gÃ¥tt sönder under vägen underminerar vägkroppen inifrÃ¥n â ofta syns skadan först när vägbanan börjar sjunka. Att byta i tid kostar en brÃ¥kdel av att Ã¥terställa en bortspolad väg."}),n.jsx("h2",{"data-loc":"client/src/pages/Vagtrumma.tsx:26",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ byter vi trumman"}),n.jsx("p",{"data-loc":"client/src/pages/Vagtrumma.tsx:27",children:"Vi schaktar upp den gamla trumman, justerar botten till rätt fall och lägger den nya trumman pÃ¥ en bädd av packat grusmaterial. Dimensionen väljs efter flödet â hellre en storlek större än att trumman blir en flaskhals vid snösmältningen. Ãndarna erosionssäkras och vägbanan Ã¥terställs med rätt överbyggnad. I de flesta fall är vägen körbar igen samma dag."}),n.jsx("p",{"data-loc":"client/src/pages/Vagtrumma.tsx:30",children:"I Hälsinglands inland ligger tjälen djupt, och en trumma som läggs för grunt eller utan isolering fryser igen när den behövs som mest. Vi lägger trummorna med rätt täckning och isolerar där förutsättningarna kräver det."}),n.jsx("h2",{"data-loc":"client/src/pages/Vagtrumma.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Trumbyten i samband med annat vägarbete"}),n.jsxs("p",{"data-loc":"client/src/pages/Vagtrumma.tsx:34",children:["Trumbyten blir ofta mest kostnadseffektiva när de görs tillsammans med ",n.jsx(N,{"data-loc":"client/src/pages/Vagtrumma.tsx:35",href:"/vagentreprenad/vagunderhall-dikning",className:"font-semibold text-accent hover:underline",children:"dikesrensning"})," eller upprustning av ",n.jsx(N,{"data-loc":"client/src/pages/Vagtrumma.tsx:35",href:"/vagentreprenad/skogsbilvag",className:"font-semibold text-accent hover:underline",children:"skogsbilväg"})," â maskinerna är redan pÃ¥ plats och avvattningen kan lösas som en helhet."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Vagtrumma.tsx:40",items:X.vagtrumma,title:"Vanliga frÃ¥gor om vägtrummor"}),n.jsx(ye,{"data-loc":"client/src/pages/Vagtrumma.tsx:41",title:"Trumma som behöver bytas?",text:"Skicka gärna en bild pÃ¥ trumman sÃ¥ Ã¥terkommer vi snabbt med en bedömning och offert."})]})}const LH=[{title:"Enskilt avlopp",description:"Komplett anläggning av nytt enskilt avlopp â frÃ¥n provgrop och tillstÃ¥ndsunderlag till färdig, godkänd anläggning.",href:"/vatten-avlopp/enskilt-avlopp",image:ne.va,imageAlt:"Grävning för enskild avloppsanläggning pÃ¥ tomt"},{title:"Trekammarbrunn",description:"Installation och byte av trekammarbrunnar med anslutning till efterföljande rening.",href:"/vatten-avlopp/trekammarbrunn",image:ne.va,imageAlt:"Nedgrävning av trekammarbrunn med grävmaskin"},{title:"Infiltration & markbädd",description:"Vi gräver provgrop, bedömer jordarten och anlägger den reningsteknik som passar din mark.",href:"/vatten-avlopp/infiltration-markbadd",image:ne.infiltration,imageAlt:"Anläggning av infiltrationsbädd med spridningsledningar"}];function MH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/VattenAvlopp.tsx:19",items:[{name:"Vatten & avlopp"}]}),n.jsx(ke,{"data-loc":"client/src/pages/VattenAvlopp.tsx:20",title:"Vatten och avlopp â grävning för VA i Ljusdals kommun",intro:"Vi anlägger enskilda avlopp, byter trekammarbrunnar och gräver för vatten- och avloppsledningar. Med 30 Ã¥rs erfarenhet av markförhÃ¥llandena i Hälsingland vet vi vad som krävs för en anläggning som hÃ¥ller och blir godkänd.",image:ne.va,imageAlt:"Grävmaskin gräver för VA-ledningar och avloppsanläggning"}),n.jsx("section",{"data-loc":"client/src/pages/VattenAvlopp.tsx:27",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/VattenAvlopp.tsx:28",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/VattenAvlopp.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"FrÃ¥n provgrop till godkänd anläggning"}),n.jsx("p",{"data-loc":"client/src/pages/VattenAvlopp.tsx:30",children:"Ett avloppsprojekt börjar aldrig med grävskopan â det börjar med marken. Vi gräver provgrop, bedömer jordart och grundvattennivÃ¥ och föreslÃ¥r den lösning som passar: infiltration, markbädd eller annan teknik. Därefter hjälper vi dig med situationsplan och tekniskt underlag till tillstÃ¥ndsansökan hos miljöenheten i Ljusdals kommun, och utför sedan hela anläggningen fram till fotodokumenterat och besiktningsfärdigt utförande."}),n.jsx("p",{"data-loc":"client/src/pages/VattenAvlopp.tsx:33",children:"Vi gräver ocksÃ¥ för vattenledningar, servisanslutningar och dagvatten. I trakten räknar man ofta med tjäldjup pÃ¥ uppemot en och en halv till tvÃ¥ meter, sÃ¥ ledningar läggs frostfritt eller isoleras â nÃ¥got vi dimensionerar rätt frÃ¥n början."})]})}),n.jsx("section",{"data-loc":"client/src/pages/VattenAvlopp.tsx:39",className:"border-t border-border bg-secondary/40",children:n.jsxs("div",{"data-loc":"client/src/pages/VattenAvlopp.tsx:40",className:"container py-12 md:py-16",children:[n.jsx("h2",{"data-loc":"client/src/pages/VattenAvlopp.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"VÃ¥ra VA-tjänster"}),n.jsx("div",{"data-loc":"client/src/pages/VattenAvlopp.tsx:42",className:"mt-6 grid gap-6 sm:grid-cols-2 lg:grid-cols-3",children:LH.map(t=>n.jsx(Jm,{"data-loc":"client/src/pages/VattenAvlopp.tsx:43",...t},t.href))}),n.jsxs("p",{"data-loc":"client/src/pages/VattenAvlopp.tsx:45",className:"mt-6 text-foreground/80",children:["Undrar du vad ett nytt avlopp kostar? Läs vÃ¥r guide ",n.jsx(N,{"data-loc":"client/src/pages/VattenAvlopp.tsx:46",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/VattenAvlopp.tsx:51",items:X.va,title:"Vanliga frÃ¥gor om vatten och avlopp"}),n.jsx(ye,{"data-loc":"client/src/pages/VattenAvlopp.tsx:52",title:"Dags att ordna avloppet?",text:"Vi hjälper dig hela vägen frÃ¥n provgrop till godkänd anläggning. Begär en kostnadsfri offert."})]})}const DH=[{name:"Trekammarbrunn i Ljusdal",href:"/trekammarbrunn-ljusdal"},{name:"Trekammarbrunn i Färila",href:"/trekammarbrunn-farila"},{name:"Trekammarbrunn i Järvsö",href:"/trekammarbrunn-jarvso"},{name:"Trekammarbrunn i Ramsjö",href:"/trekammarbrunn-ramsjo"},{name:"Trekammarbrunn i Hennan",href:"/trekammarbrunn-hennan"}];function _H(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Trekammarbrunn.tsx:20",items:[{name:"Vatten & avlopp",href:"/vatten-avlopp"},{name:"Trekammarbrunn"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Trekammarbrunn.tsx:21",title:"Trekammarbrunn â installation med grävning och tillstÃ¥nd",intro:"Trekammarbrunnen är hjärtat i de flesta enskilda avlopp: den avskiljer slam innan vattnet leds vidare till infiltration eller markbädd. Vi installerar och byter trekammarbrunnar i hela Ljusdals kommun.",image:ne.va,imageAlt:"Trekammarbrunn sänks ner i schakt med grävmaskin"}),n.jsx("section",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:28",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:29",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:30",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad gör en trekammarbrunn?"}),n.jsx("p",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:31",children:"I brunnens tre kammare sedimenterar slam och partiklar stegvis, sÃ¥ att bara förbehandlat vatten gÃ¥r vidare till den efterföljande reningen. En korrekt dimensionerad brunn â normalt minst tvÃ¥ kubikmeter för ett hushÃ¥ll med WC â och ett T-rör pÃ¥ utloppet är avgörande för att infiltrationen inte ska sättas igen i förtid."}),n.jsxs("p",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:34",children:["Viktigt att veta: en trekammarbrunn är bara försteget. För ett godkänt enskilt avlopp krävs alltid efterföljande rening, till exempel ",n.jsx(N,{"data-loc":"client/src/pages/Trekammarbrunn.tsx:35",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration eller markbädd"}),". En brunn som släpper vattnet direkt till dike eller Ã¥ker uppfyller inte dagens krav."]}),n.jsx("h2",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ gÃ¥r installationen till"}),n.jsx("p",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:38",children:"Vi schaktar, ställer brunnen pÃ¥ en avjämnad bädd, ansluter in- och utloppsledningar med rätt fall och förankrar brunnen där grundvattnet kräver det. Moderna brunnar i polyeten är lätta att hantera och täta hela sin livslängd. Byter vi ut en gammal betongbrunn tar vi hand om urgrävning och bortforsling. Installationen samordnas med tillstÃ¥ndet frÃ¥n miljöenheten i Ljusdals kommun â vi tar fram det tekniska underlaget till din ansökan."}),n.jsxs("p",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:41",children:["Räkna med att hela arbetet, inklusive efterföljande rening, oftast är klart inom nÃ¥gra dagar när tillstÃ¥ndet väl är pÃ¥ plats. Se även vÃ¥r prisguide ",n.jsx(N,{"data-loc":"client/src/pages/Trekammarbrunn.tsx:42",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]}),n.jsx("h2",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:44",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Trekammarbrunn där du bor"}),n.jsx("p",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:45",children:"MarkförhÃ¥llanden, skyddsavstÃ¥nd och framkörning skiljer sig mellan orterna i kommunen. Läs mer om hur vi arbetar just där du bor:"}),n.jsx("ul",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:48",className:"grid gap-2 sm:grid-cols-2",children:DH.map(t=>n.jsx("li",{"data-loc":"client/src/pages/Trekammarbrunn.tsx:50",children:n.jsx(N,{"data-loc":"client/src/pages/Trekammarbrunn.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Trekammarbrunn.tsx:58",items:X.trekammarbrunn,title:"Vanliga frÃ¥gor om trekammarbrunnar"}),n.jsx(ye,{"data-loc":"client/src/pages/Trekammarbrunn.tsx:59",title:"Dags att byta eller installera trekammarbrunn?",text:"Vi lämnar fast offert efter platsbesök och hjälper dig med tillstÃ¥ndsunderlaget."})]})}function OH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:12",items:[{name:"Vatten & avlopp",href:"/vatten-avlopp"},{name:"Infiltration & markbädd"}]}),n.jsx(ke,{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:13",title:"Infiltration och markbädd â rätt rening för din tomt",intro:"Vilken reningsteknik som passar avgörs av marken pÃ¥ just din tomt. Vi gräver provgrop, bedömer jordarten och anlägger infiltration eller markbädd som uppfyller kommunens krav.",image:ne.infiltration,imageAlt:"Anläggning av infiltrationsbädd med spridningsledningar i makadam"}),n.jsx("section",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Infiltration eller markbädd â vad är skillnaden?"}),n.jsxs("p",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:23",children:["I en ",n.jsx("strong",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:24",children:"infiltration"})," renas vattnet av markens egna jordlager: vattnet sprids via spridningsledningar i makadam och sjunker sedan genom naturliga sand- och gruslager. Det kräver genomsläpplig mark och tillräckligt avstÃ¥nd till grundvattnet. I en ",n.jsx("strong",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:24",children:"markbädd"})," bygger vi i stället upp reningen konstgjort med sand- och gruslager, och samlar upp det renade vattnet i botten innan det leds vidare. Markbädd väljs när marken är för tät â exempelvis silt eller lera â eller när grundvattnet stÃ¥r högt."]}),n.jsx("p",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:26",children:"Vilken lösning som är möjlig avgörs av provgropen. Vi gräver den, dokumenterar jordprofilen och tar vid behov jordprov för siktanalys. I moränmarkerna kring Hennan, Ramsjö och Färila varierar genomsläppligheten kraftigt även inom samma tomt â därför är provgropen aldrig ett moment att hoppa över."}),n.jsx("h2",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ anlägger vi bädden"}),n.jsx("p",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:30",children:"Efter tillstÃ¥nd frÃ¥n miljöenheten schaktar vi bädden pÃ¥ rätt nivÃ¥, lägger spridningslager, spridningsledningar och luftningsrör, och avslutar med materialskiljande skikt och Ã¥terfyllnad. Allt fotodokumenteras innan igenfyllning â det underlaget vill kommunen ha vid slutbesiktningen. En korrekt anlagd infiltration eller markbädd har en livslängd pÃ¥ ungefär 15 till 25 Ã¥r."}),n.jsxs("p",{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:33",children:["Bädden anläggs normalt tillsammans med en ",n.jsx(N,{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:34",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunn"})," som försteg. Kostnadsbilden för hela anläggningen hittar du i guiden ",n.jsx(N,{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:34",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:39",items:X.infiltration,title:"Vanliga frÃ¥gor om infiltration och markbädd"}),n.jsx(ye,{"data-loc":"client/src/pages/InfiltrationMarkbadd.tsx:40",title:"Osäker pÃ¥ vad din mark klarar?",text:"Vi gräver provgrop, bedömer jordarten och föreslÃ¥r rätt lösning. Kostnadsfri offert."})]})}const CH=[{title:"Platsbesök & provgrop",text:"Vi bedömer tomten, gräver provgrop och dokumenterar jordart och grundvatten."},{title:"TillstÃ¥ndsansökan",text:"Vi tar fram situationsplan och tekniskt underlag till din ansökan hos miljöenheten i Ljusdals kommun."},{title:"Anläggning",text:"Grävning, trekammarbrunn, infiltration eller markbädd â fotodokumenterat genom hela arbetet."},{title:"Slutredovisning",text:"Vi samlar underlag och foton för slutredovisningen. Fastighetsägaren har det juridiska ansvaret, sÃ¥ ansvarsfördelningen bestäms före start."}],VH=[{name:"Avloppsanläggning i Ljusdal",href:"/avloppsanlaggning-ljusdal"},{name:"Avloppsanläggning i Färila",href:"/avloppsanlaggning-farila"},{name:"Avloppsanläggning i Järvsö",href:"/avloppsanlaggning-jarvso"},{name:"Avloppsanläggning i Ramsjö",href:"/avloppsanlaggning-ramsjo"},{name:"Avloppsanläggning i Hennan",href:"/avloppsanlaggning-hennan"}];function FH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:27",items:[{name:"Vatten & avlopp",href:"/vatten-avlopp"},{name:"Enskilt avlopp"}]}),n.jsx(ke,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:28",title:"Enskilt avlopp â komplett anläggning frÃ¥
157n provgrop till godkänt",intro:"Ett nytt enskilt avlopp är ett projekt med mÃ¥nga steg: tillstÃ¥nd, teknikval, grävning och slutredovisning. Vi hjälper dig genom hela processen och utför anläggningen enligt kommunens beslut och villkor.",image:ne.va,imageAlt:"Komplett enskild avloppsanläggning under arbete med grävmaskin"}),n.jsx("section",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:35",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:36",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Därför byts gamla avlopp ut"}),n.jsx("p",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:38",children:"MÃ¥nga fastigheter utanför kommunalt VA har anläggningar som byggdes pÃ¥ 60- och 70-talen â ofta bara en slamavskiljare med utlopp till dike. SÃ¥dana avlopp uppfyller inte miljöbalkens krav, och kommunerna förelägger löpande fastighetsägare att Ã¥tgärda dem. Ett underkänt avlopp kan dessutom bli ett problem vid försäljning av fastigheten. Att byta i egen takt, innan föreläggandet kommer, ger dig bättre kontroll över bÃ¥de lösning och kostnad."}),n.jsx("h2",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ gÃ¥r det till â fyra steg"}),n.jsx("ol",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:42",className:"list-none space-y-4 pl-0",children:CH.map((t,s)=>n.jsxs("li",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:44",className:"flex gap-4",children:[n.jsx("span",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:45",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-accent font-display text-sm font-bold text-accent-foreground",children:s+1}),n.jsxs("div",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:46",children:[n.jsx("h3",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:47",className:"font-display font-bold text-primary",children:t.title}),n.jsx("p",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:48",className:"mt-1",children:t.text})]})]},t.title))}),n.jsxs("aside",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:53",className:"rounded-lg border border-accent/30 bg-secondary/50 p-5 text-sm",children:[n.jsx("h2",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:54",className:"font-display text-lg font-bold text-primary",children:"Kommunens krav före grävstart"}),n.jsx("p",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:55",className:"mt-2",children:"Ljusdals kommun anger cirka tio veckors handläggningstid och att arbetet inte fÃ¥r pÃ¥börjas innan tillstÃ¥ndet är beslutat. En komplett ansökan ska bland annat innehÃ¥lla kartunderlag, anläggningens placering och nödvändiga markundersökningar."}),n.jsxs("p",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:58",className:"mt-3 flex flex-wrap gap-x-4 gap-y-2",children:[n.jsx("a",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:59",href:"https://www.ljusdal.se/boendemiljo/vattenochavlopp/enskiltavlopp.4.75ccc85d165a67c71beecf58.html",target:"_blank",rel:"noreferrer",className:"font-semibold text-accent hover:underline",children:"Ljusdals kommuns process för enskilt avlopp"}),n.jsx("a",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:60",href:"https://www.ljusdal.se/boendemiljo/vattenochavlopp/enskiltavlopp/checklistaforansokanomenskiltavlopp.4.75ccc85d165a67c71beed805.html",target:"_blank",rel:"noreferrer",className:"font-semibold text-accent hover:underline",children:"Checklista för ansökan"})]})]}),n.jsx("h2",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:63",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Teknik som passar din mark"}),n.jsxs("p",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:64",children:["Vanligast är en ",n.jsx(N,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:65",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunn"})," följd av ",n.jsx(N,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:65",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration eller markbädd"}),". Vid hög skyddsnivÃ¥, nära sjöar och vattendrag, kan det krävas fosforreduktion eller minireningsverk. Provgropen och kommunens bedömning avgör â vi föreslÃ¥r aldrig mer teknik än marken och regler
157na kräver."]}),n.jsxs("p",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:67",children:["Vad kostar det? Se vÃ¥r genomgÃ¥ng i guiden ",n.jsx(N,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:68",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})," â och räkna med att ROT-avdrag kan sänka arbetskostnaden pÃ¥ din faktura."]}),n.jsx("h2",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:70",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Avloppsanläggning där du bor"}),n.jsx("p",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:71",children:"Jordarter, skyddsavstÃ¥nd och framkörning skiljer sig mellan orterna i kommunen. Läs mer om hur vi arbetar just där du bor:"}),n.jsx("ul",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:74",className:"grid gap-2 sm:grid-cols-2",children:VH.map(t=>n.jsx("li",{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:76",children:n.jsx(N,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:77",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]})}),n.jsx(Te,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:84",items:X.enskiltAvlopp,title:"Vanliga frÃ¥gor om enskilt avlopp"}),n.jsx(ye,{"data-loc":"client/src/pages/EnskiltAvlopp.tsx:85",title:"FÃ¥tt krav pÃ¥ att Ã¥tgärda avloppet â eller vill ligga steget före?",text:"Vi tar hand om hela processen. Begär en kostnadsfri offert i dag."})]})}function JH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Dranering.tsx:12",items:[{name:"Dränering"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Dranering.tsx:13",title:"Dränering av husgrund â torr källare som hÃ¥ller i decennier",intro:"Fuktig källare, mögellukt eller vitutfällningar pÃ¥ källarväggen? DÃ¥ har husgrundens dränering sannolikt gjort sitt. Vi dränerar om husgrunder i hela Ljusdals kommun med modern fuktisolering och rätt Ã¥terfyllnad.",image:ne.dranering,imageAlt:"Frilagd husgrund med ny dräneringsledning och fuktisolering"}),n.jsx("section",{"data-loc":"client/src/pages/Dranering.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Dranering.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Dranering.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Tecken pÃ¥ att dräneringen behöver göras om"}),n.jsx("p",{"data-loc":"client/src/pages/Dranering.tsx:23",children:"En dränering hÃ¥ller normalt 30 till 50 Ã¥r. Vanliga varningstecken är fukt- eller vattenfläckar pÃ¥ källarväggarnas insida, vit saltutfällning pÃ¥ betongen, mögel- eller källarlukt, färg och puts som flagnar samt vatten som blir stÃ¥ende vid grunden efter regn. Ju tidigare du Ã¥tgärdar, desto mindre blir följdskadorna pÃ¥ stomme och inredning."}),n.jsx("h2",{"data-loc":"client/src/pages/Dranering.tsx:26",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ dränerar vi om din grund"}),n.jsx("p",{"data-loc":"client/src/pages/Dranering.tsx:27",children:"Vi schaktar upp runt grunden ner till grundsulan, rengör och besiktar väggen, och monterar fuktskydd â normalt platonmatta, vid behov kompletterad med utvändig isolering som ocksÃ¥ sänker uppvärmningskostnaden. I botten läggs ny dräneringsledning med rätt fall till dagvattenledning, stenkista eller annan godkänd avledning. Ã
terfyllnaden görs med dränerande material, och vi avslutar med att justera marklutningen bort frÃ¥n huset â en detalj som gör stor skillnad."}),n.jsx("p",{"data-loc":"client/src/pages/Dranering.tsx:30",children:"Takvattnet dÃ¥? Stuprör ska aldrig anslutas till dräneringen. Vi lägger separata dagvattenledningar sÃ¥ att takvattnet leds bort utan att belasta den nya dräneringen."}),n.jsx("h2",{"data-loc":"client/src/pages/Dranering.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad kostar dränering?"}),n.jsxs("p",{"data-loc":"client/src/pages/Dranering.tsx:34",children:["Kostnaden beror pÃ¥ husets storlek, schaktdjup, Ã¥tkomlighet och markförhÃ¥llanden. Som privatperson kan du ofta använda ROT-avdrag för arbetskostnaden. Vi har samlat prisexempel och det som pÃ¥verkar kostnaden i guiden ",n.jsx(N,{"data-loc":"client/src/pages/Dranering.tsx:35",href:"/priser/vad-kostar-dranering",className:"font-semibold text-accent hover:underline",children:"Vad kostar dränering?"})," Efter ett platsbesök fÃ¥r du alltid en kostnadsfri offert med fast specifikation."]}),n.jsx("h2",{"data-loc":"client/src/pages/Dranering.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Dränering där du bor"}),n.jsx("p",{"data-loc":"client/src/pages/Dranering.tsx:38",children:"Förutsättningarna skiljer sig tydligt inom k
157ommunen â siltiga sedimentjordar i dalgÃ¥ngen kring Ljusdal, sluttningstomter med trycksatt markvatten i Järvsö och blockrik morän med stort tjäldjup i norr. Läs mer om hur vi dränerar där du bor:"}),n.jsxs("ul",{"data-loc":"client/src/pages/Dranering.tsx:41",className:"grid gap-2 sm:grid-cols-2",children:[n.jsx("li",{"data-loc":"client/src/pages/Dranering.tsx:42",children:n.jsx(N,{"data-loc":"client/src/pages/Dranering.tsx:42",href:"/dranering-ljusdal",className:"font-semibold text-accent hover:underline",children:"Dränering i Ljusdal"})}),n.jsx("li",{"data-loc":"client/src/pages/Dranering.tsx:43",children:n.jsx(N,{"data-loc":"client/src/pages/Dranering.tsx:43",href:"/dranering-farila",className:"font-semibold text-accent hover:underline",children:"Dränering i Färila"})}),n.jsx("li",{"data-loc":"client/src/pages/Dranering.tsx:44",children:n.jsx(N,{"data-loc":"client/src/pages/Dranering.tsx:44",href:"/dranering-jarvso",className:"font-semibold text-accent hover:underline",children:"Dränering i Järvsö"})}),n.jsx("li",{"data-loc":"client/src/pages/Dranering.tsx:45",children:n.jsx(N,{"data-loc":"client/src/pages/Dranering.tsx:45",href:"/dranering-ramsjo",className:"font-semibold text-accent hover:underline",children:"Dränering i Ramsjö"})}),n.jsx("li",{"data-loc":"client/src/pages/Dranering.tsx:46",children:n.jsx(N,{"data-loc":"client/src/pages/Dranering.tsx:46",href:"/dranering-hennan",className:"font-semibold text-accent hover:underline",children:"Dränering i Hennan"})})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Dranering.tsx:51",items:X.dranering,title:"Vanliga frÃ¥gor om dränering"}),n.jsx(ye,{"data-loc":"client/src/pages/Dranering.tsx:52",title:"Misstänker du fukt i grunden?",text:"Vi kommer ut, bedömer läget och lämnar en kostnadsfri offert pÃ¥ omdränering."})]})}const GH=[{title:"Husgrunder",text:"Schakt, dränerande fyllning, packning och finjustering inför platta pÃ¥ mark eller krypgrund â med rätt nivÃ¥er och radonhänsyn.",href:"/markarbeten/husgrund"},{title:"Tomtplanering",text:"FrÃ¥n rÃ¥tomt till färdig gräsmatta: massor flyttas, jord sorteras, ytor jämnas och lutningar läggs bort frÃ¥n huset.",href:"/markarbeten/tomtplanering"},{title:"Infarter & gÃ¥rdsplaner",text:"Uppbyggda med bärlager och slitlager som klarar personbil, husbil och traktor â utan spÃ¥rbildning."},{title:"Schakt & masshantering",text:"Schakt för ledningar, kablar och grunder samt borttransport eller Ã¥teranvändning av massor pÃ¥ plats."},{title:"Stubbrytning & röjning",text:"Vi tar bort stubbar, sly och sten sÃ¥ att tomten blir byggbar eller lättskött."},{title:"Stödmurar & slänter",text:"Terrassering av sluttningstomter med stödmurar av block eller natursten."}];function zH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Markarbeten.tsx:21",items:[{name:"Markarbeten"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Markarbeten.tsx:22",title:"Markarbeten â husgrunder, tomtplanering och schakt",intro:"Bra markarbeten syns inte när huset stÃ¥r klart â men de avgör om grunden stÃ¥r stadigt, om vattnet rinner Ã¥t rätt hÃ¥ll och om infarten hÃ¥ller. Vi utför markarbeten i hela Ljusdals kommun, med 30 Ã¥rs erfarenhet av traktens moränmarker.",image:ne.markarbeten,imageAlt:"Grävmaskin utför markarbeten för husgrund pÃ¥ tomt"}),n.jsx("section",{"data-loc":"client/src/pages/Markarbeten.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Markarbeten.tsx:30",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Markarbeten.tsx:31",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"MarkförhÃ¥llandena avgör metoden"}),n.jsx("p",{"data-loc":"client/src/pages/Markarbeten.tsx:32",children:"I Ljusdalstrakten möter vi allt frÃ¥n fast morän och berg i dagen till älvnära silt- och sandjordar i dalgÃ¥ngarna. Det pÃ¥verkar bÃ¥de schaktdjup, materialval och hur massorna kan Ã¥teranvändas. Med lokal erfarenhet slipper du överraskningar i form av oväntat bergschakt eller sättningar â vi vet oftast vad som väntar under torven redan innan skopan sätts i marken."}),n.jsx("h2",{"data-loc":"client/src/pages/Markarbeten.tsx:35",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Det här hjälper vi dig med"}),n.jsx("div",{"data-loc":"client/src/pages/Markarbeten.tsx:36",className:"grid gap-4 sm:grid-cols-2",children:GH.map(t=>n.jsxs("div",{"data-loc":"client/src/pages/Markarbeten.tsx:38",className:"rounded-lg border border-border bg-card p-4",children:[n.jsx("h3",{"data-loc":"client/src/pages/Markarbeten.tsx:39",className:"font-display font-bold text-primary",children:t.href?n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:40",href:t.href,className:"hover:text-accent hover:underline",children:t.title}):t.title}),n.jsx("p",{"data-loc":"client/src/pages/Markarbeten.tsx:42",className:"mt-1 text-sm leading-relaxed",children:t.text}),t.href&&n.jsxs(N,{"data-loc":"client/src/pages/Markarbeten.tsx:44",href:t.href,className:"mt-2 inline-block text-sm font-semibold text-accent hover:underline",children:["Läs mer om ",t.title.toLowerCase()]})]},t.title))}),n.jsx("h2",{"data-loc":"client/src/pages/Markarbeten.tsx:51",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Ett sammanhÃ¥llet Ã¥tagande"}),n.jsxs("p",{"data-loc":"client/src/pages/Markarbeten.tsx:52",children:["Bygger du nytt kan vi ta helheten: avverkning och ",n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:53",href:"/tradfallning",className:"font-semibold text-accent hover:underline",children:"trädfällning"}),", husgrund, ",n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:53",href:"/vatten-avlopp",className:"font-semibold text-accent hover:underline",children:"VA-anslutning eller enskilt avlopp"}),", infart och slutlig tomtplanering. En entreprenör, en tidplan, en kontaktperson â det brukar bÃ¥de korta byggtiden och sänka totalkostnaden."]}),n.jsx("h2",{"data-loc":"client/src/pages/Markarbeten.tsx:55",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Markarbeten där du bor"}),n.jsx("p",{"data-loc":"client/src/pages/Markarbeten.tsx:56",children:"Vi utför markarbeten i hela Ljusdals kommun â frÃ¥n Järvsö i söder till Ramsjö i norr. Läs mer om hur vi arbetar där du bor:"}),n.jsxs("ul",{"data-loc":"client/src/pages/Markarbeten.tsx:59",className:"grid gap-2 sm:grid-cols-2",children:[n.jsx("li",{"data-loc":"client/src/pages/Markarbeten.tsx:60",children:n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:60",href:"/markarbeten-ljusdal",className:"font-semibold text-accent hover:underline",children:"Markarbeten i Ljusdal"})}),n.jsx("li",{"data-loc":"client/src/pages/Markarbeten.tsx:61",children:n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:61",href:"/markarbeten-farila",className:"font-semibold text-accent hover:underline",children:"Markarbeten i Färila"})}),n.jsx("li",{"data-loc":"client/src/pages/Markarbeten.tsx:62",children:n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:62",href:"/markarbeten-jarvso",className:"font-semibold text-accent hover:underline",children:"Markarbeten i Järvsö"})}),n.jsx("li",{"data-loc":"client/src/pages/Markarbeten.tsx:63",children:n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:63",href:"/markarbeten-ramsjo",className:"font-semibold text-accent hover:underline",children:"Markarbeten i Ramsjö"})}),n.jsx("li",{"data-loc":"client/src/pages/Markarbeten.tsx:64",children:n.jsx(N,{"data-loc":"client/src/pages/Markarbeten.tsx:64",href:"/markarbeten-hennan",className:"font-semibold text-accent hover:underline",children:"Markarbeten i Hennan"})})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Markarbeten.tsx:69",items:X.markarbeten,title:"Vanliga frÃ¥gor om markarbeten"}),n.jsx(ye,{"data-loc":"client/src/pages/Markarbeten.tsx:70",title:"Planerar du att bygga eller förändra tomten?",text:"Berätta om projektet sÃ¥ räknar vi pÃ¥ det â offerten är alltid kostnadsfri."})]})}function qH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Husgrund.tsx:12",items:[{name:"Markarbeten",href:"/markarbeten"},{name:"Husgrund"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Husgrund.tsx:13",title:"Husgrund â grävning och markarbete för en grund som hÃ¥ller",intro:"Grunden är det viktigaste momentet i hela husbygget: allt som byggs ovanpÃ¥ stÃ¥r och faller med markarbetet. Vi schaktar och förbereder husgrunder för villor, fritidshus, attefallshus och garage i hela Ljusdals kommun â klart för gjutning.",image:ne.markarbeten,imageAlt:"Grävmaskin schaktar för husgrund med packade materiallager"}),n.jsx("section",{"data-loc":"client/src/pages/Husgrund.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Husgrund.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Husgrund.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Markarbete för platta pÃ¥ mark, krypgrund och källare"}),n.jsx("p",{"data-loc":"client/src/pages/Husgrund.tsx:23",children:"Vilken grundtyp du än valt börjar arbetet i marken. Vi schaktar bort matjord och tjälfarligt material ner till fast botten, bygger upp grunden med packade lager av bergkross i rätt fraktioner och lägger isolering, dränering och ledningar enligt konstruktionsritningen. I Hälsingland, där tjälen gÃ¥r uppemot tvÃ¥ meter, är rätt uppbyggnad och tjälisolering avgörande för att plattan inte ska röra sig med Ã¥rstiderna."}),n.jsxs("p",{"data-loc":"client/src/pages/Husgrund.tsx:26",children:["I entreprenaden ingÃ¥r normalt även ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:27",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"grunddränering"}),", dagvattenledningar och ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:27",href:"/vatten-avlopp",className:"font-semibold text-accent hover:underline",children:"VA-anslutningar"})," fram till huset, sÃ¥ att grunden är komplett förberedd när grundläggaren tar vid. Vi samordnar gärna direkt med din husleverantör eller byggare sÃ¥ att schaktbotten, höjder och ledningslägen stämmer med ritningen."]}),n.jsx("h2",{"data-loc":"client/src/pages/Husgrund.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ gÃ¥r det till"}),n.jsx("p",{"data-loc":"client/src/pages/Husgrund.tsx:30",children:"Efter platsbesök och genomgÃ¥ng av ritningarna lämnar vi fast offert. Vid byggstart sätter vi ut höjder, schaktar, hanterar massorna och bygger upp grunden lager för lager med packning och kontroll. Berg i schaktet, högt grundvatten eller lÃ¥nga transportavstÃ¥nd pÃ¥verkar kostnaden â därför besiktigar vi alltid tomten innan vi lämnar pris. En normal villagrund tar en till tvÃ¥ veckor frÃ¥n schaktstart till gjutklar grund."}),n.jsxs("p",{"data-loc":"client/src/pages/Husgrund.tsx:33",children:["Bygger du nytt är det ofta klokt att planera ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:34",href:"/markarbeten/tomtplanering",className:"font-semibold text-accent hover:underline",children:"tomtplaneringen"})," samtidigt â dÃ¥ kan massorna frÃ¥n grundschakten Ã¥teranvändas pÃ¥ tomten i stället för att köras bort, vilket sänker totalkostnaden."]}),n.jsx("h2",{"data-loc":"client/src/pages/Husgrund.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Husgrund där du bor"}),n.jsxs("p",{"data-loc":"client/src/pages/Husgrund.tsx:37",children:["Vi gräver husgrunder i hela Ljusdals kommun. Läs mer om hur vi arbetar pÃ¥ din ort:"," ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:39",href:"/husgrund-ljusdal",className:"font-semibold text-accent hover:underline",children:"husgrund i Ljusdal"}),","," ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:40",href:"/husgrund-farila",className:"font-semibold text-accent hover:underline",children:"husgrund i Färila"}),","," ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:41",href:"/husgrund-jarvso",className:"font-semibold text-accent hover:underline",children:"husgrund i Järvsö"}),","," ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:42",href:"/husgrund-ramsjo",className:"font-semibold text-accent hover:underline",children:"husgrund i Ramsjö"})," och"," ",n.jsx(N,{"data-loc":"client/src/pages/Husgrund.tsx:43",href:"/husgrund-hennan",className:"font-semibold text-accent hover:underline",children:"husgrund i Hennan"}),"."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Husgrund.tsx:48",items:X.husgrund,title:"Vanliga frÃ¥gor om husgrunder"}),n.jsx(ye,{"data-loc":"client/src/pages/Husgrund.tsx:49",title:"Dags att gräva för husgrund?",text:"Skicka ritningarna sÃ¥ lämnar vi fast offert efter platsbesök. Kostnadsfritt och utan förpliktelser."})]})}function PH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Tomtplanering.tsx:12",items:[{name:"Markarbeten",href:"/markarbeten"},{name:"Tomtplanering"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Tomtplanering.tsx:13",title:"Tomtplanering â frÃ¥n rÃ¥mark till färdig tomt",intro:"En genomtänkt tomtplanering gör skillnaden mellan en tomt som fungerar och en som ständigt ställer till problem med vatten, lutningar och leriga ytor. Vi formar tomter i hela Ljusdals kommun â grovplanering, matjord, infarter, murar och dagvatten.",image:ne.markarbeten,imageAlt:"Grävmaskin finplanerar villatomt med matjord och grusytor"}),n.jsx("section",{"data-loc":"client/src/pages/Tomtplanering.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Tomtplanering.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Tomtplanering.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grovplanering och finplanering"}),n.jsx("p",{"data-loc":"client/src/pages/Tomtplanering.tsx:23",children:"Grovplaneringen görs oftast i samband med husbygget: massor flyttas, ytor jämnas av och tomten fÃ¥r sina grundläggande höjder med rätt fall bort frÃ¥n huset. Finplaneringen är sista steget mot färdig tomt â matjord och gräsytor, grusade gÃ¥ngar, rabatter, kantsten och de detaljer som gör tomten klar att använda. Vi utför bÃ¥da delarna, som helhetsÃ¥tagande eller i etapper efter din budget."}),n.jsx("h2",{"data-loc":"client/src/pages/Tomtplanering.tsx:26",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Infarter, stödmurar och dagvatten"}),n.jsxs("p",{"data-loc":"client/src/pages/Tomtplanering.tsx:27",children:["MÃ¥nga tomter i Hälsingland ligger i sluttande terräng, där stödmurar av block eller natursten skapar plana, användbara ytor. Vi anlägger även ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:28",href:"/vagentreprenad/anlagga-grusvag",className:"font-semibold text-accent hover:underline",children:"infarter och grusvägar"})," med bärlager som klarar personbil och leveranser Ã¥ret om. Minst lika viktigt är vattnet: rätt lutningar, dagvattenledningar och vid behov ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:28",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," ser till att smältvatten om vÃ¥ren inte blir stÃ¥ende vid husgrunden."]}),n.jsx("h2",{"data-loc":"client/src/pages/Tomtplanering.tsx:30",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Massorna â en resurs, inte ett problem"}),n.jsxs("p",{"data-loc":"client/src/pages/Tomtplanering.tsx:31",children:["Med egen lastbil hanterar vi bÃ¥de bortforsling av överskottsmassor och tillförsel av fyllnadsmaterial, grus och matjord. Kan massorna frÃ¥n schakten Ã¥teranvändas pÃ¥ tomten sjunker kostnaden â nÃ¥got vi alltid tittar pÃ¥ när vi planerar arbetet. Bygger du nytt lönar det sig att planera tomten redan i samband med ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:32",href:"/markarbeten/husgrund",className:"font-semibold text-accent hover:underline",children:"husgrunden"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/Tomtplanering.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Tomtplanering där du bor"}),n.jsxs("p",{"data-loc":"client/src/pages/Tomtplanering.tsx:35",children:["Vi planerar tomter i hela Ljusdals kommun. Läs mer om hur vi arbetar pÃ¥ din ort:"," ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:37",href:"/tomtplanering-ljusdal",className:"font-semibold text-accent hover:underline",children:"tomtplanering i Ljusdal"}),","," ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:38",href:"/tomtplanering-farila",className:"font-semibold text-accent hover:underline",children:"tomtplanering i Färila"}),","," ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:39",href:"/tomtplanering-jarvso",className:"font-semibold text-accent hover:underline",children:"tomtplanering i Järvsö"}),","," ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:40",href:"/tomtplanering-ramsjo",className:"font-semibold text-accent hover:underline",children:"tomtplanering i Ramsjö"})," och"," ",n.jsx(N,{"data-loc":"client/src/pages/Tomtplanering.tsx:41",href:"/tomtplanering-hennan",className:"font-semibold text-accent hover:underline",children:"tomtplanering i Hennan"}),"."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Tomtplanering.tsx:46",items:X.tomtplanering,title:"Vanliga frÃ¥gor om tomtplanering"}),n.jsx(ye,{"data-loc":"client/src/pages/Tomtplanering.tsx:47",title:"Dags att göra nÃ¥got Ã¥t tomten?",text:"Vi tittar pÃ¥ platsen, lyssnar pÃ¥ dina önskemÃ¥l och lämnar kostnadsfri offert."})]})}function BH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Snorojning.tsx:12",items:[{name:"Snöröjning"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Snorojning.tsx:13",title:"Snöröjning i Hennan och norra
157Ljusdals kommun",intro:"Vintrarna i norra Hälsingland är lÃ¥nga och snörika. Vi plogar infarter, gÃ¥rdsplaner, parkeringar och vägar Ã¥t privatpersoner, företag och vägföreningar â med maskiner som redan finns pÃ¥ plats i Hennan.",image:ne.snorojning,imageAlt:"Traktor med vikplog röjer snö pÃ¥ väg i norra Ljusdals kommun"}),n.jsx("section",{"data-loc":"client/src/pages/Snorojning.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Snorojning.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Snorojning.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Säsongsavtal eller enstaka utryckningar"}),n.jsx("p",{"data-loc":"client/src/pages/Snorojning.tsx:23",children:"De flesta av vÃ¥ra kunder väljer säsongsavtal: vi plogar automatiskt när snödjupet passerar en överenskommen gräns, utan att du behöver ringa. Det passar dig som pendlar, driver verksamhet eller har fritidshus som ska vara Ã¥tkomligt. Vill du hellre betala per gÃ¥ng gÃ¥r det ocksÃ¥ bra â i mÃ¥n av kapacitet plogar vi även vid enstaka tillfällen och efter större oväder."}),n.jsx("p",{"data-loc":"client/src/pages/Snorojning.tsx:26",children:"För vägföreningar och samfälligheter erbjuder vi avtal för hela vägsträckor, inklusive siktröjning i korsningar och isrivning när vägbanan bygger pÃ¥ sig."}),n.jsx("h2",{"data-loc":"client/src/pages/Snorojning.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Mer än bara plogning"}),n.jsxs("p",{"data-loc":"client/src/pages/Snorojning.tsx:30",children:["Vid behov kompletterar vi med sandning av backar och vändplaner, bortforsling av snö när högarna tar överhanden och takskottningssamordning för större fastigheter. Efter vintern kan vi ocksÃ¥ Ã¥tgärda plogskador och grusa upp ytorna igen â se ",n.jsx(N,{"data-loc":"client/src/pages/Snorojning.tsx:31",href:"/vagentreprenad/vagunderhall-dikning",className:"font-semibold text-accent hover:underline",children:"vägunderhÃ¥ll"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/Snorojning.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad kostar snöröjning?"}),n.jsx("p",{"data-loc":"client/src/pages/Snorojning.tsx:34",children:"Priset beror pÃ¥ ytans storlek, hur ofta det ska plogas och avstÃ¥ndet frÃ¥n Hennan. Som privatperson kan du ofta använda RUT-avdrag för snöskottning vid bostaden. Kontakta oss sÃ¥ lämnar vi ett pris utifrÃ¥n dina förutsättningar. Boka gärna före säsongen â avtalskunderna prioriteras när snön väl kommer."}),n.jsx("h2",{"data-loc":"client/src/pages/Snorojning.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Snöröjning där du bor"}),n.jsx("p",{"data-loc":"client/src/pages/Snorojning.tsx:38",children:"Vintern ser olika ut inom kommunen â trÃ¥nga innergÃ¥rdar och tidiga morgnar i Ljusdals tätort, lÃ¥nga gÃ¥rdsinfarter i Färila, backiga tomter och stugbyten i Järvsö, samt kraftiga snömängder och skogsbilvägar i norr. Läs mer om hur vi plogar där du bor:"}),n.jsxs("ul",{"data-loc":"client/src/pages/Snorojning.tsx:41",className:"grid gap-2 sm:grid-cols-2",children:[n.jsx("li",{"data-loc":"client/src/pages/Snorojning.tsx:42",children:n.jsx(N,{"data-loc":"client/src/pages/Snorojning.tsx:42",href:"/snorojning-ljusdal",className:"font-semibold text-accent hover:underline",children:"Snöröjning i Ljusdal"})}),n.jsx("li",{"data-loc":"client/src/pages/Snorojning.tsx:43",children:n.jsx(N,{"data-loc":"client/src/pages/Snorojning.tsx:43",href:"/snorojning-farila",className:"font-semibold text-accent hover:underline",children:"Snöröjning i Färila"})}),n.jsx("li",{"data-loc":"client/src/pages/Snorojning.tsx:44",children:n.jsx(N,{"data-loc":"client/src/pages/Snorojning.tsx:44",href:"/snorojning-jarvso",className:"font-semibold text-accent hover:underline",children:"Snöröjning i Järvsö"})}),n.jsx("li",{"data-loc":"client/src/pages/Snorojning.tsx:45",children:n.jsx(N,{"data-loc":"client/src/pages/Snorojning.tsx:45",href:"/snorojning-ramsjo",className:"font-semibold text-accent hover:underline",children:"Snöröjning i Ramsjö"})}),n.jsx("li",{"data-loc":"client/src/pages/Snorojning.tsx:46",children:n.jsx(N,{"data-loc":"client/src/pages/Snorojning.tsx:46",href:"/snorojning-hennan",className:"font-semibold text-accent hover:underline",children:"Snöröjning i Hennan"})})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Snorojning.tsx:51",items:X.snorojning,title:"Vanliga frÃ¥gor om snöröjning"}),n.jsx(ye,{"data-loc":"client/src/pages/Snorojning.tsx:52",title:"Säkra vintern i tid",text:"Teckna säsongsavtal innan snön kommer â begär en kostnadsfri offert i dag."})]})}function UH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Tradfallning.tsx:12",items:[{name:"Trädfällning"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Tradfallning.tsx:13",title:"Trädfällning med maskinstöd â säkert nära hus och ledningar",intro:"Stora träd nära byggnader, vägar och luftledningar kräver mer än en motorsÃ¥g. Vi fäller säkert med maskinstöd, tar hand om ris och stammar och kan gräva bort stubbarna i s
157amma uppdrag.",image:ne.tradfallning,imageAlt:"Trädfällning med maskinstöd intill byggnad"}),n.jsx("section",{"data-loc":"client/src/pages/Tradfallning.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Tradfallning.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Tradfallning.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"När träd stÃ¥r illa till"}),n.jsx("p",{"data-loc":"client/src/pages/Tradfallning.tsx:23",children:"Ett fullvuxet träd väger flera ton, och stÃ¥r det lutande över taket, nära kraftledningen eller intill vägen är felmarginalen noll. Med maskin som stöttar och styr fallriktningen kan även svÃ¥ra träd tas ner kontrollerat, i sektioner om det behövs. Det är den stora skillnaden mot manuell fällning â vi behöver inte hoppas pÃ¥ att trädet faller rätt, vi ser till att det gör det."}),n.jsxs("p",{"data-loc":"client/src/pages/Tradfallning.tsx:26",children:["Vanliga uppdrag är riskträd efter storm, granar som dött av barkborreangrepp, träd som skuggar tomten och avverkning inför husbygge eller ",n.jsx(N,{"data-loc":"client/src/pages/Tradfallning.tsx:27",href:"/markarbeten",className:"font-semibold text-accent hover:underline",children:"markarbeten"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/Tradfallning.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vi lämnar tomten städad"}),n.jsx("p",{"data-loc":"client/src/pages/Tradfallning.tsx:30",children:"Efter fällningen kapas stammarna i önskade längder â mÃ¥nga vill behÃ¥lla veden â och riset flisas eller forslas bort. Vill du bli av med stubbarna gräver vi bort dem med maskin, vilket är effektivt när flera träd tas ner samtidigt eller ytan ska bli gräsmatta, infart eller byggplats."}),n.jsx("p",{"data-loc":"client/src/pages/Tradfallning.tsx:33",children:"Uppdrag prissätts efter antal träd, storlek, svÃ¥righetsgrad och hur mycket som ska forslas bort. Skicka gärna nÃ¥gra bilder med din förfrÃ¥gan, sÃ¥ kan vi ofta ge en preliminär bedömning direkt."}),n.jsxs("p",{"data-loc":"client/src/pages/Tradfallning.tsx:36",children:["För privatpersoner kan trädfällning, flisning och stubborttagning pÃ¥ tomten där bostaden stÃ¥r ge rätt till RUT-avdrag pÃ¥ arbetskostnaden. Bortforsling, maskiner och arbete pÃ¥ skogsmark omfattas inte. Se ",n.jsx("a",{"data-loc":"client/src/pages/Tradfallning.tsx:37",href:"https://www.skatteverket.se/foretag/skatterochavdrag/rotochrut/gerarbetetratttillrutavdrag.4.2ef18e6a125660db8b080001531.html",target:"_blank",rel:"noreferrer",className:"font-semibold text-accent hover:underline",children:"Skatteverkets aktuella regler för trädfällning"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/Tradfallning.tsx:39",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Trädfällning där du bor"}),n.jsx("p",{"data-loc":"client/src/pages/Tradfallning.tsx:40",children:"Förutsättningarna varierar: trÃ¥nga villatomter nära hus och luftledningar i Ljusdals tätort, barkborreskadade granar kring Färila, sluttningstomter i Järvsö och stormfällt virke längs skogsbilvägar i norr. Läs mer om hur vi arbetar där du bor:"}),n.jsxs("ul",{"data-loc":"client/src/pages/Tradfallning.tsx:43",className:"grid gap-2 sm:grid-cols-2",children:[n.jsx("li",{"data-loc":"client/src/pages/Tradfallning.tsx:44",children:n.jsx(N,{"data-loc":"client/src/pages/Tradfallning.tsx:44",href:"/tradfallning-ljusdal",className:"font-semibold text-accent hover:underline",children:"Trädfällning i Ljusdal"})}),n.jsx("li",{"data-loc":"client/src/pages/Tradfallning.tsx:45",children:n.jsx(N,{"data-loc":"client/src/pages/Tradfallning.tsx:45",href:"/tradfallning-farila",className:"font-semibold text-accent hover:underline",children:"Trädfällning i Färila"})}),n.jsx("li",{"data-loc":"client/src/pages/Tradfallning.tsx:46",children:n.jsx(N,{"data-loc":"client/src/pages/Tradfallning.tsx:46",href:"/tradfallning-jarvso",className:"font-semibold text-accent hover:underline",children:"Trädfällning i Järvsö"})}),n.jsx("li",{"data-loc":"client/src/pages/Tradfallning.tsx:47",children:n.jsx(N,{"data-loc":"client/src/pages/Tradfallning.tsx:47",href:"/tradfallning-ramsjo",className:"font-semibold text-accent hover:underline",children:"Trädfällning i Ramsjö"})}),n.jsx("li",{"data-loc":"client/src/pages/Tradfallning.tsx:48",children:n.jsx(N,{"data-loc":"client/src/pages/Tradfallning.tsx:48",href:"/tradfallning-hennan",className:"font-semibold text-accent hover:underline",children:"Trädfällning i Hennan"})})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Tradfallning.tsx:53",items:X.tradfallning,title:"Vanliga frÃ¥gor om trädfällning"}),n.jsx(ye,{"data-loc":"client/src/pages/Tradfallning.tsx:54",title:"Träd som behöver tas ner?",text:"Skicka bilder pÃ¥ träden sÃ¥ Ã¥terkommer vi med en kostnadsfri offert."})]})}function QH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Smide.tsx:11",items:[{name:"Smide"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Smide.tsx:12",title:"Smide och verkstad â reparationer och tillverkning i Hennan",intro:"I vÃ¥r egen verkstad i Hennan utför vi smide, svetsning och maskinreparationer Ã¥t lantbruk, skogsbruk, entreprenad och privatpersoner. Det som är trasigt lagar vi â det som inte finns tillverkar vi.",image:ne.smide,imageAlt:"Svetsarbete med gnistor i smidesverkstaden i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/Smide.tsx:19",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Smide.tsx:20",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Smide.tsx:21",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Reparationer som inte kan vänta"}),n.jsx("p",{"data-loc":"client/src/pages/Smide.tsx:22",children:"När skopan spricker, redskapet gÃ¥r av eller lantbruksmaskinen stÃ¥r stilla mitt i säsongen räknas varje timme. Med verkstaden pÃ¥ plats i Hennan kan vi ofta laga samma dag: svetsning av stÃ¥l, reparation av redskap och slitdelar, riktning och förstärkning. Det är samma verkstad som hÃ¥ller vÃ¥r egen maskinpark rullande â utrustningen och vanan finns där."}),n.jsx("h2",{"data-loc":"client/src/pages/Smide.tsx:25",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Tillverkning efter behov"}),n.jsx("p",{"data-loc":"client/src/pages/Smide.tsx:26",children:"Vi tillverkar och anpassar det som inte gÃ¥r att köpa: fästen och adaptrar till redskap, grindar, räcken, balkar och specialdetaljer för byggen och maskiner. Beskriv vad du behöver â med mÃ¥tt, en skiss eller bara en bild â sÃ¥ tar vi fram en lösning i rätt material och dimension."}),n.jsx("p",{"data-loc":"client/src/pages/Smide.tsx:29",children:"För entreprenad- och skogskunder kombineras verkstaden ofta med vÃ¥ra övriga tjänster: ett trumbyte kräver ibland ett specialtillverkat fäste, en väggrind ska sättas vid skogsbilvägen, ett redskap behöver anpassas innan säsongen. Att allt finns under samma tak gör det enkelt."})]})}),n.jsx(Te,{"data-loc":"client/src/pages/Smide.tsx:35",items:X.smide,title:"Vanliga frÃ¥gor om smide och verkstad"}),n.jsx(ye,{"data-loc":"client/src/pages/Smide.tsx:36",title:"NÃ¥got som behöver lagas eller tillverkas?",text:"Ring oss direkt eller beskriv jobbet i formuläret â vi Ã¥terkommer snabbt."})]})}const IH=[{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"Markarbeten & husgrunder",href:"/markarbeten"},{name:"Husgrund i Ljusdal",href:"/husgrund-ljusdal"},{name:"Tomtplanering i Ljusdal",href:"/tomtplanering-ljusdal"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning i Ljusdal",href:"/avloppsanlaggning-ljusdal"},{name:"Trekammarbrunn i Ljusdal",href:"/trekammarbrunn-ljusdal"},{name:"Dränering Ljusdal",href:"/dranering-ljusdal"},{name:"Dränering â översikt",href:"/dranering"},{name:"Snöröjning i Ljusdal",href:"/snorojning-ljusdal"},{name:"Trädfällning i Ljusdal",href:"/tradfallning-ljusdal"}];function KH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:26",items:[{name:"Grävfirma Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:27",title:"Grävfirma i Ljusdal â lokal entreprenör sedan 1996",intro:"Behöver du en grävfirma i Ljusdal med omnejd? Hennans Grävtjänst utför grävarbeten, markarbeten, vägbyggen och VA-anläggningar i hela kommunen â med 30 Ã¥rs erfarenhet av traktens mark och F-skattsedel sedan starten.",image:ne.hero,imageAlt:"Grävmaskin frÃ¥n lokal grävfirma arbetar utanför Ljusdal"}),n.jsx("section",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:34",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:35",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:36",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grävarbeten i Ljusdal kräver lokal markkännedom"}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:38",children:"Ljusdal ligger i Ljusnans dalgÃ¥ng, och det märks i marken. Nere i dalen dominerar älvavlagrade sand- och siltjordar â lättgrävda men flytbenägna när de blir vattenmättade, vilket ställer krav pÃ¥ släntlutning och dränering vid schaktarbeten. Uppe pÃ¥ höjderna runt centralorten tar moränen och berget vid, där schakt i stället kan kräva losshÃ¥llning och en helt annan maskinsättning. Att veta vilken av situationerna som väntar â och prissätta rätt därefter â är skillnaden mellan en lokal entreprenör och en tillrest."}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:41",children:"Vi har grävt i Ljusdalstrakten sedan 1996. FrÃ¥n vÃ¥r bas i Hennan, ungefär tre mil norrut längs riksväg 84 och Norra stambanan, nÃ¥r vi Ljusdals tätort inom en halvtimme â nära nog för snabba platsbesök, utan storstadsfirmornas framkörningskostnader."}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:44",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Det här gör vi Ã¥t kunder i Ljusdal"}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:45",children:"Vanliga uppdrag i och kring tätorten är husgrunder och tomtplanering för ny- och tillbyggen, omdränering av äldre källargrunder, infarter och gÃ¥rdsplaner, samt VA-arbeten â inte minst nya enskilda avlopp för fastigheter utanför det kommunala nätet. TillstÃ¥nd för enskilt avlopp söks hos miljöenheten i Ljusdals kommun, och vi tar fram hela det tekniska underlaget till din ansökan."}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:48",children:["För skogsägare och vägföreningar i kommunen bygger och underhÃ¥ller vi ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:49",href:"/vagentreprenad/skogsbilvag",className:"font-semibold text-accent hover:underline",children:"skogsbilvägar"})," och ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:49",href:"/vagentreprenad/anlagga-grusvag",className:"font-semibold text-accent hover:underline",children:"grusvägar"})," â ett av vÃ¥ra största arbetsomrÃ¥den. Vintertid sköter vi ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:49",href:"/snorojning-ljusdal",className:"font-semibold text-accent hover:underline",children:"snöröjning i Ljusdal"})," av vägar och infarter, och Ã¥ret om utför vi ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:49",href:"/tradfallning-ljusdal",className:"font-semibold text-accent hover:underline",children:"trädfällning"})," av riskträd pÃ¥ tomt."]}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:51",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Tjäle och vinter styr planeringen"}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:52",children:"I Ljusdals inland räknar man ofta med tjäldjup pÃ¥ uppemot en och en halv till tvÃ¥ meter. Det avgör hur djupt vattenledningar mÃ¥ste läggas, hur vägtrummor isoleras och när pÃ¥ Ã¥ret olika arbeten gör sig bäst. Grävsäsongen är kort â hör av dig i god tid, sÃ¥ planerar vi in ditt projekt rätt."})]}),n.jsxs("aside",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:56",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:57",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:58",className:"font-display text-lg font-bold text-primary",children:"VÃ¥ra tjänster i Ljusdal"}),n.jsx("ul",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:59",className:"mt-3 space-y-2 text-sm",children:IH.map(t=>n.jsx("li",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:61",children:n.jsx(N,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:61",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:65",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:66",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:67",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:68",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:69",children:"Egen maskinpark och verkstad"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:70",children:"F-skattsedel och försäkring"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:71",children:"Kostnadsfri offert efter platsbesök"})]}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:73",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:79",items:X.ljusdal,title:"Vanliga frÃ¥gor â grävfirma i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/GravfirmaLjusdal.tsx:80",title:"Behöver du en grävfirma i Ljusdal?",text:"Beskriv ditt projekt sÃ¥ Ã¥terkommer vi med en kostnadsfri offert â ofta inom en arbetsdag."})]})}const YH=[{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning i Färila",href:"/avloppsanlaggning-farila"},{name:"Trekammarbrunn i Färila",href:"/trekammarbrunn-farila"},{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"Skogsbilväg",href:"/vagentreprenad/skogsbilvag"},{name:"Markarbeten",href:"/markarbeten"},{name:"Husgrund i Färila",href:"/husgrund-farila"},{name:"Tomtplanering i Färila",href:"/tomtplanering-farila"},{name:"Dränering Färila",href:"/dranering-farila"},{name:"Dränering â översikt",href:"/dranering"},{name:"Snöröjning i Färila",href:"/snorojning-farila"},{name:"Trädfällning i Färila",href:"/tradfallning-farila"}];function XH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:27",items:[{name:"Grävfirma Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:28",title:"Grävfirma i Färila â markarbeten och avlopp i jordbruksbygd",intro:"Hennans Grävtjänst utför grävarbeten, avloppsanläggningar och vägentreprenad i Färila med omnejd. Lokal entreprenör med 30 Ã¥rs erfarenhet av Ljusnandalens jordar och skogsmarkerna runt omkring.",image:ne.markarbeten,imageAlt:"Markarbeten med grävmaskin i jordbruksbygd utanför Färila"}),n.jsx("section",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:35",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:36",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:37",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:38",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Att gräva i Färila â dalgÃ¥ngens jordar och skogens moräner"}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:39",children:"Färila ligger väster om Ljusdal, där Ljusnan breder ut sig genom en gammal jord- och skogsbruksbygd. Närmast älven bestÃ¥r marken ofta av sediment â sand och silt som är lättgrävd men kräver omsorg med slänter och avvattning. Utanför dalgÃ¥ngen tar skogsmarken och moränen över, med inslag av block och berg som pÃ¥verkar bÃ¥de schaktarbeten och vägbyggen. Vi har arbetat i bygden i tre decennier och vet i regel vad som döljer sig under ytan innan vi sätter skopan i marken."}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:42",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Enskilda avlopp â vÃ¥rt vanligaste uppdrag i Färila"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:43",children:["Stora delar av Färilabygden ligger utanför kommunalt VA, och mÃ¥nga avloppsanläggningar frÃ¥n 60- och 70-talen behöver bytas ut. Vi gräver provgrop, bedömer om marken passar för ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:44",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration eller markbädd"}),", tar fram underlaget till tillstÃ¥ndsansökan hos miljöenheten i Ljusdals kommun och utför sedan hela anläggningen. Närheten till vattendrag kan innebära hög skyddsnivÃ¥ â det bedömer vi Ã¥t dig innan du lÃ¥ser dig vid en lösning."]}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:46",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vägar för skog och fastighet"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:47",children:["Skogsbruket präglar trakten, och vi bygger och rustar ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:48",href:"/vagentreprenad/skogsbilvag",className:"font-semibold text-accent hover:underline",children:"skogsbilvägar"})," som klarar dagens virkesbilar â terrassering, trummor, vändplaner och slitlager. För fastighetsägare anlägger vi infarter och ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:48",href:"/vagentreprenad/anlagga-grusvag",className:"font-semibold text-accent hover:underline",children:"grusvägar"}),", och hjälper vägsamfälligheter med dikesrensning och hyvling. Med tjäldjup som i trakten ofta nÃ¥r en och en halv till tvÃ¥ meter är rätt avvattning och frostsäkert lagda trummor avgörande för att vägarna ska klara tjällossningen."]}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:50",children:["FrÃ¥n Hennan nÃ¥r vi Färila pÃ¥ under en timme, vilket gör bÃ¥de platsbesök och Ã¥terkommande uppdrag praktiska att planera. Vi tar även ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:51",href:"/tradfallning-farila",className:"font-semibold text-accent hover:underline",children:"trädfällning i Färila"})," och ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:51",href:"/snorojning-farila",className:"font-semibold text-accent hover:underline",children:"snöröjning"})," med säsongsavtal."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:54",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:55",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:56",className:"font-display text-lg font-bold text-primary",children:"VÃ¥ra tjänster i Färila"}),n.jsx("ul",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:57",className:"mt-3 space-y-2 text-sm",children:YH.map(t=>n.jsx("li",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:59",children:n.jsx(N,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:59",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:63",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:64",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:65",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:66",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:67",children:"Egen maskinpark och verkstad"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:68",children:"F-skattsedel och försäkring"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:69",children:"Kostnadsfri offert efter platsbesök"})]}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaFarila.tsx:71",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:77",items:X.farila,title:"Vanliga frÃ¥gor â grävfirma i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/GravfirmaFarila.tsx:78",title:"Projekt pÃ¥ gÃ¥ng i Färila?",text:"Vi kommer gärna ut och tittar. Offerten är alltid kostnadsfri."})]})}const $H=[{name:"Markarbeten & husgrunder",href:"/markarbeten"},{name:"Husgrund i Järvsö",href:"/husgrund-jarvso"},{name:"Tomtplanering i Järvsö",href:"/tomtplanering-jarvso"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning i Järvsö",href:"/avloppsanlaggning-jarvso"},{name:"Trekammarbrunn i Järvsö",href:"/trekammarbrunn-jarvso"},{name:"Dränering Järvsö",href:"/dranering-jarvso"},{name:"Dränering â översikt",href:"/dranering"},{name:"Anlägga grusväg",href:"/vagentreprenad/anlagga-grusvag"},{name:"Snöröjning i Järvsö",href:"/snorojning-jarvso"},{name:"Trädfällning i Järvsö",href:"/tradfallning-jarvso"}];function ZH(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:26",items:[{name:"Grävfirma Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:27",title:"Grävfirma i Järvsö â markarbeten för fritidshus och besöksnäring",intro:"Järvsö växer â och med byggandet följer behovet av husgrunder, avlopp, infarter och tomtplanering. Hennans Grävtjänst är den lokala grävfirman med 30 Ã¥rs erfarenhet av markförhÃ¥llandena i Ljusnandalen.",image:ne.dranering,imageAlt:"Grävmaskin förbereder husgrund i sluttningstomt i Järvsö"}),n.jsx("section",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:34",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:35",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:36",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Byggort med särskilda förutsättningar"}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:38",children:"Med besöksmÃ¥l som Järvzoo och skidbacken har Järvsö blivit en av Hälsinglands mest aktiva byggorter, med fritidshus och boenden som växer fram bÃ¥de i dalgÃ¥ngen och uppe i sluttningarna. Sluttningstomterna ger fina lägen men ställer krav pÃ¥ markarbetena: terrassering i etage, stödmurar, avskärande dränering ovanför huset och infarter med rätt lutning för vinterbruk. Nere vid Ljusnan är det i stället de älvnära sand- och siltjordarna som styr schakt och grundläggning."}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:41",children:["Vi utför husgrunder, ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:42",href:"/markarbeten",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," och infarter för bÃ¥de privatpersoner och byggföretag i JärvsöomrÃ¥det â och tar gärna helheten frÃ¥n avverkning och ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:42",href:"/tradfallning-jarvso",className:"font-semibold text-accent hover:underline",children:"trädfällning i Järvsö"})," till färdigplanerad tomt."]}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:44",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Avlopp och vatten för fritidshus"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:45",children:["MÃ¥nga fritidshus kring Järvsö ligger utanför kommunalt VA och behöver eget avlopp. Vi anlägger ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:46",href:"/vatten-avlopp/enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"enskilda avlopp"})," dimensionerade för fritidsboende och hanterar tillstÃ¥ndsprocessen mot miljöenheten i Ljusdals kommun. I sluttande terräng är rätt placering av infiltration extra viktig â bÃ¥de för funktionen och för grannarnas dricksvattenbrunnar."]}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vinter i backen â snö och tjÃ
157¤le"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:49",children:["Järvsös vintrar är en tillgÃ¥ng för orten men en utmaning för vägar och infarter. Tjäldjup pÃ¥ uppemot en och en halv till tvÃ¥ meter kräver frostsäkert lagda ledningar och trummor, och branta infarter behöver byggas med bärlager och ytmaterial som fungerar när det är packad snö och is. Vi sköter även ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:50",href:"/snorojning-jarvso",className:"font-semibold text-accent hover:underline",children:"snöröjning i Järvsö"})," av vägar och gÃ¥rdsplaner vintertid â i mÃ¥n av kapacitet även utanför vÃ¥ra ordinarie rundor i norra kommundelen."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:55",className:"font-display text-lg font-bold text-primary",children:"VÃ¥ra tjänster i Järvsö"}),n.jsx("ul",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:56",className:"mt-3 space-y-2 text-sm",children:$H.map(t=>n.jsx("li",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:65",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:66",children:"Egen maskinpark och verkstad"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:67",children:"F-skattsedel och försäkring"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:68",children:"Kostnadsfri offert efter platsbesök"})]}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:76",items:X.jarvso,title:"Vanliga frÃ¥gor â grävfirma i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/GravfirmaJarvso.tsx:77",title:"Bygger du i Järvsö?",text:"FrÃ¥n husgrund till färdig tomt â begär en kostnadsfri offert."})]})}const WH=[{name:"Skogsbilväg",href:"/vagentreprenad/skogsbilvag"},{name:"VägunderhÃ¥ll & dikning",href:"/vagentreprenad/vagunderhall-dikning"},{name:"Vägtrumma",href:"/vagentreprenad/vagtrumma"},{name:"Snöröjning i Ramsjö",href:"/snorojning-ramsjo"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning i Ramsjö",href:"/avloppsanlaggning-ramsjo"},{name:"Trekammarbrunn i Ramsjö",href:"/trekammarbrunn-ramsjo"},{name:"Markarbeten i Ramsjö",href:"/markarbeten-ramsjo"},{name:"Husgrund i Ramsjö",href:"/husgrund-ramsjo"},{name:"Tomtplanering i Ramsjö",href:"/tomtplanering-ramsjo"},{name:"Dränering i Ramsjö",href:"/dranering-ramsjo"},{name:"Trädfällning i Ramsjö",href:"/tradfallning-ramsjo"}];function e5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:27",items:[{name:"Grävfirma Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:28",title:"Grävfirma i Ramsjö â skogsbilvägar och snöröjning i norra kommundelen",intro:"Ramsjö är skogsbygd pÃ¥ riktigt: lÃ¥nga avstÃ¥nd, stora skogsinnehav och vägar som avgör om skogen gÃ¥r att bruka. Hennans Grävtjänst finns strax söderut i Hennan â närmast till hands när nÃ¥got behöver grävas, byggas eller plogas.",image:ne.skogsbilvag,imageAlt:"Skogsbilväg genom vidsträckt skogslandskap kring Ramsjö"}),n.jsx("section",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:35",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:36",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:37",className:"space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:38",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Närmaste grävfirman till Ramsjö"}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:39",children:"I kommunens nordligaste del är avstÃ¥nden lÃ¥nga och entreprenörerna fÃ¥. FrÃ¥n Hennan nÃ¥r vi Ramsjö pÃ¥ en kvart längs riksväg 84/E45-strÃ¥ket â det gör skillnad bÃ¥de för framkörningskostnaden och för hur snabbt vi är pÃ¥ plats när en trumma gÃ¥tt sönder, vägen spolats av eller snöfallet kommit tidigare än väntat. Vi känner vägarna, markerna och människorna i bygden efter 30 Ã¥r i trakten."}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:42",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Skogsbilvägar är livsnerven"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:43",children:["Kring Ramsjö dominerar skogsbruket, och utan fungerande ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:44",href:"/vagentreprenad/skogsbilvag",className:"font-semibold text-accent hover:underline",children:"skogsbilvägar"})," stÃ¥r virket kvar i skogen. Vi bygger nya vägar och rustar gamla: terrassering i moränmark, bärlager som klarar fullastade virkesbilar, vändplaner, ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:44",href:"/vagentreprenad/vagtrumma",className:"font-semibold text-accent hover:underline",children:"trumbyten"})," och dikesrensning. Marken här är typisk mellansvensk skogsmorän med block och partier av myr â att lägga vägen rätt i terrängen frÃ¥n början sparar bÃ¥de schakt och framtida underhÃ¥ll."]}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:46",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vinterberedskap i snörik bygd"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:47",children:["Ramsjötrakten hör till de mer snörika delarna av Gävleborg, och tjälen gÃ¥r djupt â ofta en och en halv till tvÃ¥ meter. Vi ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:48",href:"/snorojning-ramsjo",className:"font-semibold text-accent hover:underline",children:"plogar i Ramsjö"})," infarter, gÃ¥rdar och vägsträckor Ã¥t privatpersoner, fritidshusägare och samfälligheter, med säsongsavtal som gör att du slipper ringa varje gÃ¥ng det snöar. För fritidshusägare med lÃ¥ngt till huset är avtal med automatisk plogning det enkla sättet att veta att vägen alltid är öppen."]}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:50",children:["Utöver vägar och snö utför vi ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:51",href:"/vatten-avlopp/enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"enskilda avlopp"}),", ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:51",href:"/markarbeten-ramsjo",className:"font-semibold text-accent hover:underline",children:"mark- och grundarbeten"})," för byggen samt ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:51",href:"/tradfallning-ramsjo",className:"font-semibold text-accent hover:underline",children:"trädfällning i Ramsjö"})," i hela norra kommundelen."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:54",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:55",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:56",className:"font-display text-lg font-bold text-primary",children:"VÃ¥ra tjänster i Ramsjö"}),n.jsx("ul",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:57",className:"mt-3 space-y-2 text-sm",children:WH.map(t=>n.jsx("li",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:59",children:n.jsx(N,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:59",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:63",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:64",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:65",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:66",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:67",children:"Bas i Hennan â kort framkörning"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:68",children:"Egen maskinpark och verkstad"}),n.jsx("li",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:69",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:71",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:77",items:X.ramsjo,title:"Vanliga frÃ¥gor â grävfirma i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/GravfirmaRamsjo.tsx:78",title:"Behöver du hjälp i Ramsjötrakten?",text:"Vi är närmast till hands. Ring eller begär offert â kostnadsfritt."})]})}const t5=[{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"Markarbeten",href:"/markarbeten"},{name:"Husgrund i Hennan",href:"/husgrund-hennan"},{name:"Tomtplanering i Hennan",href:"/tomtplanering-hennan"},{name:"Dränering i Hennan",href:"/dranering-hennan"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning i Hennan",href:"/avloppsanlaggning-hennan"},{name:"Trekammarbrunn i Hennan",href:"/trekammarbrunn-hennan"},{name:"Snöröjning i Hennan",href:"/snorojning-hennan"},{name:"Smide & verkstad",href:"/smide"},{name:"Trädfällning i Hennan",href:"/tradfallning-hennan"}];function a5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:26",items:[{name:"Grävfirma Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:27",title:"Grävfirma i Hennan â här har vi vÃ¥r bas sedan 1996",intro:"Hennan är vÃ¥r hemmaplan. Här ligger maskinparken och verkstaden, och härifrÃ¥n har vi servat byn, sjön Hennans stugägare och skogsbygden runt omkring i tre decennier.",image:ne.omOss,imageAlt:"Maskinpark och verkstad hos Hennans Grävtjänst i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:34",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:35",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:36",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grannen med grävmaskin"}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:38",children:"Hennan ligger vid sjön med samma namn, utmed riksväg 84 och Norra stambanan i norra Ljusdals kommun. För dig som bor eller har fritidshus här betyder det att grävfirman bokstavligen finns runt knuten: inga framkörningsavgifter som äter upp kalkylen för smÃ¥ jobb, snabba platsbesök och en entreprenör som vet exakt hur marken, vägarna och vintern beter sig â för vi bor här själva."}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:41",children:["SmÃ¥ uppdrag är lika välkomna som stora. En avloppsanläggning till stugan, ett dike som behöver rensas, en infart som ska grusas, ett ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:42",href:"/tradfallning-hennan",className:"font-semibold text-accent hover:underline",children:"träd som lutar fel"})," â hör av dig, sÃ¥ tar vi det när maskinerna ändÃ¥ rullar Ã¥t rätt hÃ¥ll."]}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:44",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Fritidshus runt sjön Hennan"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:45",children:["Runt sjön finns gott om fritidshus, och vi hjälper stugägare med det mesta i mark: ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:46",href:"/vatten-avlopp/enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"enskilda avlopp"})," anpassade för fritidsboende, vattenledningar som läggs frostfritt, förstärkta infarter och ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:46",href:"/snorojning-hennan",className:"font-semibold text-accent hover:underline",children:"snöröjning i Hennan"})," med säsongsavtal sÃ¥ att huset är Ã¥tkomligt hela vintern. Skogsmarkerna runt byn är typisk moränmark â vi vet var det brukar vara block och var det gÃ¥r lätt."]}),n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Verkstaden mitt i byn"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:49",children:["I vÃ¥r ",n.jsx(N,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:50",href:"/smide",className:"font-semibold text-accent hover:underline",children:"verkstad"})," i Hennan utför vi smide, svetsning och reparationer â för egna maskiner, för lantbrukets redskap och för grannar som behöver nÃ¥got lagat eller tillverkat. Det är samma verkstad som gör att vÃ¥ra maskiner alltid är i skick när ditt jobb ska göras."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:55",className:"font-display text-lg font-bold text-primary",children:"VÃ¥ra tjänster i Hennan"}),n.jsx("ul",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:56",className:"mt-3 space-y-2 text-sm",children:t5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Hitta till oss"}),n.jsxs("p",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:64",className:"mt-3 text-sm leading-relaxed text-foreground
157/85",children:["Hennans Grävtjänst AB",n.jsx("br",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:65"}),"Hennan, Ljusdals kommun",n.jsx("br",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:65"}),"Tel: ",Y.phoneMobile]}),n.jsx("p",{"data-loc":"client/src/pages/GravfirmaHennan.tsx:67",className:"mt-4 text-sm text-foreground/70",children:"Ring gärna innan besök sÃ¥ att vi är hemma och inte ute pÃ¥ uppdrag."})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:73",items:X.hennan,title:"Vanliga frÃ¥gor â grävfirma i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/GravfirmaHennan.tsx:74",title:"Bor du i Hennan med omnejd?",text:"Vi finns runt knuten. Ring eller skicka en offertförfrÃ¥gan â kostnadsfritt."})]})}const n5=[{name:"Dränering Ljusdal",href:"/dranering-ljusdal"},{name:"Trekammarbrunn â sÃ¥ fungerar den",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Avloppsanläggning Ljusdal",href:"/avloppsanlaggning-ljusdal"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"}];function r5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:22",items:[{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"}
157,{name:"Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:23",title:"Trekammarbrunn i Ljusdal â installation och byte med tillstÃ¥nd",intro:"Har du fÃ¥tt anmärkning pÃ¥ avloppet eller planerar du nytt hus utanför det kommunala nätet? Vi installerar och byter trekammarbrunnar i hela Ljusdalstrakten â frÃ¥n provgrop och tillstÃ¥ndsunderlag till färdig, godkänd anläggning.",image:ne.va,imageAlt:"Trekammarbrunn installeras i schakt utanför Ljusdal"}),n.jsx("section",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Lokal firma med kort framkörning till Ljusdal"}),n.jsx("p",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:34",children:"FrÃ¥n vÃ¥r bas i Hennan nÃ¥r vi Ljusdal pÃ¥ under en halvtimme längs riksväg 84. Det betyder lÃ¥g framkörningskostnad, snabba platsbesök och en entreprenör som känner bÃ¥de markerna och miljöenhetens krav. Vi har installerat enskilda avlopp i trakten sedan 1996 och vet vad som krävs för att anläggningen ska bli godkänd â och hÃ¥lla i decennier."}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"MarkförhÃ¥llandena runt Ljusdal avgör lösningen"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:38",children:["I dalgÃ¥ngen kring Ljusnan och Kyrksjön dominerar sediment av sand och silt, medan höjdlägena runt tätorten har moränmark. Det avgör om vattnet efter brunnen kan renas i en ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration eller kräver markbädd"}),". Vi gräver alltid provgrop och bedömer jordart, grundvattennivÃ¥ och avstÃ¥nd till vattentäkter innan vi föreslÃ¥r lösning â det underlaget använder du sedan i tillstÃ¥ndsansökan till Ljusdals kommun."]}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ gÃ¥r det till"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:42",children:["Efter kostnadsfritt platsbesök lämnar vi fast offert och tar fram tekniskt underlag till din ansökan hos miljöenheten. När tillstÃ¥ndet är klart schaktar vi, sätter brunnen, ansluter ledningarna och anlägger den efterföljande reningen â normalt är hela arbetet klart pÃ¥ tvÃ¥ till fyra dagar. Byter vi ut en gammal betongbrunn ingÃ¥r urgrävning och bortforsling. Se även vÃ¥r prisguide ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:49",className:"mt-3 space-y-2 text-sm",children:n5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:59",children:"Hjälp med tillstÃ¥ndsunderlag"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:69",items:X.trekammarbrunnLjusdal,title:"Vanliga frÃ¥gor â trekammarbrunn i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/TrekammarbrunnLjusdal.tsx:70",title:"Dags för ny trekammarbrunn i Ljusdal?",text:"Boka kostnadsfritt platsbesök â vi bedömer marken och lämnar fast offert."})]})}const s5=[{name:"Dränering Färila",href:"/dranering-farila"},{name:"Trekammarbrunn â sÃ¥ fungerar den",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Avloppsanläggning Färila",href:"/avloppsanlaggning-farila"},{name:"Grävfirma Färila",href:"/gravfirma-farila"}];function l5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:22",items:[{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:23",title:"Trekammarbrunn i Färila â byte och nyinstallation",intro:"MÃ¥nga hus runt Färila har avloppsanläggningar frÃ¥n 70- och 80-talen som inte längre uppfyller kraven. Vi byter ut gamla brunnar och installerar nya trekammarbrunnar med godkänd efterföljande rening â komplett med underlag till kommunens tillstÃ¥nd.",image:ne.va,imageAlt:"Byte av trekammarbrunn pÃ¥ fastighet utanför Färila"}),n.jsx("section",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Gamla avlopp är vanligast kring Färila"}),n.jsx("p",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:34",children:"Längs Ljusnan mellan Färila och KÃ¥rböle ligger mÃ¥nga äldre gÃ¥rdar och villor med enskilda avlopp som byggdes lÃ¥ngt innan dagens krav. En stenkista eller en brunn med direktutsläpp till dike godkänns inte längre â och vid försäljning eller kommunens tillsyn blir det ofta akut. Vi hjälper dig hela vägen: bedömning av den befintliga anläggningen, förslag pÃ¥ ny lösning och komplett installation."}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Provgrop avgör: infiltration eller markbädd"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:38",children:["Jordarna runt Färila varierar mellan älvsand nere i dalgÃ¥ngen och tätare morän och silt uppÃ¥t sluttningarna. Släpper marken igenom vattnet fungerar en ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"})," â annars byggs en markbädd med uppsamling. Vi gräver provgrop, bedömer jordprofilen och dimensionerar anläggningen därefter, med dokumentation som bifogas tillstÃ¥ndsansökan till Ljusdals kommun."]}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Kort framkörning â lägre totalkostnad"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:42",children:["FrÃ¥n Hennan nÃ¥r vi Färila pÃ¥ cirka en halvtimme, vilket hÃ¥ller nere framkörningskostnaden jämfört med firmor längre söderifrÃ¥n. Hela installationen â schakt, brunn, ledningar och rening â är normalt klar pÃ¥ tvÃ¥ till fyra dagar när tillstÃ¥ndet är pÃ¥ plats. Räkna med vad det kostar i vÃ¥r guide ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:49",className:"mt-3 space-y-2 text-sm",children:s5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:59",children:"Hjälp med tillstÃ¥ndsunderlag"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:69",items:X.trekammarbrunnFarila,title:"Vanliga frÃ¥gor â trekammarbrunn i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/TrekammarbrunnFarila.tsx:70",title:"Dags att Ã¥tgärda avloppet i Färila?",text:"Boka kostnadsfritt platsbesök â vi bedömer anläggningen och lämnar fast offert."})]})}const i5=[{name:"Dränering Järvsö",href:"/dranering-jarvso"},{name:"Trekammarbrunn â sÃ¥ fungerar den",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Avloppsanläggning Järvsö",href:"/avloppsanlaggning-jarvso"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"}];function o5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:22",items:[{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:23",title:"Trekammarbrunn i Järvsö â för villa och fritidshus",intro:"Järvsö växer med bÃ¥de permanentboende och fritidshus kring Ãjeberget och Ljusnan. Vi installerar trekammarbrunnar med godkänd rening för bÃ¥da â dimensionerade efter hur huset faktiskt används.",image:ne.va,imageAlt:"Installation av trekammarbrunn vid fritidshus i Järvsö"}),n.jsx("section",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Fritidshus och permanentboende har olika behov"}),n.jsx("p",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:34",children:"Ett fritidshus som används nÃ¥gra veckor om Ã¥ret belastar avloppet annorlunda än ett permanenthus â men även fritidshus med vattentoalett kräver tillstÃ¥nd och godkänd rening. Vi hjälper dig välja rätt nivÃ¥: komplett anläggning med trekammarbrunn och efterrening för Ã¥retruntboendet, eller en enklare BDT-lösning där huset saknar WC. Det avgör bÃ¥de kostnaden och vilka krav kommunen ställer."}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Terrängen kring Järvsö kräver rätt placering"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:38",children:["Sluttningarna runt Ãjeberget och de sandiga terrasserna längs Ljusnan ger ofta goda förutsättningar för ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"})," â men närheten till vattendrag, grannars dricksvattenbrunnar och höga grundvattennivÃ¥er vid älven mÃ¥ste vägas in. Vi gräver provgrop, mäter avstÃ¥nd och tar fram det tekniska underlag som miljöenheten i Ljusdals kommun kräver för tillstÃ¥nd."]}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Komplett installation pÃ¥ nÃ¥gra dagar"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:42",children:["När tillstÃ¥ndet är klart schaktar vi, sätter brunnen, ansluter ledningar och anlägger reningen â normalt tvÃ¥ till fyra dagars arbete. Vi tar hand om gamla brunnar och överskottsmassor, och Ã¥terställer tomten. Prisbild och exempel hittar du i guiden ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:49",className:"mt-3 space-y-2 text-sm",children:i5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:59",children:"Hjälp med tillstÃ¥ndsunderlag"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:69",items:X.trekammarbrunnJarvso,title:"Vanliga frÃ¥gor â trekammarbrunn i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/TrekammarbrunnJarvso.tsx:70",title:"Planerar du avlopp i Järvsö?",text:"Boka kostnadsfritt platsbesök â vi föreslÃ¥r rätt lösning för ditt hus och din tomt."})]})}const c5=[{name:"Dränering Ramsjö",href:"/dranering-ramsjo"},{name:"Trekammarbrunn â sÃ¥ fungerar den",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Avloppsanläggning Ramsjö",href:"/avloppsanlaggning-ramsjo"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"}];function d5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:22",items:[{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:23",title:"Trekammarbrunn i Ramsjö â närmaste entreprenören norrut",intro:"I norra Ljusdals kommun är det lÃ¥ngt mellan entreprenörerna â men inte frÃ¥n Hennan. Vi installerar och byter trekammarbrunnar i Ramsjö med omnejd med kort framkörning och utförande anpassat för norrländska markförhÃ¥llanden.",image:ne.va,imageAlt:"Avloppsschakt med trekammarbrunn i skogsbygd kring Ramsjö"}),n.jsx("section",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Kort framkörning gör stor skillnad pÃ¥ priset"}),n.jsx("p",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:34",children:"FrÃ¥n Hennan nÃ¥r vi Ramsjö pÃ¥ en kvart â firmor söderifrÃ¥n har ofta över en timmes framkörning i varje riktning. För ett arbete som pÃ¥gÃ¥r flera dagar blir den skillnaden tusenlappar pÃ¥ slutsumman. Vi känner dessutom markerna, vägarna och fastigheterna i norra kommundelen efter 30 Ã¥r i trakten."}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Morän och tjäle ställer krav pÃ¥ utförandet"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:38",children:["Kring Ramsjö dominerar blockig skogsmorän, och tjälen gÃ¥r uppemot tvÃ¥ meter. Det pÃ¥verkar bÃ¥de schaktarbetet och hur anläggningen mÃ¥ste utformas: ledningar läggs frostsäkert eller isoleras, och moränens genomsläpplighet avgör om en ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"})," räcker eller om markbädd krävs. Vi gräver provgrop och dimensionerar anläggningen efter verkliga förhÃ¥llanden â inte efter schablon."]}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Komplett Ã¥tagande â även för fritidshus"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:42",children:["MÃ¥nga fastigheter i Ramsjötrakten är fritidshus och gÃ¥rdar med äldre avlopp. Vi tar hela entreprenaden: provgrop, tillstÃ¥ndsunderlag till Ljusdals kommun, schakt, brunn, ledningar och efterrening â och bortforsling av den gamla anläggningen. Se prisexempel i guiden ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:49",className:"mt-3 space-y-2 text-sm",children:c5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:59",children:"Bas i Hennan â en kvart bort"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:69",items:X.trekammarbrunnRamsjo,title:"Vanliga frÃ¥gor â trekammarbrunn i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/TrekammarbrunnRamsjo.tsx:70",title:"Behöver du nytt avlopp i Ramsjö?",text:"Vi är närmast till hands. Boka kostnadsfritt platsbesök â fast offert utan förpliktelser."})]})}const u5=[{name:"Dränering Hennan",href:"/dranering-hennan"},{name:"Trekammarbrunn â sÃ¥ fungerar den",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Avloppsanläggning Hennan",href:"/avloppsanlaggning-hennan"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"}];function g5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:22",items:[{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:23",title:"Trekammarbrunn i Hennan â vi finns pÃ¥ orten",intro:"Hennan är vÃ¥r hemort. Här ligger verkstaden och maskinparken, och härifrÃ¥n har vi installerat enskilda avlopp i trakten sedan 1996. Behöver du ny trekammarbrunn i Hennan med omnejd finns ingen entreprenör närmare.",image:ne.va,imageAlt:"Trekammarbrunn installeras pÃ¥ fastighet i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Ingen framkörning â snabb planering"}),n.jsx("p",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:34",children:"Med basen mitt i byn kan vi ofta planera in ett avloppsarbete i Hennan med kort varsel, och framkörningskostnaden är i praktiken noll. Det gäller fastigheterna runt Hennansjön, längs riksväg 84 och i byarna runt omkring. Behöver nÃ¥got justeras i efterhand är vi fem minuter bort â inte en halv dag."}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Anpassat efter markerna kring Hennansjön"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:38",children:["Runt Hennan växlar marken mellan sandiga partier nära sjön och moränmark i skogssluttningarna. Sandjordarna ger ofta utmärkta förutsättningar för ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"}),", men närheten till sjön och till egna och grannars dricksvattenbrunnar mÃ¥ste alltid vägas in. Vi gräver provgrop, bedömer skyddsavstÃ¥nden och tar fram underlaget till tillstÃ¥ndet hos Ljusdals kommun."]}),n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"TvÃ¥ till fyra dagar frÃ¥n schakt till klar anläggning"}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:42",children:["När tillstÃ¥ndet är pÃ¥ plats tar själva installationen normalt tvÃ¥ till fyra dagar: schakt, brunn pÃ¥ avjämnad bädd, ledningar med rätt fall och efterföljande rening. Gamla betongbrunnar gräver vi ur och forslar bort. Vad det kostar ser du i guiden ",n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:49",className:"mt-3 space-y-2 text-sm",children:u5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:58",children:"Grundat 1996 â 30 Ã¥r pÃ¥ orten"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:59",children:"Verkstad och maskinpark i Hennan"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:69",items:X.trekammarbrunnHennan,title:"Vanliga frÃ¥gor â trekammarbrunn i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/TrekammarbrunnHennan.tsx:70",title:"Dags för nytt avlopp i Hennan?",text:"Vi finns pÃ¥ orten. Ring eller begär offert â kostnadsfritt platsbesök."})]})}const m5=[{name:"Markarbeten â alla tjänster",href:"/markarbeten"},{name:"Husgrund Ramsjö",href:"/husgrund-ramsjo"},{name:"Tomtplanering Ramsjö",href:"/tomtplanering-ramsjo"},{name:"Dränering Ramsjö",href:"/dranering-ramsjo"},{name:"Dränering â översikt",href:"/dranering"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"},{name:"Trekammarbrunn Ramsjö",href:"/trekammarbrunn-ramsjo"},{name:"Markarbeten Hennan",href:"/markarbeten-hennan"},{name:"Markarbeten Ljusdal",href:"/markarbeten-ljusdal"}];function f5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:24",items:[{name:"Markarbeten",href:"/markarbeten"},{name:"Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:25",title:"Mark- och grundarbeten i Ramsjö",intro:"Hennans Grävtjänst utför mark- och grundarbeten i Ramsjö med omnejd â husgrunder, schakt, infarter och tomtplanering. Med basen i Hennan är vi den närmaste maskinentreprenören i norra Ljusdals kommun, med kort framkörning och 30 Ã¥rs lokal erfarenhet.",image:ne.markarbeten,imageAlt:"Grävmaskin utför markarbete pÃ¥ tomt i skogsbygd kring Ramsjö"}),n.jsx("section",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:32",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:33",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:34",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:35",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Närmaste grävfirman för Ramsjöbor"}),n.jsx("p",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:36",children:"Ramsjö ligger lÃ¥ngt frÃ¥n de flesta entreprenörer â men nära oss. FrÃ¥n Hennan nÃ¥r vi Ramsjö pÃ¥ en kvart, medan firmor frÃ¥n Ljusdal eller söderut ofta har en timmes framkörning i varje riktning. För markarbeten som pÃ¥gÃ¥r flera dagar innebär det en tydlig skillnad pÃ¥ slutfakturan. Efter 30 Ã¥r i norra kommundelen känner vi dessutom markerna, vägnätet och fastigheterna i Ramsjötrakten."}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:39",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grundarbeten anpassade för morän och tjäle"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:40",children:["Kring Ramsjö dominerar blockig skogsmorän, och tjäldjupet kan nÃ¥ uppemot tvÃ¥ meter. Det ställer krav pÃ¥ schaktdjup, materialval och dränering när en ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:41",href:"/markarbeten/husgrund",className:"font-semibold text-accent hover:underline",children:"husgrund"})," ska anläggas. Vi schaktar och bygger upp grunder för villor, fritidshus, garage och ekonomibyggnader med packade materiallager, grunddränering och VA-anslutningar â klart för gjutning när vi lämnar platsen."]}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:43",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"FrÃ¥n schakt till färdig tomt"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:44",children:["Utöver grundarbeten utför vi allt markarbete en fastighet i Ramsjö kan behöva: infarter och gÃ¥rdsplaner, ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:45",href:"/markarbeten/tomtplanering",className:"font-semibold text-accent hover:underline",children:"tomtplanering"}),", schakt för tillbyggnader, ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:45",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," och masshantering med egen lastbil. Vi tar bÃ¥de större entreprenader och mindre uppdrag â den korta framkörningen gör att även smÃ¥ jobb blir prisvärda."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:48",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:49",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:50",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:51",className:"mt-3 space-y-2 text-sm",children:m5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:53",children:n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:53",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:57",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:58",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:59",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:60",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:61",children:"Bas i Hennan â en kvart bort"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:62",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:63",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:65",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:71",items:X.markarbetenRamsjo,title:"Vanliga frÃ¥gor â markarbeten i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/MarkarbetenRamsjo.tsx:72",title:"Planerar du markarbeten i Ramsjö?",text:"Vi är närmast till hands i norra kommundelen. Boka kostnadsfritt platsbesök â fast offert utan förpliktelser."})]})}const p5=[{name:"Markarbeten â alla tjänster",href:"/markarbeten"},{name:"Husgrund Ljusdal",href:"/husgrund-ljusdal"},{name:"Tomtplanering Ljusdal",href:"/tomtplanering-ljusdal"},{name:"Dränering Ljusdal",href:"/dranering-ljusdal"},{name:"Dränering â översikt",href:"/dranering"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"},{name:"Avloppsanläggning Ljusdal",href:"/avloppsanlaggning-ljusdal"}];function h5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:22",items:[{name:"Markarbeten",href:"/markarbeten"}
157,{name:"Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:23",title:"Mark- och grundarbeten i Ljusdal",intro:"Hennans Grävtjänst utför mark- och grundarbeten i Ljusdal med omnejd â husgrunder, schakt, infarter, VA-schakt och tomtplanering. Sedan 1996 har vi hjälpt fastighetsägare, byggare och företag i centralorten med allt frÃ¥n smÃ¥ schaktjobb till kompletta grundentreprenader.",image:ne.markarbeten,imageAlt:"Grävmaskin utför markarbete pÃ¥ villatomt i Ljusdal"}),n.jsx("section",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Erfaren maskinentreprenör i centralorten"}),n.jsx("p",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:34",children:"Ljusdals tätort med omnejd är en av vÃ¥ra vanligaste arbetsplatser. FrÃ¥n basen i Hennan nÃ¥r vi centralorten pÃ¥ under en halvtimme via riksväg 83, och efter tre decennier i kommunen har vi utfört markarbeten i de flesta av tätortens kvarter och byar runt omkring. Vi arbetar Ã¥t privatpersoner, byggföretag, bostadsrättsföreningar och lantbruk â med egen maskinpark, lastbil för masstransporter och smidesverkstad som backar upp när nÃ¥got behöver lösas pÃ¥ plats."}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grundarbeten i dalgÃ¥ngens jordar"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:38",children:["I dalgÃ¥ngen vid Ljusnan är sediment- och siltjordar vanliga, vilket ställer särskilda krav när en ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:39",href:"/markarbeten/husgrund",className:"font-semibold text-accent hover:underline",children:"husgrund"})," ska anläggas: noggrann dränering, rätt uppbyggda materiallager och ibland förstärkning av schaktbotten. Uppe pÃ¥ moränmarkerna utanför dalgÃ¥ngen är förhÃ¥llandena fastare men ofta blockiga. Vi bedömer alltid marken pÃ¥ plats innan vi lämnar fast pris, och bygger grunder för villor, garage, tillbyggnader och industribyggnader â schaktade, dränerade och packade, klara för gjutning."]}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Allt markarbete din fastighet behöver"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:42",children:["Utöver grundarbeten utför vi infarter och gÃ¥rdsplaner, ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:43",href:"/markarbeten/tomtplanering",className:"font-semibold text-accent hover:underline",children:"tomtplanering"}),", schakt för kabel och dagvatten, ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:43",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," runt befintliga hus samt masshantering med egen lastbil. Inget uppdrag i Ljusdal är för litet â vi tar gärna även mindre jobb som grävning för en garageinfart eller justering av en gÃ¥rdsyta, och lämnar alltid fast offert efter kostnadsfritt platsbesök."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:49",className:"mt-3 space-y-2 text-sm",children:p5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:58",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:59",children:"Egen maskinpark och lastbil"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:69",items:X.markarbetenLjusdal,title:"Vanliga frÃ¥gor â markarbeten i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/MarkarbetenLjusdal.tsx:70",title:"Planerar du markarbeten i Ljusdal?",text:"Boka kostnadsfritt platsbesök â vi lämnar fast offert utan förpliktelser."})]})}const v5=[{name:"Markarbeten â alla tjänster",href:"/markarbeten"},{name:"Husgrund Färila",href:"/husgrund-farila"},{name:"Tomtplanering Färila",href:"/tomtplanering-farila"},{name:"Dränering Färila",href:"/dranering-farila"},{name:"Dränering â översikt",href:"/dranering"},{name:"Grävfirma Färila",href:"/gravfirma-farila"},{name:"Avloppsanläggning Färila",href:"/avloppsanlaggning-farila"}];function x5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:22",items:[{name:"Markarbeten",href:"/markarbeten"},{name:"Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:23",title:"Mark- och grundarbeten i Färila",intro:"Hennans Grävtjänst utför mark- och grundarbeten i Färila med omnejd â husgrunder, schakt, infarter och tomtplanering. Färila ligger mitt i vÃ¥rt arbetsomrÃ¥de längs riksväg 84, och vi tar uppdrag hela vägen frÃ¥n Korskrogen till KÃ¥rböle.",image:ne.markarbeten,imageAlt:"Grävmaskin utför markarbete pÃ¥ tomt utanför Färila"}),n.jsx("section",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Lokal grävfirma längs riksväg 84"}),n.jsx("p",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:34",children:"Färila med byarna längs Ljusnan är sedan starten 1996 en självklar del av vÃ¥rt arbetsomrÃ¥de. Vi har genom Ã¥ren utfört grundarbeten, VA-schakt och tomtplaneringar i hela Färilabygden, och känner bÃ¥de jordarna och vägnätet. Med egen maskinpark, lastbil för masstransporter och smidesverkstad i Hennan löser vi det mesta utan onödiga stillestÃ¥nd â nÃ¥got som är särskilt värdefullt vid uppdrag lÃ¥ngt frÃ¥n större orter."}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"FrÃ¥n skogstomt till byggklar grund"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:38",children:["MÃ¥nga tomter i Färilatrakten tas ur skogsmark. Vi bryter stubbar, avlägsnar block, schaktar bort humuslager och bygger upp packade materiallager tills tomten är byggklar. Jordarna kring Ljusnans dalgÃ¥ng växlar mellan sand, silt och morän â sandiga jordar dränerar bra medan siltiga partier kräver omsorgsfull dränering och frostsäkert utförande. När vi anlägger en ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:39",href:"/markarbeten/husgrund",className:"font-semibold text-accent hover:underline",children:"husgrund"})," anpassar vi därför schaktdjup, material och ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:39",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," efter de verkliga förhÃ¥llandena pÃ¥ plats."]}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Markarbeten för hem, skog och lantbruk"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:42",children:["Vi utför även infarter och gÃ¥rdsplaner, ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:43",href:"/markarbeten/tomtplanering",className:"font-semibold text-accent hover:underline",children:"tomtplanering"}),", schakt för tillbyggnader samt markarbeten för ekonomibyggn
157ader, maskinhallar och vändplaner Ã¥t skogsägare och lantbruk runt Färila. Stora som smÃ¥ uppdrag fÃ¥r samma noggrannhet â och alltid fast offert efter kostnadsfritt platsbesök."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:49",className:"mt-3 space-y-2 text-sm",children:v5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:58",children:"Grundat 1996 â 30 Ã¥r i bygden"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:59",children:"Egen maskinpark och smidesverkstad"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:69",items:X.markarbetenFarila,title:"Vanliga frÃ¥gor â markarbeten i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/MarkarbetenFarila.tsx:70",title:"Planerar du markarbeten i Färila?",text:"Boka kostnadsfritt platsbesök â vi lämnar fast offert utan förpliktelser."})]})}const b5=[{name:"Markarbeten â alla tjänster",href:"/markarbeten"},{name:"Husgrund Järvsö",href:"/husgrund-jarvso"},{name:"Tomtplanering Järvsö",href:"/tomtplanering-jarvso"},{name:"Dränering Järvsö",href:"/dranering-jarvso"},{name:"Dränering â översikt",href:"/dranering"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"},{name:"Avloppsanläggning Järvsö",href:"/avloppsanlaggning-jarvso"}];function k5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:22",items:[{name:"Markarbeten",href:"/markarbeten"},{name:"Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:23",title:"Mark- och grundarbeten i Järvsö",intro:"Hennans Grävtjänst utför mark- och grundarbeten i Järvsö â husgrunder, terrassering av sluttningstomter, infarter och tomtplanering för bÃ¥de permanenthus och fritidshus. Järvsö växer, och vi hjälper dig frÃ¥n orörd tomt till byggklar grund.",image:ne.markarbeten,imageAlt:"Grävmaskin terrasserar sluttningstomt i Järvsö"}),n.jsx("section",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Sluttningstomter är vÃ¥r vardag"}),n.jsx("p",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:34",children:"Kring Järvsöbacken och Ãjeberget byggs det pÃ¥ tomter med rejäl lutning, och det är just den typen av terräng vi arbetar i dagligen. Vi terrasserar tomter, bygger stödmurar och formar slänter med rätt lutning, och löser avvattningen sÃ¥ att varken grund eller infart tar skada av ytvatten frÃ¥n backen. En genomtänkt höjdsättning frÃ¥
157n början sparar bÃ¥de schaktkostnad och framtida bekymmer â därför börjar varje uppdrag med ett platsbesök där vi gÃ¥r igenom nivÃ¥er, massbalans och infartens dragning."}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grunder för permanenthus och fritidshus"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:38",children:["Järvsö växer och mÃ¥nga bygger fritidshus nära backen. Vi schaktar och bygger upp ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:39",href:"/markarbeten/husgrund",className:"font-semibold text-accent hover:underline",children:"husgrunder"})," med packade materiallager, grunddränering och VA-anslutningar â klart för gjutning. Bygger du pÃ¥ distans kan vi samordna markarbetet med husleverantör och gjutentreprenör, sÃ¥ att projektet rullar även när du inte är pÃ¥ plats."]}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Komplett markentreprenad i JärvsöomrÃ¥det"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:42",children:["Utöver grund- och terrasseringsarbeten utför vi infarter och parkeringsytor, ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:43",href:"/markarbeten/tomtplanering",className:"font-semibold text-accent hover:underline",children:"tomtplanering"}),", schakt för VA och el samt ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:43",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," runt befintliga hus. Med egen lastbil hanterar vi masstransporter effektivt, och som lokal firma med bas i Hennan lämnar vi fast offert efter kostnadsfritt platsbesök â utan pÃ¥slag för lÃ¥nga framkörningar."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:49",className:"mt-3 space-y-2 text-sm",children:b5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:58",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:59",children:"Van vid sluttande terräng"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:69",items:X.markarbetenJarvso,title:"Vanliga frÃ¥gor â markarbeten i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/MarkarbetenJarvso.tsx:70",title:"Planerar du markarbeten i Järvsö?",text:"Boka kostnadsfritt platsbesök â vi lämnar fast offert utan förpliktelser."})]})}const j5=[{name:"Markarbeten â alla tjänster",href:"/markarbeten"},{name:"Husgrund Hennan",href:"/husgrund-hennan"},{name:"Tomtplanering Hennan",href:"/tomtplanering-hennan"},{name:"Dränering Hennan",href:"/dranering-hennan"},{name:"Dränering â översikt",href:"/dranering"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"},{name:"Avloppsanläggning Hennan",href:"/avloppsanlaggning-hennan"}];function y5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:22",items:[{name:"Markarbeten",href:"/markarbeten"},{name:"Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:23",title:"Mark- och grundarbeten i Hennan",intro:"Hennan är vÃ¥r hemort â här har Hennans Grävtjänst haft verkstad, kontor och maskinpark sedan 1996. Vi utför husgrunder, schakt, infarter, VA-arbeten och tomtplanering i Hennan med mycket kort framkörning och snabb planering.",image:ne.markarbeten,imageAlt:"Grävmaskin utför markarbete vid fastighet i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:32",className:"space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grävfirman som finns pÃ¥ orten"}),n.jsx("p",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:34",children:"Att anlita en entreprenör som finns pÃ¥ orten gör skillnad. Med verkstaden och maskinparken i Hennan är framkörningen minimal, vi kan planera in uppdrag snabbt och vid akuta behov â som en skadad infart eller vatten som tränger in mot grunden â kan vi i regel rycka ut med kort varsel. Efter 30 Ã¥r i byn känner vi fastigheterna, markerna och vägarna runt Hennansjön bättre än nÃ¥gon annan."}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grundarbeten byggda för tjäle och morän"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:38",children:["Markerna kring Hennansjön bestÃ¥r till stor del av morän med inslag av block, och tjäldjupet är stort i norra Hälsingland. När vi anlägger en ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:39",href:"/markarbeten/husgrund",className:"font-semibold text-accent hover:underline",children:"husgrund"})," schaktar vi till frostfritt djup, dränerar ordentligt och bygger upp packade materiallager som stÃ¥r emot tjälens rörelser. Samma noggrannhet gäller vid schakt för tillbyggnader, garage och ekonomibyggnader â grunden ska hÃ¥lla i generationer."]}),n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SmÃ¥ och stora uppdrag pÃ¥ hemmaplan"}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:42",children:["Som lokal firma tar vi gärna även mindre jobb i Hennan: grusning av infarter, planering av gÃ¥rdsplaner, dikning, ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:43",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," och schakt för kabel eller dagvatten. Den korta framkörningen gör att även smÃ¥ uppdrag blir prisvärda. Behöver du hjälp med hela tomten gör vi komplett ",n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:43",href:"/markarbeten/tomtplanering",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," â frÃ¥n grovplanering till färdiga ytor med rätt fall och avvattning."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:49",className:"mt-3 space-y-2 text-sm",children:j5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:58",children:"Grundat 1996 â hemma i Hennan"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:59",children:"Minimal framkörning pÃ¥ orten"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:63",className:"mt-4 text-sm text-foreground
157/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:69",items:X.markarbetenHennan,title:"Vanliga frÃ¥gor â markarbeten i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/MarkarbetenHennan.tsx:70",title:"Planerar du markarbeten i Hennan?",text:"Vi finns pÃ¥ orten. Boka kostnadsfritt platsbesök â fast offert utan förpliktelser."})]})}const S5=[{name:"Dränering â sÃ¥ gÃ¥r arbetet till",href:"/dranering"},{name:"Vad kostar dränering?",href:"/priser/vad-kostar-dranering"},{name:"Markarbeten Ljusdal",href:"/markarbeten-ljusdal"},{name:"Husgrund Ljusdal",href:"/husgrund-ljusdal"},{name:"Tomtplanering Ljusdal",href:"/tomtplanering-ljusdal"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"}];function N5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:21",items:[{name:"Dränering",href:"/dranering"},{name:"Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:22",title:"Dränering i Ljusdal",intro:"Hennans Grävtjänst dränerar om husgrunder i Ljusdals tätort med omnejd. Vi tar hela arbetet â schakt runt grunden, fuktskydd, ny dräneringsledning med rätt fall, dränerande Ã¥terfyllnad och bortledning av dagvatten. Fast offert efter kostnadsfritt platsbesök.",image:ne.dranering,imageAlt:"Schakt för dränering runt husgrund i Ljusdal med fuktskyddad grundmur"}),n.jsx("section",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:31",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Fuktproblem i dalgÃ¥ngens jordar"}),n.jsx("p",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:33",children:"I dalgÃ¥ngen kring Ljusnan är silt- och sedimentjordar vanliga. De hÃ¥ller vatten länge och släpper igenom det lÃ¥ngsamt, vilket gör att äldre grunder i Ljusdals tätort ofta blir fuktbelastade när den ursprungliga dräneringen slutat fungera. Typiska tecken är fuktfläckar och saltutfällningar pÃ¥ källarväggen, källarlukt, färg som släpper frÃ¥n grundmuren eller vatten som samlas mot husets uppströmssida vid snösmältning och kraftigt regn."}),n.jsx("p",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:36",children:"Ett dräneringsrör har begränsad livslängd. Ãldre ledningar av betong eller tegel sätter igen av slam och rotinträngning, och plaströr frÃ¥n 1970- och 80-talen har ofta satt sig sÃ¥ att fallet brutits. När vattnet inte längre leds bort stÃ¥r det kvar mot grunden och pressas in i konstruktionen. Vi gräver upp, konstaterar vad som faktiskt orsakat problemet och bygger upp ett fungerande system istället för att lappa symptomen."}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:39",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ utför vi omdräneringen"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:40",children:["Arbetet följer samma ordning som beskrivs pÃ¥ vÃ¥r sida om ",n.jsx(N,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:41",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering av husgrund"}),": vi schaktar fram grundmuren till underkant sula, rengör och lagar muren där det behövs, monterar fuktskyddande dränerande skiva, lägger ny dräneringsledning med kontrollerat fall och spolbara rensbrunnar, och Ã¥terfyller med grovt dränerande makadam separerad med geotextil. Avslutningsvis leder vi bort dagvattnet frÃ¥n stuprören separat och Ã¥terställer marklutningen sÃ¥ att ytvatten rinner ut frÃ¥n huset."]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:43",children:["PÃ¥ trÃ¥nga tomter i centrala Ljusdal stÃ¥r husen ofta nära tomtgräns, ledningar och grannens planteringar. Där arbetar vi etappvis runt huset med anpassade maskiner, samordnar med ledningsägare inför schakt och Ã¥terställer ytorna när arbetet är klart. Behöver marken runt huset ses över i ett större sammanhang kombinerar vi gärna dräneringen med ",n.jsx(N,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:44",href:"/markarbeten-ljusdal",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," eller ",n.jsx(N,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:44",href:"/tomtplanering-ljusdal",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," i samma entreprenad."]}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:4
1576",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Kostnad och tidplan"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:47",children:["En normalstor villa i tätorten landar oftast pÃ¥ 100 000â200 000 kronor beroende pÃ¥ schaktdjup, källartyp, markförhÃ¥llanden och hur Ã¥tkomligt huset är. Som privatperson kan du använda ROT-avdrag för arbetskostnaden. I vÃ¥r ",n.jsx(N,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:48",href:"/priser/vad-kostar-dranering",className:"font-semibold text-accent hover:underline",children:"prisguide för dränering"})," gÃ¥r vi igenom vad de olika delarna kostar. Arbetet tar normalt en till tvÃ¥ veckor och vi lämnar alltid fast pris och tidplan efter platsbesök."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:51",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:52",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:53",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:54",className:"mt-3 space-y-2 text-sm",children:S5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:56",children:n.jsx(N,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:56",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:60",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:61",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:62",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:63",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:64",children:"Egen maskinpark och lastbil"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:65",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:66",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringLjusdal.tsx:68",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:74",items:X.draneringLjusdal,title:"Vanliga frÃ¥gor â dränering i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/DraneringLjusdal.tsx:75",title:"Fukt i källaren i Ljusdal?",text:"Boka kostnadsfritt platsbesök â vi bedömer orsaken och lämnar fast offert."})]})}const T5=[{name:"Dränering â sÃ¥ gÃ¥r arbetet till",href:"/dranering"},{name:"Vad kostar dränering?",href:"/priser/vad-kostar-dranering"},{name:"Markarbeten Färila",href:"/markarbeten-farila"},{name:"Husgrund Färila",href:"/husgrund-farila"},{name:"Tomtplanering Färila",href:"/tomtplanering-farila"},{name:"Grävfirma Färila",href:"/gravfirma-farila"}];function R5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/DraneringFarila.tsx:21",items:[{name:"Dränering",href:"/dranering"},{name:"Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/DraneringFarila.tsx:22",title:"Dränering i Färila",intro:"Vi dränerar om husgrunder i Färila med omnejd â villor, äldre gÃ¥rdshus och fritidshus. FrÃ¥n schakt och fuktskydd till ny dräneringsledning, bortledning av dagvatten och Ã¥terställd marklutning. Kostnadsfritt platsbesök och fast offert.",image:ne.dranering,imageAlt:"Grävmaskin schaktar för dränering vid husgrund i Färila"}),n.jsx("section",{"data-loc":"client/src/pages/DraneringFarila.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/DraneringFarila.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringFarila.tsx:31",className:"space-y-5 leading-relaxed text-foreground
157/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringFarila.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Växlande jordar kräver bedömning pÃ¥ plats"}),n.jsx("p",{"data-loc":"client/src/pages/DraneringFarila.tsx:33",children:"Runt Färila växlar jordarterna tydligt över korta avstÃ¥nd. I terrasserna längs Ljusnan finns sandiga och grusiga jordar som avleder vatten bra, medan siltiga partier och tätare moränmarker hÃ¥ller fukt och kräver noggrant fall samt grov dränerande Ã¥terfyllnad. Därför bedömer vi alltid jordarten direkt i schakten innan Ã¥terfyllnaden byggs upp â det avgör val av material, ledningsdjup och hur dräneringsvattnet kan ledas bort."}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringFarila.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vana vid äldre gÃ¥rdshus"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringFarila.tsx:37",children:["Färilatrakten har mÃ¥nga äldre gÃ¥rdar och timmerhus där grunden är murad eller lagd av natursten. En sÃ¥dan grund tÃ¥l inte att avlastas hastigt och har inte den släta yta som moderna fuktskyddsskivor är gjorda för. Vi schaktar därför etappvis, stöttar där det behövs, murar om eller kompletterar grundmuren när det krävs och väljer fuktskydd som fungerar mot ojämna ytor. Samma varsamma metodik använder vi vid ",n.jsx(N,{"data-loc":"client/src/pages/DraneringFarila.tsx:38",href:"/husgrund-farila",className:"font-semibold text-accent hover:underline",children:"grundarbeten"})," i äldre bebyggelse."]}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringFarila.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Komplett arbete â inte bara ett nytt rör"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringFarila.tsx:41",children:["En fungerande ",n.jsx(N,{"data-loc":"client/src/pages/DraneringFarila.tsx:42",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," är ett system: fuktskydd pÃ¥ grundmuren, ledning med kontrollerat fall och rensbrunnar, dränerande makadam avskild med geotextil, separat bortledning av takvatten frÃ¥n stuprören och en marklutning som för ytvattnet bort frÃ¥n huset. Saknas nÃ¥gon del kommer fukten tillbaka. Vid behov kombinerar vi arbetet med dikning eller ",n.jsx(N,{"data-loc":"client/src/pages/DraneringFarila.tsx:42",href:"/markarbeten-farila",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," pÃ¥ tomten sÃ¥ att hela vattenvägen fungerar."]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringFarila.tsx:44",children:["Ett normalt villaprojekt tar en till tvÃ¥ veckor, medan djupa källargrunder eller besvärliga markförhÃ¥llanden kan förlänga arbetet. Vi lämnar tidplan och fast pris tillsammans med offerten, och du kan använda ROT-avdrag för arbetskostnaden. Se vÃ¥r ",n.jsx(N,{"data-loc":"client/src/pages/DraneringFarila.tsx:45",href:"/priser/vad-kostar-dranering",className:"font-semibold text-accent hover:underline",children:"prisguide"})," för vad de olika delarna normalt kostar."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/DraneringFarila.tsx:48",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringFarila.tsx:49",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringFarila.tsx:50",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/DraneringFarila.tsx:51",className:"mt-3 space-y-2 text-sm",children:T5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/DraneringFarila.tsx:53",children:n.jsx(N,{"data-loc":"client/src/pages/DraneringFarila.tsx:53",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/DraneringFarila.tsx:57",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringFarila.tsx:58",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/DraneringFarila.tsx:59",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/DraneringFarila.tsx:60",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringFarila.tsx:61",children:"Egen maskinpark och lastbil"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringFarila.tsx:62",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringFarila.tsx:63",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringFarila.tsx:65",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/DraneringFarila.tsx:71",items:X.draneringFarila,title:"Vanliga frÃ¥gor â dränering i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/DraneringFarila.tsx:72",title:"Behöver huset i Färila ny dränering?",text:"Vi kommer ut, bedömer grunden och lämnar fast offert utan förpliktelser."})]})}const A5=[{name:"Dränering â sÃ¥ gÃ¥r arbetet till",href:"/dranering"},{name:"Vad kostar dränering?",href:"/priser/vad-kostar-dranering"},{name:"Markarbeten Järvsö",href:"/markarbeten-jarvso"},{name:"Husgrund Järvsö",href:"/husgrund-jarvso"},{name:"Tomtplanering Järvsö",href:"/tomtplanering-jarvso"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"}];function H5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/DraneringJarvso.tsx:21",items:[{name:"Dränering",href:"/dranering"},{name:"Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/DraneringJarvso.tsx:22",title:"Dränering i Järvsö",intro:"Vi dränerar om husgrunder i hela JärvsöomrÃ¥det â permanentbostäder, fritidshus och uthyrningsstugor. Vi hanterar även sluttningstomter där ytvatten och trycksatt markvatten behöver skäras av ovanför huset.",image:ne.dranering,imageAlt:"Dräneringsschakt vid husgrund pÃ¥ sluttande tomt i Järvsö"}),n.jsx("section",{"data-loc":"client/src/pages/DraneringJarvso.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/DraneringJarvso.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringJarvso.tsx:31",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringJarvso.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Sluttande tomter ställer högre krav"}),n.jsx("p",{"data-loc":"client/src/pages/DraneringJarvso.tsx:33",children:"MÃ¥nga fastigheter i Järvsö ligger i lutning mot Ljusnan eller pÃ¥ sidorna av Järvsöklack och Järvsöbacken. PÃ¥ en sluttande tomt är det inte bara nedträngande regnvatten som belastar grunden, utan även ytvatten och trycksatt markvatten som rör sig genom marken uppifrÃ¥n. Där räcker sällan en vanlig grunddränering. Vi kompletterar med avskärande dikning eller en dräneringsledning ovanför huset som fÃ¥ngar upp vattnet innan det nÃ¥r grundmuren, och säkerställer att det kan ledas bort med säkert fall."}),n.jsx("p",{"data-loc":"client/src/pages/DraneringJarvso.tsx:36",children:"Vi ser ocksÃ¥ ofta att stuprör och dräneringsledning kopplats samman i äldre hus. Vid kraftigt regn fylls dÃ¥ dräneringen med takvatten istället för att avlasta grunden. Vid en omdränering skiljer vi alltid dagvatten och dräneringsvatten och leder takvattnet separat bort frÃ¥n huset."}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringJarvso.tsx:39",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Fritidshus och distansägda fastigheter"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringJarvso.tsx:40",children:["Järvsö har mÃ¥nga fastighetsägare som bor pÃ¥ annan ort. Vi kan därför driva hela projektet utan att du behöver närvara: vi bedömer grunden, lämnar fast offert, dokumenterar arbetet med foton och rapporterar löpande. Samma upplägg använder vi vid ",n.jsx(N,{"data-loc":"client/src/pages/DraneringJarvso.tsx:41",href:"/markarbeten-jarvso",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," och ",n.jsx(N,{"data-loc":"client/src/pages/DraneringJarvso.tsx:41",href:"/tomtplanering-jarvso",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," i omrÃ¥det."]}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringJarvso.tsx:43",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad arbetet omfattar"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringJarvso.tsx:44",children:["Vi schaktar fram grundmuren till underkant sula, rengör och lagar muren, monterar fuktskyddande dränerande skiva, lägger ny ledning med rensbrunnar och Ã¥terfyller med makadam separerad av geotextil. Läs mer om metodiken pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/DraneringJarvso.tsx:45",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering av husgrund"}),". Ett normalt villaprojekt i Järvsö ligger oftast pÃ¥ 100 000â200 000 kronor, och sluttningstomter med avskärande dikning kan bli nÃ¥got högre. VÃ¥r ",n.jsx(N,{"data-loc":"client/src/pages/DraneringJarvso.tsx:45",href:"/priser/vad-kostar-dranering",className:"font-semibold text-accent hover:underline",children:"prisguide"})," gÃ¥r igenom delposterna, och ROT-avdrag gäller för arbetskostnaden."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/DraneringJarvso.tsx:48",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringJarvso.tsx:49",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringJarvso.tsx:50",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/DraneringJarvso.tsx:51",className:"mt-3 space-y-2 text-sm",children:A5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/DraneringJarvso.tsx:53",children:n.jsx(N,{"data-loc":"client/src/pages/DraneringJarvso.tsx:53",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/DraneringJarvso.tsx:57",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringJarvso.tsx:58",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/DraneringJarvso.tsx:59",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/DraneringJarvso.tsx:60",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringJarvso.tsx:61",children:"Egen maskinpark och lastbil"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringJarvso.tsx:62",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringJarvso.tsx:63",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringJarvso.tsx:65",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/DraneringJarvso.tsx:71",items:X.draneringJarvso,title:"Vanliga frÃ¥gor â dränering i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/DraneringJarvso.tsx:72",title:"Dränering i Järvsö?",text:"Boka kostnadsfritt platsbesök â vi bedömer tomtens vattenvägar och lämnar fast offert."})]})}const w5=[{name:"Dränering â sÃ¥ gÃ¥r arbetet till",href:"/dranering"},{name:"Vad kostar dränering?",href:"/priser/vad-kostar-dranering"},{name:"Markarbeten Ramsjö",href:"/markarbeten-ramsjo"},{name:"Husgrund Ramsjö",href:"/husgrund-ramsjo"},{name:"Tomtplanering Ramsjö",href:"/tomtplanering-ramsjo"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"}];function E5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:21",items:[{name:"Dränering",href:"/dranering"},{name:"Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:22",title:"Dränering i Ramsjö",intro:"Vi dränerar om husgrunder i Ramsjö med omnejd. Kort framkörning frÃ¥n basen i Hennan via riksväg 83/84 hÃ¥ller nere kostnaden, och vi bygger dräneringen tjälsäkert för norra kommundelens förhÃ¥llanden.",image:ne.dranering,imageAlt:"Nylagd dräneringsledning i makadam vid husgrund i Ramsjö"}),n.jsx("section",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:31",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Nära nog för att göra jobbet prisvärt"}),n.jsx("p",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:33",children:"Ramsjö ligger inom vÃ¥rt naturliga arbetsomrÃ¥de. FrÃ¥n verkstaden i Hennan är framkörningen kort via riksväg 83 och 84, vilket gör att bÃ¥de maskintransport och arbetsdagar blir billigare än om firman kommer frÃ¥n södra delen av kommunen eller längre bort. Det är särskilt märkbart pÃ¥ dräneringsprojekt, där arbetet ofta pÃ¥gÃ¥r över en till tvÃ¥ veckor med maskin pÃ¥ plats."}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Tjälsäkert utförande i norra kommundelen"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:37",children:["I norra Ljusdals kommun kan tjäldjupet nÃ¥ uppemot tvÃ¥ meter, och moränjordarna innehÃ¥ller ofta block som mÃ¥ste hanteras i schakten. En dränering som läggs för ytligt eller Ã¥terfylls med fel material riskerar att förskjutas av tjälrörelser sÃ¥ att fallet bryts. Vi lägger därför ledningen med säkert fall pÃ¥ tillräckligt djup, Ã¥terfyller med grovt dränerande och tjälsäkert material avskilt med geotextil, och kontrollerar fallet innan schaktet stängs. Samma hänsyn tar vi vid ",n.jsx(N,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:38",href:"/husgrund-ramsjo",className:"font-semibold text-accent hover:underline",children:"grundarbeten"})," i trakten."]}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Bortledning där dagvattenledning saknas"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:41",children:["Utanför tätbebyggt omrÃ¥de finns sällan nÃ¥gon kommunal dagvattenledning att ansluta till. DÃ¥ leder vi istället dräneringsvattnet till en dräneringsbrunn med utlopp till dike, eller anlägger en stenkista dimensionerad efter husets takyta och grundens storlek. Vid behov kombinerar vi arbetet med dikning eller andra ",n.jsx(N,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:42",href:"/markarbeten-ramsjo",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," sÃ¥ att vattnet fÃ¥r en fungerande väg bort frÃ¥n fastigheten."]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:44",children:["Ibland behövs ingen full omdränering. Om grunden i övrigt är torr kan det räcka med att justera marklutningen, byta stuprörsanslutningar och lägga en separat dagvattenledning. Vi bedömer alltid vad som faktiskt orsakar fukten innan vi föreslÃ¥r Ã¥tgärd â metodiken beskrivs pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:45",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering av husgrund"})," och prisbilden i vÃ¥r ",n.jsx(N,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:45",href:"/priser/vad-kostar-dranering",className:"font-semibold text-accent hover:underline",children:"prisguide"}),"."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:48",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:49",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:50",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:51",className:"mt-3 space-y-2 text-sm",children:w5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:53",children:n.jsx(N,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:53",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:57",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:58",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:59",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:60",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:61",children:"Egen maskinpark och lastbil"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:62",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:63",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringRamsjo.tsx:65",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:71",items:X.draneringRamsjo,title:"Vanliga frÃ¥gor â dränering i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/DraneringRamsjo.tsx:72",title:"Dränering i Ramsjö?",text:"Ring för kostnadsfritt platsbesök â kort framkörning frÃ¥n Hennan hÃ¥ller nere priset."})]})}const L5=[{name:"Dränering â sÃ¥ gÃ¥r arbetet till",href:"/dranering"},{name:"Vad kostar dränering?",href:"/priser/vad-kostar-dranering"},{name:"Markarbeten Hennan",href:"/markarbeten-hennan"},{name:"Husgrund Hennan",href:"/husgrund-hennan"},{name:"Tomtplanering Hennan",href:"/tomtplanering-hennan"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"}];function M5(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/DraneringHennan.tsx:21",items:[{name:"Dränering",href:"/dranering"},{name:"Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/DraneringHennan.tsx:22",title:"Dränering i Hennan",intro:"Hennan är vÃ¥r hemort â här har vi verkstad, kontor och maskinpark. Det ger mycket kort framkörning, snabb inställelse vid fuktproblem och prisvärda arbeten även när uppdraget är litet.",image:ne.dranering,imageAlt:"Grävmaskin dränerar om husgrund i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/DraneringHennan.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/DraneringHennan.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringHennan.tsx:31",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringHennan.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grävfirman pÃ¥ orten sedan 1996"}),n.jsx("p",{"data-loc":"client/src/pages/DraneringHennan.tsx:33",children:"Pär Nordström startade Hennans Grävtjänst i Hennan 1996, och verksamheten har haft sin bas i byn sedan dess. För fastighetsägare i Hennan innebär det att maskinerna redan stÃ¥r pÃ¥ orten: framkörningen blir minimal, vi känner markförhÃ¥llandena kvarter för kvarter och kan i regel komma ut snabbt för att bedöma ett fuktproblem. Blir det akut med vatten mot grunden kan vi ofta leda bort ytvatten omgÃ¥ende och planera in den fullständiga omdräneringen när schaktet kan utföras."}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringHennan.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"MarkförhÃ¥llandena kring sjön Hennan"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringHennan.tsx:37",children:["Markerna kring sjön Hennan bestÃ¥r till stor del av morän med inslag av block, och närheten till sjön kan ge en högre grundvattennivÃ¥ pÃ¥ lägre belägna tomter. Det pÃ¥verkar bÃ¥de hur djupt vi kan schakta, vilket dränerande material som fungerar och hur dräneringsvattnet kan ledas bort. Tjäldjupet är dessutom stort i den här delen av kommunen, sÃ¥ ledningen läggs tjälsäkert med kontrollerat fall. Samma förutsättningar hanterar vi vid ",n.jsx(N,{"data-loc":"client/src/pages/DraneringHennan.tsx:38",href:"/husgrund-hennan",className:"font-semibold text-accent hover:underline",children:"grundarbeten"})," och ",n.jsx(N,{"data-loc":"client/src/pages/DraneringHennan.tsx:38",href:"/markarbeten-hennan",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," pÃ¥ orten."]}),n.jsx("h2",{"data-loc":"client/src/pages/DraneringHennan.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Stora som smÃ¥ uppdrag"}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringHennan.tsx:41",children:["Vi tar hela omdräneringar av villor och gÃ¥rdshus, men även mindre arbeten som dränering runt garage och uthus, dikning för att avlasta tomten, justering av marklutning och nya dagvattenledningar frÃ¥n stuprören. Eftersom framkörningen är kort blir ocksÃ¥ smÃ¥ uppdrag prisvärda. Hur arbetet gÃ¥r till steg för steg beskriver vi pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/DraneringHennan.tsx:42",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering av husgrund"}),", och prisbilden i vÃ¥r ",n.jsx(N,{"data-loc":"client/src/pages/DraneringHennan.tsx:42",href:"/priser/vad-kostar-dranering",className:"font-semibold text-accent hover:underline",children:"prisguide för dränering"}),". ROT-avdrag gäller för arbetskostnaden när du är privatperson."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/DraneringHennan.tsx:45",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/DraneringHennan.tsx:46",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringHennan.tsx:47",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/DraneringHennan.tsx:48",className:"mt-3 space-y-2 text-sm",children:L5.map(t=>n.jsx("li",{"data-loc":"client/src/pages/DraneringHennan.tsx:50",children:n.jsx(N,{"data-loc":"client/src/pages/DraneringHennan.tsx:50",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/DraneringHennan.tsx:54",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/DraneringHennan.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/DraneringHennan.tsx:56",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
157/85",children:[n.jsx("li",{"data-loc":"client/src/pages/DraneringHennan.tsx:57",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringHennan.tsx:58",children:"Egen maskinpark och lastbil"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringHennan.tsx:59",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/DraneringHennan.tsx:60",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/DraneringHennan.tsx:62",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/DraneringHennan.tsx:68",items:X.draneringHennan,title:"Vanliga frÃ¥gor â dränering i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/DraneringHennan.tsx:69",title:"Fukt i grunden i Hennan?",text:"Vi finns pÃ¥ orten â ring och vi kommer ut och bedömer läget kostnadsfritt."})]})}var kg="focusScope.autoFocusOnMount",jg="focusScope.autoFocusOnUnmount",qx={bubbles:!1,cancelable:!0},D5="FocusScope",Aj=k.forwardRef((t,s)=>{const{loop:l=!1,trapped:o=!1,onMountAutoFocus:c,onUnmountAutoFocus:u,...m}=t,[f,p]=k.useState(null),h=Br(c),b=Br(u),v=k.useRef(null),S=ft(s,y=>p(y)),T=k.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;k.useEffect(()=>{if(o){let y=function(F){if(T.paused||!f)return;const $=F.target;f.contains($)?v.current=$:nr(v.current,{select:!0})},R=function(F){if(T.paused||!f)return;const $=F.relatedTarget;$!==null&&(f.contains($)||nr(v.current,{select:!0}))},L=function(F){if(document.activeElement===document.body)for(const P of F)P.removedNodes.length>0&&nr(f)};document.addEventListener("focusin",y),document.addEventListener("focusout",R);const _=new MutationObserver(L);return f&&_.observe(f,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",y),document.removeEventListener("focusout",R),_.disconnect()}}},[o,f,T.paused]),k.useEffect(()=>{if(f){Bx.add(T);const y=document.activeElement;if(!f.contains(y)){const L=new CustomEvent(kg,qx);f.addEventListener(kg,h),f.dispatchEvent(L),L.defaultPrevented||(_5(J5(Hj(f)),{select:!0}),document.activeElement===y&&nr(f))}return()=>{f.removeEventListener(kg,h),setTimeout(()=>{const L=new CustomEvent(jg,qx);f.addEventListener(jg,b),f.dispatchEvent(L),L.defaultPrevented||nr(y??document.body,{select:!0}),f.removeEventListener(jg,b),Bx.remove(T)},0)}}},[f,h,b,T]);const A=k.useCallback(y=>{if(!l&&!o||T.paused)return;const R=y.key==="Tab"&&!y.altKey&&!y.ctrlKey&&!y.metaKey,L=document.activeElement;if(R&&L){const _=y.currentTarget,[F,$]=O5(_);F&&$?!y.shiftKey&&L===$?(y.preventDefault(),l&&nr(F,{select:!0})):y.shiftKey&&L===F&&(y.preventDefault(),l&&nr($,{select:!0})):L===_&&y.preventDefault()}},[l,o,T.paused]);return n.jsx(rt.div,{tabIndex:-1,...m,ref:S,onKeyDown:A})});Aj.displayName=D5;function _5(t,{select:s=!1}={}){const l=document.activeElement;for(const o of t)if(nr(o,{select:s}),document.activeElement!==l)return}function O5(t){const s=Hj(t),l=Px(s,t),o=Px(s.reverse(),t);return[l,o]}function Hj(t){const s=[],l=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const c=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||c?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;l.nextNode();)s.push(l.currentNode);return s}function Px(t,s){for(const l of t)if(!C5(l,{upTo:s}))return l}function C5(t,{upTo:s}){if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(s!==void 0&&t===s)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}function V5(t){return t instanceof HTMLInputElement&&"select"in t}function nr(t,{select:s=!1}={}){if(t&&t.focus){const l=document.activeElement;t.focus({preventScroll:!0}),t!==l&&V5(t)&&s&&t.select()}}var Bx=F5();function F5(){let t=[];return{add(s){const l=t[0];s!==l&&l?.pause(),t=Ux(t,s),t.unshift(s)},remove(s){t=Ux(t,s),t[0]?.resume()}}}function Ux(t,s){const l=[...t],o=l.indexOf(s);return o!==-1&&l.splice(o,1),l}function J5(t){return t.filter(s=>s.tagName!=="A")}var yg=0;function G5(){k.useEffect(()=>{const t=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",t[0]??Qx()),document.body.insertAdjacentElement("beforeend",t[1]??Qx()),yg++,()=>{yg===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(s=>s.remove()),yg--}},[])}function Qx(){const t=document.createElement("span");return t.setAttribute("data-radix-focus-guard",""),t.tabIndex=0,t.style.outline="none",t.style.opacity="0",t.style.position="fixed",t.style.pointerEvents="none",t}var Xa=function(){return Xa=Object.assign||function(s){for(var l,o=1,c=arguments.length;o<c;o++){l=arguments[o];for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(s[u]=l[u])}return s},Xa.apply(this,arguments)};function wj(t,s){var l={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&s.indexOf(o)<0&&(l[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var c=0,o=Object.getOwnPropertySymbols(t);c<o.length;c++)s.indexOf(o[c])<0&&Object.prototype.propertyIsEnumerable.call(t,o[c])&&(l[o[c]]=t[o[c]]);return l}function z5(t,s,l){if(l||arguments.length===2)for(var o=0,c=s.length,u;o<c;o++)(u||!(o in s))&&(u||(u=Array.prototype.slice.call(s,0,o)),u[o]=s[o]);return t.concat(u||Array.prototype.slice.call(s))}var ac="right-scroll-bar-position",nc="width-before-scroll-bar",q5="with-scroll-bars-hidden",P5="--removed-body-scroll-bar-size";function Sg(t,s){return typeof t=="function"?t(s):t&&(t.current=s),t}function B5(t,s){var l=k.useState(function(){return{value:t,callback:s,facade:{get current(){return l.value},set current(o){var c=l.value;c!==o&&(l.value=o,l.callback(o,c))}}}})[0];return l.callback=s,l.facade}var U5=typeof window<"u"?k.useLayoutEffect:k.useEffect,Ix=new WeakMap;function Q5(t,s){var l=B5(null,function(o){return t.forEach(function(c){return Sg(c,o)})});return U5(function(){var o=Ix.get(l);if(o){var c=new Set(o),u=new Set(t),m=l.current;
vendor: 4,196 bytes, lines 157-172
157c.forEach(function(f){u.has(f)||Sg(f,null)}),u.forEach(function(f){c.has(f)||Sg(f,m)})}Ix.set(l,t)},[t]),l}function I5(t){return t}function K5(t,s){s===void 0&&(s=I5);var l=[],o=!1,c={read:function(){if(o)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return l.length?l[l.length-1]:t},useMedium:function(u){var m=s(u,o);return l.push(m),function(){l=l.filter(function(f){return f!==m})}},assignSyncMedium:function(u){for(o=!0;l.length;){var m=l;l=[],m.forEach(u)}l={push:function(f){return u(f)},filter:function(){return l}}},assignMedium:function(u){o=!0;var m=[];if(l.length){var f=l;l=[],f.forEach(u),m=l}var p=function(){var b=m;m=[],b.forEach(u)},h=function(){return Promise.resolve().then(p)};h(),l={push:function(b){m.push(b),h()},filter:function(b){return m=m.filter(b),l}}}};return c}function Y5(t){t===void 0&&(t={});var s=K5(null);return s.options=Xa({async:!0,ssr:!1},t),s}var Ej=function(t){var s=t.sideCar,l=wj(t,["sideCar"]);if(!s)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=s.read();if(!o)throw new Error("Sidecar medium not found");return k.createElement(o,Xa({},l))};Ej.isSideCarExport=!0;function X5(t,s){return t.useMedium(s),Ej}var Lj=Y5(),Ng=function(){},Gc=k.forwardRef(function(t,s){var l=k.useRef(null),o=k.useState({onScrollCapture:Ng,onWheelCapture:Ng,onTouchMoveCapture:Ng}),c=o[0],u=o[1],m=t.forwardProps,f=t.children,p=t.className,h=t.removeScrollBar,b=t.enabled,v=t.shards,S=t.sideCar,T=t.noRelative,A=t.noIsolation,y=t.inert,R=t.allowPinchZoom,L=t.as,_=L===void 0?"div":L,F=t.gapMode,$=wj(t,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),P=S,U=Q5([l,s]),M=Xa(Xa({},$),c);return k.createElement(k.Fragment,null,b&&k.createElement(P,{sideCar:Lj,removeScrollBar:h,shards:v,noRelative:T,noIsolation:A,inert:y,setCallbacks:u,allowPinchZoom:!!R,lockRef:l,gapMode:F}),m?k.cloneElement(k.Children.only(f),Xa(Xa({},M),{ref:U})):k.createElement(_,Xa({},M,{className:p,ref:U}),f))});Gc.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Gc.classNames={fullWidth:nc,zeroRight:ac};var $5=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Z5(){if(!document)return null;var t=document.createElement("style");t.type="text/css";var s=$5();return s&&t.setAttribute("nonce",s),t}function W5(t,s){t.styleSheet?t.styleSheet.cssText=s:t.appendChild(document.createTextNode(s))}function ew(t){var s=document.head||document.getElementsByTagName("head")[0];s.appendChild(t)}var tw=function(){var t=0,s=null;return{add:function(l){t==0&&(s=Z5())&&(W5(s,l),ew(s)),t++},remove:function(){t--,!t&&s&&(s.parentNode&&s.parentNode.removeChild(s),s=null)}}},aw=function(){var t=tw();return function(s,l){k.useEffect(function(){return t.add(s),function(){t.remove()}},[s&&l])}},Mj=function(){var t=aw(),s=function(l){var o=l.styles,c=l.dynamic;return t(o,c),null};return s},nw={left:0,top:0,right:0,gap:0},Tg=function(t){return parseInt(t||"",10)||0},rw=function(t){var s=window.getComputedStyle(document.body),l=s[t==="padding"?"paddingLeft":"marginLeft"],o=s[t==="padding"?"paddingTop":"marginTop"],c=s[t==="padding"?"paddingRight":"marginRight"];return[Tg(l),Tg(o),Tg(c)]},sw=function(t){if(t===void 0&&(t="margin"),typeof window>"u")return nw;var s=rw(t),l=document.documentElement.clientWidth,o=window.innerWidth;return{left:s[0],top:s[1],right:s[2],gap:Math.max(0,o-l+s[2]-s[0])}},lw=Mj(),Qs="data-scroll-locked",iw=function(t,s,l,o){var c=t.left,u=t.top,m=t.right,f=t.gap;return l===void 0&&(l="margin"),` 158 .`.concat(q5,` { 159 overflow: hidden `).concat(o,`; 160 padding-right: `).concat(f,"px ").concat(o,`; 161 } 162 body[`).concat(Qs,`] { 163 overflow: hidden `).concat(o,`; 164 overscroll-behavior: contain; 165 `).concat([s&&"position: relative ".concat(o,";"),l==="margin"&&` 166 padding-left: `.concat(c,`px; 167 padding-top: `).concat(u,`px; 168 padding-right: `).concat(m,`px; 169 margin-left:0; 170 margin-top:0; 171 margin-right: `).concat(f,"px ").concat(o,`; 172 `),l==="padding"&&"padding-right: ".concat(f,"px ").concat(o,";
172")].filter(Boolean).join(""),` 173 } 174 175 .`).concat(ac,` { 176 right: `).concat(f,"px ").concat(o,`; 177 } 178 179 .`).concat(nc,` { 180 margin-right: `).concat(f,"px ").concat(o,`; 181 } 182 183 .`).concat(ac," .").concat(ac,` { 184 right: 0 `).concat(o,`; 185 } 186 187 .`).concat(nc," .").concat(nc,` { 188 margin-right: 0 `).concat(o,`; 189 } 190 191 body[`).concat(Qs,`] { 192 `).concat(P5,": ").concat(f,`px; 193 } 194`)},Kx=function(){var t=parseInt(document.body.getAttribute(Qs)||"0",10);return isFinite(t)?t:0},ow=function(){k.useEffect(function(){return document.body.setAttribute(Qs,(Kx()+1).toString()),function(){var t=Kx()-1;t<=0?document.body.removeAttribute(Qs):document.body.setAttribute(Qs,t.toString())}},[])},cw=function(t){var s=t.noRelative,l=t.noImportant,o=t.gapMode,c=o===void 0?"margin":o;ow();var u=k.useMemo(function(){return sw(c)},[c]);return k.createElement(lw,{styles:iw(u,!s,c,l?"":"!important")})},tm=!1;if(typeof window<"u")try{var Io=Object.defineProperty({},"passive",{get:function(){return tm=!0,!0}});window.addEventListener("test",Io,Io),window.removeEventListener("test",Io,Io)}catch{tm=!1}var zs=tm?{passive:!1}:!1,dw=function(t){return t.tagName==="TEXTAREA"},Dj=function(t,s){if(!(t instanceof Element))return!1;var l=window.getComputedStyle(t);return l[s]!=="hidden"&&!(l.overflowY===l.overflowX&&!dw(t)&&l[s]==="visible")},uw=function(t){return Dj(t,"overflowY")},gw=function(t){return Dj(t,"overflowX")},Yx=function(t,s){var l=s.ownerDocument,o=s;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var c=_j(t,o);if(c){var u=Oj(t,o),m=u[1],f=u[2];if(m>f)return!0}o=o.parentNode}while(o&&o!==l.body);return!1},mw=function(t){var s=t.scrollTop,l=t.scrollHeight,o=t.clientHeight;return[s,l,o]},fw=function(t){var s=t.scrollLeft,l=t.scrollWidth,o=t.clientWidth;return[s,l,o]},_j=function(t,s){return t==="v"?uw(s):gw(s)},Oj=function(t,s){return t==="v"?mw(s):fw(s)},pw=function(t,s){return t==="h"&&s==="rtl"?-1:1},hw=function(t,s,l,o,c){var u=pw(t,window.getComputedStyle(s).direction),m=u*o,f=l.target,p=s.contains(f),h=!1,b=m>0,v=0,S=0;do{if(!f)break;var T=Oj(t,f),A=T[0],y=T[1],R=T[2],L=y-R-u*A;(A||L)&&_j(t,f)&&(v+=L,S+=A);var _=f.parentNode;f=_&&_.nodeType===Node.DOCUMENT_FRAGMENT_NODE?_.host:_}while(!p&&f!==document.body||p&&(s.contains(f)||s===f));return(b&&Math.abs(v)<1||!b&&Math.abs(S)<1)&&(h=!0),h},Ko=function(t){return"changedTouches"in t?[t.changedTouches[0].clientX,t.changedTouches[0].clientY]:[0,0]},Xx=function(t){return[t.deltaX,t.deltaY]},$x=function(t){return t&&"current"in t?t.current:t},vw=function(t,s){return t[0]===s[0]&&t[1]===s[1]},xw=function(t){return` 195 .block-interactivity-`.concat(t,` {pointer-events: none;} 196 .allow-interactivity-`).concat(t,` {pointer-events: all;} 197`)},bw=0,qs=[];function kw(t){var s=k.useRef([]),l=k.useRef([0,0]),o=k.useRef(),c=k.useState(bw++)[0],u=k.useState(Mj)[0],m=k.useRef(t);k.useEffect(function(){m.current=t},[t]),k.useEffect(function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(c));var y=z5([t.lockRef.current],(t.shards||[]).map($x),!0).filter(Boolean);return y.forEach(function(R){return R.classList.add("allow-interactivity-".concat(c))}),function(){document.body.classList.remove("block-interactivity-".concat(c)),y.forEach(function(R){return R.classList.remove("allow-interactivity-".concat(c))})}}},[t.inert,t.lockRef.current,t.shards]);var f=k.useCallback(function(y,R){if("touches"in y&&y.touches.length===2||y.type==="wheel"&&y.ctrlKey)return!m.current.allowPinchZoom;var L=Ko(y),_=l.current,F="deltaX"in y?y.deltaX:_[0]-L[0],$="deltaY"in y?y.deltaY:_[1]-L[1],P,U=y.target,M=Math.abs(F)>Math.abs($)?"h":"v";if("touches"in y&&M==="h"&&U.type==="range")return!1;var V=Yx(M,U);if(!V)return!0;if(V?P=M:(P=M==="v"?"h":"v",V=Yx(M,U)),!V)return!1;if(!o.current&&"changedTouches"in y&&(F||$)&&(o.current=P),!P)return!0;var re=o.current||P;return hw(re,R,y,re==="h"?F:$)},[]),p=k.useCallback(function(y){var R=y;if(!(!qs.length||qs[qs.length-1]!==u)){var L="deltaY"in R?Xx(R):Ko(R),_=s.current.filter(function(P){return P.name===R.type&&(P.target===R.target||R.target===P.shadowParent)&&vw(P.delta,L)})[0];if(_&&_.should){R.cancelable&&R.preventDefault();return}
197if(!_){var F=(m.current.shards||[]).map($x).filter(Boolean).filter(function(P){return P.contains(R.target)}),$=F.length>0?f(R,F[0]):!m.current.noIsolation;$&&R.cancelable&&R.preventDefault()}}},[]),h=k.useCallback(function(y,R,L,_){var F={name:y,delta:R,target:L,should:_,shadowParent:jw(L)};s.current.push(F),setTimeout(function(){s.current=s.current.filter(function($){return $!==F})},1)},[]),b=k.useCallback(function(y){l.current=Ko(y),o.current=void 0},[]),v=k.useCallback(function(y){h(y.type,Xx(y),y.target,f(y,t.lockRef.current))},[]),S=k.useCallback(function(y){h(y.type,Ko(y),y.target,f(y,t.lockRef.current))},[]);k.useEffect(function(){return qs.push(u),t.setCallbacks({onScrollCapture:v,onWheelCapture:v,onTouchMoveCapture:S}),document.addEventListener("wheel",p,zs),document.addEventListener("touchmove",p,zs),document.addEventListener("touchstart",b,zs),function(){qs=qs.filter(function(y){return y!==u}),document.removeEventListener("wheel",p,zs),document.removeEventListener("touchmove",p,zs),document.removeEventListener("touchstart",b,zs)}},[]);var T=t.removeScrollBar,A=t.inert;return k.createElement(k.Fragment,null,A?k.createElement(u,{styles:xw(c)}):null,T?k.createElement(cw,{noRelative:t.noRelative,gapMode:t.gapMode}):null)}function jw(t){for(var s=null;t!==null;)t instanceof ShadowRoot&&(s=t.host,t=t.host),t=t.parentNode;return s}const yw=X5(Lj,kw);var Cj=k.forwardRef(function(t,s){return k.createElement(Gc,Xa({},t,{ref:s,sideCar:yw}))});Cj.classNames=Gc.classNames;var Sw=function(t){if(typeof document>"u")return null;var s=Array.isArray(t)?t[0]:t;return s.ownerDocument.body},Ps=new WeakMap,Yo=new WeakMap,Xo={},Rg=0,Vj=function(t){return t&&(t.host||Vj(t.parentNode))},Nw=function(t,s){return s.map(function(l){if(t.contains(l))return l;var o=Vj(l);return o&&t.contains(o)?o:(console.error("aria-hidden",l,"in not contained inside",t,". Doing nothing"),null)}).filter(function(l){return!!l})},Tw=function(t,s,l,o){var c=Nw(s,Array.isArray(t)?t:[t]);Xo[l]||(Xo[l]=new WeakMap);var u=Xo[l],m=[],f=new Set,p=new Set(c),h=function(v){!v||f.has(v)||(f.add(v),h(v.parentNode))};c.forEach(h);var b=function(v){!v||p.has(v)||Array.prototype.forEach.call(v.children,function(S){if(f.has(S))b(S);else try{var T=S.getAttribute(o),A=T!==null&&T!=="false",y=(Ps.get(S)||0)+1,R=(u.get(S)||0)+1;Ps.set(S,y),u.set(S,R),m.push(S),y===1&&A&&Yo.set(S,!0),R===1&&S.setAttribute(l,"true"),A||S.setAttribute(o,"true")}catch(L){console.error("aria-hidden: cannot operate on ",S,L)}})};return b(s),f.clear(),Rg++,function(){m.forEach(function(v){var S=Ps.get(v)-1,T=u.get(v)-1;Ps.set(v,S),u.set(v,T),S||(Yo.has(v)||v.removeAttribute(o),Yo.delete(v)),T||v.removeAttribute(l)}),Rg--,Rg||(Ps=new WeakMap,Ps=new WeakMap,Yo=new WeakMap,Xo={})}},Rw=function(t,s,l){l===void 0&&(l="data-aria-hidden");var o=Array.from(Array.isArray(t)?t:[t]),c=Sw(t);return c?(o.push.apply(o,Array.from(c.querySelectorAll("[aria-live], script"))),Tw(o,c,l,"aria-hidden")):function(){return null}};const Aw=k.createContext({isComposing:()=>!1,setComposing:()=>{},justEndedComposing:()=>!1,markCompositionEnd:()=>{}}),Fj=()=>k.useContext(Aw);function $o(t){const s=k.useRef(t);s.current=t;const l=k.useRef(null);return l.current||(l.current=function(...o){return s.current.apply(this,o)}),l.current}function Jj(t={}){const{onKeyDown:s,onCompositionStart:l,onCompositionEnd:o}=t,c=k.useRef(!1),u=k.useRef(null),m=k.useRef(null),f=$o(v=>{u.current&&(clearTimeout(u.current),u.current=null),m.current&&(clearTimeout(m.current),m.current=null),c.current=!0,l?.(v)}),p=$o(v=>{u.current=setTimeout(()=>{m.current=setTimeout(()=>{c.current=!1})}),o?.(v)}),h=$o(v=>{if(c.current&&(v.key==="Escape"||v.key==="Enter"&&!v.shiftKey)){v.stopPropagation();return}s?.(v)}),b=$o(()=>c.current);return{onCompositionStart:f,onCompositionEnd:p,onKeyDown:h,isComposing:b}}function lr({className:t,type:s,onKeyDown:l,onCompositionStart:o,onCompositionEnd:c,...u}){const m=Fj(),{onCompositionStart:f,onCompositionEnd:p,onKeyDown:h}=Jj({onKeyDown:b=>{const v=b.nativeEvent.isComposing||m.justEndedComposing();b.key==="Enter"&&v||l?.(b)},onCompositionStart:b=>{m.setComposing(!0),o?.(b)},onCompositionEnd:b=>{m.markCompositionEnd(),setTimeout(()=>{m.setComposing(!1)},100),c?.(b)}});return n.jsx("input",{"data-loc":"client/src/components/ui/input.tsx:53",type:s,"data-slot":"input",className:sa("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",t),onCompositionStart:f,onCompositionEnd:p,onKeyDown:h,...u})}
vendor: 16,562 bytes, line 197
197var Hw="Label",Gj=k.forwardRef((t,s)=>n.jsx(rt.label,{...t,ref:s,onMouseDown:l=>{l.target.closest("button, input, select, textarea")||(t.onMouseDown?.(l),!l.defaultPrevented&&l.detail>1&&l.preventDefault())}}));Gj.displayName=Hw;var ww=Gj;function ra({className:t,...s}){return n.jsx(ww,{"data-loc":"client/src/components/ui/label.tsx:11","data-slot":"label",className:sa("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...s})}function Zx(t,[s,l]){return Math.min(l,Math.max(s,t))}function Ew(t){const s=k.useRef({value:t,previous:t});return k.useMemo(()=>(s.current.value!==t&&(s.current.previous=s.current.value,s.current.value=t),s.current.previous),[t])}var Lw=[" ","Enter","ArrowUp","ArrowDown"],Mw=[" ","Enter"],Ir="Select",[zc,qc,Dw]=cj(Ir),[al]=$s(Ir,[Dw,_c]),Pc=_c(),[_w,fr]=al(Ir),[Ow,Cw]=al(Ir),zj=t=>{const{__scopeSelect:s,children:l,open:o,defaultOpen:c,onOpenChange:u,value:m,defaultValue:f,onValueChange:p,dir:h,name:b,autoComplete:v,disabled:S,required:T,form:A}=t,y=Pc(s),[R,L]=k.useState(null),[_,F]=k.useState(null),[$,P]=k.useState(!1),U=pj(h),[M,V]=mi({prop:o,defaultProp:c??!1,onChange:u,caller:Ir}),[re,W]=mi({prop:m,defaultProp:f,onChange:p,caller:Ir}),oe=k.useRef(null),le=R?A||!!R.closest("form"):!0,[ue,de]=k.useState(new Set),ge=Array.from(ue).map(E=>E.props.value).join(";");return n.jsx(dR,{...y,children:n.jsxs(_w,{required:T,scope:s,trigger:R,onTriggerChange:L,valueNode:_,onValueNodeChange:F,valueNodeHasChildren:$,onValueNodeHasChildrenChange:P,contentId:ji(),value:re,onValueChange:W,open:M,onOpenChange:V,dir:U,triggerPointerDownPosRef:oe,disabled:S,children:[n.jsx(zc.Provider,{scope:s,children:n.jsx(Ow,{scope:t.__scopeSelect,onNativeOptionAdd:k.useCallback(E=>{de(z=>new Set(z).add(E))},[]),onNativeOptionRemove:k.useCallback(E=>{de(z=>{const C=new Set(z);return C.delete(E),C})},[]),children:l})}),le?n.jsxs(cy,{"aria-hidden":!0,required:T,tabIndex:-1,name:b,autoComplete:v,value:re,onChange:E=>W(E.target.value),disabled:S,form:A,children:[re===void 0?n.jsx("option",{value:""}):null,Array.from(ue)]},ge):null]})})};zj.displayName=Ir;var qj="SelectTrigger",Pj=k.forwardRef((t,s)=>{const{__scopeSelect:l,disabled:o=!1,...c}=t,u=Pc(l),m=fr(qj,l),f=m.disabled||o,p=ft(s,m.onTriggerChange),h=qc(l),b=k.useRef("touch"),[v,S,T]=uy(y=>{const R=h().filter(F=>!F.disabled),L=R.find(F=>F.value===m.value),_=gy(R,y,L);_!==void 0&&m.onValueChange(_.value)}),A=y=>{f||(m.onOpenChange(!0),T()),y&&(m.triggerPointerDownPosRef.current={x:Math.round(y.pageX),y:Math.round(y.pageY)})};return n.jsx(Vk,{asChild:!0,...u,children:n.jsx(rt.button,{type:"button",role:"combobox","aria-controls":m.contentId,"aria-expanded":m.open,"aria-required":m.required,"aria-autocomplete":"none",dir:m.dir,"data-state":m.open?"open":"closed",disabled:f,"data-disabled":f?"":void 0,"data-placeholder":dy(m.value)?"":void 0,...c,ref:p,onClick:nt(c.onClick,y=>{y.currentTarget.focus(),b.current!=="mouse"&&A(y)}),onPointerDown:nt(c.onPointerDown,y=>{b.current=y.pointerType;const R=y.target;R.hasPointerCapture(y.pointerId)&&R.releasePointerCapture(y.pointerId),y.button===0&&y.ctrlKey===!1&&y.pointerType==="mouse"&&(A(y),y.preventDefault())}),onKeyDown:nt(c.onKeyDown,y=>{const R=v.current!=="";!(y.ctrlKey||y.altKey||y.metaKey)&&y.key.length===1&&S(y.key),!(R&&y.key===" ")&&Lw.includes(y.key)&&(A(),y.preventDefault())})})})});Pj.displayName=qj;var Bj="SelectValue",Uj=k.forwardRef((t,s)=>{const{__scopeSelect:l,className:o,style:c,children:u,placeholder:m="",...f}=t,p=fr(Bj,l),{onValueNodeHasChildrenChange:h}=p,b=u!==void 0,v=ft(s,p.onValueNodeChange);return Ct(()=>{h(b)},[h,b]),n.jsx(rt.span,{...f,ref:v,style:{pointerEvents:"none"},children:dy(p.value)?n.jsx(n.Fragment,{children:m}):u})});Uj.displayName=Bj;var Vw="SelectIcon",Qj=k.forwardRef((t,s)=>{const{__scopeSelect:l,children:o,...c}=t;return n.jsx(rt.span,{"aria-hidden":!0,...c,ref:s,children:o||"â¼"})});Qj.displayName=Vw;var Fw="SelectPortal",Ij=t=>n.jsx(Gk,{asChild:!0,...t});Ij.displayName=Fw;var Kr="SelectContent",Kj=k.forwardRef((t,s)=>{const l=fr(Kr,t.__scopeSelect),[o,c]=k.useState();if(Ct(()=>{c(new DocumentFragment)},[]),!l.open){const u=o;return u?ki.createPortal(n.jsx(Yj,{scope:t.__scopeSelect,children:n.jsx(zc.Slot,{scope:t.__scopeSelect,children:n.jsx("div",{children:t.children})})}),u):null}return n.jsx(Xj,{...t,ref:s})});Kj.displayName=Kr;var Oa=10,[Yj,pr]=al(Kr),Jw="SelectContentImpl",Gw=di("SelectContent.RemoveScroll"),Xj=k.forwardRef((t,s)=>{const{__scopeSelect:l,position:o="item-aligned",onCloseAutoFocus:c,onEscapeKeyDown:u,onPointerDownOutside:m,side:f,sideOffset:p,align:h,alignOffset:b,arrowPadding:v,collisionBoundary:S,collisionPadding:T,sticky:A,hideWhenDetached:y,avoidCollisions:R,...L}=t,_=fr(Kr,l),[F,$]=k.useState(null),[P,U]=k.useState(null),M=ft(s,ae=>$(ae)),[V,re]=k.useState(null),[W,oe]=k.useState(null),le=qc(l),[ue,de]=k.useState(!1),ge=k.useRef(!1);k.useEffect(()=>{if(F)return Rw(F)},[F]),G5();const E=k.useCallback(ae=>{const[Se,...De]=le().map(Be=>Be.ref.current),[Fe]=De.slice(-1),ze=document.activeElement;for(const Be of ae)if(Be===ze||(Be?.scrollIntoView({block:"nearest"}),Be===Se&&P&&(P.scrollTop=0),Be===Fe&&P&&(P.scrollTop=P.scrollHeight),Be?.focus(),document.activeElement!==ze))return},[le,P]),z=k.useCallback(()=>E([V,F]),[E,V,F]);k.useEffect(()=>{ue&&z()},[ue,z]);const{onOpenChange:C,triggerPointerDownPosRef:ce}=_;k.useEffect(()=>{if(F){let ae={x:0,y:0};const Se=Fe=>{ae={x:Math.abs(Math.round(Fe.pageX)-(ce.current?.x??0)),y:Math.abs(Math.round(Fe.pageY)-(ce.current?.y??0))}},De=Fe=>{ae.x<=10&&ae.y<=10?Fe.preventDefault():F.contains(Fe.target)||C(!1),document.removeEventListener("pointermove",Se),ce.current=null};return ce.current!==null&&(document.addEventListener("pointermove",Se),document.addEventListener("pointerup",De,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",Se),document.removeEventListener("pointerup",De,{capture:!0})}}},[F,C,ce]),k.useEffect(()=>{const ae=()=>C(!1);return window.addEventListener("blur",ae),window.addEventListener("resize",ae),()=>{window.removeEventListener("blur",ae),window.removeEventListener("resize",ae)}},[C]);const[je,H]=uy(ae=>{const Se=le().filter(ze=>!ze.disabled),De=Se.find(ze=>ze.ref.current===document.activeElement),Fe=gy(Se,ae,De);Fe&&setTimeout(()=>Fe.ref.current.focus())}),I=k.useCallback((ae,Se,De)=>{const Fe=!ge.current&&!De;(_.value!==void 0&&_.value===Se||Fe)&&(re(ae),Fe&&(ge.current=!0))},[_.value]),q=k.useCallback(()=>F?.focus(),[F]),K=k.useCallback((ae,Se,De)=>{const Fe=!ge.current&&!De;(_.value!==void 0&&_.value===Se||Fe)&&oe(ae)},[_.value]),ie=o==="popper"?am:$j,he=ie===am?{side:f,sideOffset:p,align:h,alignOffset:b,arrowPadding:v,collisionBoundary:S,collisionPadding:T,sticky:A,hideWhenDetached:y,avoidCollisions:R}:{};return n.jsx(Yj,{scope:l,content:F,viewport:P,onViewportChange:U,itemRefCallback:I,selectedItem:V,onItemLeave:q,itemTextRefCallback:K,focusSelectedItem:z,selectedItemText:W,position:o,isPositioned:ue,searchRef:je,children:n.jsx(Cj,{as:Gw,allowPinchZoom:!0,children:n.jsx(Aj,{asChild:!0,trapped:_.open,onMountAutoFocus:ae=>{ae.preventDefault()},onUnmountAutoFocus:nt(c,ae=>{_.trigger?.focus({preventScroll:!0}),ae.preventDefault()}),children:n.jsx(vm,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:m,onFocusOutside:ae=>ae.preventDefault(),onDismiss:()=>_.onOpenChange(!1),children:n.jsx(ie,{role:"listbox",id:_.contentId,"data-state":_.open?"open":"closed",dir:_.dir,onContextMenu:ae=>ae.preventDefault(),...L,...he,onPlaced:()=>de(!0),ref:M,style:{display:"flex",flexDirection:"column",outline:"none",...L.style},onKeyDown:nt(L.onKeyDown,ae=>{const Se=ae.ctrlKey||ae.altKey||ae.metaKey;if(ae.key==="Tab"&&ae.preventDefault(),!Se&&ae.key.length===1&&H(ae.key),["ArrowUp","ArrowDown","Home","End"].includes(ae.key)){let Fe=le().filter(ze=>!ze.disabled).map(ze=>ze.ref.current);if(["ArrowUp","End"].includes(ae.key)&&(Fe=Fe.slice().reverse()),["ArrowUp","ArrowDown"].includes(ae.key)){const ze=ae.target,Be=Fe.indexOf(ze);Fe=Fe.slice(Be+1)}setTimeout(()=>E(Fe)),ae.preventDefault()}})})})})})})});Xj.displayName=Jw;var zw="SelectItemAlignedPosition",$j=k.forwardRef((t,s)=>{const{__scopeSelect:l,onPlaced:o,...c}=t,u=fr(Kr,l),m=pr(Kr,l),[f,p]=k.useState(null),[h,b]=k.useState(null),v=ft(s,M=>b(M)),S=qc(l),T=k.useRef(!1),A=k.useRef(!0),{viewport:y,selectedItem:R,selectedItemText:L,focusSelectedItem:_}=m,F=k.useCallback(()=>{if(u.trigger&&u.valueNode&&f&&h&&y&&R&&L){const M=u.trigger.getBoundingClientRect(),V=h.getBoundingClientRect(),re=u.valueNode.getBoundingClientRect(),W=L.getBoundingClientRect();if(u.dir!=="rtl"){const ze=W.left-V.left,Be=re.left-ze,Et=M.left-Be,yt=M.width+Et,rn=Math.max(yt,V.width),Ga=window.innerWidth-Oa,wa=Zx(Be,[Oa,Math.max(Oa,Ga-rn)]);f.style.minWidth=yt+"px",f.style.left=wa+"px"}else{const ze=V.right-W.right,Be=window.innerWidth-re.right-ze,Et=window.innerWidth-M.right-Be,yt=M.width+Et,rn=Math.max(yt,V.width),Ga=window.innerWidth-Oa,wa=Zx(Be,[Oa,Math.max(Oa,Ga-rn)]);f.style.minWidth=yt+"px",f.style.right=wa+"px"}const oe=S(),le=window.innerHeight-Oa*2,ue=y.scrollHeight,de=window.getComputedStyle(h),ge=parseInt(de.borderTopWidth,10),E=parseInt(de.paddingTop,10),z=parseInt(de.borderBottomWidth,10),C=parseInt(de.paddingBottom,10),ce=ge+E+ue+C+z,je=Math.min(R.offsetHeight*5,ce),H=window.getComputedStyle(y),I=parseInt(H.paddingTop,10),q=parseInt(H.paddingBottom,10),K=M.top+M.height/2-Oa,ie=le-K,he=R.offsetHeight/2,ae=R.offsetTop+he,Se=ge+E+ae,De=ce-Se;if(Se<=K){const ze=oe.length>0&&R===oe[oe.length-1].ref.current;f.style.bottom="0px";const Be=h.clientHeight-y.offsetTop-y.offsetHeight,Et=Math.max(ie,he+(ze?q:0)+Be+z),yt=Se+Et;f.style.height=yt+"px"}else{const ze=oe.length>0&&R===oe[0].ref.current;f.style.top="0px";const Et=Math.max(K,ge+y.offsetTop+(ze?I:0)+he)+De;f.style.height=Et+"px",y.scrollTop=Se-K+y.offsetTop}f.style.margin=`${Oa}px 0`,f.style.minHeight=je+"px",f.style.maxHeight=le+"px",o?.(),requestAnimationFrame(()=>T.current=!0)}},[S,u.trigger,u.valueNode,f,h,y,R,L,u.dir,o]);Ct(()=>F(),[F]);const[$,P]=k.useState();Ct(()=>{h&&P(window.getComputedStyle(h).zIndex)},[h]);const U=k.useCallback(M=>{M&&A.current===!0&&(F(),_?.(),A.current=!1)},[F,_]);return n.jsx(Pw,{scope:l,contentWrapper:f,shouldExpandOnScrollRef:T,onScrollButtonChange:U,children:n.jsx("div",{ref:p,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:$},children:n.jsx(rt.div,{...c,ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...c.style}})})})});$j.displayName=zw;var qw="SelectPopperPosition",am=k.forwardRef((t,s)=>{const{__scopeSelect:l,align:o="start",collisionPadding:c=Oa,...u}=t,m=Pc(l);return n.jsx(Fk,{...m,...u,ref:s,align:o,collisionPadding:c,style:{boxSizing:"border-box",...u.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)"}})});am.displayName=qw;var[Pw,Gm]=al(Kr,{}),nm="SelectViewport",Zj=k.forwardRef((t,s)=>{const{__scopeSelect:l,nonce:o,...c}=t,u=pr(nm,l),m=Gm(nm,l),f=ft(s,u.onViewportChange),p=k.useRef(0);return n.jsxs(n.Fragment,{children:[n.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:o}),n.jsx(zc.Slot,{scope:l,children:n.jsx(rt.div,{"data-radix-select-viewport":"",role:"presentation",...c,ref:f,style:{position:"relative",flex:1,overflow:"hidden auto",...c.style},onScroll:nt(c.onScroll,h=>{const b=h.currentTarget,{contentWrapper:v,shouldExpandOnScrollRef:S}=m;if(S?.current&&v){const T=Math.abs(p.current-b.scrollTop);if(T>0){const A=window.innerHeight-Oa*2,y=parseFloat(v.style.minHeight),R=parseFloat(v.style.height),L=Math.max(y,R);if(L<A){const _=L+T,F=Math.min(A,_),$=_-F;v.style.height=F+"px",v.style.bottom==="0px"&&(b.scrollTop=$>0?$:0,v.style.justifyContent="flex-end")}}}p.current=b.scrollTop})})})]})});Zj.displayName=nm;var Wj="SelectGroup",[Bw,Uw]=al(Wj),Qw=k.forwardRef((t,s)=>{const{__scopeSelect:l,...o}=t,c=ji();return n.jsx(Bw,{scope:l,id:c,children:n.jsx(rt.div,{role:"group","aria-labelledby":c,...o,ref:s})})});Qw.displayName=Wj;var ey="SelectLabel",Iw=k.forwardRef((t,s)=>{const{__scopeSelect:l,...o}=t,c=Uw(ey,l);return n.jsx(rt.div,{id:c.id,...o,ref:s})});Iw.displayName=ey;var xc="SelectItem",[Kw,ty]=al(xc),ay=k.forwardRef((t,s)=>{const{__scopeSelect:l,value:o,disabled:c=!1,textValue:u,...m}=t,f=fr(xc,l),p=pr(xc,l),h=f.value===o,[b,v]=k.useState(u??""),[S,T]=k.useState(!1),A=ft(s,_=>p.itemRefCallback?.(_,o,c)),y=ji(),R=k.useRef("touch"),L=()=>{c||(f.onValueChange(o),f.onOpenChange(!1))};if(o==="")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 n.jsx(Kw,{scope:l,value:o,disabled:c,textId:y,isSelected:h,onItemTextChange:k.useCallback(_=>{v(F=>F||(_?.textContent??"").trim())},[]),children:n.jsx(zc.ItemSlot,{scope:l,value:o,disabled:c,textValue:b,children:n.jsx(rt.div,{role:"option","aria-labelledby":y,"data-highlighted":S?"":void 0,"aria-selected":h&&S,"data-state":h?"checked":"unchecked","aria-disabled":c||void 0,"data-disabled":c?"":void 0,tabIndex:c?void 0:-1,...m,ref:A,onFocus:nt(m.onFocus,()=>T(!0)),onBlur:nt(m.onBlur,()=>T(!1)),onClick:nt(m.onClick,()=>{R.current!=="mouse"&&L()}),onPointerUp:nt(m.onPointerUp,()=>{R.current==="mouse"&&L()}),onPointerDown:nt(m.onPointerDown,_=>{R.current=_.pointerType}),onPointerMove:nt(m.onPointerMove,_=>{R.current=_.pointerType,c?p.onItemLeave?.():R.current==="mouse"&&_.currentTarget.focus({preventScroll:!0})}),onPointerLeave:nt(m.onPointerLeave,_=>{_.currentTarget===document.activeElement&&p.onItemLeave?.()}),onKeyDown:nt(m.onKeyDown,_=>{p.searchRef?.current!==""&&_.key===" "||(Mw.includes(_.key)&&L(),_.key===" "&&_.preventDefault())})})})})});ay.displayName=xc;var ti="SelectItemText",ny=k.forwardRef((t,s)=>{const{__scopeSelect:l,className:o,style:c,...u}=t,m=fr(ti,l),f=pr(ti,l),p=ty(ti,l),h=Cw(ti,l),[b,v]=k.useState(null),S=ft(s,L=>v(L),p.onItemTextChange,L=>f.itemTextRefCallback?.(L,p.value,p.disabled)),T=b?.textContent,A=k.useMemo(()=>n.jsx("option",{value:p.value,disabled:p.disabled,children:T},p.value),[p.disabled,p.value,T]),{onNativeOptionAdd:y,onNativeOptionRemove:R}=h;return Ct(()=>(y(A),()=>R(A)),[y,R,A]),n.jsxs(n.Fragment,{children:[n.jsx(rt.span,{id:p.textId,...u,ref:S}),p.isSelected&&m.valueNode&&!m.valueNodeHasChildren?ki.createPortal(u.children,m.valueNode):null]})});ny.displayName=ti;var ry="SelectItemIndicator",sy=k.forwardRef((t,s)=>{const{__scopeSelect:l,...o}=t;return ty(ry,l).isSelected?n.jsx(rt.span,{"aria-hidden":!0,...o,ref:s}):null});sy.displayName=ry;var rm="SelectScrollUpButton",ly=k.forwardRef((t,s)=>{const l=pr(rm,t.__scopeSelect),o=Gm(rm,t.__scopeSelect),[c,u]=k.useState(!1),m=ft(s,o.onScrollButtonChange);return Ct(()=>{if(l.viewport&&l.isPositioned){let f=function(){const h=p.scrollTop>0;u(h)};const p=l.viewport;return f(),p.addEventListener("scroll",f),()=>p.removeEventListener("scroll",f)}},[l.viewport,l.isPositioned]),c?n.jsx(oy,{...t,ref:m,onAutoScroll:()=>{const{viewport:f,selectedItem:p}=l;f&&p&&(f.scrollTop=f.scrollTop-p.offsetHeight)}}):null});ly.displayName=rm;var sm="SelectScrollDownButton",iy=k.forwardRef((t,s)=>{const l=pr(sm,t.__scopeSelect),o=Gm(sm,t.__scopeSelect),[c,u]=k.useState(!1),m=ft(s,o.onScrollButtonChange);return Ct(()=>{if(l.viewport&&l.isPositioned){let f=function(){const h=p.scrollHeight-p.clientHeight,b=Math.ceil(p.scrollTop)<h;u(b)};const p=l.viewport;return f(),p.addEventListener("scroll",f),()=>p.removeEventListener("scroll",f)}},[l.viewport,l.isPositioned]),c?n.jsx(oy,{...t,ref:m,onAutoScroll:()=>{const{viewport:f,selectedItem:p}=l;f&&p&&(f.scrollTop=f.scrollTop+p.offsetHeight)}}):null});iy.displayName=sm;var oy=k.forwardRef((t,s)=>{const{__scopeSelect:l,onAutoScroll:o,...c}=t,u=pr("SelectScrollButton",l),m=k.useRef(null),f=qc(l),p=k.useCallback(()=>{m.current!==null&&(window.clearInterval(m.current),m.current=null)},[]);return k.useEffect(()=>()=>
197p(),[p]),Ct(()=>{f().find(b=>b.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[f]),n.jsx(rt.div,{"aria-hidden":!0,...c,ref:s,style:{flexShrink:0,...c.style},onPointerDown:nt(c.onPointerDown,()=>{m.current===null&&(m.current=window.setInterval(o,50))}),onPointerMove:nt(c.onPointerMove,()=>{u.onItemLeave?.(),m.current===null&&(m.current=window.setInterval(o,50))}),onPointerLeave:nt(c.onPointerLeave,()=>{p()})})}),Yw="SelectSeparator",Xw=k.forwardRef((t,s)=>{const{__scopeSelect:l,...o}=t;return n.jsx(rt.div,{"aria-hidden":!0,...o,ref:s})});Xw.displayName=Yw;var lm="SelectArrow",$w=k.forwardRef((t,s)=>{const{__scopeSelect:l,...o}=t,c=Pc(l),u=fr(lm,l),m=pr(lm,l);return u.open&&m.position==="popper"?n.jsx(Jk,{...c,...o,ref:s}):null});$w.displayName=lm;var Zw="SelectBubbleInput",cy=k.forwardRef(({__scopeSelect:t,value:s,...l},o)=>{const c=k.useRef(null),u=ft(o,c),m=Ew(s);return k.useEffect(()=>{const f=c.current;if(!f)return;const p=window.HTMLSelectElement.prototype,b=Object.getOwnPropertyDescriptor(p,"value").set;if(m!==s&&b){const v=new Event("change",{bubbles:!0});b.call(f,s),f.dispatchEvent(v)}},[m,s]),n.jsx(rt.select,{...l,style:{...zk,...l.style},ref:u,defaultValue:s})});cy.displayName=Zw;function dy(t){return t===""||t===void 0}function uy(t){const s=Br(t),l=k.useRef(""),o=k.useRef(0),c=k.useCallback(m=>{const f=l.current+m;s(f),(function p(h){l.current=h,window.clearTimeout(o.current),h!==""&&(o.current=window.setTimeout(()=>p(""),1e3))})(f)},[s]),u=k.useCallback(()=>{l.current="",window.clearTimeout(o.current)},[]);return k.useEffect(()=>()=>window.clearTimeout(o.current),[]),[l,c,u]}function gy(t,s,l){const c=s.length>1&&Array.from(s).every(h=>h===s[0])?s[0]:s,u=l?t.indexOf(l):-1;let m=Ww(t,Math.max(u,0));c.length===1&&(m=m.filter(h=>h!==l));const p=m.find(h=>h.textValue.toLowerCase().startsWith(c.toLowerCase()));return p!==l?p:void 0}function Ww(t,s){return t.map((l,o)=>t[(s+o)%t.length])}var eE=zj,tE=Pj,aE=Uj,nE=Qj,rE=Ij,sE=Kj,lE=Zj,iE=ay,oE=ny,cE=sy,dE=ly,uE=iy;function rc({...t}){return n.jsx(eE,{"data-loc":"client/src/components/ui/select.tsx:10","data-slot":"select",...t})}function sc({...t}){return n.jsx(aE,{"data-loc":"client/src/components/ui/select.tsx:22","data-slot":"select-value",...t})}function lc({className:t,size:s="default",children:l,...o}){return n.jsxs(tE,{"data-loc":"client/src/components/ui/select.tsx:34","data-slot":"select-trigger","data-size":s,className:sa("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...o,children:[l,n.jsx(nE,{"data-loc":"client/src/components/ui/select.tsx:44",asChild:!0,children:n.jsx(wm,{"data-loc":"client/src/components/ui/select.tsx:45",className:"size-4 opacity-50"})})]})}function ic({className:t,children:s,position:l="popper",align:o="center",...c}){return n.jsx(rE,{"data-loc":"client/src/components/ui/select.tsx:59",children:n.jsxs(sE,{"data-loc":"client/src/components/ui/select.tsx:60","data-slot":"select-content",className:sa("bg-popover text-popover-foreground 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]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",l==="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",t),position:l,align:o,...c,children:[n.jsx(gE,{"data-loc":"client/src/components/ui/select.tsx:72"}),n.jsx(lE,{"data-loc":"client/src/components/ui/select.tsx:73",className:sa("p-1",l==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:s}),n.jsx(mE,{"data-loc":"client/src/components/ui/select.tsx:82"})]})})}function oc({className:t,children:s,...l}){return n.jsxs(iE,{"data-loc":"client/src/components/ui/select.tsx:107","data-slot":"select-item",className:sa("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...l,children:[n.jsx("span",{"data-loc":"client/src/components/ui/select.tsx:115",className:"absolute right-2 flex size-3.5 items-center justify-center",children:n.jsx(cE,{"data-loc":"client/src/components/ui/select.tsx:116",children:n.jsx(SA,{"data-loc":"client/src/components/ui/select.tsx:117",className:"size-4"})})}),n.jsx(oE,{"data-loc":"client/src/components/ui/select.tsx:120",children:s})]})}function gE({className:t,...s}){return n.jsx(dE,{"data-loc":"client/src/components/ui/select.tsx:143","data-slot":"select-scroll-up-button",className:sa("flex cursor-default items-center justify-center py-1",t),...s,children:n.jsx(TA,{"data-loc":"client/src/components/ui/select.tsx:151",className:"size-4"})})}function mE({className:t,...s}){return n.jsx(uE,{"data-loc":"client/src/components/ui/select.tsx:161","data-slot":"select-scroll-down-button",className:sa("flex cursor-default items-center justify-center py-1",t),...s,children:n.jsx(wm,{"data-loc":"client/src/components/ui/select.tsx:169",className:"size-4"})})}function my({className:t,onKeyDown:s,onCompositionStart:l,onCompositionEnd:o,...c}){const u=Fj(),{onCompositionStart:m,onCompositionEnd:f,onKeyDown:p}=Jj({onKeyDown:h=>{const b=h.nativeEvent.isComposing||u.justEndedComposing();h.key==="Enter"&&!h.shiftKey&&b||s?.(h)},onCompositionStart:h=>{u.setComposing(!0),l?.(h)},onCompositionEnd:h=>{u.markCompositionEnd(),setTimeout(()=>{u.setComposing(!1)},100),o?.(h)}});return n.jsx("textarea",{"data-loc":"client/src/components/ui/textarea.tsx:53","data-slot":"textarea",className:sa("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),onCompositionStart:m,onCompositionEnd:f,onKeyDown:p,...c})}function fE(t){const s=t.address?.trim(),l=[`${t.service} i ${t.location}`,`${t.primaryLabel.replace(" *","")}: ${t.primary}`,`${t.secondaryLabel.replace(" *","")}: ${t.secondary}`,`${t.timingLabel.replace(" *","")}: ${t.timing}`,s?`Adress / fastighet: ${s}`:null,"",`Beskrivning: ${t.details.trim()}`].filter(o=>o!==null).join(` 198`);return{location:s?`${s}, ${t.location}`:t.location,service:`${t.service} â ${t.location}`,message:l}}const pE={snorojning:{service:"Snöröjning",eyebrow:"PrisförfrÃ¥gan för snöröjning",title:t=>`FÃ¥ pris pÃ¥ snöröjning i ${t}`,intro:"Fyll i det du vet. Vi Ã¥terkommer för att stämma av yta, ploggräns och upplägg innan vi lämnar pris.",detailLabel:"Beskriv ytan och dina önskemÃ¥l *",detailPlaceholder:"Till exempel ungefärlig längd/bredd, var snön kan läggas och när ytan behöver vara framkomlig.",primaryLabel:"Vilken typ av yta gäller det? *",primaryPlaceholder:"Välj yta",primaryOptions:["Infart vid villa eller fritidshus","GÃ¥rdsplan","Parkering eller verksamhetsyta","Privat väg eller samfällighet","Skogsbilväg","Annat"],secondaryLabel:"Vilket upplägg önskar du? *",secondaryPlaceholder:"Välj upplägg",secondaryOptions:["SÃ
198¤songsavtal","Enstaka utryckning","Sandning och halkbekämpning","Osäker â jag vill ha rÃ¥d"],timingLabel:"När behöver du hjälp? *",timingPlaceholder:"Välj tidpunkt",timingOptions:["Inför kommande snösäsong","SÃ¥ snart som möjligt","Vid nästa större snöfall","Jag vill planera längre fram"],submitLabel:"Begär pris pÃ¥ snöröjning",reassurance:["Kostnadsfri förfrÃ¥gan","Säsongsavtal eller per gÃ¥ng","Svar normalt inom en arbetsdag"]},tradfallning:{service:"Trädfällning",eyebrow:"PrisförfrÃ¥gan för trädfällning",title:t=>`FÃ¥ pris pÃ¥ trädfällning i ${t}`,intro:"Beskriv träden och omgivningen. Skicka gärna bilder i ett senare steg â vi Ã¥terkommer och bedömer om platsbesök behövs.",detailLabel:"Beskriv träden och platsen *",detailPlaceholder:"Till exempel trädslag, uppskattad höjd, avstÃ¥nd till hus eller ledning och om trädet lutar eller är skadat.",primaryLabel:"Hur mÃ¥nga träd gäller det? *",primaryPlaceholder:"Välj antal",primaryOptions:["1 träd","2â5 träd","6â10 träd","Fler än 10 träd eller ett omrÃ¥de"],secondaryLabel:"Finns nÃ¥got särskilt riskläge? *",secondaryPlaceholder:"Välj det som passar bäst",secondaryOptions:["Nära hus, väg eller ledning","Stormskadat eller lutande","Dött eller barkborreskadat","Normalt stÃ¥ende träd","Osäker â jag vill ha en bedömning"],timingLabel:"Vad ska hända med ris och ved? *",timingPlaceholder:"Välj hantering",timingOptions:["Jag vill behÃ¥lla veden","Bortforsling önskas","Flisning av ris önskas","Jag vill diskutera alternativen"],submitLabel:"Begär offert pÃ¥ trädfällning",reassurance:["Kostnadsfri bedömning","Maskinstöd för säkrare fällning","Svar normalt inom en arbetsdag"]}};function nn({variant:t,location:s}){const[,l]=bi(),o=k.useRef(!1),c=pE[t],u=k.useMemo(()=>`${t}-${s.toLowerCase().replaceAll("ä","a").replaceAll("ö","o").replaceAll("Ã¥","a").replace(/[^a-z0-9]+/g,"-")}`,[t,s]),[m,f]=k.useState(""),[p,h]=k.useState(""),[b,v]=k.useState(""),[S,T]=k.useState(""),[A,y]=k.useState(""),[R,L]=k.useState(""),[_,F]=k.useState(""),[$,P]=k.useState(""),[U,M]=k.useState(""),V=Ac.quote.submit.useMutation({onSuccess:()=>{Tt("quote_submit_success",{form:t,location:s}),l("/tack")},onError:()=>{Tt("quote_submit_error",{form:t,location:s});const W=`FörfrÃ¥gan kunde inte skickas. Ring oss gärna pÃ¥ ${Y.phoneMobile}.`;M(W),gc.error(W)}});function re(W){if(W.preventDefault(),M(""),!m.trim()||!p.trim()||!A||!R||!_||!$.trim()){const le="Fyll i alla obligatoriska fält innan du skickar förfrÃ¥gan.";M(le),gc.error(le);return}const oe=fE({service:c.service,location:s,address:S,primaryLabel:c.primaryLabel,primary:A,secondaryLabel:c.secondaryLabel,secondary:R,timingLabel:c.timingLabel,timing:_,details:$});V.mutate({name:m.trim(),phone:p.trim(),email:b.trim()||void 0,...oe})}return n.jsx("section",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:130",id:"offert",className:"scroll-mt-24 bg-primary py-12 text-primary-foreground md:py-16","aria-labelledby":`${u}-title`,children:n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:131",className:"container grid gap-8 lg:grid-cols-[0.85fr_1.15fr] lg:items-start",children:[n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:132",className:"lg:sticky lg:top-28",children:[n.jsx("p",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:133",className:"text-sm font-bold uppercase tracking-[0.16em] text-accent",children:c.eyebrow}),n.jsx("h2",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:134",id:`${u}-title`,className:"mt-3 font-display text-3xl font-extrabold leading-tight md:text-4xl",children:c.title(s)}),n.jsx("p",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:137",className:"mt-4 max-w-xl leading-relaxed text-primary-foreground/80",children:c.intro}),n.jsx("ul",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:138",className:"mt-7 space-y-3 text-sm font-semibold",children:c.reassurance.map(W=>n.jsxs("li",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:140",className:"flex items-center gap-3",children:[n.jsx(Em,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:141",className:"h-5 w-5 shrink-0 text-accent","aria-hidden":"true"}),W]},W))}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:146",className:"mt-8 border-t border-primary-foreground
198/20 pt-6",children:[n.jsxs("p",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:147",className:"flex items-center gap-2 text-sm text-primary-foreground/75",children:[n.jsx(RA,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:148",className:"h-4 w-4 text-accent","aria-hidden":"true"})," Brådskande ärende?"]}),n.jsxs("a",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:150",href:Y.phoneMobileHref,className:"mt-2 inline-flex items-center gap-2 font-display text-xl font-bold hover:text-accent",children:[n.jsx(gr,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:151",className:"h-5 w-5","aria-hidden":"true"})," Ring ",Y.phoneMobile]})]})]}),n.jsxs("form",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:156",onSubmit:re,onFocusCapture:()=>{o.current||(o.current=!0,Tt("quote_form_start",{form:t,location:s}))},className:"grid gap-5 rounded-xl bg-card p-6 text-card-foreground shadow-xl md:p-8",children:[n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:165",className:"grid gap-4 sm:grid-cols-2",children:[n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:166",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:167",htmlFor:`${u}-name`,children:"Namn *"}),n.jsx(lr,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:168",id:`${u}-name`,value:m,onChange:W=>f(W.target.value),autoComplete:"name",required:!0})]}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:170",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:171",htmlFor:`${u}-phone`,children:"Telefon *"}),n.jsx(lr,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:172",id:`${u}-phone`,type:"tel",inputMode:"tel",value:p,onChange:W=>h(W.target.value),autoComplete:"tel",required:!0})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:175",className:"grid gap-4 sm:grid-cols-2",children:[n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:176",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:177",htmlFor:`${u}-email`,children:"E-post"}),n.jsx(lr,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:178",id:`${u}-email`,type:"email",inputMode:"email",value:b,onChange:W=>v(W.target.value),autoComplete:"email"})]}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:180",className:"grid gap-1.5",children:[n.jsxs(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:181",htmlFor:`${u}-address`,children:["Adress / fastighet i ",s]}),n.jsx(lr,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:182",id:`${u}-address`,value:S,onChange:W=>T(W.target.value),autoComplete:"street-address",placeholder:"Gatuadress eller fastighetsbeteckning"})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:185",className:"grid gap-4 md:grid-cols-3",children:[n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:186",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:187",htmlFor:`${u}-primary`,children:c.primaryLabel}),n.jsxs(rc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:188",value:A,onValueChange:y,required:!0,children:[n.jsx(lc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:189",id:`${u}-primary`,"aria-label":c.primaryLabel,children:n.jsx(sc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:190",placeholder:c.primaryPlaceholder})}),n.jsx(ic,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:192",children:c.primaryOptions.map(W=>n.jsx(oc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:193",value:W,children:W},W))})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:197",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:198",htmlFor:`${u}-secondary`,children:c.secondaryLabel}),n.jsxs(rc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:199",value:R,onValueChange:L,required:!0,children:[n.jsx(lc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:200",id:`${u}-secondary`,"aria-label":c.secondaryLabel,children:n.jsx(sc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:201",placeholder:c.secondaryPlaceholder})}),n.jsx(ic,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:203",children:c.secondaryOptions.map(W=>n.jsx(oc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:204",value:W,children:W},W))})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:208",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:209",htmlFor:`${u}-timing`,children:c.timingLabel}),n.jsxs(rc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:210",value:_,onValueChange:F,required:!0,children:[n.jsx(lc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:211",id:`${u}-timing`,"aria-label":c.timingLabel,children:n.jsx(sc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:212",placeholder:c.timingPlaceholder})}),n.jsx(ic,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:214",children:c.timingOptions.map(W=>n.jsx(oc,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:215",value:W,children:W},W))})]})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:220",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:221",htmlFor:`${u}
198-details`,children:c.detailLabel}),n.jsx(my,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:222",id:`${u}-details`,value:$,onChange:W=>P(W.target.value),rows:5,placeholder:c.detailPlaceholder,required:!0})]}),U&&n.jsx("p",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:224",role:"alert",className:"rounded-md bg-destructive/10 px-4 py-3 text-sm font-semibold text-destructive",children:U}),n.jsx(Qt,{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:225",type:"submit",size:"lg",disabled:V.isPending,className:"bg-accent text-accent-foreground hover:bg-accent/90",children:V.isPending?"Skickarâ¦":c.submitLabel}),n.jsxs("p",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:228",className:"text-xs leading-relaxed text-muted-foreground",children:["Genom att skicka formuläret godkänner du att vi behandlar uppgifterna för att besvara din förfrÃ¥gan. Läs vÃ¥r ",n.jsx("a",{"data-loc":"client/src/components/site/LocalServiceQuoteForm.tsx:229",href:"/integritetspolicy",className:"font-semibold underline underline-offset-2 hover:text-primary",children:"integritetspolicy"}),"."]})]})]})})}const hE=[{name:"Snöröjning â avtal och utryckning",href:"/snorojning"},{name:"Vad kostar snöröjning?",href:"/priser/snorojning-pris"},{name:"Trädfällning Ljusdal",href:"/tradfallning-ljusdal"},{name:"Markarbeten Ljusdal",href:"/markarbeten-ljusdal"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"}];function vE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:21",items:[{name:"Snöröjning",href:"/snorojning"}
198,{name:"Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:22",title:"Snöröjning i Ljusdal",intro:"Hennans Grävtjänst plogar infarter, gÃ¥rdsplaner, parkeringar och vägar i Ljusdals tätort med omnejd. Säsongsavtal där vi kommer automatiskt när snön faller, eller enstaka utryckningar efter större oväder. Begär pris inför säsongen.",image:ne.snorojning,imageAlt:"Traktor med vikplog röjer snö pÃ¥ infart i Ljusdal",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ snöröjning"}),n.jsx("section",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Tätortens ytor kräver tidig runda"}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:35",children:"I Ljusdals tätort är det inte snömängden i sig som styr arbetet, utan tiderna. Parkeringar vid verksamheter, lastzoner och entréer ska vara framkomliga innan personal och kunder kommer, och infarter till villor ska vara röjda innan bilen ska ut till jobbet. Därför lägger vi rundan sÃ¥ att de tidskritiska ytorna ligger först och privata infarter följer i logisk ordning genom tätorten."}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:38",children:"MÃ¥nga tomter i centrala Ljusdal är samtidigt smÃ¥, med kort avstÃ¥nd mellan hus, garage, staket och gata. Där blir upplagsplatsen den verkliga begränsningen. Vi kommer överens om var snön fÃ¥r läggas utan att skymma sikten mot infart och gata, och när högarna vuxit för stora lastar vi upp och forslar bort snön i stället för att fortsätta pressa in den pÃ¥ tomten."}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Avtal, enstaka gÃ¥nger och sandning"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:42",children:["De flesta väljer säsongsavtal enligt samma upplägg som beskrivs pÃ¥ vÃ¥r sida om ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:43",href:"/snorojning",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),": vi plogar automatiskt när snödjupet passerar den gräns vi kommit överens om, utan att du behöver ringa. Vill du hellre betala per gÃ¥ng gÃ¥r det ocksÃ¥ bra i mÃ¥n av kapacitet, men avtalskunder prioriteras när snön väl kommer."]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:45",children:["Vid behov kompletterar vi med sandning av backar, vändplaner och entréytor, och river is när vägbanan bygger pÃ¥ sig under växlande väder. Efter vintern kan vi Ã¥tgärda plogskador i grus och Ã¥terställa ytorna â nÃ¥got som ofta hänger samman med ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:46",href:"/markarbeten-ljusdal",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," pÃ¥ samma fastighet."]}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad det kostar"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:49",children:["Priset styrs av ytans storlek, hur ofta det ska plogas och avstÃ¥ndet frÃ¥n Hennan. Som privatperson kan du ofta använda RUT-avdrag för snöskottning vid bostaden. I guiden ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:50",href:"/priser/snorojning-pris",className:"font-semibold text-accent hover:underline",children:"Vad kostar snöröjning?"})," gÃ¥r vi igenom vad som pÃ¥verkar priset. Boka gärna före säsongen, dÃ¥ är turlistan inte full och du fÃ¥r bättre pris."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:56",className:"mt-3 space-y-2 text-sm",children:hE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:66",children:"Egen maskinpark och lastbil"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:67",children:"Säsongsavtal eller per gÃ¥ng"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:76",variant:"snorojning",location:"Ljusdal"}),n.jsx(Te,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:77",items:X.snorojningLjusdal,title:"Vanliga frÃ¥gor â snöröjning i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/SnorojningLjusdal.tsx:78",title:"Behöver du snöröjning i Ljusdal?",text:"Begär pris inför säsongen â vi lägger upp rundan efter dina tider."})]})}const xE=[{name:"Snöröjning â avtal och utryckning",href:"/snorojning"},{name:"Vad kostar snöröjning?",href:"/priser/snorojning-pris"},{name:"Trädfällning Färila",href:"/tradfallning-farila"},{name:"Markarbeten Färila",href:"/markarbeten-farila"},{name:"Grävfirma Färila",href:"/gravfirma-farila"}];function bE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/SnorojningFarila.tsx:21",items:[{name:"Snöröjning",href:"/snorojning"},{name:"Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/SnorojningFarila.tsx:22",title:"Snöröjning i Färila",intro:"Vi plogar infarter, gÃ¥rdsplaner och byvägar i Färila med omnejd â för villor, gÃ¥rdar, fritidshus och vägföreningar. Traktor med vikplog tar även lÃ¥nga infarter i ett svep. Säsongsavtal eller enstaka utryckningar.",image:ne.snorojning,imageAlt:"Traktor med vikplog röjer snö pÃ¥ byväg i Färila",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ snöröjning"}),n.jsx("section",{"data-loc":"client/src/pages/SnorojningFarila.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/SnorojningFarila.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningFarila.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningFarila.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"LÃ¥nga infarter och öppen mark"}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningFarila.tsx:35",children:"Kring Färila ligger fastigheterna glest, ofta med hundra meter eller mer frÃ¥n byvägen fram till huset. Infarterna gÃ¥r dessutom genom öppen jordbruksmark där vinden fÃ¥r fritt spelrum. Det innebär att problemet sällan är själva snöfallet utan snödrevet efterÃ¥t: en infart som plogats pÃ¥ morgonen kan vara igenfylld pÃ¥ eftermiddagen om vallarna ligger fel."}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningFarila.tsx:38",children:"Därför lägger vi vallarna lÃ¥gt och lÃ¥ngt ut frÃ¥n vägbanan i vindutsatta lägen, och drar ut dem i stället för att bygga höga kanter som fungerar som snöfÃ¥ngare. Med traktor och vikplog tar vi hela sträckan i ett svep utan att behöva backa och vända flera gÃ¥nger, vilket hÃ¥ller tiden â och därmed kostnaden â nere även pÃ¥ riktigt lÃ¥nga infarter."}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningFarila.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vägföreningar, gÃ¥rdar och fritidshus"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningFarila.tsx:42",children:["För vägföreningar och samfälligheter plogar vi hela vägsträckor med samma upplägg som beskrivs pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningFarila.tsx:43",href:"/snorojning",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),", inklusive siktröjning i korsningar och isrivning när vägbanan bygger pÃ¥ sig. Ett avtal per förening blir bÃ¥de billigare och mer förutsägbart än att varje fastighet löser plogningen pÃ¥ egen hand."]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningFarila.tsx:45",children:["Aktiva gÃ¥rdar behöver framkomlighet varje dag â mjölkbil, foderleveranser och maskiner ska in pÃ¥ gÃ¥rdsplanen oavsett väder. Fritidshusägare vill oftast bara ha infarten öppen till helgen. BÃ¥da varianterna gÃ¥r bra: vi kommer överens om vilka veckor eller tillfällen som gäller. Behöver träd kring infarten tas bort för att plogen ska komma fram hjälper vi till med ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningFarila.tsx:46",href:"/tradfallning-farila",className:"font-semibold text-accent hover:underline",children:"trädfällning"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningFarila.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad det kostar"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningFarila.tsx:49",children:["Priset beror pÃ¥ sträckans längd, ytornas storlek och antalet tillfällen per säsong. LÃ¥nga infarter kostar mer per gÃ¥ng men blir prisvärda i avtal eftersom de ligger pÃ¥ samma runda som övriga kunder i Färilatrakten. Läs mer i guiden ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningFarila.tsx:50",href:"/priser/snorojning-pris",className:"font-semibold text-accent hover:underline",children:"Vad kostar snöröjning?"})," och begär pris i god tid före säsongen."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/SnorojningFarila.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningFarila.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningFarila.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/SnorojningFarila.tsx:56",className:"mt-3 space-y-2 text-sm",children:xE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/SnorojningFarila.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/SnorojningFarila.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/SnorojningFarila.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningFarila.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/SnorojningFarila.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/SnorojningFarila.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningFarila.tsx:66",children:"Traktor med vikplog för lÃ¥nga infarter"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningFarila.tsx:67",children:"Avtal för vägföreningar"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningFarila.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningFarila.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/SnorojningFarila.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/SnorojningFarila.tsx:76",variant:"snorojning",location:"Färila"}),n.jsx(Te,{"data-loc":"client/src/pages/SnorojningFarila.tsx:77",items:X.snorojningFarila,title:"Vanliga frÃ¥gor â snöröjning i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/SnorojningFarila.tsx:78",title:"Behöver du plogning i Färila?",text:"Begär pris för infart, gÃ¥rdsplan eller hela vägsträckan."})]})}const kE=[{name:"Snöröjning â avtal och utryckning",href:"/snorojning"},{name:"Vad kostar snöröjning?",href:"/priser/snorojning-pris"},{name:"Trädfällning Järvsö",href:"/tradfallning-jarvso"},{name:"Markarbeten Järvsö",href:"/markarbeten-jarvso"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"}];function jE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:21",items:[{name:"Snöröjning",href:"/snorojning"},{name:"Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:22",title:"Snöröjning i Järvsö",intro:"Vi plogar infarter, gÃ¥rdsplaner och parkeringar i JärvsöomrÃ¥det för permanentboende, fritidshus och uthyrningsverksamhet. Branta infarter sandas vid behov. Säsongsavtal ger dig plats i rundan och prioritet när snön kommer.",image:ne.snorojning,imageAlt:"Snöröjd infart i sluttande terräng i Järvsö",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ snöröjning"}),n.jsx("section",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Sluttningar gör halkan till huvudfrÃ¥gan"}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:35",children:"Järvsö är byggt i sluttning. MÃ¥nga infarter stiger märkbart frÃ¥n vägen upp mot huset, och där räcker det inte att snön är borta â underlaget mÃ¥ste ocksÃ¥ bära. Plogar man ner till isen blir en brant infart snabbt omöjlig att ta sig upp för, särskilt under de växlingar mellan töväder och nattfrost som är vanliga här under vinterhalvÃ¥ret."}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:38",children:"Vi plogar därför med marginal ner mot underlaget i stället för att skrapa rent, och sandar backar, kurvor och vändplaner när förhÃ¥llandena kräver det. Det gäller inte minst infarter i omrÃ¥det kring Järvsöbacken, där vintertrafiken är tät och bilarna ofta är fullastade."}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Uthyrning kräver annan planering"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:42",children:["Järvsö har mÃ¥nga stugor som hyrs ut vinterhalvÃ¥ret, och för dem styrs röjningen av gästbytena snarare än av snöfallen. Ãr infarten och parkeringen inte framkomlig vid ankomst blir det problem samma kväll. Vi lägger upp röjningen efter era bytesdagar, med samma avtalsupplägg som beskrivs pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:43",href:"/snorojning",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),"."]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:45",children:["Träd som lutar över infarten eller parkeringen blir extra riskabla under snölast. SÃ¥dant tar vi hand om i samma veva genom ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:46",href:"/tradfallning-jarvso",className:"font-semibold text-accent hover:underline",children:"trädfällning"}
198),", och plogskador i grusytor Ã¥tgärdar vi efter vintern i samband med ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:46",href:"/markarbeten-jarvso",className:"font-semibold text-accent hover:underline",children:"markarbeten"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad det kostar"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:49",children:["Priset styrs av ytans storlek, antalet tillfällen och framkörningen frÃ¥n Hennan. Branta ytor som kräver sandning kostar nÃ¥got mer eftersom material och extra pass tillkommer. I guiden ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:50",href:"/priser/snorojning-pris",className:"font-semibold text-accent hover:underline",children:"Vad kostar snöröjning?"})," hittar du prisexempel. Vi lämnar pris efter att vi sett platsen eller fÃ¥tt mÃ¥tt och bilder."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:56",className:"mt-3 space-y-2 text-sm",children:kE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:66",children:"Plogning och sandning i sluttning"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:67",children:"Anpassat efter gästbyten"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/SnorojningJarvso.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:76",variant:"snorojning",location:"Järvsö"}),n.jsx(Te,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:77",items:X.snorojningJarvso,title:"Vanliga frÃ¥gor â snöröjning i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/SnorojningJarvso.tsx:78",title:"Snöröjning i Järvsö?",text:"Begär pris för infart, parkering eller uthyrningsstuga."})]})}const yE=[{name:"Snöröjning â avtal och utryckning",href:"/snorojning"},{name:"Vad kostar snöröjning?",href:"/priser/snorojning-pris"},{name:"Trädfällning Ramsjö",href:"/tradfallning-ramsjo"},{name:"Markarbeten Ramsjö",href:"/markarbeten-ramsjo"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"}];function SE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:21",items:[{name:"Snöröjning",href:"/snorojning"},{name:"Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:22",title:"Snöröjning i Ramsjö",intro:"Ramsjö ligger nära Hennan och vi plogar infarter, gÃ¥rdsplaner, vägar och skogsbilvägar i omrÃ¥det. Kort framkörning gör att vi är pÃ¥ plats tidigt även efter kraftiga snöfall i kommunens snörikaste del.",image:ne.snorojning,imageAlt:"Plogad väg genom snöt
198äckt skogslandskap i Ramsjö",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ snöröjning"}),n.jsx("section",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Längre vinter längst norrut"}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:35",children:"Ramsjö ligger högt och i den nordligaste delen av Ljusdals kommun. Vintern börjar tidigare och slutar senare än i dalgÃ¥ngen kring Ljusdal, och snötäcket ligger normalt frÃ¥n november till in i april. Det pÃ¥verkar hur plogningen ska planeras: här handlar det inte om ett fÃ¥tal tillfällen per säsong utan om ett Ã¥terkommande arbete under en lÃ¥ng period, ofta med mer snö per snöfall än längre söderut i kommunen."}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:38",children:"Eftersom vÃ¥r bas ligger i Hennan, bara ett kort stycke bort, kan vi vara igÃ¥ng tidigt pÃ¥ morgonen även efter riktigt stora snöfall. Den korta framkörningen gör dessutom att ocksÃ¥ mindre uppdrag â en infart, en gÃ¥rdsplan â blir prisvärda här jämfört med om maskinen skulle behöva köras lÃ¥ngt."}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Skogsbilvägar och längre sträckor"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:42",children:["Runt Ramsjö finns mycket skog, och skogsbilvägar behöver hÃ¥llas farbara bÃ¥de för virkestransporter och för att räddningstjänsten ska komma fram. Vi plogar längre grusvägar och skogsbilvägar Ã¥t markägare och vägföreningar med samma upplägg som beskrivs pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:43",href:"/snorojning",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),". Vid behov river vi is och drar ut vallarna sÃ¥ att vägen inte snöar igen vid nästa oväder."]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:45",children:["MÃ¥nga fastigheter här används inte hela vintern. DÃ¥ plogar vi vid överenskomna tillfällen sÃ¥ att huset är Ã¥tkomligt när ni kommer upp, gärna kombinerat med enstaka utryckningar efter stora snöfall för att undvika snötryck pÃ¥ tak och altaner. Träd som lutar under snölast tar vi ner genom ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:46",href:"/tradfallning-ramsjo",className:"font-semibold text-accent hover:underline",children:"trädfällning"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad det kostar"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:49",children:["Priset beror pÃ¥ ytornas storlek, sträckans längd och antalet tillfällen. Den längre säsongen innebär fler pass, men den korta framkörningen frÃ¥n Hennan drar ner kostnaden per tillfälle. Se guiden ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:50",href:"/priser/snorojning-pris",className:"font-semibold text-accent hover:underline",children:"Vad kostar snöröjning?"})," och begär pris inför säsongen."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:56",className:"mt-3 space-y-2 text-sm",children:yE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:66",children:"Kort framkörning frÃ¥n Hennan"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:67",children:"Ãven skogsbilvägar och längre sträckor"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:76",variant:"snorojning",location:"Ramsjö"}),n.jsx(Te,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:77",items:X.snorojningRamsjo,title:"Vanliga frÃ¥gor â snöröjning i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/SnorojningRamsjo.tsx:78",title:"Snöröjning i Ramsjö?",text:"Vi är nära och pÃ¥ plats tidigt â begär pris inför säsongen."})]})}const NE=[{name:"Snöröjning â avtal och utryckning",href:"/snorojning"},{name:"Vad kostar snöröjning?",href:"/priser/snorojning-pris"},{name:"Trädfällning Hennan",href:"/tradfallning-hennan"},{name:"Markarbeten Hennan",href:"/markarbeten-hennan"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"}];function TE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/SnorojningHennan.tsx:21",items:[{name:"Snöröjning",href:"/snorojning"},{name:"Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/SnorojningHennan.tsx:22",title:"Snöröjning i Hennan",intro:"Hennan är vÃ¥r hemort â maskinerna stÃ¥r här och vi börjar rundan i byn. Avtalskunder i Hennan plogas normalt samma morgon som snöfallet, före kunder längre bort i kommunen. Ring och boka inför säsongen.",image:ne.snorojning,imageAlt:"Snöröjning av infart i Hennan tidigt pÃ¥ morgonen",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ snöröjning"}),n.jsx("section",{"data-loc":"client/src/pages/SnorojningHennan.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/SnorojningHennan.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningHennan.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningHennan.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Kortast möjliga inställelse"}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningHennan.tsx:35",children:"Vi har haft basen i Hennan sedan 1996, och det märks tydligast just pÃ¥ vintern. Maskinerna stÃ¥r i byn, vilket betyder att vi inte behöver köra nÃ¥gonstans innan arbetet börjar. När det snöat under natten plogar vi normalt orten först och fortsätter sedan söderut och norrut i kommunen. För dig som bor här innebär det att infarten oftast är röjd innan arbetsdagen börjar."}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningHennan.tsx:38",children:"Att vi finns pÃ¥ orten gör ocksÃ¥ att vi känner till fastigheterna och deras förutsättningar sedan tidigare â var upplagsplatserna fungerar, vilka infarter som är trÃ¥nga och var snön driver igen först. Den kunskapen sparar tid varje gÃ¥ng och gör att avtalen blir förutsägbara bÃ¥de för dig och för oss."}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningHennan.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Riksväg 83 och byvägarna kring sjön"}),n.jsx("p",{"data-loc":"client/src/pages/SnorojningHennan.tsx:42",children:"Hennan ligger utmed riksväg 83 med byvägar som löper ner mot sjön. Fastigheter i öppna lägen längs riksvägen och pÃ¥ sjösidan är vindutsatta, och där är snödrevet ofta ett större bekymmer än snöfallet i sig â en infart kan blÃ¥sa igen samma dag som den plogats. Vi lägger vallarna sÃ¥ att snön inte driver tillbaka in, och drar ut dem i stället för att bygga höga kanter."}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningHennan.tsx:45",children:["Behöver du mer än plogning löser vi det i samma kontakt: sandning av backar och vändplaner, bortforsling av snö när högarna tar för mycket plats, och ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningHennan.tsx:46",href:"/tradfallning-hennan",className:"font-semibold text-accent hover:underline",children:"trädfällning"})," av träd som lutar farligt under snölast. Plogskador i grusytor
198Ã¥tgärdar vi efter vintern tillsammans med övriga ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningHennan.tsx:46",href:"/markarbeten-hennan",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," pÃ¥ fastigheten."]}),n.jsx("h2",{"data-loc":"client/src/pages/SnorojningHennan.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad det kostar"}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningHennan.tsx:49",children:["Här slipper du betala för framkörning över halva kommunen, vilket gör att även mindre ytor blir prisvärda. Som privatperson kan du ofta använda RUT-avdrag för snöskottning vid bostaden. Se guiden ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningHennan.tsx:50",href:"/priser/snorojning-pris",className:"font-semibold text-accent hover:underline",children:"Vad kostar snöröjning?"})," och läs mer om hur vi arbetar pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/SnorojningHennan.tsx:50",href:"/snorojning",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),"."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/SnorojningHennan.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/SnorojningHennan.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningHennan.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/SnorojningHennan.tsx:56",className:"mt-3 space-y-2 text-sm",children:NE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/SnorojningHennan.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/SnorojningHennan.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/SnorojningHennan.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/SnorojningHennan.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/SnorojningHennan.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/SnorojningHennan.tsx:65",children:"Bas i Hennan sedan 1996"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningHennan.tsx:66",children:"Först ute pÃ¥ orten efter snöfall"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningHennan.tsx:67",children:"Ingen lÃ¥ng framkörning att betala för"}),n.jsx("li",{"data-loc":"client/src/pages/SnorojningHennan.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/SnorojningHennan.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/SnorojningHennan.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/SnorojningHennan.tsx:76",variant:"snorojning",location:"Hennan"}),n.jsx(Te,{"data-loc":"client/src/pages/SnorojningHennan.tsx:77",items:X.snorojningHennan,title:"Vanliga frÃ¥gor â snöröjning i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/SnorojningHennan.tsx:78",title:"Snöröjning i Hennan?",text:"Vi finns pÃ¥ orten â boka säsongsavtal och fÃ¥ infarten röjd tidigt."})]})}const RE=[{name:"Trädfällning med maskinstöd",href:"/tradfallning"},{name:"Snöröjning Ljusdal",href:"/snorojning-ljusdal"},{name:"Markarbeten Ljusdal",href:"/markarbeten-ljusdal"},{name:"Tomtplanering Ljusdal",href:"/tomtplanering-ljusdal"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"}];function AE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:21",items:[{name:"Trädfällning",href:"/tradfallning"}
198,{name:"Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:22",title:"Trädfällning i Ljusdal",intro:"Vi fäller träd med maskinstöd i Ljusdals tätort med omnejd â även stora träd nära hus, garage och luftledningar. Ris och stammar tar vi hand om, och stubbarna kan grävas bort i samma uppdrag. Kostnadsfri offert.",image:ne.tradfallning,imageAlt:"Trädfällning med maskinstöd intill villa i Ljusdal",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ trädfällning"}),n.jsx("section",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"TrÃ¥ngt utrymme är regel, inte undantag"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:35",children:"I Ljusdals tätort stÃ¥r de stora träden nästan alltid där de gör mest skada om nÃ¥got gÃ¥r fel: intill huset, över garaget, nära tomtgränsen eller under en luftledning. MÃ¥nga är dessutom planterade för femtio, sextio Ã¥r sedan och har vuxit lÃ¥ngt över vad tomten egentligen rymmer. När ett fullvuxet träd väger flera ton finns ingen felmarginal att arbeta med."}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:38",children:["Där maskinen kommer fram stöttar och styr vi fallriktningen mekaniskt i stället för att förlita oss pÃ¥ att trädet faller rätt av sig självt. Ãr utrymmet för begränsat tar vi trädet i sektioner, uppifrÃ¥n och ned, sÃ¥ att varje del landar där den ska. Det är samma metodik som beskrivs pÃ¥ vÃ¥r sida om ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:39",href:"/tradfallning",className:"font-semibold text-accent hover:underline",children:"trädfällning med maskinstöd"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Ledningar, marklov och grannens tomt"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:42",children:"Träd nära luftledning ska aldrig fällas pÃ¥ egen hand. Vi bedömer avstÃ¥ndet pÃ¥ plats och samordnar med ledningsägaren när arbetet kräver det, sÃ¥ att det kan utföras utan risk för avbrott eller personskada. StÃ¥r trädet nära tomtgränsen gÃ¥r vi igenom fallriktning och Ã¥tkomst innan vi börjar, sÃ¥ att grannens planteringar och byggnader inte blir en överraskning."}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:45",children:"Inom detaljplanerat omrÃ¥de kan marklov krävas för trädfällning, och skyddade alléer eller enskilda träd kan omfattas av särskilda bestämmelser. Kontrollera med kommunen innan arbetet â vi hjälper gärna till att beskriva Ã¥tgärden i ansökan."}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Efter fällningen"}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:49",children:["Stammarna kapas i de längder du önskar och riset flisas eller forslas bort. Ska ytan bli gräsmatta, infart eller byggplats gräver vi bort stubbarna med maskin â det är särskilt effektivt när flera träd tas ner samtidigt. Ofta hänger arbetet ihop med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:50",href:"/markarbeten-ljusdal",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," eller ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:50",href:"/tomtplanering-ljusdal",className:"font-semibold text-accent hover:underline",children:"tomtplanering"}),", och dÃ¥ gör vi allt i en och samma entreprenad."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:56",className:"mt-3 space-y-2 text-sm",children:RE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:66",children:"Maskinstöd och sektionsfällning"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:67",children:"Stubbgrävning i samma uppdrag"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:76",variant:"tradfallning",location:"Ljusdal"}),n.jsx(Te,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:77",items:X.tradfallningLjusdal,title:"Vanliga frÃ¥gor â trädfällning i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/TradfallningLjusdal.tsx:78",title:"Träd som behöver tas ner i Ljusdal?",text:"Skicka bilder pÃ¥ träden sÃ¥ Ã¥terkommer vi med en kostnadsfri offert."})]})}const HE=[{name:"Trädfällning med maskinstöd",href:"/tradfallning"},{name:"Snöröjning Färila",href:"/snorojning-farila"},{name:"Markarbeten Färila",href:"/markarbeten-farila"},{name:"Tomtplanering Färila",href:"/tomtplanering-farila"},{name:"Grävfirma Färila",href:"/gravfirma-farila"}];function wE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TradfallningFarila.tsx:21",items:[{name:"Trädfällning",href:"/tradfallning"},{name:"Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TradfallningFarila.tsx:22",title:"Trädfällning i Färila",intro:"Vi fäller träd i Färila med omnejd â riskträd vid gÃ¥rdar, granar som dött av barkborreangrepp och avverkning inför bygge eller markarbeten. Ved, ris och stubbar tar vi hand om. Begär kostnadsfri offert.",image:ne.tradfallning,imageAlt:"Trädfällning av gran vid gÃ¥rd i Färila",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ trädfällning"}),n.jsx("section",{"data-loc":"client/src/pages/TradfallningFarila.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TradfallningFarila.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningFarila.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningFarila.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Döda granar blir svÃ¥rare för varje Ã¥r"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningFarila.tsx:35",children:"Barkborreangreppen har lämnat tydliga spÃ¥r i skogarna kring Färila, och mÃ¥nga fastigheter har döda granar stÃ¥ende nära hus, uthus och infarter. Ett problem med torra granar är att de blir sprödare med tiden: veden tappar sin seghet, toppen kan brytas av under fällningen och stammen beter sig inte som ett friskt träd. Ju längre de stÃ¥r, desto svÃ¥rare och dyrare blir de att ta ner kontrollerat."}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningFarila.tsx:38",children:["Vi fäller därför sÃ¥dana träd med maskinstöd enligt principerna pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningFarila.tsx:39",href:"/tradfallning",className:"font-semibold text-accent hover:underline",children:"trädfällning"}),", vilket innebär att vi styr fallet mekaniskt i stället för att lita pÃ¥ att stammen hÃ¥ller. Virket kapas upp och forslas bort, eller lämnas i de längder du vill ha kvar."]}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningFarila.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Gamla gÃ¥rdar och känsliga byggnader"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningFarila.tsx:42",children:"Kring Färilatrakten finns mÃ¥nga äldre gÃ¥rdar med stora lövträd nära bostadshus, lador och uthus. Byggnaderna har ofta naturstensgrunder och tak som inte tÃ¥l en felriktad stam. PÃ¥ sÃ¥dana tomter fäller vi i sektioner och lägger fallet där marken tar smällen, med maskinen som mothÃ¥ll. Vi gÃ¥r igenom up
198pställning och fallriktning pÃ¥ plats innan arbetet börjar."}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningFarila.tsx:45",children:["Ska tomten öppnas upp för mer ljus, en ny byggnad eller en bredare infart kombinerar vi gärna fällningen med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningFarila.tsx:46",href:"/markarbeten-farila",className:"font-semibold text-accent hover:underline",children:"markarbeten"}),". Träd som skymmer sikten eller hindrar plogen längs infarten är ocksÃ¥ vanliga uppdrag, ofta i samband med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningFarila.tsx:46",href:"/snorojning-farila",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningFarila.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Ved, ris och stubbar"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningFarila.tsx:49",children:"MÃ¥nga vill behÃ¥lla veden, och dÃ¥ kapar vi stammarna i önskade längder och lägger upp dem där du vill ha dem. Riset flisas eller forslas bort. Vill du bli av med stubbarna gräver vi bort dem med maskin, vilket är mest effektivt när flera träd tas ner samtidigt eller ytan ska bli gräsmatta eller odlingsmark."})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TradfallningFarila.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningFarila.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningFarila.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TradfallningFarila.tsx:56",className:"mt-3 space-y-2 text-sm",children:HE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TradfallningFarila.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/TradfallningFarila.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TradfallningFarila.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningFarila.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TradfallningFarila.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TradfallningFarila.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningFarila.tsx:66",children:"Vana vid barkborreskadade granar"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningFarila.tsx:67",children:"Sektionsfällning vid känsliga byggnader"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningFarila.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningFarila.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/TradfallningFarila.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/TradfallningFarila.tsx:76",variant:"tradfallning",location:"Färila"}),n.jsx(Te,{"data-loc":"client/src/pages/TradfallningFarila.tsx:77",items:X.tradfallningFarila,title:"Vanliga frÃ¥gor â trädfällning i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/TradfallningFarila.tsx:78",title:"Träd som behöver tas ner i Färila?",text:"Skicka bilder pÃ¥ träden sÃ¥ Ã¥terkommer vi med en kostnadsfri offert."})]})}const EE=[{name:"Trädfällning med maskinstöd",href:"/tradfallning"},{name:"Snöröjning Järvsö",href:"/snorojning-jarvso"},{name:"Markarbeten Järvsö",href:"/markarbeten-jarvso"},{name:"Tomtplanering Järvsö",href:"/tomtplanering-jarvso"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"}];function LE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:21",items:[{name:"Trädfällning",href:"/tradfallning"},{name:"Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:22",title:"Trädfällning i Järvsö",intro:"Vi fäller träd i JärvsöomrÃ¥det för villaägare, fritidshusägare och verksamheter â riskträd efter storm, träd som skuggar tomten och avverkning inför nybyggnation. Vi klarar även sluttningstomter.",image:ne.tradfallning,imageAlt:"Trädfällning i sluttande terräng i Järvsö",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ trädfällning"}),n.jsx("section",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:33",className:"space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Lutningen förändrar allt"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:35",children:"Järvsö är byggt i sluttning, och det pÃ¥verkar trädfällningen pÃ¥ tvÃ¥ sätt. Trädet fÃ¥r extra rörelse nedÃ¥t när det börjar falla, vilket gör att fallriktningen blir svÃ¥rare att hÃ¥lla än pÃ¥ plan mark. Samtidigt mÃ¥ste maskinens uppställning väljas med omsorg â bÃ¥de för att den ska ha stabilt underlag och för att inte hamna i trädets väg om nÃ¥got rör sig oväntat."}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:38",children:["Vi förankrar med maskin och fäller i sektioner när lutningen kräver det, enligt samma metodik som beskrivs pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:39",href:"/tradfallning",className:"font-semibold text-accent hover:underline",children:"trädfällning med maskinstöd"}),". PÃ¥ branta tomter gÃ¥r vi alltid igenom bÃ¥de fallriktning och uppställning pÃ¥ plats innan arbetet börjar."]}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Uthyrning, gäster och riskträd"}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:42",children:["Järvsö har mÃ¥nga stugor som hyrs ut Ã¥ret om, och träd som lutar över byggnad eller parkering är en risk för bÃ¥de fastigheten och gästerna. Vi planerar sÃ¥dana arbeten mellan gästbyten sÃ¥ att verksamheten kan fortsätta, städar tomten innan nästa gäst kommer och samordnar gärna med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:43",href:"/snorojning-jarvso",className:"font-semibold text-accent hover:underline",children:"snöröjningen"})," under vinterhalvÃ¥ret."]}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:45",children:"Efter höst- och vinterstormar är halvfallna och stormfällda träd de farligaste av alla, eftersom spänningarna i stammen är svÃ¥ra att läsa utifrÃ¥n. Där lossar vi trädet med maskin i stället för att sÃ¥ga i spänt virke."}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Pris och bortforsling"}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:49",children:["Priset styrs av antal träd, storlek, svÃ¥righetsgrad och hur mycket som ska forslas bort. Skicka gärna bilder med din förfrÃ¥gan, sÃ¥ kan vi ofta ge en preliminär bedömning direkt och därefter fast offert efter platsbesök. Ska tomten öppnas upp eller ytan användas till nÃ¥got nytt kombinerar vi fällningen med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:50",href:"/tomtplanering-jarvso",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," och stubbgrävning."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:56",className:"mt-3 space-y-2 text-sm",children:EE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:66",children:"Vana vid sluttningstomter"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:67",children:"Planeras kring gästbyten"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/TradfallningJarvso.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:76",variant:"tradfallning",location:"Järvsö"}),n.jsx(Te,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:77",items:X.tradfallningJarvso,title:"Vanliga frÃ¥gor â trädfällning i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/TradfallningJarvso.tsx:78",title:"Träd som behöver tas ner i Järvsö?",text:"Skicka bilder pÃ¥ träden sÃ¥ Ã¥terkommer vi med en kostnadsfri offert."})]})}const ME=[{name:"Trädfällning med maskinstöd",href:"/tradfallning"},{name:"Snöröjning Ramsjö",href:"/snorojning-ramsjo"},{name:"Markarbeten Ramsjö",href:"/markarbeten-ramsjo"},{name:"Tomtplanering Ramsjö",href:"/tomtplanering-ramsjo"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"}];function DE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:21",items:[{name:"Trädfällning",href:"/tradfallning"},{name:"Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:22",title:"Trädfällning i Ramsjö",intro:"Ramsjö ligger nära Hennan och vi fäller träd Ã¥t fastighetsägare, markägare och fritidshusägare i omrÃ¥det. Stormfällda riskträd, träd över skogsbilväg och stubbgrävning i samma uppdrag.",image:ne.tradfallning,imageAlt:"Trädfällning och stormröjning längs skogsbilväg i Ramsjö",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ trädfällning"}),n.jsx("section",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Stormfällt virke är det farligaste"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:35",children:"Runt Ramsjö är skogen tät och exponerad, och efter höst- och vinterstormar blir halvfallna träd ett Ã¥terkommande problem. Ett träd som hänger i ett annat eller lutar med rotvältan halvt uppe stÃ¥r under spänningar som inte syns utifrÃ¥n. SÃ¥gar man i spänt virke kan stammen kasta sig Ã¥t en helt annan riktning än väntat, och det är i de situationerna de allvarliga olyckorna sker."}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:38",children:["Vi lossar sÃ¥dana träd med maskin i stället för att gÃ¥ in med motorsÃ¥g i spänningarna, enligt principerna pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:39",href:"/tradfallning",className:"font-semibold text-accent hover:underline",children:"trädfällning med maskinstöd"}),". Efter arbetet kapar vi upp virket och röjer platsen sÃ¥ att den gÃ¥r att använda igen."]}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Skogsbilvägar och framkomlighet"}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:42",children:["Träd som fallit över eller lutar mot en skogsbilväg stoppar bÃ¥de virkestransporter och utryckningsfordon. Vi kapar upp, drar av virket och siktröjer kanterna vid behov, ofta i kombination med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:43",href:"/snorojning-ramsjo",className:"font-semibold text-accent hover:underline",children:"snöröjning"}
198)," av samma vägsträckor under vintern. Markägare i omrÃ¥det anlitar oss regelbundet för just den kombinationen."]}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:45",children:"Att vÃ¥r bas ligger i Hennan, ett kort stycke bort, gör att vi kan komma ut snabbt när nÃ¥got ligger illa till â och att även mindre uppdrag blir prisvärda eftersom framkörningen är kort."}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Stubbar och fortsatt markarbete"}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:49",children:["Med maskin pÃ¥ plats är det effektivt att ta stubbarna direkt, särskilt när flera träd fälls samtidigt eller ytan ska bli gräsmatta, infart eller byggplats. Ska marken därefter jämnas av eller dräneras fortsätter vi i samma entreprenad med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:50",href:"/markarbeten-ramsjo",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," â en uppställning i stället för tvÃ¥."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:56",className:"mt-3 space-y-2 text-sm",children:ME.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:65",children:"Grundat 1996 â 30 Ã¥r i kommunen"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:66",children:"Kort framkörning frÃ¥n Hennan"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:67",children:"Stormröjning och skogsbilvägar"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:76",variant:"tradfallning",location:"Ramsjö"}),n.jsx(Te,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:77",items:X.tradfallningRamsjo,title:"Vanliga frÃ¥gor â trädfällning i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/TradfallningRamsjo.tsx:78",title:"Träd som behöver tas ner i Ramsjö?",text:"Vi är nära och kan ofta se pÃ¥ trädet snabbt â begär kostnadsfri offert."})]})}const _E=[{name:"Trädfällning med maskinstöd",href:"/tradfallning"},{name:"Snöröjning Hennan",href:"/snorojning-hennan"},{name:"Markarbeten Hennan",href:"/markarbeten-hennan"},{name:"Tomtplanering Hennan",href:"/tomtplanering-hennan"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"}];function OE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TradfallningHennan.tsx:21",items:[{name:"Trädfällning",href:"/tradfallning"},{name:"Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TradfallningHennan.tsx:22",title:"Trädfällning i Hennan",intro:"Hennan är vÃ¥r hemort och vi fäller träd här Ã¥ret om â riskträd vid hus, granar efter barkborreangrepp och avverkning inför bygge. Maskinern
198a stÃ¥r i byn, sÃ¥ vi kan ofta se pÃ¥ trädet samma eller nästa dag.",image:ne.tradfallning,imageAlt:"Trädfällning med maskinstöd pÃ¥ tomt i Hennan",ctaHref:"#offert",ctaLabel:"FÃ¥ pris pÃ¥ trädfällning"}),n.jsx("section",{"data-loc":"client/src/pages/TradfallningHennan.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TradfallningHennan.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningHennan.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningHennan.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Nära när det är akut"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningHennan.tsx:35",children:"Ett träd som lutar över taket efter en storm kan inte vänta en vecka. Eftersom vi har maskinerna i Hennan kan vi ofta titta pÃ¥ trädet samma eller nästa dag och ta ner det sÃ¥ snart det är säkert att arbeta. Vi behandlar träd som hänger över byggnad, väg eller ledning som brÃ¥dskande â det är i väntetiden skadorna växer."}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningHennan.tsx:38",children:["Vi fäller med maskinstöd enligt samma metodik som beskrivs pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningHennan.tsx:39",href:"/tradfallning",className:"font-semibold text-accent hover:underline",children:"trädfällning"}),": maskinen stöttar och styr fallriktningen, och i trÃ¥nga lägen tar vi trädet i sektioner. Halvfallna och stormfällda träd lossar vi med maskin i stället för att sÃ¥ga i spänt virke."]}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningHennan.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Strandtomter kring sjön Hennan"}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningHennan.tsx:42",children:"Läget vid sjön ger mÃ¥nga fastigheter mjuk, vattenhÃ¥llande mark närmast stranden. SÃ¥dan mark bär inte tunga maskiner hur som helst, och en felbedömning där lämnar djupa spÃ¥r i tomten som blir kostsamma att laga. Vi väljer uppställning och maskin efter markens bärighet, och lägger körvägen där underlaget hÃ¥ller."}),n.jsx("p",{"data-loc":"client/src/pages/TradfallningHennan.tsx:45",children:"MÃ¥nga träd här är samtidigt granar som dött av barkborreangrepp. De blir sprödare för varje Ã¥r som gÃ¥r och bör tas ner medan veden fortfarande hÃ¥ller, sÃ¥ att fallet gÃ¥r att styra."}),n.jsx("h2",{"data-loc":"client/src/pages/TradfallningHennan.tsx:48",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Kombinera med markarbetet"}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningHennan.tsx:49",children:["Ska tomten planeras eller en grund grävas är det oftast smartast att göra allt i ett svep: vi tar ner träden, gräver bort stubbarna och fortsätter direkt med ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningHennan.tsx:50",href:"/markarbeten-hennan",className:"font-semibold text-accent hover:underline",children:"markarbeten"})," eller ",n.jsx(N,{"data-loc":"client/src/pages/TradfallningHennan.tsx:50",href:"/tomtplanering-hennan",className:"font-semibold text-accent hover:underline",children:"tomtplanering"}),". En uppställning i stället för tvÃ¥ hÃ¥ller kostnaden nere, och du slipper vänta in tvÃ¥ separata arbeten."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TradfallningHennan.tsx:53",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TradfallningHennan.tsx:54",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningHennan.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TradfallningHennan.tsx:56",className:"mt-3 space-y-2 text-sm",children:_E.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TradfallningHennan.tsx:58",children:n.jsx(N,{"data-loc":"client/src/pages/TradfallningHennan.tsx:58",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TradfallningHennan.tsx:62",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TradfallningHennan.tsx:63",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TradfallningHennan.tsx:64",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TradfallningHennan.tsx:65",children:"Bas i Hennan sedan 1996"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningHennan.tsx:66",children:"Snabb bedömning av akuta riskträd"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningHennan.tsx:67",children:"Trädfällning och markarbete i ett"}),n.jsx("li",{"data-loc":"client/src/pages/TradfallningHennan.tsx:68",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TradfallningHennan.tsx:70",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller ",n.jsx("a",{"data-loc":"client/src/pages/TradfallningHennan.tsx:70",href:"#offert",className:"font-semibold text-accent hover:underline",children:"fyll i formuläret nedan"}),"."]})]})]})]})}),n.jsx(nn,{"data-loc":"client/src/pages/TradfallningHennan.tsx:76",variant:"tradfallning",location:"Hennan"}),n.jsx(Te,{"data-loc":"client/src/pages/TradfallningHennan.tsx:77",items:X.tradfallningHennan,title:"Vanliga frÃ¥gor â trädfällning i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/TradfallningHennan.tsx:78",title:"Träd som behöver tas ner i Hennan?",text:"Vi finns pÃ¥ orten och kan ofta se pÃ¥ trädet samma eller nästa dag."})]})}const CE=[{name:"Dränering Ljusdal",href:"/dranering-ljusdal"},{name:"Enskilt avlopp â komplett guide",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Trekammarbrunn Ljusdal",href:"/trekammarbrunn-ljusdal"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"}];function VE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:22",items:[{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:23",title:"Avloppsanläggning i Ljusdal â komplett entreprenad",intro:"Behöver du en ny avloppsanläggning i Ljusdal? Vi tar hela entreprenaden: provgrop, underlag till kommunens tillstÃ¥nd, schakt, trekammarbrunn och infiltration eller markbädd. Lokal grävfirma verksam i Ljusdalstrakten sedan 1996.",image:ne.va,imageAlt:"Grävmaskin anlägger avloppsanläggning med trekammarbrunn utanför Ljusdal"}),n.jsx("section",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"FrÃ¥n provgrop till godkänd anläggning"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:34",children:["En avloppsanläggning är mer än en brunn i marken. Vi börjar alltid med provgrop för att bedöma jordart och grundvattennivÃ¥, tar fram situationsplan och teknisk beskrivning till din ansökan hos miljöenheten i Ljusdals kommun, och utför sedan hela anläggningen: schakt, ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:35",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunn"}),", ledningar och efterrening. När vi lämnar platsen är anläggningen klar för slutbesiktning."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Jordarterna kring Ljusdal avgör lösningen"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:38",children:["I dalgÃ¥ngen längs Ljusnan och Kyrksjön dominerar sand- och siltjordar, medan höjdlägena runt tätorten har fastare morän. Sandiga jordar är ofta utmärkta för ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"})," â den enklaste och billigaste efterreningen â medan silt och tät morän kräver markbädd. Provgropen ger svaret, och vi dimensionerar anläggningen efter verkliga förhÃ¥llanden i stället för schablon."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Byte av underkänd anläggning"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:42",children:["Ljusdals kommun bedriver löpande tillsyn av enskilda avlopp, och äldre anläggningar med stenkista eller utan efterrening underkänns i regel. Har du fÃ¥tt föreläggande hjälper vi dig hela vägen: vi river den gamla anläggningen, anlägger en ny godkänd lösning och ser till att papperen mot kommunen blir rätt. Se prisexempel i guiden ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:4
1986",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:49",className:"mt-3 space-y-2 text-sm",children:CE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:59",children:"Hela entreprenaden â ett Ã¥tagande"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:69",items:X.avloppsanlaggningLjusdal,title:"Vanliga frÃ¥gor â avloppsanläggning i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/AvloppsanlaggningLjusdal.tsx:70",title:"Dags för ny avloppsanläggning i Ljusdal?",text:"Boka kostnadsfritt platsbesök â vi lämnar fast offert utan förpliktelser."})]})}const FE=[{name:"Dränering Färila",href:"/dranering-farila"},{name:"Enskilt avlopp â komplett guide",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Trekammarbrunn Färila",href:"/trekammarbrunn-farila"},{name:"Grävfirma Färila",href:"/gravfirma-farila"}];function JE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:22",items:[{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:23",title:"Avloppsanläggning i Färila â anläggning och byte",intro:"Vi anlägger och byter kompletta avloppsanläggningar i Färila med omnejd: trekammarbrunn med infiltration eller markbädd, tillstÃ¥ndsunderlag till kommunen och bortforsling av den gamla anläggningen. En entreprenör som tar helheten.",image:ne.va,imageAlt:"Avloppsschakt med trekammarbrunn och infiltrationsledningar i Färila"}),n.jsx("section",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Växlande jordar kräver provgrop"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:34",children:["Runt Färila och Ljusnans dalgÃ¥ng växlar jordarna pÃ¥fallande snabbt mellan sand, silt och morän â tvÃ¥ grannfastigheter kan behöva helt olika lösningar. Sandiga jordar tar emot vatten bra och lämpar sig för ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:35",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"}),", medan siltiga och täta jordar kräver markbädd med uppsamlande dränering. Därför gräver vi alltid provgrop innan vi föreslÃ¥r lösning och lämnar pris."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"MÃ¥nga äldre avlopp behöver bytas"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:38",children:["I Färilabygden finns gott om äldre fastigheter med avlopp frÃ¥n 60-, 70- och 80-talen â stenkistor, sjunkbrunnar och anläggningar utan efterrening. SÃ¥dana lösningar underkänns i regel vid kommunens tillsyn. Vi river den gamla anläggningen, anlägger en ny med ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:39",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunn"})," och godkänd rening, och tar fram alla underlag till miljöenheten i Ljusdals kommun."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ gÃ¥r det till"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:42",children:["Först kostnadsfritt platsbesök och provgrop, därefter fast offert och tillstÃ¥ndsansökan. Ljusdals kommun anger cirka tio veckors handläggningstid â själva grävarbetet tar sedan normalt tre till fem dagar. Prisexempel hittar du i guiden ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:49",className:"mt-3 space-y-2 text-sm",children:FE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:59",children:"Hela entreprenaden â ett Ã¥tagande"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:69",items:X.avloppsanlaggningFarila,title:"Vanliga frÃ¥gor â avloppsanläggning i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/AvloppsanlaggningFarila.tsx:70",title:"Behöver du nytt avlopp i Färila?",text:"Boka kostnadsfritt platsbesök â vi lämnar fast offert utan förpliktelser."})]})}const GE=[{name:"Dränering Järvsö",href:"/dranering-jarvso"},{name:"Enskilt avlopp â komplett guide",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Trekammarbrunn Järvsö",href:"/trekammarbrunn-jarvso"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"}];function zE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:22",items:[{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:23",title:"Avloppsanläggning i Järvsö â för hus och fritidshus",intro:"Vi anlägger kompletta avloppsanläggningar i Järvsö med omnejd â för bÃ¥de permanentboende och fritidshus. Provgrop, tillstÃ¥ndsunderlag, trekammarbrunn och rening i ett sammanhÃ¥llet Ã¥tagande, utfört av en lokal firma med 30 Ã¥rs erfarenhet.",image:ne.va,imageAlt:"Avloppsanläggning grävs för fritidshus i sluttande terräng vid Järvsö"}),n.jsx("section",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Fritidshus och permanenthus har olika behov"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:34",children:["Järvsö har mÃ¥nga fritidshus, och antalet växer i takt med besöksnäringen kring Järvsöbacken. Ãven ett fritidshus med vattentoalett kräver tillstÃ¥nd och godkänd rening â men för hus med enklare standard finns anpassade lösningar med lägre kostnad. Vi hjälper dig välja rätt nivÃ¥: allt frÃ¥n komplett anläggning med ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:35",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunn"})," till enklare BDT-lösningar för sommarvatten."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Sluttningstomter kan vara en fördel"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:38",children:["MÃ¥nga tomter kring Järvsö ligger i sluttningar ned mot Ljusnan. Det kan faktiskt förenkla anläggningen: med rätt placering ordnas självfall genom hela systemet utan pumpbrunn, vilket sänker bÃ¥de anläggnings- och driftkostnaden. Vi placerar brunn och ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration eller markbädd"})," sÃ¥ att självfall, skyddsavstÃ¥nd till vattentäkter och kommunens krav uppfylls."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Komplett Ã¥tagande med fast offert"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:42",children:["Vi tar hela entreprenaden: provgrop, underlag till tillstÃ¥ndsansökan hos Ljusdals kommun, schakt, brunn, ledningar, efterrening och Ã¥terställning av tomten. Bor du inte i Järvsö Ã¥ret runt planerar vi arbetet sÃ¥ att det passar dig. Prisexempel finns i guiden ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:49",className:"mt-3 space-y-2 text-sm",children:GE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:59",children:"Hela entreprenaden â ett Ã¥tagande"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:69",items:X.avloppsanlaggningJarvso,title:"Vanliga frÃ¥gor â avloppsanläggning i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/AvloppsanlaggningJarvso.tsx:70",title:"Planerar du nytt avlopp i Järvsö?",text:"Boka kostnadsfritt platsbesök â vi lämnar fast offert utan förpliktelser."})]})}const qE=[{name:"Dränering Ramsjö",href:"/dranering-ramsjo"},{name:"Enskilt avlopp â komplett guide",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Trekammarbrunn Ramsjö",href:"/trekammarbrunn-ramsjo"},{name:"Markarbeten Ramsjö",href:"/markarbeten-ramsjo"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"}];function PE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:23",items:[{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:24",title:"Avloppsanläggning i Ramsjö â närmaste entreprenören",intro:"I norra Ljusdals kommun är det lÃ¥ngt mellan entreprenörerna â men inte frÃ¥n Hennan. Vi anlägger och byter kompletta avloppsanläggningar i Ramsjö med omnejd, med kort framkörning och utförande anpassat för morän och djup tjäle.",image:ne.va,imageAlt:"Avloppsanläggning grävs i skogsmark nära Ramsjö"}),n.jsx("section",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:31",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:32",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:33",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"En kvart bort â det märks pÃ¥ priset"}),n.jsx("p",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:35",children:"FrÃ¥n Hennan nÃ¥r vi Ramsjö pÃ¥ cirka en kvart, medan firmor frÃ¥n Ljusdal eller söderut har över en timmes framkörning i varje riktning. För en avloppsentreprenad som pÃ¥gÃ¥r flera dagar blir den skillnaden tusenlappar pÃ¥ slutsumman. Vi känner dessutom markerna och fastigheterna i norra kommundelen efter 30 Ã¥r i trakten."}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:38",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Morän och tjäle styr utförandet"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:39",children:["Kring Ramsjö dominerar blockig skogsmorän, och tjälen gÃ¥r uppemot tvÃ¥ meter. Ledningar mÃ¥ste läggas frostsäkert eller isoleras, och moränens genomsläpplighet avgör om ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:40",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"})," räcker eller om markbädd krävs. Vi gräver provgrop, bedömer förhÃ¥llandena pÃ¥ plats och dimensionerar ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:40",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunn"})," och rening därefter."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:42",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"HelhetsÃ¥tagande â även för fritidshus"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:43",children:["MÃ¥nga fastigheter i Ramsjötrakten är fritidshus och gÃ¥rdar med äldre avlopp som inte klarar dagens krav. Vi tar hela entreprenaden: provgrop, tillstÃ¥ndsunderlag till Ljusdals kommun, schakt, brunn, ledningar, efterrening och bortforsling av den gamla anläggningen. Prisexempel finns i guiden ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:44",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:47",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:48",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:49",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:50",className:"mt-3 space-y-2 text-sm",children:qE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:52",children:n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:52",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:56",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:57",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:58",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:59",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:60",children:"Bas i Hennan â en kvart bort"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:61",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:62",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:64",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:70",items:X.avloppsanlaggningRamsjo,title:"Vanliga frÃ¥gor â avloppsanläggning i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/AvloppsanlaggningRamsjo.tsx:71",title:"Behöver du nytt avlopp i Ramsjö?",text:"Vi är närmast till hands. Boka kostnadsfritt platsbesök â fast offert utan förpliktelser."})]})}const BE=[{name:"Dränering Hennan",href:"/dranering-hennan"},{name:"Enskilt avlopp â komplett guide",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Trekammarbrunn",href:"/vatten-avlopp/trekammarbrunn"},{name:"Infiltration & markbädd",href:"/vatten-avlopp/infiltration-markbadd"},{name:"Vad kostar enskilt avlopp?",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Trekammarbrunn Hennan",href:"/trekammarbrunn-hennan"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"}];function UE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:22",items:[{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Avloppsanläggning Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:23",title:"Avloppsanläggning i Hennan â vi finns pÃ¥ orten",intro:"Hennan är vÃ¥r hemort â här har vi verkstad, maskinpark och 30 Ã¥rs lokal erfarenhet. Vi anlägger och byter kompletta avloppsanläggningar med trekammarbrunn och infiltration eller markbädd, med kortast tänkbara framkörning.",image:ne.va,imageAlt:"Avloppsanläggning med trekammarbrunn grävs pÃ¥ fastighet i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grävfirman som bor granne"}),n.jsx("p",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:34",children:"När entreprenören finns pÃ¥ orten blir allt enklare: platsbesöket kan bokas med kort varsel, framkörningen kostar nästan ingenting och vi f
198inns kvar i byn om nÃ¥got behöver justeras efterÃ¥t. Vi känner fastigheterna kring Hennansjön och vet hur markerna ser ut â ofta redan innan provgropen är grävd."}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Rätt lösning för din fastighet"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:38",children:["Kring Hennan varierar marken mellan sandig morän och tätare partier, och närheten till sjön ställer krav pÃ¥ skyddsavstÃ¥nd. Vi gräver provgrop och avgör om ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:39",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration"})," fungerar eller om markbädd krävs, och dimensionerar ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:39",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunnen"})," efter hushÃ¥llets storlek. Allt underlag till tillstÃ¥ndsansökan hos Ljusdals kommun ingÃ¥r."]}),n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Allt ingÃ¥r â frÃ¥n provgrop till Ã¥terställd tomt"}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:42",children:["Vi tar hela entreprenaden: provgrop, tillstÃ¥ndsunderlag, schakt, brunn, ledningar, efterrening, Ã¥terfyllning och grovplanering av tomten â samt bortforsling av den gamla anläggningen om du byter. Själva arbetet tar normalt tre till fem dagar. Prisexempel finns i guiden ",n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:43",href:"/priser/vad-kostar-enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"Vad kostar enskilt avlopp?"})]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:49",className:"mt-3 space-y-2 text-sm",children:BE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:58",children:"Grundat 1996 â 30 Ã¥r pÃ¥ orten"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:59",children:"Verkstad och maskinpark i Hennan"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:69",items:X.avloppsanlaggningHennan,title:"Vanliga frÃ¥gor â avloppsanläggning i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/AvloppsanlaggningHennan.tsx:70",title:"Dags för nytt avlopp i Hennan?",text:"Vi finns pÃ¥ orten. Boka kostnadsfritt platsbesök â fast offert utan förpliktelser."})]})}const QE=[{name:"Husgrund â tjänstesida",href:"/markarbeten/husgrund"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Tomtplanering Ljusdal",href:"/tomtplanering-ljusdal"},{name:"Dränering Ljusdal",href:"/dranering-ljusdal"},{name:"Dränering â översikt",href:"/dranering"},{name:"Avloppsanläggning Ljusdal",href:"/avloppsanlaggning-ljusdal"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"}];function IE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:22",items:[{name:"Husgrund",href:"/markarbeten/husgrund"},{name:"Husgrund Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:23",title:"Husgrund i Ljusdal â grundarbete av folk som kan marken",intro:"Ska du bygga villa, garage eller tillbyggnad i Ljusdal? Vi schaktar och bygger upp husgrunder med dränering, VA och packade materiallager â klart för gjutning. Lokal grävfirma med 30 Ã¥rs erfarenhet av markerna i kommunen.",image:ne.markarbeten,imageAlt:"Grävmaskin schaktar för husgrund i Ljusdal"}),n.jsx("section",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:32",className:"space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Sedimentjordar i dalgÃ¥ngen kräver rätt utförande"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:34",children:["Ljusdals tätort ligger till stor del pÃ¥ sediment- och siltjordar i Ljusnans och Kyrksjöns dalgÃ¥ng. Silt är tjälfarligt och känsligt för vatten â det ställer krav pÃ¥ schaktdjup, materialval och en ordentligt utförd ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:35",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"grunddränering"}),". Utanför dalgÃ¥ngen tar moränen vid, med block som kräver rätt maskiner. Vi bedömer alltid markförhÃ¥llandena pÃ¥ plats innan vi lämnar fast offert."]}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Komplett grundarbete â klart för gjutning"}),n.jsx("p",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:38",children:"Vi tar hela markentreprenaden för din grund: avbaning, schakt till frostfritt djup, packade lager av bergkross, kantisolering, grunddränering, dagvatten och VA-anslutningar. Grunden lämnas exakt enligt konstruktionsritningen, klar för din grundläggare att gjuta. Vi arbetar med platta pÃ¥ mark, krypgrund och källargrund â för villor, garage, tillbyggnader och attefallshus i hela Ljusdalstrakten."}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Samordning med husleverantör och grundläggare"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:42",children:["Bygger du med husleverantör arbetar vi direkt mot deras grundritningar och hÃ¥ller tidplanen mot gjutning och husleverans. Behöver du hjälp med mer än grunden gör vi gärna hela markentreprenaden â infart, VA och ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:43",href:"/tomtplanering-ljusdal",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," â i samma etablering, vilket sänker totalkostnaden."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:49",className:"mt-3 space-y-2 text-sm",children:QE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:59",children:"Ljusdal pÃ¥ under en halvtimme"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:69",items:X.husgrundLjusdal,title:"Vanliga frÃ¥gor â husgrund i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/HusgrundLjusdal.tsx:70",title:"Dags att gräva för grunden i Ljusdal?",text:"Boka kostnadsfritt platsbesök â vi gÃ¥r igenom ritningar och markförhÃ¥llanden och lämnar fast offert."})]})}const KE=[{name:"Husgrund â tjänstesida",href:"/markarbeten/husgrund"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Tomtplanering Färila",href:"/tomtplanering-farila"},{name:"Dränering Färila",href:"/dranering-farila"},{name:"Dränering â översikt",href:"/dranering"},{name:"Avloppsanläggning Färila",href:"/avloppsanlaggning-farila"},{name:"Grävfirma Färila",href:"/gravfirma-farila"}];function YE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/HusgrundFarila.tsx:22",items:[{name:"Husgrund",href:"/markarbeten/husgrund"},{name:"Husgrund Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/HusgrundFarila.tsx:23",title:"Husgrund i Färila â stabil grund i växlande jordar",intro:"Vi schaktar och bygger upp husgrunder i Färila med omnejd â villor, fritidshus, garage och maskinhallar. Komplett grundarbete med dränering, VA och packade lager, klart för gjutning. Fast offert efter platsbesök.",image:ne.markarbeten,imageAlt:"Grundschakt för villa i Färila"}),n.jsx("section",{"data-loc":"client/src/pages/HusgrundFarila.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/HusgrundFarila.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundFarila.tsx:32",className:"space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundFarila.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Sand, silt och morän â provgropen avgör"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundFarila.tsx:34",children:["Kring Färila och Ljusnans dalgÃ¥ng växlar jordarna pÃ¥ korta avstÃ¥nd: sandiga älvsediment, tjälfarlig silt och blockig morän kan förekomma pÃ¥ samma tomt. Sandiga lägen är enkla att grundlägga pÃ¥, medan silt kräver större schaktdjup, rätt materialval och noggrann ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundFarila.tsx:35",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"})," för att grunden ska stÃ¥ torr och sättningsfri. Vi bedömer marken pÃ¥ plats innan arbetet planeras â det är billigare att göra rätt frÃ¥n början."]}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundFarila.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"FrÃ¥n avbaning till gjutklar grund"}),n.jsx("p",{"data-loc":"client/src/pages/HusgrundFarila.tsx:38",children:"VÃ¥r entreprenad omfattar hela markarbetet: avbaning av matjord, schakt till rätt nivÃ¥, packade lager av bergkross med kontrollerad packning, kantisolering, grunddränering, dagvattenledningar och VA fram till förbindelsepu
198nkt. Vi bygger för platta pÃ¥ mark, krypgrund och källargrund och lämnar grunden exakt enligt konstruktionsritningen."}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundFarila.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Alla storlekar â frÃ¥n attefallshus till maskinhall"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundFarila.tsx:42",children:["Vi gör grunder i alla storlekar i Färilatrakten â attefallshus, garage, tillbyggnader, fullstora villor och ekonomibyggnader. Kort framkörning inom kommunen gör även mindre uppdrag prisvärda, och kombinerar du grunden med infart och ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundFarila.tsx:43",href:"/tomtplanering-farila",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," i samma etablering sjunker totalkostnaden ytterligare."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/HusgrundFarila.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundFarila.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundFarila.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/HusgrundFarila.tsx:49",className:"mt-3 space-y-2 text-sm",children:KE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/HusgrundFarila.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/HusgrundFarila.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/HusgrundFarila.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundFarila.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/HusgrundFarila.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/HusgrundFarila.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundFarila.tsx:59",children:"Verksamma i hela Ljusdals kommun"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundFarila.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundFarila.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundFarila.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/HusgrundFarila.tsx:69",items:X.husgrundFarila,title:"Vanliga frÃ¥gor â husgrund i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/HusgrundFarila.tsx:70",title:"Ska du bygga i Färila?",text:"Boka kostnadsfritt platsbesök â vi bedömer marken och lämnar fast offert pÃ¥ hela grundarbetet."})]})}const XE=[{name:"Husgrund â tjänstesida",href:"/markarbeten/husgrund"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Tomtplanering Järvsö",href:"/tomtplanering-jarvso"},{name:"Dränering Järvsö",href:"/dranering-jarvso"},{name:"Dränering â översikt",href:"/dranering"},{name:"Avloppsanläggning Järvsö",href:"/avloppsanlaggning-jarvso"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"}];function $E(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/HusgrundJarvso.tsx:22",items:[{name:"Husgrund",href:"/markarbeten/husgrund"},{name:"Husgrund Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/HusgrundJarvso.tsx:23",title:"Husgrund i Järvsö â även i sluttning och brant terräng",intro:"Vi gräver husgrunder för permanenthus och fritidshus i Järvsö med omnejd â inklusive sluttningslägen kring Järvsöbacken och Ãjeberget där souterränggrund, terrassering och stödmurar krävs. Fast offert efter platsbesök.",image:ne.markarbeten,imageAlt:"Grundarbete pÃ¥ sluttningstomt i Järvsö"}),n.jsx("section",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:32",className:"space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Sluttningstomter är Järvsös signum"}),n.jsx("p",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:34",children:"MÃ¥nga av de attraktiva tomterna i Järvsö ligger i sluttning med utsikt över Ljusnan och Ãjeberget. Det ger fantastiska lägen â men ställer krav pÃ¥ grundarbetet: souterränglösningar, terrassering, stödmurar och genomtänkt masshantering där schaktmassor Ã¥teranvänds pÃ¥ tomten i stället för att transporteras bort. Vi har maskinerna och erfarenheten att bygga stabilt även i brant terräng."}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vatten i slänt kräver rätt dränering"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:38",children:["I sluttande terräng rör sig markvatten nedÃ¥t genom slänten, och grunden mÃ¥ste skyddas med avskärande dike eller dränering pÃ¥ uppsidan utöver den vanliga ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundJarvso.tsx:39",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"grunddräneringen"}),". Rätt utfört stÃ¥r huset torrt i decennier â fel utfört blir det ständiga fuktproblem. Det här är detaljer vi alltid tar höjd för i bÃ¥de utförande och offert."]}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Fritidshus och permanentboende"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:42",children:["En stor del av vÃ¥ra grunduppdrag i Järvsö gäller fritidshus. Vi arbetar direkt mot husleverantörens grundritningar, planerar arbetet sÃ¥ att det passar dig som inte bor pÃ¥ orten och skickar bilder löpande. Kombinera gärna grunden med infart och ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundJarvso.tsx:43",href:"/tomtplanering-jarvso",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," i samma etablering â det sänker totalkostnaden."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:49",className:"mt-3 space-y-2 text-sm",children:XE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/HusgrundJarvso.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:59",children:"Vana vid sluttningslägen"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundJarvso.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/HusgrundJarvso.tsx:69",items:X.husgrundJarvso,title:"Vanliga frÃ¥gor â husgrund i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/HusgrundJarvso.tsx:70",title:"Ska du bygga i Järvsö?",text:"Boka kostnadsfritt platsbesök â vi bedömer tomten, även i sluttning, och lämnar fast offert."})]})}const ZE=[{name:"Husgrund â tjänstesida",href:"/markarbeten/husgrund"},{name:"Markarbeten Ramsjö",href:"/markarbeten-ramsjo"},{name:"Tomtplanering Ramsjö",href:"/tomtplanering-ramsjo"},{name:"Dränering Ramsjö",href:"/dranering-ramsjo"},{name:"Dränering â översikt",href:"/dranering"},{name:"Avloppsanläggning Ramsjö",href:"/avloppsanlaggning-ramsjo"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"}];function WE(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:22",items:[{name:"Husgrund",href:"/markarbeten/husgrund"},{name:"Husgrund Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:23",title:"Husgrund i Ramsjö â närmaste grundentreprenören",intro:"Ska du bygga i Ramsjö eller norra Ljusdals kommun? FrÃ¥n basen i Hennan nÃ¥r vi Ramsjö pÃ¥ en kvart â kort framkörning som hÃ¥ller nere priset. Vi gräver grunder för villor, fritidshus, garage och ek
198onomibyggnader, anpassade för morän och djup tjäle.",image:ne.markarbeten,imageAlt:"Grundschakt i skogsmark nära Ramsjö"}),n.jsx("section",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Kort framkörning â lägre slutsumma"}),n.jsx("p",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:34",children:"Ett grundarbete pÃ¥gÃ¥r ofta en till tvÃ¥ veckor, och dÃ¥ gör framkörningen stor skillnad pÃ¥ priset. FrÃ¥n Hennan nÃ¥r vi Ramsjö pÃ¥ cirka en kvart via riksväg 83/84, medan firmor söderifrÃ¥n har över en timme i varje riktning. Det märks pÃ¥ slutsumman â och gör att även mindre grunder för garage och tillbyggnader blir prisvärda att beställa lokalt."}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Blockig morän och tvÃ¥ meter tjäle"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:38",children:["Markerna kring Ramsjö domineras av blockig skogsmorän, och tjäldjupet nÃ¥r uppemot tvÃ¥ meter. Det kräver rätt schaktdjup, frostsäker konstruktion med isolering och en ordentlig ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:39",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"grunddränering"})," â annars lyfter och spricker grunden med Ã¥ren. Block i schakten hanterar vi med rätt maskiner, och massorna kan ofta Ã¥teranvändas pÃ¥ tomten."]}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Villor, fritidshus och ekonomibyggnader"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:42",children:["Vi förbereder grunder för alla byggnadstyper i Ramsjötrakten â platta pÃ¥ mark, krypgrund och källargrund, frÃ¥n attefallshus till maskinhallar. Hela markentreprenaden ingÃ¥r: schakt, packade lager, dränering, dagvatten och VA, klart för gjutning. Behöver du även infart eller planering av tomten gör vi det i samma etablering â se ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:43",href:"/tomtplanering-ramsjo",className:"font-semibold text-accent hover:underline",children:"tomtplanering i Ramsjö"}),"."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:49",className:"mt-3 space-y-2 text-sm",children:ZE.map(t=>n.jsx("li",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:59",children:"Bas i Hennan â en kvart bort"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:63",className:"mt-4 text-sm text-foreground
198/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:69",items:X.husgrundRamsjo,title:"Vanliga frÃ¥gor â husgrund i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/HusgrundRamsjo.tsx:70",title:"Ska du bygga i Ramsjö?",text:"Vi är närmast till hands. Boka kostnadsfritt platsbesök â fast offert utan förpliktelser."})]})}const e4=[{name:"Husgrund â tjänstesida",href:"/markarbeten/husgrund"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Tomtplanering Hennan",href:"/tomtplanering-hennan"},{name:"Dränering Hennan",href:"/dranering-hennan"},{name:"Dränering â översikt",href:"/dranering"},{name:"Avloppsanläggning Hennan",href:"/avloppsanlaggning-hennan"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"}];function t4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/HusgrundHennan.tsx:22",items:[{name:"Husgrund",href:"/markarbeten/husgrund"},{name:"Husgrund Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/HusgrundHennan.tsx:23",title:"Husgrund i Hennan â grundläggaren finns pÃ¥ orten",intro:"Hennan är vÃ¥r hemort. Här har vi verkstad, maskinpark och 30 Ã¥rs erfarenhet av markerna. Vi schaktar och bygger upp husgrunder med mycket kort framkörning â och kan ofta planera in arbetet snabbt.",image:ne.markarbeten,imageAlt:"Grävmaskin förbereder husgrund i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/HusgrundHennan.tsx:30",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/HusgrundHennan.tsx:31",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundHennan.tsx:32",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundHennan.tsx:33",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Lokalt â pÃ¥ riktigt"}),n.jsx("p",{"data-loc":"client/src/pages/HusgrundHennan.tsx:34",children:"Med basen vid riksväg 84 i Hennan har vi ingen framkörning att tala om. Det gör oss flexibla: vi kan ofta ta grundarbeten med kort varsel under barmarkssäsongen, och uppstÃ¥r nÃ¥got oförutsett under bygget är vi pÃ¥ plats snabbt. Egen smides- och maskinverkstad betyder dessutom att reparationer löses direkt, utan stillestÃ¥nd som äter upp din tidplan."}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundHennan.tsx:37",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Byggförutsättningarna kring Hennan"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundHennan.tsx:38",children:["Markerna runt Hennan och Hennansjön bestÃ¥r till stor del av moränjordar med inslag av block, och tjälen gÃ¥r djupt â uppemot tvÃ¥ meter stränga vintrar. En grund här mÃ¥ste byggas med rätt schaktdjup, frostsäkert utförande och ordentlig ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundHennan.tsx:39",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"}),". Efter tre decennier i trakten vet vi exakt vad markerna kräver."]}),n.jsx("h2",{"data-loc":"client/src/pages/HusgrundHennan.tsx:41",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Hela markentreprenaden i ett Ã¥tagande"}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundHennan.tsx:42",children:["Vi tar hela grundarbetet: schakt, packade materiallager, kantisolering, grunddränering, dagvatten och VA-anslutningar â klart för gjutning enligt konstruktionsritningen. Vi samordnar med din grundläggare och husleverantör, och kombinerar gärna grunden med infart och ",n.jsx(N,{"data-loc":"client/src/pages/HusgrundHennan.tsx:43",href:"/tomtplanering-hennan",className:"font-semibold text-accent hover:underline",children:"tomtplanering"})," i samma etablering."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/HusgrundHennan.tsx:46",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/HusgrundHennan.tsx:47",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundHennan.tsx:48",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/HusgrundHennan.tsx:49",className:"mt-3 space-y-2 text-sm",children:e4.map(t=>n.jsx("li",{"data-loc":"client/src/pages/HusgrundHennan.tsx:51",children:n.jsx(N,{"data-loc":"client/src/pages/HusgrundHennan.tsx:51",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/HusgrundHennan.tsx:55",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/HusgrundHennan.tsx:56",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/HusgrundHennan.tsx:57",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground
198/85",children:[n.jsx("li",{"data-loc":"client/src/pages/HusgrundHennan.tsx:58",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundHennan.tsx:59",children:"Verkstad och maskinpark pÃ¥ orten"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundHennan.tsx:60",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/HusgrundHennan.tsx:61",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/HusgrundHennan.tsx:63",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/HusgrundHennan.tsx:69",items:X.husgrundHennan,title:"Vanliga frÃ¥gor â husgrund i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/HusgrundHennan.tsx:70",title:"Ska du bygga i Hennan?",text:"Grundläggaren finns redan pÃ¥ orten. Ring oss eller boka kostnadsfritt platsbesök i dag."})]})}const a4=[{name:"Tomtplanering â tjänstesida",href:"/markarbeten/tomtplanering"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Husgrund Ljusdal",href:"/husgrund-ljusdal"},{name:"Dränering Ljusdal",href:"/dranering-ljusdal"},{name:"Dränering â översikt",href:"/dranering"},{name:"Grävfirma Ljusdal",href:"/gravfirma-ljusdal"}];function n4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:21",items:[{name:"Tomtplanering",href:"/markarbeten/tomtplanering"},{name:"Tomtplanering Ljusdal"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:22",title:"Tomtplanering i Ljusdal â frÃ¥n rÃ¥mark till färdig tomt",intro:"Vi planerar tomter i Ljusdal med omnejd: masshantering, matjord, gräsmatteytor, infarter, gÃ¥ngar, stödmurar och dagvatten. FrÃ¥n grovplanering vid nybygge till finplanering av etablerad villatomt â med fast offert efter platsbesök.",image:ne.markarbeten,imageAlt:"Tomtplanering med grävmaskin i Ljusdal"}),n.jsx("section",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:31",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Grovplanering och finplanering"}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:33",children:["Efter ett husbygge Ã¥terstÃ¥r ofta det som syns mest: tomten. Vi tar hand om hela kedjan â grovplanering av schaktmassor, terrassering, utläggning av matjord, ytor förberedda för gräsmatta samt hÃ¥rdgjorda ytor som infart och gÃ¥ngar. Bygger du nytt i Ljusdal gör vi gärna tomtplaneringen i samma etablering som ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:34",href:"/husgrund-ljusdal",className:"font-semibold text-accent hover:underline",children:"husgrunden"})," â det sparar bÃ¥de etableringskostnad och transporter."]}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Dagvatten â viktigare än mÃ¥nga tror"}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:37",children:["I dalgÃ¥ngen kring Ljusdal med siltiga jordar blir vatten stÃ¥ende om fallen är fel. Vi bygger alltid tomten med rätt lutning frÃ¥n huset, dagvattenledningar frÃ¥n stuprör och vid behov stenkista eller dagvattenkassett. Rätt dagvattenhantering skyddar bÃ¥de ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:38",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"grunddräneringen"})," och gräsytorna â och besparar dig Ã¥terkommande problem varje vÃ¥r."]}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Infarter och gÃ¥rdsplaner som hÃ¥ller"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:41",children:"En infart är mer än ett lager grus. Vi bygger med geotextil, packat bärlager och slitlager anpassat för trafiken â sÃ¥ slipper du spÃ¥rbildning och potthÃ¥l efter tjällossningen. Kantsten, belysningsfundament och planteringsytor ordnar vi samtidigt, sÃ¥ att tomten blir klar i ett svep."})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:45",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:4
1986",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:47",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:48",className:"mt-3 space-y-2 text-sm",children:a4.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:50",children:n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:50",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:54",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:56",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:57",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:58",children:"Ljusdal pÃ¥ under en halvtimme"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:59",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:60",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:62",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:68",items:X.tomtplaneringLjusdal,title:"Vanliga frÃ¥gor â tomtplanering i Ljusdal"}),n.jsx(ye,{"data-loc":"client/src/pages/TomtplaneringLjusdal.tsx:69",title:"Dags att göra klart tomten i Ljusdal?",text:"Boka kostnadsfritt platsbesök â vi gÃ¥r igenom önskemÃ¥l och lämnar fast offert."})]})}const r4=[{name:"Dränering Färila",href:"/dranering-farila"},{name:"Tomtplanering â tjänstesida",href:"/markarbeten/tomtplanering"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Husgrund Färila",href:"/husgrund-farila"},{name:"Trädfällning & röjning",href:"/tradfallning"},{name:"Grävfirma Färila",href:"/gravfirma-farila"}];function s4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:21",items:[{name:"Tomtplanering",href:"/markarbeten/tomtplanering"},{name:"Tomtplanering Färila"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:22",title:"Tomtplanering i Färila â även nyavverkade skogstomter",intro:"Vi planerar tomter i Färila med omnejd â frÃ¥n stubbrytning och grovplanering av rÃ¥mark till färdiga gräsytor, infarter och stödmurar. Vanligt vid nybyggnation i skogslägen, men vi finplanerar lika gärna etablerade villatomter.",image:ne.markarbeten,imageAlt:"Grovplanering av skogstomt i Färila"}),n.jsx("section",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:31",className:"space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"FrÃ¥n skogstomt till trädgÃ¥rd"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:33",children:"MÃ¥nga som bygger nytt kring Färila gör det pÃ¥ nyavverkad skogsmark. DÃ¥ börjar tomtarbetet frÃ¥n noll: stubbrytning, avbaning, sortering av massor och terrassering till rätt nivÃ¥er. Vi planerar massbalansen sÃ¥ att sten och morän Ã¥teranvänds som utfyllnad eller murar pÃ¥ tomten â det minimerar dyra transporter och ger en tomt som smälter in i landskapet."}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Finplanering med matjord och gräsytor"}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:37",children:["När grovjobbet är klart bygger vi upp växtbädden: avjämnat underlag, rätt tj
198ocklek matjord och ytor färdiga att sÃ¥ eller rulla gräs pÃ¥. Infarter och gÃ¥ngar fÃ¥r geotextil, packat bärlager och slitlager som klarar tjällossningen utan spÃ¥r. Bygger du samtidigt gör vi gärna tomten i samma etablering som ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:38",href:"/husgrund-farila",className:"font-semibold text-accent hover:underline",children:"husgrunden"}),"."]}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Boka rätt i säsongen"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:41",children:"Barmarkssäsongen maj till oktober är högsäsong för tomtarbeten, och gräsytor som anläggs före midsommar hinner etablera sig under sommaren. Kontakta oss gärna redan under vintern â dÃ¥ planerar vi in ditt arbete tidigt i säsongen och du fÃ¥r tomten klar i god tid."})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:45",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:46",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:47",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:48",className:"mt-3 space-y-2 text-sm",children:r4.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:50",children:n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:50",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:54",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:56",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:57",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:58",children:"Verksamma i hela Ljusdals kommun"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:59",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:60",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:62",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:68",items:X.tomtplaneringFarila,title:"Vanliga frÃ¥gor â tomtplanering i Färila"}),n.jsx(ye,{"data-loc":"client/src/pages/TomtplaneringFarila.tsx:69",title:"Dags att göra klart tomten i Färila?",text:"Boka kostnadsfritt platsbesök â vi lämnar fast offert pÃ¥ hela arbetet, frÃ¥n rÃ¥mark till färdig tomt."})]})}const l4=[{name:"Tomtplanering â tjänstesida",href:"/markarbeten/tomtplanering"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Husgrund Järvsö",href:"/husgrund-jarvso"},{name:"Dränering Järvsö",href:"/dranering-jarvso"},{name:"Dränering â översikt",href:"/dranering"},{name:"Grävfirma Järvsö",href:"/gravfirma-jarvso"}];function i4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:21",items:[{name:"Tomtplanering",href:"/markarbeten/tomtplanering"},{name:"Tomtplanering Järvsö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:22",title:"Tomtplanering i Järvsö â vi formar sluttningen Ã¥t dig",intro:"Sluttningstomter kring Järvsöbacken och Ãjeberget kräver terrassering, stödmurar och genomtänkt dagvattenhantering. Vi formar tomten i användbara nivÃ¥er â för bÃ¥de permanenthus och fritidshus i Järvsö med omnejd.",image:ne.markarbeten,imageAlt:"Terrassering av sluttningstomt i Järvsö"}),n.jsx("section",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:31",className:"space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Terrassering gör slänten användbar"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:33",children:"En sluttande tomt kan kännas som bara backe â tills den terrasseras. Vi bygger nivÃ¥er för uteplats, gräsyta och parkering med stödmurar av block eller natursten emellan, och binder ihop nivÃ¥erna med trappor och gÃ¥ngar. Resultatet är en tomt där varje kvadratmeter gÃ¥r att använda, med utsikten i behÃ¥ll."}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vatten i slänt mÃ¥ste ledas rätt"}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:37",children:["I sluttande terräng rinner ytvatten och markvatten nedÃ¥t genom tomten â mot huset om inget görs. Vi bygger med avskärande diken, dagvattenledningar och rätt fall sÃ¥ att vattnet leds förbi i stället för in. Det skyddar bÃ¥de ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:38",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"husets dränering"})," och murar och planteringar frÃ¥n erosion vid snösmältning och skyfall."]}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Fritidshusägare â vi sköter det medan du är borta"}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:41",children:["MÃ¥nga av vÃ¥ra tomtuppdrag i Järvsö gäller fritidshus. Vi planerar arbetet sÃ¥ att det passar dig som inte bor pÃ¥ orten, stämmer av per telefon och skickar bilder löpande. Bygger du nytt kombinerar vi gärna tomtplaneringen med ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:42",href:"/husgrund-jarvso",className:"font-semibold text-accent hover:underline",children:"grundarbetet"})," i samma etablering â det sänker totalkostnaden."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:45",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:46",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:47",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:48",className:"mt-3 space-y-2 text-sm",children:l4.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:50",children:n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:50",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:54",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:56",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:57",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:58",children:"Vana vid sluttningslägen"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:59",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:60",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:62",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:68",items:X.tomtplaneringJarvso,title:"Vanliga frÃ¥gor â tomtplanering i Järvsö"}),n.jsx(ye,{"data-loc":"client/src/pages/TomtplaneringJarvso.tsx:69",title:"Vill du fÃ¥ ut mer av tomten i Järvsö?",text:"Boka kostnadsfritt platsbesök â vi visar vad slänten kan bli och lämnar fast offert."})]})}const o4=[{name:"Dränering Ramsjö",href:"/dranering-ramsjo"},{name:"Tomtplanering â tjänstesida",href:"/markarbeten/tomtplanering"},{name:"Markarbeten Ramsjö",href:"/markarbeten-ramsjo"},{name:"Husgrund Ramsjö",href:"/husgrund-ramsjo"},{name:"Avloppsanläggning Ramsjö",href:"/avloppsanlaggning-ramsjo"},{name:"Grävfirma Ramsjö",href:"/gravfirma-ramsjo"}];function c4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:21",items:[{name:"Tomtplanering",href:"/markarbeten/tomtplanering"},{name:"Tomtplanering Ramsjö"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:22",title:"Tomtplanering i Ramsjö â lokalt och prisvärt",intro:"GÃ¥rdsplaner, infarter, gräsytor och grusytor i Ramsjö med omnejd. FrÃ¥n basen i Hennan är framkörningen en kvart â vilket gör även mindre tomtuppdrag prisvärda jämfört med firmor söderifrÃ¥n.",image:ne.markarbeten,imageAlt:"Planering av gÃ¥rdsplan i Ramsjö"}),n.jsx("section",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:31",className:"space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Ãven smÃ¥ uppdrag blir prisvärda"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:33",children:"I norra kommundelen tackar mÃ¥nga firmor nej till mindre uppdrag â framkörningen äter upp kalkylen. För oss är det tvärtom: Ramsjö ligger en kvart frÃ¥n basen i Hennan, sÃ¥ gÃ¥rdsplaner, infarter och grusytor blir prisvärda även i mindre omfattning. Vi kombinerar dessutom gärna flera arbeten i trakten, vilket pressar priset ytterligare."}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Morän och block â en resurs pÃ¥ tomten"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:37",children:"Markerna kring Ramsjö bestÃ¥r av blockig skogsmorän. Det betyder mer sortering och masshantering än i sedimentjordar â men blocken är ocksÃ¥ en resurs: de blir stabila murar, utfyllnad och kantavgränsningar direkt pÃ¥ tomten. Vi planerar massbalansen sÃ¥ att sÃ¥ lite som möjligt behöver transporteras bort."}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"GÃ¥rdar och fritidshus"}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:41",children:["MÃ¥nga fastigheter i Ramsjötrakten är gÃ¥rdar och fritidshus. Vi rustar gÃ¥rdsplaner som blivit ojämna, bygger nya infarter med bärlager som klarar tjällossningen och planerar tomter kring ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:42",href:"/husgrund-ramsjo",className:"font-semibold text-accent hover:underline",children:"nybyggda grunder"}),". Bor du inte pÃ¥ orten planerar vi arbetet pÃ¥ distans och skickar bilder löpande."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:45",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:46",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:47",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:48",className:"mt-3 space-y-2 text-sm",children:o4.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:50",children:n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:50",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:54",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:56",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:57",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:58",children:"Bas i Hennan â en kvart bort"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:59",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:60",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:62",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:68",items:X.tomtplaneringRamsjo,title:"Vanliga frÃ¥gor â tomtplanering i Ramsjö"}),n.jsx(ye,{"data-loc":"client/src/pages/TomtplaneringRamsjo.tsx:69",title:"Behöver tomten i Ramsjö ett lyft?",text:"Vi är närmast till hands. Boka kostnadsfritt platsbesök â fast offert utan förpliktelser."})]})}const d4=[{name:"Dränering Hennan",href:"/dranering-hennan"},{name:"Tomtplanering â tjänstesida",href:"/markarbeten/tomtplanering"},{name:"Markarbeten â översikt",href:"/markarbeten"},{name:"Husgrund Hennan",href:"/husgrund-hennan"},{name:"Avloppsanläggning Hennan",href:"/avloppsanlaggning-hennan"},{name:"Grävfirma Hennan",href:"/gravfirma-hennan"}];function u4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:21",items:[{name:"Tomtplanering",href:"/markarbeten/tomtplanering"},{name:"Tomtplanering Hennan"}]}),n.jsx(ke,{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:22",title:"Tomtplanering i Hennan â grannen med maskinparken",intro:"Hennan är vÃ¥r hemort. Vi planerar tomter, gÃ¥rdsplaner och infarter med mycket kort framkörning och kan ofta ta arbeten med kort varsel under barmarkssäsongen. Lokalkännedom om markerna sedan 1996.",image:ne.markarbeten,imageAlt:"Tomtplanering vid villa i Hennan"}),n.jsx("section",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:30",className:"grid gap-10 lg:grid-cols-[2fr_1fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:31",className:"space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"PÃ¥ plats pÃ¥ minuter â inte timmar"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:33",children:"Med verkstad och maskinpark vid riksväg 84 i Hennan har vi i praktiken ingen framkörning. Det gör även smÃ¥ uppdrag lönsamma att beställa: en gÃ¥rdsplan som ska hyvlas och grusas om, en infart som spÃ¥rat sönder i tjällossningen eller nÃ¥gra lass matjord som ska läggas ut och jämnas. Ring oss â ofta kan vi ta det inom kort."}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Byggt för moränmark och djup tjäle"}),n.jsx("p",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:37",children:"Markerna kring Hennan och Hennansjön är moränjordar med block, och tjälen gÃ¥r djupt. Infarter och gÃ¥rdsplaner mÃ¥ste därför byggas med geotextil, ordentligt bärlager och rätt avvattning â annars kommer potthÃ¥len tillbaka varje vÃ¥r. Vi bygger ytor som hÃ¥ller, med material frÃ¥n lokala täkter."}),n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:40",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Hela tomten i ett Ã¥tagande"}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:41",children:["FrÃ¥n grovplanering till färdig gräsyta: masshantering, matjord, infart, gÃ¥ngar, stödmurar och dagvatten. Bygger du nytt gör vi tomten i samma etablering som ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:42",href:"/husgrund-hennan",className:"font-semibold text-accent hover:underline",children:"grundarbetet"}),", och behöver du samtidigt se över avloppet löser vi även det â se ",n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:42",href:"/avloppsanlaggning-hennan",className:"font-semibold text-accent hover:underline",children:"avloppsanläggning i Hennan"}),"."]})]}),n.jsxs("aside",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:45",className:"h-fit space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:46",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:47",className:"font-display text-lg font-bold text-primary",children:"Relaterade sidor"}),n.jsx("ul",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:48",className:"mt-3 space-y-2 text-sm",children:d4.map(t=>n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:50",children:n.jsx(N,{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:50",href:t.href,className:"font-semibold text-accent hover:underline",children:t.name})},t.href))})]}),n.jsxs("div",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:54",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:55",className:"font-display text-lg font-bold text-primary",children:"Därför Hennans Grävtjänst"}),n.jsxs("ul",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:56",className:"mt-3 space-y-2 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:57",children:"Grundat 1996 â 30 Ã¥r i trakten"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:58",children:"Verkstad och maskinpark pÃ¥ orten"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:59",children:"Fast offert efter platsbesök"}),n.jsx("li",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:60",children:"F-skattsedel och försäkring"})]}),n.jsxs("p",{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:62",className:"mt-4 text-sm text-foreground/70",children:["Ring ",Y.phoneMobile," eller använd offertformuläret."]})]})]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:68",items:X.tomtplaneringHennan,title:"Vanliga frÃ¥gor â tomtplanering i Hennan"}),n.jsx(ye,{"data-loc":"client/src/pages/TomtplaneringHennan.tsx:69",title:"Behöver tomten i Hennan ett lyft?",text:"Grannen med maskinparken hjälper dig. Ring oss eller boka kostnadsfritt platsbesök i dag."})]})}const g4=[{title:"Skogsbilvägar och vägunderhÃ¥ll",text:"Nyanläggning och upprustning av skogsbilvägar Ã¥t skogsägare och samfälligheter i norra
198Ljusdals kommun â terrassering, trummor, dikning och grusning för fullastade virkesbilar.",href:"/vagentreprenad/skogsbilvag",image:ne.skogsbilvag,alt:"Nybyggd skogsbilväg genom hälsingsk skog"},{title:"Enskilda avlopp",text:"Kompletta avloppsanläggningar med trekammarbrunn och infiltration eller markbädd â frÃ¥n provgrop och tillstÃ¥ndsunderlag till färdig, godkänd anläggning.",href:"/vatten-avlopp/enskilt-avlopp",image:ne.va,alt:"Avloppsanläggning under arbete med trekammarbrunn i schakt"},{title:"Dräneringar",text:"Omdränering av husgrunder med fuktisolering och rätt Ã¥terfyllnad â torra källare i villor och gÃ¥rdar runt Ljusdal, Färila och Järvsö.",href:"/dranering",image:ne.dranering,alt:"Frilagd husgrund under omdränering"},{title:"Husgrunder och tomtplaneringar",text:"Markarbeten för nybyggen: schakt och uppbyggnad av husgrunder samt grov- och finplanering av tomter för bÃ¥de permanent- och fritidshus.",href:"/markarbeten/husgrund",image:ne.markarbeten,alt:"Grävmaskin bygger upp husgrund med packade lager"}];function m4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Projekt.tsx:43",items:[{name:"Projekt"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Projekt.tsx:44",title:"Projekt och referenser â utförda arbeten sedan 1996",intro:"Under tre decennier har vi grävt, byggt och underhÃ¥llit i hela Ljusdals kommun. Här ser du vilka typer av projekt vi oftast utför â och vill du prata med nÃ¥gon vi arbetat Ã¥t lämnar vi gärna lokala referenser för just din typ av arbete.",image:ne.hero,imageAlt:"Grävmaskin i arbete i hälsingskt landskap"}),n.jsxs("section",{"data-loc":"client/src/pages/Projekt.tsx:51",className:"container py-12 md:py-16",children:[n.jsx("div",{"data-loc":"client/src/pages/Projekt.tsx:52",className:"grid gap-8 md:grid-cols-2",children:g4.map(t=>n.jsxs("article",{"data-loc":"client/src/pages/Projekt.tsx:54",className:"overflow-hidden rounded-lg border border-border bg-card",children:[n.jsx("img",{"data-loc":"client/src/pages/Projekt.tsx:55",src:t.image,srcSet:Qr[t.image],sizes:"(min-width: 768px) 50vw, 100vw",alt:t.alt,loading:"lazy",width:640,height:426,className:"h-52 w-full object-cover"}),n.jsxs("div",{"data-loc":"client/src/pages/Projekt.tsx:65",className:"space-y-3 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/Projekt.tsx:66",className:"font-display text-xl font-bold text-primary",children:t.title}),n.jsx("p",{"data-loc":"client/src/pages/Projekt.tsx:67",className:"text-sm leading-relaxed text-foreground/85",children:t.text}),n.jsx(N,{"data-loc":"client/src/pages/Projekt.tsx:68",href:t.href,className:"inline-block font-semibold text-accent hover:underline",children:"Läs mer om tjänsten"})]})]},t.href))}),n.jsxs("div",{"data-loc":"client/src/pages/Projekt.tsx:76",className:"mx-auto mt-12 max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Projekt.tsx:77",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Referenser lämnas pÃ¥ begäran"}),n.jsxs("p",{"data-loc":"client/src/pages/Projekt.tsx:78",children:["Vi publicerar inte kunduppgifter eller bilder frÃ¥n privata fastigheter utan tillÃ¥telse. Vill du höra hur tidigare kunder upplevt vÃ¥rt arbete ringer du ",Y.phoneMobile," och berättar vilken typ av projekt du planerar â dÃ¥ förmedlar vi kontakt med referenser i din närhet som gjort motsvarande arbete."]}),n.jsxs("p",{"data-loc":"client/src/pages/Projekt.tsx:81",children:["Ãr du tidigare kund och vill att ditt projekt visas här med bilder? Hör av dig via ",n.jsx(N,{"data-loc":"client/src/pages/Projekt.tsx:82",href:"/kontakt",className:"font-semibold text-accent hover:underline",children:"kontaktsidan"})," â vi bygger gärna ut sidan med riktiga kundcase."]})]})]}),n.jsx(Te,{"data-loc":"client/src/pages/Projekt.tsx:87",items:X.projekt,title:"Vanliga frÃ¥gor om referenser"}),n.jsx(ye,{"data-loc":"client/src/pages/Projekt.tsx:88",title:"Planerar du ett eget projekt?",text:"Berätta vad du vill göra sÃ¥ lämnar vi kostnadsfri offert â och referenser frÃ¥n liknande arbeten."})]})}const f4=[{factor:"Husets omkrets",effect:"Fler löpmeter schakt, ledning och fuktskydd â den största kostnadsdrivaren."},{factor:"Schaktdjup",effect:"Källargrund kräver djupare schakt än platta pÃ¥ mark, vilket ökar tid och massor."},{factor:"Ã
tkomlighet",effect:"TrÃ¥nga passager, altaner, murar och ledningar i marken gör arbetet lÃ¥ngsammare."},{factor:"MarkförhÃ¥llanden",effect:"Block, berg eller vattenförande mark kan kräva extra Ã¥tgärder."},{factor:"Avledning av vattnet",effect:"Finns dagvattenledning nära, eller mÃ¥ste stenkista eller pumpbrunn anläggas?"},{factor:"Ã
terställning",effect:"Enkel grusyta är billigare än plattläggning och färdig gräsmatta."}];function p4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/PriserDranering.tsx:21",items:[{name:"Priser",href:"/priser/vad-kostar-dranering"}
198,{name:"Vad kostar dränering?"}]}),n.jsx(ke,{"data-loc":"client/src/pages/PriserDranering.tsx:22",title:"Vad kostar dränering? Priser och exempel 2026",intro:"En vanlig frÃ¥ga â och ett ärligt svar: det beror pÃ¥ huset och marken. Här gÃ¥r vi igenom vad som styr priset pÃ¥ en omdränering, ungefärliga nivÃ¥er och hur ROT-avdraget pÃ¥verkar din slutkostnad.",image:ne.dranering,imageAlt:"PÃ¥gÃ¥ende dränering av husgrund med frilagd grundmur"}),n.jsx("section",{"data-loc":"client/src/pages/PriserDranering.tsx:29",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/PriserDranering.tsx:30",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/PriserDranering.tsx:31",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Ungefärliga prisnivÃ¥er"}),n.jsxs("p",{"data-loc":"client/src/pages/PriserDranering.tsx:32",children:["För en normalstor villa brukar en komplett omdränering â schakt, fuktskydd, ny dräneringsledning, dränerande Ã¥terfyllnad och grovÃ¥terställning â hamna nÃ¥gonstans i spannet ",n.jsx("strong",{"data-loc":"client/src/pages/PriserDranering.tsx:33",children:"100 000 till 250 000 kronor"})," beroende pÃ¥ förutsättningarna. Räknat per löpmeter grund talar man ofta om ungefär ",n.jsx("strong",{"data-loc":"client/src/pages/PriserDranering.tsx:33",children:"3 000 till 6 000 kronor per meter"}),". Ett mindre hus pÃ¥ platta med god Ã¥tkomlighet kan landa under det spannet, medan en djup källargrund i svÃ¥r terräng kan hamna över."]}),n.jsx("p",{"data-loc":"client/src/pages/PriserDranering.tsx:35",children:"Siffrorna är riktvärden för att du ska kunna bedöma storleksordningen â inte en offert. Det exakta priset för ditt hus kan vi bara ge efter ett platsbesök, och dÃ¥ fÃ¥r du det som en tydligt specificerad, kostnadsfri offert."}),n.jsx("h2",{"data-loc":"client/src/pages/PriserDranering.tsx:38",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Det här styr priset"}),n.jsx("div",{"data-loc":"client/src/pages/PriserDranering.tsx:39",className:"overflow-x-auto",children:n.jsxs("table",{"data-loc":"client/src/pages/PriserDranering.tsx:40",className:"w-full border-collapse text-sm",children:[n.jsx("thead",{"data-loc":"client/src/pages/PriserDranering.tsx:41",children:n.jsxs("tr",{"data-loc":"client/src/pages/PriserDranering.tsx:42",className:"border-b-2 border-primary text-left",children:[n.jsx("th",{"data-loc":"client/src/pages/PriserDranering.tsx:43",className:"py-2 pr-4 font-display text-primary",children:"Faktor"}),n.jsx("th",{"data-loc":"client/src/pages/PriserDranering.tsx:44",className:"py-2 font-display text-primary",children:"SÃ¥ pÃ¥verkar den"})]})}),n.jsx("tbody",{"data-loc":"client/src/pages/PriserDranering.tsx:47",children:f4.map(t=>n.jsxs("tr",{"data-loc":"client/src/pages/PriserDranering.tsx:49",className:"border-b border-border align-top",children:[n.jsx("td",{"data-loc":"client/src/pages/PriserDranering.tsx:50",className:"py-2 pr-4 font-semibold",children:t.factor}),n.jsx("td",{"data-loc":"client/src/pages/PriserDranering.tsx:51",className:"py-2",children:t.effect})]},t.factor))})]})}),n.jsx("h2",{"data-loc":"client/src/pages/PriserDranering.tsx:57",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"ROT-avdrag sänker arbetskostnaden"}),n.jsxs("p",{"data-loc":"client/src/pages/PriserDranering.tsx:58",children:["Dränering av husgrund vid ett smÃ¥hus som kunden äger ger enligt Skatteverket normalt rätt till ROT-avdrag pÃ¥ arbetskostnaden. Material, resor och maskinkostnad omfattas inte. Läs de fullständiga villkoren hos ",n.jsx("a",{"data-loc":"client/src/pages/PriserDranering.tsx:59",href:"https://www.skatteverket.se/foretag/skatterochavdrag/rotochrut/gerarbetetratttillrotavdrag.4.5c1163881590be297b5173bf.html",target:"_blank",rel:"noreferrer",className:"font-semibold text-accent hover:underline",children:"Skatteverket om ROT för gräv- och markarbete"}),"."]}),n.jsxs("p",{"data-loc":"client/src/pages/PriserDranering.tsx:61",children:["Läs mer om hur vi utför arbetet pÃ¥ vÃ¥r sida om ",n.jsx(N,{"data-loc":"client/src/pages/PriserDranering.tsx:62",href:"/dranering",className:"font-semibold text-accent hover:underline",children:"dränering"}),"."]}),n.jsxs("p",{"data-loc":"client/src/pages/PriserDranering.tsx:64",children:["MarkförhÃ¥llandena pÃ¥verkar priset olika beroende pÃ¥ var i kommunen huset ligger. Vi gÃ¥r igenom de lokala förutsättningarna pÃ¥ sidorna för ",n.jsx(N,{"data-loc":"client/src/pages/PriserDranering.tsx:65",href:"/dranering-ljusdal",className:"font-semibold text-accent hover:underline",children:"dränering i Ljusdal"}),", ",n.jsx(N,{"data-loc":"client/src/pages/PriserDranering.tsx:65",href:"/dranering-farila",className:"font-semibold text-accent hover:underline",children:"Färila"}),", ",n.jsx(N,{"data-loc":"client/src/pages/PriserDranering.tsx:65",href:"/dranering-jarvso",className:"font-semibold text-accent hover:underline",children:"Järvsö"}),", ",n.jsx(N,{"data-loc":"client/src/pages/PriserDranering.tsx:65",href:"/dranering-ramsjo",className:"font-semibold text-accent hover:underline",children:"Ramsjö"})," och ",n.jsx(N,{"data-loc":"client/src/pages/PriserDranering.tsx:65",href:"/dranering-hennan",className:"font-semibold text-accent hover:underline",children:"Hennan"}),"."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/PriserDranering.tsx:70",items:X.priserDranering,title:"Vanliga frÃ¥gor om dräneringskostnad"}),n.jsx(ye,{"data-loc":"client/src/pages/PriserDranering.tsx:71",title:"Vill du veta vad just ditt hus kostar att dränera?",text:"Boka ett kostnadsfritt platsbesök sÃ¥ fÃ¥r du en specificerad offert."})]})}function h4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/PriserSnorojning.tsx:12",items:[{name:"Priser",href:"/priser/snorojning-pris"},{name:"Snöröjning pris"}]}),n.jsx(ke,{"data-loc":"client/src/pages/PriserSnorojning.tsx:13",title:"Snöröjning pris â vad kostar plogning 2026?",intro:"Vad kostar det att slippa skotta? Här gÃ¥r vi igenom hur snöröjning prissätts â per gÃ¥ng, per säsong eller per timme â och vad som avgör priset för just din infart eller väg.",image:ne.snorojning,imageAlt:"Traktor plogar snötäckt infart vid villa"}),n.jsx("section",{"data-loc":"client/src/pages/PriserSnorojning.tsx:20",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/PriserSnorojning.tsx:21",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground
198/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/PriserSnorojning.tsx:22",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Tre sätt att betala för snöröjning"}),n.jsxs("p",{"data-loc":"client/src/pages/PriserSnorojning.tsx:23",children:[n.jsx("strong",{"data-loc":"client/src/pages/PriserSnorojning.tsx:24",children:"Per gÃ¥ng:"})," för en normal villainfart brukar en plogning kosta ungefär ",n.jsx("strong",{"data-loc":"client/src/pages/PriserSnorojning.tsx:24",children:"300 till 600 kronor per tillfälle"})," beroende pÃ¥ storlek och avstÃ¥nd. Enkelt när det snöar sällan â men i norra Hälsingland snöar det inte sällan."]}),n.jsxs("p",{"data-loc":"client/src/pages/PriserSnorojning.tsx:26",children:[n.jsx("strong",{"data-loc":"client/src/pages/PriserSnorojning.tsx:27",children:"Säsongsavtal:"})," ett fast pris för hela vintern, där vi plogar automatiskt när snödjupet passerar en avtalad gräns. För en villainfart i vÃ¥ra trakter hamnar säsongspriset ofta i spannet ",n.jsx("strong",{"data-loc":"client/src/pages/PriserSnorojning.tsx:27",children:"3 000 till 8 000 kronor"}),", beroende pÃ¥ yta, utformning och läge. Det är det vanligaste och oftast mest ekonomiska valet â och du slipper bÃ¥de ringa och oroa dig."]}),n.jsxs("p",{"data-loc":"client/src/pages/PriserSnorojning.tsx:29",children:[n.jsx("strong",{"data-loc":"client/src/pages/PriserSnorojning.tsx:30",children:"Per timme:"})," för större ytor som parkeringar, gÃ¥rdsplaner och vägsträckor prissätter vi normalt per maskintimme. Timpriset beror pÃ¥ maskin och utrustning â kontakta oss för aktuell prislista."]}),n.jsx("h2",{"data-loc":"client/src/pages/PriserSnorojning.tsx:32",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Det här pÃ¥verkar priset"}),n.jsx("p",{"data-loc":"client/src/pages/PriserSnorojning.tsx:33",children:"Ytans storlek och form styr tiden per tillfälle â en rak infart plogas snabbare än en gÃ¥rdsplan med hinder. AvstÃ¥ndet frÃ¥n Hennan pÃ¥verkar framkörningen, och därför är kunder längs vÃ¥ra ordinarie rundor i norra
198Ljusdals kommun mest prisvärda att betjäna. Tillägg som sandning, isrivning och bortforsling av snö offereras separat."}),n.jsx("h2",{"data-loc":"client/src/pages/PriserSnorojning.tsx:36",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"RUT-avdrag för snöskottning"}),n.jsxs("p",{"data-loc":"client/src/pages/PriserSnorojning.tsx:37",children:["Snöskottning som utförs i nära anslutning till bostaden ger enligt Skatteverket normalt rätt till RUT-avdrag med 50 procent av arbetskostnaden. Maskiner, material, resor och snöröjning pÃ¥ gemensamma samfällighetsytor omfattas inte. Läs villkoren hos ",n.jsx("a",{"data-loc":"client/src/pages/PriserSnorojning.tsx:38",href:"https://www.skatteverket.se/foretag/skatterochavdrag/rotochrut/gerarbetetratttillrutavdrag.4.2ef18e6a125660db8b080001531.html",target:"_blank",rel:"noreferrer",className:"font-semibold text-accent hover:underline",children:"Skatteverket om RUT för snöskottning"}),"."]}),n.jsxs("p",{"data-loc":"client/src/pages/PriserSnorojning.tsx:40",children:["Mer om hur vi arbetar hittar du pÃ¥ sidan om ",n.jsx(N,{"data-loc":"client/src/pages/PriserSnorojning.tsx:41",href:"/snorojning",className:"font-semibold text-accent hover:underline",children:"snöröjning"}),". Teckna gärna avtal före första snöfallet â avtalskunder prioriteras när ovädret kommer."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/PriserSnorojning.tsx:46",items:X.priserSnorojning,title:"Vanliga frÃ¥gor om snöröjningspriser"}),n.jsx(ye,{"data-loc":"client/src/pages/PriserSnorojning.tsx:47",title:"Vill du ha ett fast pris för vintern?",text:"Begär offert pÃ¥ säsongsavtal â kostnadsfritt och utan förpliktelser."})]})}
198const v4=[{item:"Trekammarbrunn + infiltration",range:"80 000â140 000 kr",note:"Vanligaste lösningen när marken är genomsläpplig."},{item:"Trekammarbrunn + markbädd",range:"100 000â170 000 kr",note:"När marken är för tät för infiltration â mer material och schakt."},{item:"Minireningsverk",range:"120 000â200 000 kr",note:"Vid hög skyddsnivÃ¥ eller mycket begränsad yta."},{item:"TillstÃ¥nd, Ljusdals kommun",range:"ca 5 000â10 000 kr",note:"Handläggningsavgift enligt kommunens taxa â betalas till kommunen."}];function x4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:19",items:[{name:"Priser",href:"/priser/vad-kostar-enskilt-avlopp"},{name:"Vad kostar enskilt avlopp?"}]}),n.jsx(ke,{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:20",title:"Vad kostar enskilt avlopp? Priser och exempel 2026",intro:"Ett nytt enskilt avlopp är en av de större investeringarna pÃ¥ en fastighet utanför kommunalt VA. Här fÃ¥r du ärliga riktpriser för de vanligaste lösningarna â och vet vad som driver kostnaden upp eller ner.",image:ne.va,imageAlt:"Anläggning av enskilt avlopp med trekammarbrunn i schakt"}),n.jsx("section",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:27",className:"container py-12 md:py-16",children:n.jsxs("div",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:28",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:29",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Riktpriser för kompletta anläggningar"}),n.jsx("p",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:30",children:"Priserna nedan avser en komplett, nyckelfärdig anläggning för ett normalhushÃ¥ll: schakt, brunn, efterföljande rening, ledningar, Ã¥terfyllnad och dokumentation. De är riktvärden â markförhÃ¥llandena pÃ¥ din tomt avgör var i spannet du hamnar."}),n.jsx("div",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:33",className:"overflow-x-auto",children:n.jsxs("table",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:34",className:"w-full border-collapse text-sm",children:[n.jsx("thead",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:35",children:n.jsxs("tr",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:36",className:"border-b-2 border-primary text-left",children:[n.jsx("th",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:37",className:"py-2 pr-4 font-display text-primary",children:"Lösning"}),n.jsx("th",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:38",className:"py-2 pr-4 font-display text-primary",children:"Riktpris"}),n.jsx("th",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:39",className:"py-2 font-display text-primary",children:"Kommentar"})]})}),n.jsx("tbody",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:42",children:v4.map(t=>n.jsxs("tr",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:44",className:"border-b border-border align-top",children:[n.jsx("td",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:45",className:"py-2 pr-4 font-semibold",children:t.item}),n.jsx("td",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:46",className:"py-2 pr-4 whitespace-nowrap",children:t.range}),n.jsx("td",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:47",className:"py-2",children:t.note})]},t.item))})]})}),n.jsx("h2",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:53",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"Vad avgör var i spannet du hamnar?"}),n.jsxs("p",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:54",children:["De största variablerna är ",n.jsx("strong",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:55",children:"markens genomsläpplighet"})," (avgör om billigare infiltration räcker eller om markbädd krävs), ",n.jsx("strong",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:55",children:"avstÃ¥nd och nivÃ¥skillnader"})," pÃ¥ tomten (längre ledningsdragning, eventuell pumpbrunn), ",n.jsx("strong",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:55",children:"skyddsnivÃ¥n"})," där du bor (nära vattendrag kan extra fosforrening krävas) och ",n.jsx("strong",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:55",children:"schaktförhÃ¥llandena"})," â block och berg tar längre tid än sandig morän. Provgropen ger svaren, och därefter kan vi lämna fast pris."]}),n.jsx("h2",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:57",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"ROT-avdrag och betalning"}),n.jsx("p",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:58",children:"Arbetskostnaden vid anläggning av enskilt avlopp pÃ¥ din bostadsfastighet ger normalt rätt till ROT-avdrag, vilket sänker slutsumman märkbart. Avdraget dras direkt pÃ¥ fakturan. TillstÃ¥ndsavgiften till kommunen och materialet omfattas inte."}),n.jsxs("p",{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:61",children:["Läs mer om processen pÃ¥ vÃ¥ra sidor om ",n.jsx(N,{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:62",href:"/vatten-avlopp/enskilt-avlopp",className:"font-semibold text-accent hover:underline",children:"enskilt avlopp"}),", ",n.jsx(N,{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:62",href:"/vatten-avlopp/trekammarbrunn",className:"font-semibold text-accent hover:underline",children:"trekammarbrunn"})," och ",n.jsx(N,{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:62",href:"/vatten-avlopp/infiltration-markbadd",className:"font-semibold text-accent hover:underline",children:"infiltration och markbädd"}),"."]})]})}),n.jsx(Te,{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:67",items:X.priserAvlopp,title:"Vanliga frÃ¥gor om avloppskostnad"}),n.jsx(ye,{"data-loc":"client/src/pages/PriserEnskiltAvlopp.tsx:68",title:"Vill du ha fast pris pÃ¥ nytt avlopp?",text:"Vi gräver provgrop, tar fram tillstÃ¥ndsunderlag och lämnar fast offert â kostnadsfritt."})]})}const b4=[{title:"Lokal förankring",text:"Vi bor och verkar i Hennan. Kunderna är vÃ¥ra grannar, och vÃ¥rt rykte i bygden är vÃ¥r viktigaste tillgÃ¥ng."},{title:"Erfarenhet som syns i resultatet",text:"Tre decennier av vägbyggen, avloppsanläggningar och markarbeten i Hälsinglands moräner, sediment och tjäle."},{title:"Egen maskinpark och verkstad",text:"Maskiner som alltid är i skick och smideskunnande som löser det oväntade â direkt pÃ¥ plats."},{title:"Raka besked",text:"Ãrliga bedömningar, specificerade offerter och priser utan överraskningar. Kan nÃ¥got göras enklare säger vi det."}];function k4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/OmOss.tsx:17",items:[{name:"Om oss"}]}),n.jsx(ke,{"data-loc":"client/src/pages/OmOss.tsx:18",title:"Om Hennans Grävtjänst â 30 Ã¥r i Hälsinglands mark",intro:"Hennans Grävtjänst AB grund
198ades 1996 av Pär Nordström och har sedan dess utfört vägentreprenad, markarbeten och VA-anläggningar i norra Hälsingland â med bas i Hennan, Ljusdals kommun.",image:ne.omOss,imageAlt:"Verkstaden och maskinparken hos Hennans Grävtjänst i Hennan"}),n.jsxs("section",{"data-loc":"client/src/pages/OmOss.tsx:25",className:"container py-12 md:py-16",children:[n.jsxs("div",{"data-loc":"client/src/pages/OmOss.tsx:26",className:"mx-auto max-w-3xl space-y-5 leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/OmOss.tsx:27",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"VÃ¥r historia"}),n.jsx("p",{"data-loc":"client/src/pages/OmOss.tsx:28",children:"Företaget startade 1996 när Pär Nordström tog steget frÃ¥n anställd maskinförare till egen entreprenör. Basen blev hembyn Hennan vid riksväg 84 i norra Ljusdals kommun, och de första uppdragen handlade om det som fortfarande är kärnan i verksamheten: skogsbilvägar, grusvägar och grävarbeten Ã¥t skogsägare, lantbruk och privatpersoner i bygden."}),n.jsx("p",{"data-loc":"client/src/pages/OmOss.tsx:31",children:"Med Ã¥ren har verksamheten vuxit till en komplett mark- och vägentreprenad. I dag bygger och underhÃ¥ller vi vägar Ã¥t skogsbolag och vägsamfälligheter, anlägger enskilda avlopp, dränerar husgrunder, utför markarbeten inför byggen och hÃ¥ller vägar öppna vintertid. I verkstaden i Hennan utför vi dessutom smide, svetsning och reparationer â ett hantverkskunnande som gör att vi kan lösa problem direkt pÃ¥ plats i fält."}),n.jsx("h2",{"data-loc":"client/src/pages/OmOss.tsx:34",className:"font-display text-2xl font-bold text-primary md:text-3xl",children:"SÃ¥ arbetar vi"}),n.jsx("p",{"data-loc":"client/src/pages/OmOss.tsx:35",children:"Varje uppdrag börjar med ett platsbesök. Vi tittar pÃ¥ marken, lyssnar pÃ¥ vad du vill uppnÃ¥ och ger en ärlig bedömning av vad som krävs â ibland är rätt svar enklare och billigare än kunden trott. Därefter fÃ¥r du en specificerad, kostnadsfri offert. Under arbetet hÃ¥ller vi dig informerad, och efterÃ¥t lämnar vi en städad arbetsplats och den dokumentation som behövs, till exempel vid avloppsanläggningar."}),n.jsxs("p",{"data-loc":"client/src/pages/OmOss.tsx:38",children:["Vi har F-skattsedel, ansvarsförsäkring och arbetar med ROT- och RUT-avdrag där det är tillämpligt. VerksamhetsomrÃ¥det är norra Hälsingland med tyngdpunkt i ",n.jsx(N,{"data-loc":"client/src/pages/OmOss.tsx:39",href:"/gravfirma-ljusdal",className:"font-semibold text-accent hover:underline",children:"Ljusdals kommun"})," â frÃ¥n ",n.jsx(N,{"data-loc":"client/src/pages/OmOss.tsx:39",href:"/gravfirma-ramsjo",className:"font-semibold text-accent hover:underline",children:"Ramsjö"})," i norr till ",n.jsx(N,{"data-loc":"client/src/pages/OmOss.tsx:39",href:"/gravfirma-jarvso",className:"font-semibold text-accent hover:underline",children:"Järvsö"})," i söder."]})]}),n.jsx("div",{"data-loc":"client/src/pages/OmOss.tsx:43",className:"mx-auto mt-12 grid max-w-4xl gap-6 sm:grid-cols-2",children:b4.map(t=>n.jsxs("div",{"data-loc":"client/src/pages/OmOss.tsx:45",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h3",{"data-loc":"client/src/pages/OmOss.tsx:46",className:"font-display text-lg font-bold text-primary",children:t.title}),n.jsx("p",{"data-loc":"client/src/pages/OmOss.tsx:47",className:"mt-2 text-sm leading-relaxed text-foreground/85",children:t.text})]},t.title))}),n.jsxs("div",{"data-loc":"client/src/pages/OmOss.tsx:52",className:"mx-auto mt-12 max-w-3xl rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/OmOss.tsx:53",className:"font-display text-lg font-bold text-primary",children:"Kontaktuppgifter"}),n.jsxs("p",{"data-loc":"client/src/pages/OmOss.tsx:54",className:"mt-3 text-sm leading-relaxed text-foreground/85",children:[Y.name,n.jsx("br",{"data-loc":"client/src/pages/OmOss.tsx:55"}),Y.locality,", ",Y.municipality,n.jsx("br",{"data-loc":"client/src/pages/OmOss.tsx:56"}),"Telefon: ",n.jsx("a",{"data-loc":"client/src/pages/OmOss.tsx:57",href:Y.phoneMobileHref,className:"font-semibold text-accent hover:underline",children:Y.phoneMobile})," · ",n.jsx("a",{"data-loc":"client/src/pages/OmOss.tsx:57",href:Y.phoneFixedHref,className:"font-semibold text-accent hover:underline",children:Y.phoneFixed}),n.jsx("br",{"data-loc":"client/src/pages/OmOss.tsx:57"}),"E-post: ",n.jsx("a",{"data-loc":"client/src/pages/OmOss.tsx:58",href:Y.emailHref,className:"font-semibold text-accent hover:underline",children:Y.email})]})]})]}),n.jsx(ye,{"data-loc":"client/src/pages/OmOss.tsx:63",title:"Vill du veta vad vi kan göra för dig?",text:"Ring, mejla eller skicka en offertförfrÃ¥gan â vi Ã¥terkommer snabbt."})]})}const j4=["Vägentreprenad / grusväg","Skogsbilväg","VägunderhÃ¥ll / dikning","Vägtrumma","Enskilt avlopp / trekammarbrunn","Dränering","Markarbeten / husgrund","Snöröjning","Trädfällning","Smide","Annat"];function y4({defaultService:t}){const[,s]=bi(),l=k.useRef(!1),[o,c]=k.useState(""),[u,m]=k.useState(""),[f,p]=k.useState(""),[h,b]=k.useState(""),[v,S]=k.useState(t??""),[T,A]=k.useState(""),y=Ac.quote.submit.useMutation({onSuccess:()=>{Tt("quote_submit_success",{form:"general"}),s("/tack")},onError:()=>{Tt("quote_submit_error",{form:"general"}),gc.error("NÃ¥got gick fel när förfrÃ¥gan skickades. Ring oss gärna pÃ¥ 070-657 14 42.")}});return n.jsxs("form",{"data-loc":"client/src/components/site/QuoteForm.tsx:54",className:"grid gap-4",onFocusCapture:()=>{l.current||(l.current=!0,Tt("quote_form_start",{form:"general"}))},onSubmit:R=>{if(R.preventDefault(),!o.trim()||!u.trim()||!T.trim()){gc.error("Fyll i namn, telefon och en kort beskrivning.");return}y.mutate({name:o.trim(),phone:u.trim(),email:f.trim()||void 0,location:h.trim()||void 0,service:v||void 0,message:T.trim()})},children:[n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:77",className:"grid gap-4 sm:grid-cols-2",children:[n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:78",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/QuoteForm.tsx:79",htmlFor:"qf-name",children:"Namn *"}),n.jsx(lr,{"data-loc":"client/src/components/site/QuoteForm.tsx:80",id:"qf-name",value:o,onChange:R=>c(R.target.value),autoComplete:"name",required:!0})]}),n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:82",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/QuoteForm.tsx:83",htmlFor:"qf-phone",children:"Telefon *"}),n.jsx(lr,{"data-loc":"client/src/components/site/QuoteForm.tsx:84",id:"qf-phone",type:"tel",value:u,onChange:R=>m(R.target.value),autoComplete:"tel",required:!0})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:87",className:"grid gap-4 sm:grid-cols-2",children:[n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:88",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/QuoteForm.tsx:89",htmlFor:"qf-email",children:"E-post"}),n.jsx(lr,{"data-loc":"client/src/components/site/QuoteForm.tsx:90",id:"qf-email",type:"email",value:f,onChange:R=>p(R.target.value),autoComplete:"email"})]}),n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:92",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/QuoteForm.tsx:93",htmlFor:"qf-location",children:"Ort / fastighet"}),n.jsx(lr,{"data-loc":"client/src/components/site/QuoteForm.tsx:94",id:"qf-location",value:h,onChange:R=>b(R.target.value),placeholder:"T.ex. Färila"})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:97",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/QuoteForm.tsx:98",htmlFor:"qf-service",children:"Vad gäller det?"}),n.jsxs(rc,{"data-loc":"client/src/components/site/QuoteForm.tsx:99",value:v,onValueChange:S,children:[n.jsx(lc,{"data-loc":"client/src/components/site/QuoteForm.tsx:100",id:"qf-service",children:n.jsx(sc,{"data-loc":"client/src/components/site/QuoteForm.tsx:101",placeholder:"Välj tjänst"})}),n.jsx(ic,{"data-loc":"client/src/components/site/QuoteForm.tsx:103",children:j4.map(R=>n.jsx(oc,{"data-loc":"client/src/components/site/QuoteForm.tsx:105",value:R,children:R},R))})]})]}),n.jsxs("div",{"data-loc":"client/src/components/site/QuoteForm.tsx:110",className:"grid gap-1.5",children:[n.jsx(ra,{"data-loc":"client/src/components/site/QuoteForm.tsx:111",htmlFor:"qf-message",children:"Beskriv projektet *"}),n.jsx(my,{"data-loc":"client/src/components/site/QuoteForm.tsx:112",id:"qf-message",value:T,onChange:R=>A(R.target.value),rows:5,placeholder:"Berätta kort vad du behöver hjälp med, ungefärlig omfattning och när du vill ha det gjort.",required:!0})]}),n.jsx(Qt,{"data-loc":"client/src/components/site/QuoteForm.tsx:121",type:"submit",size:"lg",disabled:y.isPending,className:"bg-accent text-accent-foreground hover:bg-accent/90",children:y.isPending?"Skickarâ¦":"Skicka offertförfrÃ¥gan"}),n.jsx("p",{"data-loc":"client/src/components/site/QuoteForm.tsx:129",className:"text-xs text-muted-foreground",children:"Vi behandlar dina uppgifter enligt vÃ¥r integritetspolicy och använder dem endast för att besvara din förfrÃ¥gan."})]})}function S4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Kontakt.tsx:10",items:[{name:"Kontakt & offert"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Kontakt.tsx:11",title:"Kontakta oss â begär kostnadsfri offert",intro:"Beskriv ditt projekt sÃ¥ Ã¥terkommer vi, oftast inom en arbetsdag. Platsbesök och offert är alltid kostnadsfria, och du förbinder dig inte till nÃ¥got."}),n.jsx("section",{"data-loc":"client/src/pages/Kontakt.tsx:16",className:"container pb-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Kontakt.tsx:17",className:"grid gap-10 lg:grid-cols-[1fr_1.4fr]",children:[n.jsxs("div",{"data-loc":"client/src/pages/Kontakt.tsx:18",className:"space-y-6",children:[n.jsxs("div",{"data-loc":"client/src/pages/Kontakt.tsx:19",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/Kontakt.tsx:20",className:"font-display text-lg font-bold text-primary",children:"Kontaktuppgifter"}),n.jsxs("ul",{"data-loc":"client/src/pages/Kontakt.tsx:21",className:"mt-4 space-y-4 text-sm",children:[n.jsxs("li",{"data-loc":"client/src/pages/Kontakt.tsx:22",className:"flex items-start gap-3",children:[n.jsx(gr,{"data-loc":"client/src/pages/Kontakt.tsx:23",className:"mt-0.5 h-4 w-4 shrink-0 text-accent","aria-hidden":"true"}),n.jsxs("span",{"data-loc":"client/src/pages/Kontakt.tsx:24",children:[n.jsx("a",{"data-loc":"client/src/pages/Kontakt.tsx:25",href:Y.phoneMobileHref,className:"font-semibold text-accent hover:underline",children:Y.phoneMobile})," (mobil)",n.jsx("br",{"data-loc":"client/src/pages/Kontakt.tsx:25"}),n.jsx("a",{"data-loc":"client/src/pages/Kontakt.tsx:26",href:Y.phoneFixedHref,className:"font-semibold text-accent hover:underline",children:Y.phoneFixed})," (fast)"]})]}),n.jsxs("li",{"data-loc":"client/src/pages/Kontakt.tsx:29",className:"flex items-start gap-3",children:[n.jsx(Lm,{"data-loc":"client/src/pages/Kontakt.tsx:30",className:"mt-0.5 h-4 w-4 shrink-0 text-accent","aria-hidden":"true"}),n.jsx("a",{"data-loc":"client/src/pages/Kontakt.tsx:31",href:Y.emailHref,className:"font-semibold text-accent hover:underline",children:Y.email})]}),n.jsxs("li",{"data-loc":"client/src/pages/Kontakt.tsx:33",className:"flex items-start gap-3",children:[n.jsx(rr,{"data-loc":"client/src/pages/Kontakt.tsx:34",className:"mt-0.5 h-4 w-4 shrink-0 text-accent","aria-hidden":"true"}),n.jsxs("span",{"data-loc":"client/src/pages/Kontakt.tsx:35",children:[Y.locality,", ",Y.municipality,", ",Y.regi
198on]})]}),n.jsxs("li",{"data-loc":"client/src/pages/Kontakt.tsx:37",className:"flex items-start gap-3",children:[n.jsx(oj,{"data-loc":"client/src/pages/Kontakt.tsx:38",className:"mt-0.5 h-4 w-4 shrink-0 text-accent","aria-hidden":"true"}),n.jsx("span",{"data-loc":"client/src/pages/Kontakt.tsx:39",children:"Vardagar 07â17. Ute pÃ¥ uppdrag dagtid â lämna meddelande sÃ¥ ringer vi upp."})]})]})]}),n.jsxs("div",{"data-loc":"client/src/pages/Kontakt.tsx:43",className:"rounded-lg border border-border bg-secondary/50 p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/Kontakt.tsx:44",className:"font-display text-lg font-bold text-primary",children:"SÃ¥ gÃ¥r det till"}),n.jsxs("ol",{"data-loc":"client/src/pages/Kontakt.tsx:45",className:"mt-4 list-decimal space-y-2 pl-5 text-sm leading-relaxed text-foreground/85",children:[n.jsx("li",{"data-loc":"client/src/pages/Kontakt.tsx:46",children:"Du skickar formuläret eller ringer."}),n.jsx("li",{"data-loc":"client/src/pages/Kontakt.tsx:47",children:"Vi Ã¥terkommer, oftast inom en arbetsdag."}),n.jsx("li",{"data-loc":"client/src/pages/Kontakt.tsx:48",children:"Vid behov bokar vi ett kostnadsfritt platsbesök."}),n.jsx("li",{"data-loc":"client/src/pages/Kontakt.tsx:49",children:"Du fÃ¥r en specificerad offert â sedan bestämmer du."})]})]}),n.jsxs("div",{"data-loc":"client/src/pages/Kontakt.tsx:52",className:"rounded-lg border border-border bg-card p-6",children:[n.jsx("h2",{"data-loc":"client/src/pages/Kontakt.tsx:53",className:"font-display text-lg font-bold text-primary",children:"VerksamhetsomrÃ¥de"}),n.jsx("p",{"data-loc":"client/src/pages/Kontakt.tsx:54",className:"mt-3 text-sm leading-relaxed text-foreground/85",children:"Hennan, Ramsjö, Ljusdal, Färila, Järvsö och övriga norra Hälsingland. Större entreprenader utförs även utanför omrÃ¥det â frÃ¥ga oss."})]})]}),n.jsx("div",{"data-loc":"client/src/pages/Kontakt.tsx:59",children:n.jsx(y4,{"data-loc":"client/src/pages/Kontakt.tsx:60"})})]})})]})}function N4(){return n.jsxs(n.Fragment,{children:[n.jsx(be,{"data-loc":"client/src/pages/Integritetspolicy.tsx:8",items:[{name:"Integritetspolicy"}]}),n.jsx(ke,{"data-loc":"client/src/pages/Integritetspolicy.tsx:9",title:"Integritetspolicy",intro:"SÃ¥ behandlar Hennans Grävtjänst AB dina personuppgifter när du kontaktar oss eller använder vÃ¥r webbplats."}),n.jsx("section",{"data-loc":"client/src/pages/Integritetspolicy.tsx:13",className:"container pb-16",children:n.jsxs("div",{"data-loc":"client/src/pages/Integritetspolicy.tsx:14",className:"mx-auto max-w-3xl space-y-5 text-sm leading-relaxed text-foreground/85",children:[n.jsx("h2",{"data-loc":"client/src/pages/Integritetspolicy.tsx:15",className:"font-display text-xl font-bold text-primary",children:"Personuppgiftsansvarig"}),n.jsxs("p",{"data-loc":"client/src/pages/Integritetspolicy.tsx:16",children:[Y.name,", ",Y.locality,", ",Y.municipality,". Kontakt: ",Y.email,", ",Y.phoneMobile,"."]}),n.jsx("h2",{"data-loc":"client/src/pages/Integritetspolicy.tsx:17",className:"font-display text-xl font-bold text-primary",children:"Vilka uppgifter vi samlar in"}),n.jsx("p",{"data-loc":"client/src/pages/Integritetspolicy.tsx:18",children:"När du skickar en offertförfrÃ¥gan via formuläret behandlar vi de uppgifter du lämnar: namn, telefonnummer, e-postadress, ort och din beskrivning av projektet. Uppgifterna används enbart för att besvara din förfrÃ¥gan, lämna offert och fullgöra eventuellt uppdrag."}),n.jsx("h2",{"data-loc":"client/src/pages/Integritetspolicy.tsx:21",className:"font-display text-xl font-bold text-primary",children:"Rättslig grund och lagringstid"}),n.jsx("p",{"data-loc":"client/src/pages/Integritetspolicy.tsx:22",children:"Behandlingen sker med stöd av berättigat intresse (att besvara din förfrÃ¥gan) och, vid uppdrag, för att fullgöra avtal. FörfrÃ¥gningar som inte leder till uppdrag raderas senast tolv mÃ¥nader efter senaste kontakt. Uppgifter kopplade till utförda uppdrag sparas sÃ¥ länge bokförings- och garantiÃ¥taganden kräver."}),n.jsx("h2",{"data-loc":"client/src/pages/Integritetspolicy.tsx:25",className:"font-display text-xl font-bold text-primary",children:"Delning av uppgifter"}),n.jsx("p",{"data-loc":"client/src/pages/Integritetspolicy.tsx:26",children:"Vi säljer aldrig dina uppgifter och delar dem inte med tredje part för marknadsföring. Uppgifter kan delas med underleverantörer som behövs för uppdragets utförande samt med myndigheter när lagen kräver det, till exempel vid tillstÃ¥ndsansökningar som du bett oss hantera."}),n.jsx("h2",{"data-loc":"client/src/pages/Integritetspolicy.tsx:29",className:"font-display text-xl font-bold text-primary",children:"Dina rättigheter"}),n.jsxs("p",{"data-loc":"client/src/pages/Integritetspolicy.tsx:30",children:["Du har rätt att begära utdrag, rättelse eller radering av dina personuppgifter samt att invända mot behandlingen. Kontakta oss pÃ¥ ",Y.email," sÃ¥ hjälper vi dig. Du k
198an även lämna klagomål till Integritetsskyddsmyndigheten (IMY)."]}),n.jsx("h2",{"data-loc":"client/src/pages/Integritetspolicy.tsx:33",className:"font-display text-xl font-bold text-primary",children:"Cookies"}),n.jsx("p",{"data-loc":"client/src/pages/Integritetspolicy.tsx:34",children:"Webbplatsen använder endast nödvändiga tekniska cookies och anonymiserad besöksstatistik. Ingen individuell spårning för marknadsföring förekommer."})]})})]})}function T4(){return n.jsxs("section",{"data-loc":"client/src/pages/Tack.tsx:8",className:"container flex min-h-[60vh] flex-col items-center justify-center py-20 text-center",children:[n.jsx(Em,{"data-loc":"client/src/pages/Tack.tsx:9",className:"h-14 w-14 text-accent","aria-hidden":"true"}),n.jsx("h1",{"data-loc":"client/src/pages/Tack.tsx:10",className:"mt-6 font-display text-3xl font-bold text-primary md:text-4xl",children:"Tack för din förfrågan!"}),n.jsxs("p",{"data-loc":"client/src/pages/Tack.tsx:11",className:"mt-4 max-w-xl leading-relaxed text-foreground/85",children:["Vi har tagit emot din offertförfrågan och återkommer oftast inom en arbetsdag. Brådskar det? Ring oss direkt på"," ",n.jsx("a",{"data-loc":"client/src/pages/Tack.tsx:13",href:Y.phoneMobileHref,className:"font-semibold text-accent hover:underline",children:Y.phoneMobile}),"."]}),n.jsxs("div",{"data-loc":"client/src/pages/Tack.tsx:15",className:"mt-8 flex flex-wrap justify-center gap-4",children:[n.jsx(Qt,{"data-loc":"client/src/pages/Tack.tsx:16",asChild:!0,size:"lg",children:n.jsx(N,{"data-loc":"client/src/pages/Tack.tsx:17",href:"/",children:"Till startsidan"})}),n.jsx(Qt,{"data-loc":"client/src/pages/Tack.tsx:19",asChild:!0,variant:"outline",size:"lg",className:"border-primary text-primary hover:bg-primary hover:text-primary-foreground",children:n.jsx(N,{"data-loc":"client/src/pages/Tack.tsx:20",href:"/vagentreprenad",children:"Se våra tjänster"})})]})]})}const R4=[{name:"Vägentreprenad",href:"/vagentreprenad"},{name:"Enskilt avlopp",href:"/vatten-avlopp/enskilt-avlopp"},{name:"Dränering",href:"/dranering"},{name:"Markarbeten",href:"/markarbeten"},{name:"Snöröjning",href:"/snorojning"},{name:"Kontakt & offert",href:"/kontakt"}];function Wx(){return n.jsxs("section",{"data-loc":"client/src/pages/NotFound.tsx:16",className:"container flex min-h-[60vh] flex-col items-center justify-center py-20 text-center",children:[n.jsx("p",{"data-loc":"client/src/pages/NotFound.tsx:17",className:"font-display text-6xl font-bold text-accent",children:"404"}),n.jsx("h1",{"data-loc":"client/src/pages/NotFound.tsx:18",className:"mt-4 font-display text-2xl font-bold text-primary md:text-3xl",children:"Sidan kunde inte hittas"}),n.jsxs("p",{"data-loc":"client/src/pages/NotFound.tsx:19",className:"mt-3 max-w-lg leading-relaxed text-foreground/85",children:["Sidan du söker finns inte eller har flyttats. Prova någon av våra vanligaste sidor, eller ring oss på"," ",n.jsx("a",{"data-loc":"client/src/pages/NotFound.tsx:21",href:Y.phoneMobileHref,className:"font-semibold text-accent hover:underline",children:Y.phoneMobile}),"."]}),n.jsx("div",{"data-loc":"client/src/pages/NotFound.tsx:23",className:"mt-6 flex flex-wrap justify-center gap-3",children:R4.map(t=>n.jsx(Qt,{"data-loc":"client/src/pages/NotFound.tsx:25",asChild:!0,variant:"outline",size:"sm",className:"border-primary text-primary hover:bg-primary hover:text-primary-foreground",children:n.jsx(N,{"data-loc":"client/src/pages/NotFound.tsx:26",href:t.href,children:t.name})},t.href))}),n.jsx(Qt,{"data-loc":"client/src/pages/NotFound.tsx:30",asChild:!0,size:"lg",className:"mt-8",children:n.jsx(N,{"data-loc":"client/src/pages/NotFound.tsx:31",href:"/",children:"Till startsidan"})})]})}function A4(){const[t]=bi();return k.useLayoutEffect(()=>{if(window.location.hash){const s=document.getElementById(window.location.hash.slice(1));if(s){s.scrollIntoView();return}}window.scrollTo({top:0,left:0,behavior:"instant"})},[t]),null}function H4(){return n.jsxs(IA,{"data-loc":"client/src/App.tsx:99",children:[n.jsx(A4,{"data-loc":"client/src/App.tsx:100"}),n.jsxs(IN,{"data-loc":"client/src/App.tsx:101",children:[n.jsx(fe,{"data-loc":"client/src/App.tsx:102",path:"/",component:NH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:103",path:"/vagentreprenad",component:RH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:104",path:"/vagentreprenad/anlagga-grusvag",component:AH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:105",path:"/vagentreprenad/skogsbilvag",component:HH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:106",path:"/vagentreprenad/vagunderhall-dikning",component:wH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:107",path:"/vagentreprenad/vagtrumma",component:EH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:108",path:"/vatten-avlopp",component:MH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:109",path:"/vatten-avlopp/trekammarbrunn",component:_H}),n.jsx(fe,{"data-loc":"client/src/App.tsx:110",path:"/vatten-avlopp/infiltration-markbadd",component:OH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:111",path:"/vatten-avlopp/enskilt-avlopp",component:FH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:112",path:"/dranering",component:JH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:113",path:"/markarbeten",component:zH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:114",path:"/markarbeten/husgrund",component:qH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:115",path:"/markarbeten/tomtplanering",component:PH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:116",path:"/snorojning",component:BH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:117",path:"/tradfallning",component:UH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:118",path:"/smide",component:QH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:119",path:"/gravfirma-ljusdal",component:KH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:120",path:"/gravfirma-farila",component:XH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:121",path:"/gravfirma-jarvso",component:ZH}),n.jsx(fe,{"data-loc":"client/src/App.tsx:122",path:"/gravfirma-ramsjo",component:e5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:123",path:"/gravfirma-hennan",component:a5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:124",path:"/trekammarbrunn-ljusdal",component:r5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:125",path:"/trekammarbrunn-farila",component:l5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:126",path:"/trekammarbrunn-jarvso",component:o5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:127",path:"/trekammarbrunn-ramsjo",component:d5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:128",path:"/trekammarbrunn-hennan",component:g5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:129",path:"/markarbeten-ramsjo",component:f5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:130",path:"/markarbeten-ljusdal",component:h5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:131",path:"/markarbeten-farila",component:x5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:132",path:"/markarbeten-jarvso",component:k5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:133",path:"/markarbeten-hennan",component:y5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:134",path:"/dranering-ljusdal",component:N5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:135",path:"/dranering-farila",component:R5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:136",path:"/dranering-jarvso",component:H5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:137",path:"/dranering-ramsjo",component:E5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:138",path:"/dranering-hennan",component:M5}),n.jsx(fe,{"data-loc":"client/src/App.tsx:139",path:"/snorojning-ljusdal",component:vE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:140",path:"/snorojning-farila",component:bE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:141",path:"/snorojning-jarvso",component:jE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:142",path:"/snorojning-ramsjo",component:SE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:143",path:"/snorojning-hennan",component:TE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:144",path:"/tradfallning-ljusdal",component:AE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:145",path:"/tradfallning-farila",component:wE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:146",path:"/tradfallning-jarvso",component:LE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:147",path:"/tradfallning-ramsjo",component:DE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:148",path:"/tradfallning-hennan",component:OE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:149",path:"/avloppsanlaggning-ljusdal",component:VE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:150",path:"/avloppsanlaggning-farila",component:JE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:151",path:"/avloppsanlaggning-jarvso",component:zE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:152",path:"/avloppsanlaggning-ramsjo",component:PE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:153",path:"/avloppsanlaggning-hennan",component:UE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:154",path:"/husgrund-ljusdal",component:IE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:155",path:"/husgrund-farila",component:YE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:156",path:"/husgrund-jarvso",component:$E}),n.jsx(fe,{"data-loc":"client/src/App.tsx:157",path:"/husgrund-ramsjo",component:WE}),n.jsx(fe,{"data-loc":"client/src/App.tsx:158",path:"/husgrund-hennan",component:t4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:159",path:"/tomtplanering-ljusdal",component:n4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:160",path:"/tomtplanering-farila",component:s4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:161",path:"/tomtplanering-jarvso",component:i4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:162",path:"/tomtplanering-ramsjo",component:c4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:163",path:"/tomtplanering-hennan",component:u4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:164",path:"/projekt",component:m4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:165",path:"/priser/vad-kostar-dranering",component:p4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:166",path:"/priser/snorojning-pris",component:h4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:167",path:"/priser/vad-kostar-enskilt-avlopp",component:x4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:168",path:"/om-oss",component:k4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:169",path:"/kontakt",component:S4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:170",path:"/integritetspolicy",component:N4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:171",path:"/tack",component:T4}),n.jsx(fe,{"data-loc":"client/src/App.tsx:172",path:"/404",component:Wx}),n.jsx(fe,{"data-loc":"client/src/App.tsx:173",component:Wx})]})]})}function w4(){return n.jsx(MA,{"data-loc":"client/src/App.tsx:181",children:n.jsx(YA,{"data-loc":"client/src/App.tsx:182",defaultTheme:"light",children:n.jsxs(xA,{"data-loc":"client/src/App.tsx:183",children:[n.jsx(TT,{"data-loc":"client/src/App.tsx:184"}),n.jsx(JA,{"data-loc":"client/src/App.tsx:185"}),n.jsx(H4,{"data-loc":"client/src/App.tsx:186"})]})})})}const E4=()=>{const t="https://manus.im",s="XUYgsiAqsq5tnNhCot9BCH",l=`${window.location.origin}/api/oauth/callback`,o=crypto.randomUUID();document.cookie=`${JS}=${o}; Path=/; Max-Age=600; SameSite=None; Secure`;const c=GS({redirectUri:l,nonce:o}),u=new URL(`${t}/app-auth`);u.searchParams.set("appId",s),u.searchParams.set("redirectUri",l),u.searchParams.set("state",c),u.searchParams.set("type","signIn"),window.location.href=u.toString()},bc=new t2({defaultOptions:{queries:{staleTime:3e4}}}),fy=t=>{!(t instanceof li)||typeof window>"u"||!(t.message===FS)||E4()};bc.getQueryCache().subscribe(t=>
198{if(t.type==="updated"&&t.action.type==="error"){const s=t.query.state.error;fy(s),console.error("[API Query Error]",s)}});bc.getMutationCache().subscribe(t=>{if(t.type==="updated"&&t.action.type==="error"){const s=t.mutation.state.error;fy(s),console.error("[API Mutation Error]",s)}});const L4=Ac.createClient({links:[dS({url:"/api/trpc",transformer:tn,headers(){try{const t=sessionStorage.getItem("manus-cookie");if(t){const s=`${VS}=`,o=t.split(";").find(c=>c.trim().startsWith(s))?.trim().slice(s.length);if(o)return{Authorization:`Bearer ${o}`}}}catch{}return{}},fetch(t,s){return globalThis.fetch(t,{...s??{},credentials:"include"})}})]}),M4=window.__RQ_STATE__?tn.deserialize(window.__RQ_STATE__):void 0;QS.hydrateRoot(document.getElementById("root"),n.jsx(Ac.Provider,{"data-loc":"client/src/entry-client.tsx:88",client:L4,queryClient:bc,children:n.jsx(n2,{"data-loc":"client/src/entry-client.tsx:89",client:bc,children:n.jsx(g2,{"data-loc":"client/src/entry-client.tsx:90",state:M4,children:n.jsx(dk,{"data-loc":"client/src/entry-client.tsx:91",children:n.jsx(w4,{"data-loc":"client/src/entry-client.tsx:92"})})})})}));
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.