PageSourceSearch

https://pvcpipecalc.replit.app/assets/DogPenShadePlan-Bh4ifkbO.js

js pvcpipecalc.replit.app collected 2026-10-03 03:57:58 UTC 29,295 bytes, 1 lines download raw bytes

1import{r as v,j as e}from"./vendor-motion-D7tqbIxK.js";import{H,L as E,B as C,d as W,t as z,C as p,a as u,b as N,c as g,g as O}from"./index-CY8dd0ap.js";import{I as w}from"./input-jK0G5tKj.js";import{T as S}from"./textarea-DfPLv1hh.js";import{C as $}from"./chevron-left-Cs8g7vxL.js";import{D as P}from"./download-C0VtdH3f.js";import{C as T}from"./credit-card-BDhIa_x3.js";import{I as B}from"./info-Cr-VJwHh.js";import{R as I}from"./ruler-DrMAxa0C.js";import{W as L}from"./wrench-CCvvcKaL.js";import{S as F}from"./shield-check-sH4jmpyi.js";import{T as U}from"./triangle-alert-e4Eeoyyw.js";import"./vendor-react-Bzgz95E1.js";import"./vendor-query-DzVW2h6_.js";import"./vendor-radix-wRl3KeJQ.js";const b="#0f766e",o="#e36b4f",d="#24323a",j="#64747a";function k({x1:a,y1:n,x2:r,y2:h,label:y,vertical:s=!1}){const i=(a+r)/2,m=(n+h)/2;return e.jsxs("g",{stroke:j,fill:j,strokeWidth:"1",children:[e.jsx("line",{x1:a,y1:n,x2:r,y2:h}),e.jsx("path",{d:`M${a},${n} l5,-3 M${a},${n} l5,3 M${r},${h} l-5,-3 M${r},${h} l-5,3`}),e.jsx("text",{x:i,y:m-(s?4:6),textAnchor:"middle",fontSize:"10",stroke:"none",transform:s?`rotate(-90 ${i} ${m})`:void 0,children:y})]})}function A(){return e.jsxs("svg",{viewBox:"0 0 360 230",role:"img","aria-label":"Front elevation showing two adjacent six foot dog enclosures, structural top rails, and a 12 foot roof chord with 2 foot arch rise",children:[e.jsx("line",{x1:"32",y1:"188",x2:"328",y2:"188",stroke:"#cbd5d5",strokeDasharray:"5 4"}),e.jsx("rect",{x:"68",y:"106",width:"224",height:"82",fill:"#eef5f3",stroke:"#9badaa",strokeWidth:"1"}),e.jsx("path",{d:"M68 106 H292 M68 188 H292 M180 106 V188",fill:"none",stroke:o,strokeWidth:"5"}),e.jsx("path",{d:"M68 119 H292 M68 145 H292 M68 171 H292",fill:"none",stroke:"#9badaa",strokeWidth:"1",strokeDasharray:"2 3"}),e.jsx("line",{x1:"68",y1:"188",x2:"68",y2:"106",stroke:d,strokeWidth:"5"}),e.jsx("line",{x1:"180",y1:"188",x2:"180",y2:"106",stroke:d,strokeWidth:"5"}),e.jsx("line",{x1:"292",y1:"188",x2:"292",y2:"106",stroke:d,strokeWidth:"5"}),e.jsx("path",{d:"M68 106 Q180 43 292 106",fill:"none",stroke:b,strokeWidth:"6",strokeLinecap:"round"}),e.jsx("line",{x1:"68",y1:"106",x2:"292",y2:"106",stroke:"#a7b6b5",strokeDasharray:"3 4"}),e.jsx("circle",{cx:"68",cy:"106",r:"4",fill:"#d29b35"}),e.jsx("circle",{cx:"180",cy:"106",r:"4",fill:"#d29b35"}),e.jsx("circle",{cx:"292",cy:"106",r:"4",fill:"#d29b35"}),e.jsx("line",{x1:"180",y1:"106",x2:"180",y2:"43",stroke:o,strokeDasharray:"4 3"}),e.jsx("circle",{cx:"180",cy:"43",r:"4",fill:o}),e.jsx("text",{x:"180",y:"28",textAnchor:"middle",fontSize:"11",fill:o,fontWeight:"700",children:"crown ≈ 8 ft above ground"}),e.jsx(k,{x1:68,y1:211,x2:292,y2:211,label:"12 ft chord / pen width"}),e.jsx(k,{x1:180,y1:106,x2:180,y2:43,label:"2 ft rise",vertical:!0}),e.jsx("text",{x:"78",y:"96",fontSize:"10",fill:o,children:"6 ft structural top rail"}),e.jsx("text",{x:"124",y:"139",textAnchor:"middle",fontSize:"10",fill:d,fontWeight:"700",children:"PEN A"}),e.jsx("text",{x:"236",y:"139",textAnchor:"middle",fontSize:"10",fill:d,fontWeight:"700",children:"PEN B"}),e.jsx("text",{x:"180",y:"181",textAnchor:"middle",fontSize:"8",fill:j,children:"mesh / enclosure wall below rail"}),e.jsx("text",{x:"180",y:"225",textAnchor:"middle",fontSize:"9",fill:j,children:"10 ft radius · 73.74° included arc · 154.5 in pipe path per rib"})]})}function V(){const a=[42,87,132,177,222,267,312];return e.jsxs("svg",{viewBox:"0 0 360 210",role:"img","aria-label":"Side elevation showing two adjacent pen walls and seven roof ribs supported at the structural top rail at 44 inch centers across 22 feet",children:[e.jsx("line",{x1:"24",y1:"162",x2:"333",y2:"162",stroke:"#cbd5d5",strokeDasharray:"5 4"}),e.jsx("rect",{x:"42",y:"93",width:"270",height:"69",fill:"#eef5f3",stroke:"#9badaa",strokeWidth:"1"}),e.jsx("path",{d:"M42 93 H312 M42 162 H312",stroke:o,strokeWidth:"5"}),e.jsx("path",{d:"M42 110 H312 M42 136 H312",stroke:"#9badaa",strokeWidth:"1",strokeDasharray:"2 3"}),a.map((n,r)=>e.jsxs("g",{children:[e.jsx("line",{x1:n,y1:"162",x2:n,y2:"93",stroke:d,strokeWidth:"4"}),e.jsx("circle",{cx:n,cy:"93",r:"4",fill:"#d29b35"}),e.jsxs("text",{x:n,y:"181",textAnchor:"middle",fontSize:"8",fill:j,children:[r*44,'"']})]},n)),e.jsx("line",{x1:"42",y1:"70",x2:"312",y2:"70",stroke:b,strokeWidth:"3"}),e.jsx("line",{x1:"42",y1:"93",x2:"312",y2:"93",stroke:o,strokeWidth:"5"}),e.jsx("text",{x:"180",y:"87",textAnchor:"middle",fontSize:"9",fill:o,fontWeight:"700",children:"structural pen top rail — rib feet clamp here"}),e.jsx(k,{x1:42,y1:198,x2:312,y2:198,label:"22 ft overall length"}),e.jsx(k,{x1:42,y1:58,x2:87,y2:58,label:'44" O.C.'}),e.jsx("text",{x:"180",y:"28",textAnchor:"middle",fontSize:"10",fill:b,fontWeight:"700",children:"7 ribs · stations 0 / 44 / 88 / 132 / 176 / 220 / 264 in"}),e.jsx("text",{x:"180",y:"151",textAnchor:"middle",fontSize:"9",fill:j,children:"mesh walls below rail · roof members stop at rail/post"})]})}function K(){return e.jsxs("svg",{viewBox:"0 0 360 220",role:"img","aria-label":"Top plan of two adjacent six foot wide dog pe
1ns under a 12 by 22 foot roof, with shared divider, top rails, posts, and rib stations",children:[e.jsx("rect",{x:"45",y:"42",width:"270",height:"124",rx:"2",fill:"#eef5f3",stroke:d,strokeWidth:"2"}),e.jsx("line",{x1:"45",y1:"104",x2:"315",y2:"104",stroke:d,strokeWidth:"5"}),e.jsx("line",{x1:"45",y1:"55",x2:"315",y2:"55",stroke:o,strokeWidth:"4"}),e.jsx("line",{x1:"45",y1:"153",x2:"315",y2:"153",stroke:o,strokeWidth:"4"}),e.jsx("line",{x1:"45",y1:"42",x2:"45",y2:"166",stroke:o,strokeWidth:"4"}),e.jsx("line",{x1:"315",y1:"42",x2:"315",y2:"166",stroke:o,strokeWidth:"4"}),[45,90,135,180,225,270,315].map(a=>e.jsxs("g",{children:[e.jsx("line",{x1:a,y1:"42",x2:a,y2:"166",stroke:b,strokeWidth:"2",strokeDasharray:"4 4"}),e.jsx("circle",{cx:a,cy:"55",r:"4",fill:"#d29b35"}),e.jsx("circle",{cx:a,cy:"153",r:"4",fill:"#d29b35"})]},a)),e.jsx("text",{x:"180",y:"80",textAnchor:"middle",fontSize:"11",fill:d,fontWeight:"700",children:"PEN A · 6 ft"}),e.jsx("text",{x:"180",y:"132",textAnchor:"middle",fontSize:"11",fill:d,fontWeight:"700",children:"PEN B · 6 ft"}),e.jsx("text",{x:"180",y:"33",textAnchor:"middle",fontSize:"10",fill:o,children:"outer structural top rail / eave line"}),e.jsx("text",{x:"180",y:"181",textAnchor:"middle",fontSize:"10",fill:o,children:"outer structural top rail / eave line"}),e.jsx("text",{x:"180",y:"100",textAnchor:"middle",fontSize:"9",fill:d,children:"shared pen divider / top rail"}),e.jsx(k,{x1:45,y1:201,x2:315,y2:201,label:"22 ft"}),e.jsx(k,{x1:329,y1:42,x2:329,y2:166,label:"12 ft",vertical:!0})]})}function Q(){return e.jsxs("svg",{viewBox:"0 0 360 220",role:"img","aria-label":"Connection detail showing an arched roof rib seated on a dog-pen structural top rail and post with purlin and rail clamp",children:[e.jsx("rect",{x:"45",y:"84",width:"270",height:"104",fill:"#eef5f3",stroke:"#9badaa"}),e.jsx("path",{d:"M45 105 H315 M45 135 H315 M45 165 H315",stroke:"#9badaa",strokeWidth:"1",strokeDasharray:"2 3"}),e.jsx("line",{x1:"45",y1:"75",x2:"315",y2:"75",stroke:o,strokeWidth:"10",strokeLinecap:"round"}),e.jsx("line",{x1:"180",y1:"188",x2:"180",y2:"75",stroke:d,strokeWidth:"10",strokeLinecap:"round"}),e.jsx("path",{d:"M152 77 Q180 108 208 77",fill:"none",stroke:b,strokeWidth:"8",strokeLinecap:"round"}),e.jsx("path",{d:"M155 78 Q180 112 205 78",fill:"none",stroke:"#d29b35",strokeWidth:"4"}),e.jsx("circle",{cx:"180",cy:"76",r:"11",fill:"none",stroke:"#d29b35",strokeWidth:"3"}),e.jsx("path",{d:"M135 184 Q180 214 225 184",fill:"none",stroke:"#4d6064",strokeWidth:"3"}),e.jsx("line",{x1:"135",y1:"184",x2:"135",y2:"160",stroke:"#4d6064",strokeWidth:"3"}),e.jsx("line",{x1:"225",y1:"184",x2:"225",y2:"160",stroke:"#4d6064",strokeWidth:"3"}),e.jsx("text",{x:"268",y:"69",fontSize:"10",fill:b,fontWeight:"700",children:"purlin"}),e.jsx("text",{x:"193",y:"119",fontSize:"10",fill:b,fontWeight:"700",children:"arched rib"}),e.jsx("text",{x:"229",y:"104",fontSize:"9",fill:"#9a6a17",children:"UV-resistant saddle / crossing clamp"}),e.jsx("text",{x:"229",y:"188",fontSize:"9",fill:"#4d6064",children:"structural U-bolt or rail clamp"}),e.jsx("text",{x:"180",y:"211",textAnchor:"middle",fontSize:"9",fill:j,children:"Rib terminates at the top rail/post; never use chain-link fabric alone"})]})}const M=[["Rib sections","120 in + 34.5 in","7 long + 7 short","10 sticks total; one straight coupling per rib"],["Purlin sections","120 in + 120 in + 24 in","15 pieces","5 lines; two couplings per line"],["Shopping total","22 × 10 ft sticks","—","10 sticks ribs + 12 sticks purlins, allowing for saw kerf"]],_=[['Straight 1" couplings',"17","7 rib splices + 10 purlin splices"],["UV-resistant crossing / saddle clamps","35","One at each rib-to-purlin intersection"],["Stainless U-bolts / structural rail clamps","14 minimum","Two eave runners × seven rib stations"],["UV-safe ties / ball bungees","as needed","Tarp perimeter and intermediate tie-downs"],["Optional Snap Clamps","as needed","Removable cover edge retention"]];function J(){const[a,n]=v.useState(()=>crypto.randomUUID()),[r,h]=v.useState("standard_modification"),[y,s]=v.useState(!1),[i,m]=v.useState(""),[l,D]=v.useState({customerName:"",email:"",ph
1one:"",width:"",length:"",height:"",currentStructure:"",requestedChanges:"",coverMaterial:"",weatherLocation:"",notes:""}),c=(t,x)=>D(f=>({...f,[t]:x})),R=async t=>{t.preventDefault(),s(!0),m("");try{const x=await fetch("/api/pvc-plan/requests",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serviceKey:r,submissionKey:a,...l,dimensions:{width:l.width,length:l.length,height:l.height}})}),f=await x.json();if(!x.ok||!f.url)throw new Error(f.error||"Unable to start checkout");z("pvc_customization_checkout_started",{service:r,plan:"dog_pen_shade"}),n(crypto.randomUUID()),window.location.assign(f.url)}catch(x){m(x.message||"Unable to start checkout. Please try again."),s(!1)}};return e.jsxs(p,{id:"customize",className:"scroll-mt-24 border-[#b7d0c8] bg-[#f8fbf8] shadow-md",children:[e.jsxs(u,{className:"border-b border-[#d6dfdc] bg-[#e7f1ed]",children:[e.jsx("p",{className:"font-mono text-[11px] font-bold uppercase tracking-[.18em] text-[#e36b4f]",children:"Paid plan review"}),e.jsx(N,{className:"text-2xl",children:"Customize this plan"}),e.jsx("p",{className:"max-w-2xl text-sm leading-6 text-[#536761]",children:"Tell us what needs to change. A plan specialist will review your measurements and send an updated plan after approval. Customer-facing turnaround is 2–3 business days after payment."})]}),e.jsx(g,{className:"pt-6",children:e.jsxs("form",{onSubmit:R,className:"space-y-6",children:[e.jsx("div",{className:"grid gap-3 sm:grid-cols-3",children:[["standard_modification","Standard Modification","$49","Focused changes to the existing plan"],["detailed_custom_plan","Detailed Custom Plan","$99","More dimensions, parts, and assembly detail"],["complex_project_review","Complex Project Review","$199","Complex structures or extensive changes"]].map(([t,x,f,q])=>e.jsxs("label",{className:`cursor-pointer rounded-lg border p-4 transition ${r===t?"border-[#0f766e] bg-[#eaf3ef] ring-1 ring-[#0f766e]":"border-[#d6dfdc] bg-white hover:border-[#a8c6bd]"}`,children:[e.jsx("input",{type:"radio",name:"service",value:t,checked:r===t,onChange:()=>h(t),className:"sr-only"}),e.jsxs("span",{className:"block font-bold text-[#24323a]",children:[x," ",e.jsx("span",{className:"float-right text-[#0f766e]",children:f})]}),e.jsx("span",{className:"mt-1 block text-xs leading-5 text-[#71827c]",children:q})]},t))}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-3",children:[e.jsxs("label",{className:"text-sm font-semibold",children:["Name",e.jsx(w,{required:!0,value:l.customerName,onChange:t=>c("customerName",t.target.value),className:"mt-1 bg-white font-normal"})]}),e.jsxs("label",{className:"text-sm font-semibold",children:["Email",e.jsx(w,{required:!0,type:"email",value:l.email,onChange:t=>c("email",t.target.value),className:"mt-1 bg-white font-normal"})]}),e.jsxs("label",{className:"text-sm font-semibold",children:["Phone",e.jsx(w,{required:!0,type:"tel",value:l.phone,onChange:t=>c("phone",t.target.value),className:"mt-1 bg-white font-normal"})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"mb-2 text-sm font-bold",children:"Project dimensions"}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-3",children:[e.jsxs("label",{className:"text-sm text-[#536761]",children:["Width / span",e.jsx(w,{required:!0,placeholder:"e.g. 12 ft",value:l.width,onChange:t=>c("width",t.target.value),className:"mt-1 bg-white"})]}),e.jsxs("label",{className:"text-sm text-[#536761]",children:["Length",e.jsx(w,{required:!0,placeholder:"e.g. 22 ft",value:l.length,onChange:t=>c("length",t.target.value),className:"mt-1 bg-white"})]}),e.jsxs("label",{className:"text-sm text-[#536761]",children:["Height / rise",e.jsx(w,{required:!0,placeholder:"e.g. 8 ft crown",value:l.height,onChange:t=>c("height",t.target.value),className:"mt-1 bg-white"})]})]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-2",children:[e.jsxs("label",{className:"text-sm font-semibold",children:["What structure is already there?",e.jsx(S,{required:!0,rows:4,value:l.currentStructure,onChange:t=>c("currentStructure",t.target.value),placeholder:"Rails, posts, pen panels, anchors, pipe size, and anything that flexes.",className:"mt-1 bg-white font-normal"})]}),e.jsxs("label",{className:"text-sm font-semibold",children:["What would you like changed?",e.jsx(S,{required:!0,rows:4,value:l.requestedChanges,onChange:t=>c("requestedChanges",t.target.value),placeholder:"Describe the layout, access, doors, spans, or other changes.",className:"mt-1 bg-white font-normal"})]}),e.jsxs("label",{className:"text-sm font-semibold",children:["Cover material and attachment plan",e.jsx(S,{required:!0,rows:3,value:l.coverMaterial,onChange:t=>c("coverMaterial",t.target.value),placeholder:"Tarp, shade cloth, canvas, roll-up edge, clamps, etc.",className:"mt-1 bg-white font-normal"})]}),e.jsxs("label",{className:"text-sm font-semibold",children:["Weather and location context",e.jsx(S,{required:!0,rows:3,value:l.weatherLocation,onChange:t=>c("weatherLocation",t.target.value),placeholder:"Region, exposure, wind, snow, rain, and seasonal use.",className:"mt-1 bg-white font-normal"})]})]}),e.jsxs("label",{className:"block text-sm font-semibold",children:["Optional notes",e.jsx(S,{rows:3,value:l.notes,onChange:t=>c("notes",t.target.value),className:"mt-1 bg-white font-normal"})]}),e.jsxs("div",{className:"flex flex-col gap-3 border-t border-[#d6dfdc] pt-5 sm:flex-row sm:items-center sm:justify-between",children:[e.jsx("p",{className:"max-w-xl text-xs leading-5 text-[#71827c]",children:"Plans are moderated before delivery. No engineered wind/snow rating is provided; attachment is only to structural rails/posts, with engineer or code review where applicable."}),e.jsx(W,{disabled:y,type:"submit",className:"shrink-0 gap-2 bg-[#e36b4f] text-white hover:bg-[#c85b42]",children:y?"Opening checkout…":e.jsxs(e.Fragment,{children:[e.jsx(T,{className:"h-4 w-4"}),"Continue to secure checkout"]})})]}),i&&e.jsx("p",{role:"alert",className:"text-sm font-semibold text-red-700",children:i})]})})]})}function G(){return e.jsxs("div",{className:"print-sheet hidden",style:{fontFamily:"Arial, sans-serif",color:"#24323a"},children:[e.jsxs("div",{style:{borderBottom:"3px solid #0f766e",paddingBottom:10,marginBottom:14},children:[e.jsx("div",{style:{fontSize:10,letterSpacing:2,color:"#0f766e",fontWeight:700},children:"CIRCO PVC · WORKSHOP PLAN C2"}),e.jsx("div",{style:{fontSize:24,fontWeight:800},children:"Dog Pen Shade Roof"}),e.jsx("div",{style:{fontSize:11,color:"#64747a"},children:"12 ft wide × 22 ft long · 1 in Schedule 40 / furniture-grade PVC · seven ribs at 44 in O.C."})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:18},children:[e.jsxs("div",{children:[e.jsx("h3",{style:{fontSize:12,textTransform:"uppercase"},children:"Geometry"}),e.jsx("p",{style:{fontSize:11,lineHeight:1.5},children:"Two adjacent 6 ft-wide pens share a structural divider. The roof has a 12 ft chord, 2 ft sagitta, 10 ft radius, and 73.74° included arc. Each rib follows a 154.5 in (12 ft 10.5 in) pipe path and terminates at the pens' structural top rails/posts, with the crown about 8 ft above ground."}),e.jsx("h3",{style:{fontSize:12,textTransform:"uppercase"},children:"Pipe cut plan"}),e.jsx("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:10},children:e.jsx("tbody",{children:M.map(a=>e.jsx("tr",{children:a.map((n,r)=>e.jsx("td",{style:{border:"1px solid #d6dfdc",padding:5,fontWeight:r===0?700:400},children:n},r))},a[0]))})})]}),e.jsxs("div",{children:[e.jsx("h3",{style:{fontSize:12,textTransform:"uppercase"},children:"Parts & attachment"}),e.jsx("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:10},children:e.jsx("tbody",{children:_.map(a=>e.jsx("tr",{children:a.map((n,r)=>e.jsx("td",{style:{border:"1px solid #d6dfdc",padding:5,fontWeight:r===0?700:400},children:n},r))},a[0]))})}),e.jsxs("p",{style:{fontSize:10,marginTop:10},children:[e.jsx("strong",{children:"Cover:"})," 16 × 24 ft tarp or canvas. Approx. 18.75 in side overhang and 12 in end overhang. A 12 × 22 ft tarp is too small for the curved surface and tie-down allowance."]})]})]}),e.jsx("h3",{style:{fontSize:12,textTransform:"uppercase",marginTop:16},children:"Build sequence"}),e.jsxs("ol",{style:{columns:2,fontSize:10,lineHeight:1.55,paddingLeft:18},children:[e.jsx("li",{children:"Verify pens are anchored; brace or block any flexible top rails."}),e.jsx("li",{children:"Mark stations at 0, 44, 88, 132, 176, 220, 264 in."}),e.jsx("li",{children:"Assemble and bend each rib; stagger splice directions away from the crown clamp."}),e.jsx("li",{children:"Clamp eaves to structural rails/posts, then align shoulder and ridge purlins."}),e.jsx("li",{children:"Add purlins, square the 12 × 22 ft rectangle, and check all clamps."}),e.jsx("li",{children:"Tension tarp from center outward with removable mechanical clamps."}),e.jsx("li",{children:"Inspect for sharp edges, loose clamps, animal access, and weather changes."})]}),e.jsx("p",{style:{fontSize:9,borderTop:"1px solid #d6dfdc",paddingTop:8,color:"#64747a"},children:"Feasible as a shade/rain canopy only when existing pen framing is sound. Not engineered for snow, extreme wind, climbing, or animal loading. Remove tarp for severe weather or snow. Consult local codes or an engineer where required. No wind rating is promised."})]})}function xe(){const[a,n]=v.useState([]),r=s=>n(i=>i.includes(s)?i.filter(m=>m!==s):[...i,s]),h=()=>{z("plan_printed",{plan:"dog_pen_shade",plan_number:"C2"}),window.print()},y=["Confirm both pens are anchored and the outer top rails form a strong 12 × 22 ft rectangle.","Add blocking or metal rail braces if any rail flexes. Never attach to chain-link fabric alone.","Mark the seven rib stations: 0, 44, 88, 132, 176, 220, 264 inches.","Cut and dry-fit every section. Join each 120 in + 34.5 in rib with one straight coupling.","Bend ribs into the shallow arc, clamp both eaves to the pen top rails/posts, then align the two shoulders and ridge.","Install five longitudinal lines. Stagger the two couplings between adjacent purlins.","Square the frame. Tension a 16 × 24 ft tarp from center outward; keep attachment mechanical.","Walk the finished frame: check clamps, edges, tie-downs, rail movement, and animal clearance."];return e.jsxs(e.Fragment,{children:[e.jsx(G,{}),e.jsxs("div",{className:"calculator-ui min-h-screen bg-[#f4f7f4] text-[#24323a]",children:[e.jsx(H,{}),e.jsx("div",{className:"no-print sticky top-14 z-20 border-b border-[#d6dfdc] bg-[#f8fbf8]/95 backdrop-blur",children:e.jsxs("div",{className:"mx-auto flex max-w-6xl items-center justify-between gap-3 px-4 py-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx(E,{href:"/plans",className:"rounded-md p-1 text-[#668078] hover:bg-[#e6efeb] hover:text-[#24323a]",children:e.jsx($,{className:"h-5 w-5"})}),e.jsx("span",{className:"h-5 w-px bg-[#d6dfdc]"}),e.jsx("span",{className:"truncate text-sm font-bold",children:"Dog Pen Shade Roof"}),e.jsx(C,{className:"hidden bg-[#dceee9] text-[#0f766e] hover:bg-[#dceee9] sm:inline-flex",children:"NEW · C2"})]}),e.jsxs(W,{onClick:h,size:"sm",className:"shrink-0 gap-2 bg-[#0f766e] text-white hover:bg-[#0a5c56]",children:[e.jsx(P,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"Print cut sheet"})]})]})}),e.jsxs("main",{className:"mx-auto max-w-6xl space-y-6 px-4 py-6 sm:py-8",children:[e.jsx("section",{className:"overflow-hidden rounded-2xl border border-[#cbdcd6] bg-[#e7f1ed] shadow-sm",children:e.jsxs("div",{className:"grid items-center gap-6 p-6 sm:p-9 lg:grid-cols-[1.1fr_.9fr]",children:[e.jsxs("div",{children:[e.jsx("p",{className:"mb-3 font-mono text-[11px] font-bold uppercase tracking-[.2em] text-[#0f766e]",children:"CIRCO PVC / WORKSHOP PLAN C2"}),e.jsx("h1",{className:"max-w-xl text-4xl font-black tracking-tight text-[#24323a] sm:text-5xl",children:"A quiet roof over two busy pens."}),e.jsx("p",{className:"mt-4 max-w-xl text-base leading-7 text-[#536761]",children:"A low-profile arched shade and rain canopy that follows the structure you already have — with dimensions you can mark on the rail before buying a stick of pipe."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-2",children:[e.jsx(C,{variant:"outline",className:"border-[#a8c6bd] bg-[#f8fbf8] text-[#0f766e]",children:"12 
1× 22 ft footprint"}),e.jsx(C,{variant:"outline",className:"border-[#a8c6bd] bg-[#f8fbf8] text-[#0f766e]",children:"7 ribs / 44 in O.C."}),e.jsx(C,{variant:"outline",className:"border-[#a8c6bd] bg-[#f8fbf8] text-[#0f766e]",children:"1 in PVC"})]}),e.jsxs("a",{href:"#customize",onClick:()=>z("pvc_customization_viewed",{plan:"dog_pen_shade"}),className:"mt-6 inline-flex items-center gap-2 rounded-md bg-[#e36b4f] px-5 py-3 text-sm font-bold text-white shadow-sm transition hover:bg-[#c85b42]",children:["Customize this plan ",e.jsx(T,{className:"h-4 w-4"})]})]}),e.jsxs("div",{className:"relative rounded-xl border border-[#b7d0c8] bg-[#f8fbf8] p-3",children:[e.jsx("div",{className:"absolute left-4 top-4 rounded bg-[#e36b4f] px-2 py-1 font-mono text-[10px] font-bold text-white",children:"FIELD DIMENSIONS"}),e.jsx(A,{})]})]})}),e.jsx("section",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[["154.5 in","pipe path / rib"],["10 ft","arc radius"],["22 sticks","10 ft shopping count"],["16 × 24 ft","cover recommendation"]].map(([s,i])=>e.jsxs("div",{className:"rounded-xl border border-[#d6dfdc] bg-[#fbfdfb] p-4",children:[e.jsx("p",{className:"font-mono text-2xl font-black text-[#0f766e]",children:s}),e.jsx("p",{className:"mt-1 text-xs uppercase tracking-wide text-[#71827c]",children:i})]},s))}),e.jsxs(p,{className:"border-[#d6dfdc] shadow-sm",children:[e.jsx(u,{children:e.jsxs(N,{className:"flex items-center gap-2 text-lg",children:[e.jsx(B,{className:"h-5 w-5 text-[#e36b4f]"}),"Read this before you build"]})}),e.jsxs(g,{className:"grid gap-5 text-sm leading-6 text-[#536761] md:grid-cols-2",children:[e.jsx("p",{children:"The plan covers two adjacent 6 ft-wide enclosures. Existing pen walls are about 6 ft tall; each arched rib is clamped to the structural top rails/posts above the mesh, then rises only 2 ft above that rail, putting the crown near 8 ft above ground. That shallow profile keeps the cover visually and physically close to the pens while still shedding rain."}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-[#24323a]",children:"Feasibility:"})," this is possible as a shade/rain canopy if the existing pen framing is structurally sound. It is not engineered for snow, extreme wind, climbing, or animal loading. Remove the tarp for severe weather or snow; consult local codes or an engineer where required. This plan does not promise a wind rating."]})]})]}),e.jsxs("section",{children:[e.jsxs("div",{className:"mb-3 flex items-end justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-mono text-[11px] font-bold uppercase tracking-[.18em] text-[#e36b4f]",children:"01 / Read the geometry"}),e.jsx("h2",{className:"mt-1 text-2xl font-black",children:"The frame, in four views"})]}),e.jsx(I,{className:"hidden h-7 w-7 text-[#a8c6bd] sm:block"})]}),e.jsx("div",{className:"grid gap-4 md:grid-cols-2",children:[["Front elevation",e.jsx(A,{})],["Side elevation / stations",e.jsx(V,{})],["Top / plan view",e.jsx(K,{})],["Connection detail",e.jsx(Q,{})]].map(([s,i])=>e.jsxs(p,{className:"border-[#d6dfdc] bg-[#fbfdfb]",children:[e.jsx(u,{className:"pb-1",children:e.jsx("p",{className:"font-mono text-[10px] font-bold uppercase tracking-widest text-[#71827c]",children:s})}),e.jsx(g,{className:"pt-0",children:i})]},s))})]}),e.jsxs("section",{className:"grid gap-6 lg:grid-cols-[1.05fr_.95fr]",children:[e.jsxs(p,{className:"border-[#d6dfdc]",children:[e.jsxs(u,{children:[e.jsxs(N,{className:"flex items-center gap-2",children:[e.jsx(L,{className:"h-5 w-5 text-[#e36b4f]"}),"Shopping & cut plan"]}),e.jsx("p",{className:"text-sm text-[#71827c]",children:"Pack the cuts before you head to the store."})]}),e.jsxs(g,{className:"space-y-2",children:[M.map(s=>e.jsxs("div",{className:"grid grid-cols-[1.1fr_.9fr_.55fr] gap-2 border-b border-[#e8efec] py-3 text-sm last:border-0",children:[e.jsx("span",{className:"font-semibold",children:s[0]}),e.jsx("span",{className:"font-mono text-[#0f766e]",children:s[1]}),e.jsxs("span",{className:"text-right text-xs text-[#71827c]",children:[s[2],e.jsx("br",{}),s[3]]})]},s[0])),e.jsxs("div",{className:"rounded-lg bg-[#eaf3ef] p-3 text-xs leading-5 text-[#536761]",children:[e.jsx("strong",{className:"text-[#0f766e]",children:"Splice note:"})," Rotate and stagger rib splice directions where practical; keep each splice away from the crown clamp. Do not glue until the dry-fit and cover tension are confirmed."]})]})]}),e.jsxs(p,{className:"border-[#d6dfdc]",children:[e.jsx(u,{children:e.jsxs(N,{className:"flex items-center gap-2",children:[e.jsx(F,{className:"h-5 w-5 text-[#0f766e]"}),"Parts & attachment"]})}),e.jsxs(g,{className:"space-y-3",children:[_.map(s=>e.jsxs("div",{className:"flex items-start justify-between gap-3 border-b border-[#e8efec] pb-3 text-sm last:border-0",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-semibold",children:s[0]}),e.jsx("p",{className:"text-xs text-[#71827c]",children:s[2]})]}),e.jsx("span",{className:"whitespace-nowrap rounded bg-[#eaf3ef] px-2 py-1 font-mono text-xs font-bold text-[#0f766e]",children:s[1]})]},s[0])),e.jsxs("p",{className:"rounded-lg bg-[#fff3e9] p-3 text-xs leading-5 text-[#95513d]",children:[e.jsx("strong",{children:"Cover:"})," use a 16 × 24 ft tarp or canvas. It leaves about 18.75 in of side overhang over the 12 ft 10.5 in curved arch and 12 in at each end. An exact 12 × 22 ft tarp is too small once curvature and tie-down allowance are included."]})]})]})]}),e.jsxs("section",{className:"grid gap-6 lg:grid-cols-[.8fr_1.2fr]",children:[e.jsxs(p,{className:"border-[#d6dfdc] bg-[#fffaf5]",children:[e.jsx(u,{children:e.jsxs(N,{className:"flex items-center gap-2",children:[e.jsx(U,{className:"h-5 w-5 text-[#c66a2d]"}),"Structural checkpoint"]})}),e.jsxs(g,{className:"space-y-3 text-sm leading-6 text-[#6d5c50]",children:[e.jsx("p",{children:"Fasten only to structural top rails or posts. Never use the chain-link fabric alone as an anchor."}),e.jsx("p",{children:"Verify the pens are anchored and the outer top rails make a strong 12 × 22 ft rectangle. Add blocking or metal rail braces anywhere the rails flex."}),e.jsx("p",{children:"Removable mechanical clamps are preferred for the cover. The tarp should come off before severe weather."})]})]}),e.jsxs(p,{className:"border-[#d6dfdc]",children:[e.jsxs(u,{children:[e.jsx(N,{className:"text-lg",children:"Assembly sequence"}),e.jsx("p",{className:"text-sm text-[#71827c]",children:"Check off each phase as the frame takes shape."})]}),e.jsx(g,{className:"space-y-2",children:y.map((s,i)=>e.jsxs("button",{type:"button",onClick:()=>r(i),className:`flex w-full items-start gap-3 rounded-lg border p-3 text-left text-sm transition-colors ${a.includes(i)?"border-[#a8c6bd] bg-[#eaf3ef] text-[#536761]":"border-[#e8efec] bg-[#fbfdfb] hover:border-[#b7d0c8]"}`,children:[e.jsx("span",{className:`mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border font-mono text-[10px] ${a.includes(i)?"border-[#0f766e] bg-[#0f766e] text-white":"border-[#a8b9b3] text-[#71827c]"}`,children:a.includes(i)?e.jsx(O,{className:"h-3 w-3"}):i+1}),e.jsx("span",{children:s})]},s))})]})]}),e.jsx(J,{}),e.jsxs("div",{className:"no-print flex flex-col items-center justify-between gap-4 roun
1ded-xl border border-[#b7d0c8] bg-[#e7f1ed] p-5 sm:flex-row",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-bold",children:"Ready for the tape measure?"}),e.jsx("p",{className:"text-sm text-[#536761]",children:"Print a clean one-page summary with the cut list, parts, and safety notes."})]}),e.jsxs(W,{onClick:h,className:"gap-2 bg-[#0f766e] text-white hover:bg-[#0a5c56]",children:[e.jsx(P,{className:"h-4 w-4"}),"Print summary / cut sheet"]})]})]})]})]})}export{xe as default};

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.