1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16015,(e,t,s)=>{},98547,(e,t,s)=>{var r=e.i(47167);e.r(16015);var a=e.r(71645),i=a&&"object"==typeof a&&"default"in a?a:{default:a},n=void 0!==r.default&&r.default.env&&!0,o=function(e){return"[object String]"===Object.prototype.toString.call(e)},l=function(){function e(e){var t=void 0===e?{}:e,s=t.name,r=void 0===s?"stylesheet":s,a=t.optimizeForSpeed,i=void 0===a?n:a;c(o(r),"`name` must be a string"),this._name=r,this._deletedRulePlaceholder="#"+r+"-deleted-rule____{}",c("boolean"==typeof i,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=i,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var l="u">typeof window&&document.querySelector('meta[property="csp-nonce"]');this._nonce=l?l.getAttribute("content"):null}var t,s=e.prototype;return s.setOptimizeForSpeed=function(e){c("boolean"==typeof e,"`setOptimizeForSpeed` accepts a boolean"),c(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=e,this.inject()},s.isOptimizeForSpeed=function(){return this._optimizeForSpeed},s.inject=function(){var e=this;if(c(!this._injected,"sheet already injected"),this._injected=!0,"u">typeof window&&this._optimizeForSpeed){this._tags[0]=this.makeStyleTag(this._name),this._optimizeForSpeed="insertRule"in this.getSheet(),this._optimizeForSpeed||(n||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(t,s){return"number"==typeof s?e._serverSheet.cssRules[s]={cssText:t}:e._serverSheet.cssRules.push({cssText:t}),s},deleteRule:function(t){e._serverSheet.cssRules[t]=null}}},s.getSheetForTag=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]},s.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},s.insertRule=function(e,t){if(c(o(e),"`insertRule` accepts only strings"),"u"<typeof window)return"number"!=typeof t&&(t=this._serverSheet.cssRules.length),this._serverSheet.insertRule(e,t),this._rulesCount++;if(this._optimizeForSpeed){var s=this.getSheet();"number"!=typeof t&&(t=s.cssRules.length);try{s.insertRule(e,t)}catch(t){return n||console.warn("StyleSheet: illegal rule: \n\n"+e+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var r=this._tags[t];this._tags.push(this.makeStyleTag(this._name,e,r))}return this._rulesCount++},s.replaceRule=function(e,t){if(this._optimizeForSpeed||"u"<typeof window){var s="u">typeof window?this.getSheet():this._serverSheet;if(t.trim()||(t=this._deletedRulePlaceholder),!s.cssRules[e])return e;s.deleteRule(e);try{s.insertRule(t,e)}catch(r){n||console.warn("StyleSheet: illegal rule: \n\n"+t+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),s.insertRule(this._deletedRulePlaceholder,e)}}else{var r=this._tags[e];c(r,"old rule at index `"+e+"` not found"),r.textContent=t}return e},s.deleteRule=function(e){if("u"<typeof window)return void this._serverSheet.deleteRule(e);if(this._optimizeForSpeed)this.replaceRule(e,"");else{var t=this._tags[e];c(t,"rule at index `"+e+"` not found"),t.parentNode.removeChild(t),this._tags[e]=null}},s.flush=function(){this._injected=!1,this._rulesCount=0,"u">
1typeof window?(this._tags.forEach(function(e){return e&&e.parentNode.removeChild(e)}),this._tags=[]):this._serverSheet.cssRules=[]},s.cssRules=function(){var e=this;return"u"<typeof window?this._serverSheet.cssRules:this._tags.reduce(function(t,s){return s?t=t.concat(Array.prototype.map.call(e.getSheetForTag(s).cssRules,function(t){return t.cssText===e._deletedRulePlaceholder?null:t})):t.push(null),t},[])},s.makeStyleTag=function(e,t,s){t&&c(o(t),"makeStyleTag accepts only strings as second parameter");var r=document.createElement("style");this._nonce&&r.setAttribute("nonce",this._nonce),r.type="text/css",r.setAttribute("data-"+e,""),t&&r.appendChild(document.createTextNode(t));var a=document.head||document.getElementsByTagName("head")[0];return s?a.insertBefore(r,s):a.appendChild(r),r},t=[{key:"length",get:function(){return this._rulesCount}}],function(e,t){for(var s=0;s<t.length;s++){var r=t[s];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(e.prototype,t),e}();function c(e,t){if(!e)throw Error("StyleSheet: "+t+".")}var d=function(e){for(var t=5381,s=e.length;s;)t=33*t^e.charCodeAt(--s);return t>>>0},u={};function m(e,t){if(!t)return"jsx-"+e;var s=String(t),r=e+s;return u[r]||(u[r]="jsx-"+d(e+"-"+s)),u[r]}function h(e,t){"u"<typeof window&&(t=t.replace(/\/style/gi,"\\/style"));var s=e+t;return u[s]||(u[s]=t.replace(/__jsx-style-dynamic-selector/g,e)),u[s]}var x=function(){function e(e){var t=void 0===e?{}:e,s=t.styleSheet,r=void 0===s?null:s,a=t.optimizeForSpeed,i=void 0!==a&&a;this._sheet=r||new l({name:"styled-jsx",optimizeForSpeed:i}),this._sheet.inject(),r&&"boolean"==typeof i&&(this._sheet.setOptimizeForSpeed(i),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var t=e.prototype;return t.add=function(e){var t=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(e.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),"u">typeof window&&!this._fromServer&&(this._fromServer=this.selectFromServer(),this._instancesCounts=Object.keys(this._fromServer).reduce(function(e,t){return e[t]=0,e},{}));var s=this.getIdAndRules(e),r=s.styleId,a=s.rules;if(r in this._instancesCounts){this._instancesCounts[r]+=1;return}var i=a.map(function(e){return t._sheet.insertRule(e)}).filter(function(e){return -1!==e});this._indices[r]=i,this._instancesCounts[r]=1},t.remove=function(e){var t=this,s=this.getIdAndRules(e).styleId;if(function(e,t){if(!e)throw Error("StyleSheetRegistry: "+t+".")}(s in this._instancesCounts,"styleId: `"+s+"` not found"),this._instancesCounts[s]-=1,this._instancesCounts[s]<1){var r=this._fromServer&&this._fromServer[s];r?(r.parentNode.removeChild(r),delete this._fromServer[s]):(this._indices[s].forEach(function(e){return t._sheet.deleteRule(e)}),delete this._indices[s]),delete this._instancesCounts[s]}},t.update=function(e,t){this.add(t),this.remove(e)},t.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},t.cssRules=function(){var e=this,t=this._fromServer?Object.keys(this._fromServer).map(function(t){return[t,e._fromServer[t]]}):[],s=this._sheet.cssRules();return t.concat(Object.keys(this._indices).map(function(t){return[t,e._indices[t].map(function(e){return s[e].cssText}).join(e._optimizeForSpeed?"":"\n")]}).filter(function(e){return!!e[1]}))},t.styles=function(e){var t,s;return t=this.cssRules(),void 0===(s=e)&&(s={}),t.map(function(e){var t=e[0],r=e[1];return i.default.createElement("style",{id:"__"+t,key:"__"+t,nonce:s.nonce?s.nonce:void 0,dangerouslySetInnerHTML:{__html:r}})})},t.getIdAndRules=function(e){var t=e.children,s=e.dynamic,r=e.id;if(s){var a=m(r,s);return{styleId:a,rules:Array.isArray(t)?t.map(function(e){return h(a,e)}):[h(a,t)]}}return{styleId:m(r),rules:Array.isArray(t)?t:[t]}},t.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(e,t){return e[t.id.slice(2)]=t,e},{})},e}(),f=a.createContext(null);function p(){return new x}function y(){return a.useContext(f)}f.displayName="StyleSheetContext";var g=i.default.useInsertionEffect||i.default.useLayoutEffect,j="u">typeof window?p():void 0;function b(e){var t=j||y();return t&&("u"<typeof window?t.add(e):g(function(){return t.add(e),function(){t.remove(e)}},[e.id,String(e.dynamic)])),null}b.dynamic=function(e){return e.map(function(e){return m(e[0],e[1])}).join(" ")},s.StyleRegistry=function(e){var t=e.registry,s=e.children,r=a.useContext(f),n=a.useState(function(){return r||t||p()})[0];return i.default.createElement(f.Provider,{value:n},s)},s.createStyleRegistry=p,s.style=b,s.useStyleRegistry=y},37902,(e,t,s)=>{t.exports=e.r(98547).style},76946,e=>{"use strict";var t=e.i(43476),s=e.i(71645),r=e.i(18566);let a=({product:e,onSelect:s,onStartBooking:r})=>{let a=e.comments.replace(/"/g,"").split(",").map(e=>
1e.trim()).filter(Boolean).join(" ⢠");return(0,t.jsxs)("div",{className:`bg-[var(--color-surface)] rounded-lg shadow-md border border-[var(--color-border)] hover:border-[var(--color-primary)] hover:shadow-lg transition-all duration-300 flex flex-col ${"package"===e.category?"ring-2 ring-amber-400":""}`,children:["package"===e.category&&(0,t.jsx)("div",{className:"bg-amber-400 text-center py-1 px-4 text-sm font-semibold text-amber-900 rounded-t-md",children:"Best Value"}),(0,t.jsxs)("div",{className:"p-6 flex-grow flex flex-col",children:[(0,t.jsx)("h4",{className:"text-xl font-bold text-[var(--color-text-primary)]",children:e.name}),(0,t.jsxs)("p",{className:"text-2xl font-bold text-[var(--color-primary)] my-3",children:["£",e.price]}),(0,t.jsx)("p",{className:"text-xs text-gray-500 -mt-2 mb-2",children:"+ £50 phlebotomy fee per visit"}),(0,t.jsx)("p",{className:"text-sm text-[var(--color-text-secondary)] flex-grow",children:a||"Specific allergen blood test."})]}),(0,t.jsxs)("div",{className:"p-4 bg-gray-50 rounded-b-lg mt-4 grid grid-cols-2 gap-2",children:[(0,t.jsx)("button",{onClick:()=>s(e),className:"w-full bg-white text-[var(--color-primary)] font-bold py-3 px-2 rounded-lg border-2 border-[var(--color-primary)] hover:bg-blue-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[var(--color-primary)] transition-colors text-sm",children:"View Details"}),(0,t.jsx)("button",{onClick:()=>r(e),className:"w-full bg-[var(--color-primary)] text-white font-bold py-3 px-2 rounded-lg hover:bg-[var(--color-primary-hover)] focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[var(--color-primary)] transition-colors text-sm",children:"Book Now"})]})]})};var i=e.i(37902);let n=Array.from({length:6},(e,t)=>{let s=Math.sin(.8*t);return{y:60+25*t,x1:Math.round((480+25*s)*100)/100,x2:Math.round((480-25*s)*100)/100,i:t}}),o=()=>(0,t.jsxs)("div",{className:"jsx-e6c4644ca83f54da relative w-full h-48 md:h-56 overflow-hidden rounded-2xl bg-gradient-to-br from-blue-600 via-indigo-600 to-purple-700",children:[(0,t.jsx)("div",{className:"jsx-e6c4644ca83f54da absolute inset-0 opacity-30",children:(0,t.jsxs)("svg",{preserveAspectRatio:"xMidYMid slice",className:"jsx-e6c4644ca83f54da w-full h-full",children:[(0,t.jsx)("defs",{className:"jsx-e6c4644ca83f54da",children:(0,t.jsx)("pattern",{id:"testsGrid",x:"0",y:"0",width:"40",height:"40",patternUnits:"userSpaceOnUse",className:"jsx-e6c4644ca83f54da",children:(0,t.jsx)("path",{d:"M 40 0 L 0 0 0 40",fill:"none",stroke:"white",strokeWidth:"0.5",opacity:"0.3",className:"jsx-e6c4644ca83f54da"})})}),(0,t.jsx)("rect",{width:"100%",height:"100%",fill:"url(#testsGrid)",className:"jsx-e6c4644ca83f54da"})]})}),(0,t.jsxs)("svg",{viewBox:"0 0 800 250",preserveAspectRatio:"xMidYMid slice",className:"jsx-e6c4644ca83f54da absolute inset-0 w-full h-full",children:[(0,t.jsxs)("defs",{className:"jsx-e6c4644ca83f54da",children:[(0,t.jsxs)("linearGradient",{id:"tubeGrad1",x1:"0%",y1:"0%",x2:"0%",y2:"100%",className:"jsx-e6c4644ca83f54da",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#ffffff",stopOpacity:"0.9",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#e0e7ff",stopOpacity:"0.7",className:"jsx-e6c4644ca83f54da"})]}),(0,t.jsxs)("linearGradient",{id:"liquidGrad1",x1:"0%",y1:"0%",x2:"0%",y2:"100%",className:"jsx-e6c4644ca83f54da",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#fbbf24",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#f59e0b",className:"jsx-e6c4644ca83f54da"})]}),(0,t.jsxs)("linearGradient",{id:"liquidGrad2",x1:"0%",y1:"0%",x2:"0%",y2:"100%",className:"jsx-e6c4644ca83f54da",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#34d399",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#10b981",className:"jsx-e6c4644ca83f54da"})]}),(0,t.jsxs)("linearGradient",{id:"liquidGrad3",x1:"0%",y1:"0%",x2:"0%",y2:"100%",className:"jsx-e6c4644ca83f54da",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#f472b6",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#ec4899",className:"jsx-e6c4644ca83f54da"})]}),(0,t.jsxs)("linearGradient",{id:"liquidGrad4",x1:"0%",y1:"0%",x2:"0%",y2:"100%",className:"jsx-e6c4644ca83f54da",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#60a5fa",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#3b82f6",className:"jsx-e6c4644ca83f54da"})]})]}),(0,t.jsxs)("g",{style:{transformOrigin:"100px 125px"},className:"jsx-e6c4644ca83f54da animate-tube-1",children:[(0,t.jsx)("rect",{x:"90",y:"50",width:"20",height:"100",rx:"10",fill:"url(#tubeGrad1)",opacity:"0.9",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("rect",{x:"93",y:"90",width:"14",height:"55",rx:"7",fill:"url(#liquidGrad1)",className:"jsx-e6c4644ca83f54da animate-liquid-1"}),(0,t.jsx)("rect",{x:"85",y:"45",width:"30",height:"12",rx:"2",fill:"white",opacity:"0.8",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("ellipse",{cx:"100",cy:"150",rx:"10",ry:"3",fill:"white",opacity:"0.3",className:"jsx-e6c4644ca83f54da"})]}),(0,t.jsxs)("g",{style:{transformOrigin:"200px 125px"},className:"jsx-e6c4644ca83f54da animate-tube-2",children:[(0,t.jsx)("rect",{x:"190",y:"60",width:"20",height:"90",rx:"10",fill:"url(#tubeGrad1)",opacity:"0.9",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("rect",{x:"193",y:"95",width:"14",height:"50",rx:"7",fill:"url(#liquidGrad2)",className:"jsx-e6c4644ca83f54da animate-liquid-2"}),(0,t.jsx)("rect",{x:"185",y:"55",width:"30",height:"12",rx:"2",fill:"white",opacity:"0.8",className:"jsx-e6c4644ca83f54da"})]}),(0,t.jsxs)("g",{style:{transformOrigin:"300px 125px"},className:"jsx-e6c4644ca83f54da animate-tube-3",children:[(0,t.jsx)("rect",{x:"290",y:"45",width:"20",height:"110",rx:"10",fill:"url(#tubeGrad1)",opacity:"0.9",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("rect",{x:"293",y:"100",width:"14",height:"50",rx:"7",fill:"url(#liquidGrad3)",className:"jsx-e6c4644ca83f54da animate-liquid-3"}),(0,t.jsx)("rect",{x:"285",y:"40",width:"30",height:"12",rx:"2",fill:"white",opacity:"0.8",className:"jsx-e6c4644ca83f54da"})]}),(0,t.jsx)("g",{className:"jsx-e6c4644ca83f54da animate-dna-float",children:n.map(({y:e,x1:s,x2:r,i:a})=>(0,t.jsxs)("g",{className:"jsx-e6c4644ca83f54da",children:[(0,t.jsx)("line",{x1:s,y1:e,x2:r,y2:e,stroke:"white",strokeWidth:"2",opacity:"0.4",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("circle",{cx:s,cy:e,r:"6",fill:"white",opacity:"0.7",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("circle",{cx:r,cy:e,r:"6",fill:"#c4b5fd",opacity:"0.7",className:"jsx-e6c4644ca83f54da"})]},a))}),(0,t.jsxs)("g",{style:{transformOrigin:"650px 125px"},className:"jsx-e6c4644ca83f54da animate-microscope",children:[(0,t.jsx)("ellipse",{cx:"650",cy:"180",rx:"40",ry:"10",fill:"white",opacity:"0.2",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("rect",{x:"640",y:"100",width:"20",height:"80",rx:"3",fill:"white",opacity:"0.8",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("circle",{cx:"650",cy:"85",r:"25",fill:"none",stroke:"white",strokeWidth:"4",opacity:"0.8",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("circle",{cx:"650",cy:"85",r:"15",fill:"white",opacity:"0.3",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("rect",{x:"620",y:"175",width:"60",height:"8",rx:"2",fill:"white",opacity:"0.7",className:"jsx-e6c4644ca83f54da"})]}),[{cx:380,cy:80,r:8},{cx:420,cy:180,r:6},{cx:550,cy:60,r:5},{cx:720,cy:90,r:7},{cx:750,cy:170,r:5}].map((e,s)=>(0,t.jsxs)("g",{className:`jsx-e6c4644ca83f54da animate-molecule-${s%3+1}`,children:[(0,t.jsx)("circle",{cx:e.cx,cy:e.cy,r:e.r,fill:"white",opacity:"0.5",className:"jsx-e6c4644ca83f54da"}
1),(0,t.jsx)("circle",{cx:e.cx+1.5*e.r,cy:e.cy-e.r,r:.6*e.r,fill:"white",opacity:"0.4",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("line",{x1:e.cx,y1:e.cy,x2:e.cx+1.5*e.r,y2:e.cy-e.r,stroke:"white",strokeWidth:"2",opacity:"0.3",className:"jsx-e6c4644ca83f54da"})]},s)),[{x:150,y:30},{x:350,y:200},{x:580,y:190},{x:700,y:40}].map((e,s)=>(0,t.jsxs)("g",{opacity:"0.4",className:`jsx-e6c4644ca83f54da animate-plus-${s%2+1}`,children:[(0,t.jsx)("rect",{x:e.x-6,y:e.y-2,width:"12",height:"4",rx:"1",fill:"white",className:"jsx-e6c4644ca83f54da"}),(0,t.jsx)("rect",{x:e.x-2,y:e.y-6,width:"4",height:"12",rx:"1",fill:"white",className:"jsx-e6c4644ca83f54da"})]},s))]}),(0,t.jsx)("div",{className:"jsx-e6c4644ca83f54da absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent animate-shimmer"}),(0,t.jsx)("div",{className:"jsx-e6c4644ca83f54da absolute inset-0 flex items-center justify-center",children:(0,t.jsxs)("div",{className:"jsx-e6c4644ca83f54da text-center text-white px-4",children:[(0,t.jsxs)("div",{className:"jsx-e6c4644ca83f54da inline-flex items-center gap-2 bg-white/20 backdrop-blur-sm rounded-full px-4 py-1.5 mb-4",children:[(0,t.jsxs)("span",{className:"jsx-e6c4644ca83f54da relative flex h-2 w-2",children:[(0,t.jsx)("span",{className:"jsx-e6c4644ca83f54da animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"}),(0,t.jsx)("span",{className:"jsx-e6c4644ca83f54da relative inline-flex rounded-full h-2 w-2 bg-green-400"})]}),(0,t.jsx)("span",{className:"jsx-e6c4644ca83f54da text-sm font-medium",children:"60+ Tests Available"})]}),(0,t.jsx)("h1",{className:"jsx-e6c4644ca83f54da text-3xl md:text-4xl lg:text-5xl font-extrabold mb-3 drop-shadow-lg",children:"Find the Right Allergy Test"}),(0,t.jsx)("p",{className:"jsx-e6c4644ca83f54da text-lg md:text-xl text-white/90 max-w-2xl mx-auto",children:"Comprehensive diagnostic blood tests for environmental, food, and specific allergens"})]})}),(0,t.jsx)(i.default,{id:"e6c4644ca83f54da",children:"@keyframes tube1{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-8px)rotate(3deg)}}@keyframes tube2{0%,to{transform:translateY(0)rotate(2deg)}50%{transform:translateY(-12px)rotate(-2deg)}}@keyframes tube3{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-6px)rotate(4deg)}}@keyframes liquid1{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.1)}}@keyframes liquid2{0%,to{transform:scaleY(1)}50%{transform:scaleY(.9)}}@keyframes liquid3{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.15)}}@keyframes dnaFloat{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-10px)rotate(5deg)}}@keyframes microscope{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes molecule1{0%,to{transform:translate(0)rotate(0)}50%{transform:translate(5px,-8px)rotate(15deg)}}@keyframes molecule2{0%,to{transform:translate(0)rotate(0)}50%{transform:translate(-8px,-5px)rotate(-10deg)}}@keyframes molecule3{0%,to{transform:translate(0)}50%{transform:translate(3px,-10px)}}@keyframes plus1{0%,to{opacity:.4;transform:scale(1)rotate(0)}50%{opacity:.6;transform:scale(1.2)rotate(15deg)}}@keyframes plus2{0%,to{opacity:.4;transform:scale(1)rotate(0)}50%{opacity:.5;transform:scale(.8)rotate(-10deg)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.animate-tube-1{animation:4s ease-in-out infinite tube1}.animate-tube-2{animation:5s ease-in-out .5s infinite tube2}.animate-tube-3{animation:4.5s ease-in-out 1s infinite tube3}.animate-liquid-1{transform-origin:bottom;animation:3s ease-in-out infinite liquid1}.animate-liquid-2{transform-origin:bottom;animation:4s ease-in-out .5s infinite liquid2}.animate-liquid-3{transform-origin:bottom;animation:3.5s ease-in-out 1s infinite liquid3}.animate-dna-float{animation:6s ease-in-out infinite dnaFloat}.animate-microscope{animation:4s ease-in-out infinite microscope}.animate-molecule-1{animation:5s ease-in-out infinite molecule1}.animate-molecule-2{animation:6s ease-in-out .5s infinite molecule2}.animate-molecule-3{animation:4s ease-in-out 1s infinite molecule3}.animate-plus-1{animation:3s ease-in-out infinite plus1}.animate-plus-2{animation:4s ease-in-out .5s infinite plus2}.animate-shimmer{animation:3s ease-in-out infinite shimmer}"})]});
1function l(){let[e,r]=(0,s.useState)(!1),[a,i]=(0,s.useState)("idle"),[n,o]=(0,s.useState)(""),l=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;document.body.style.overflow="hidden",l.current?.focus();let s=e=>{"Escape"===e.key&&r(!1)};return document.addEventListener("keydown",s),()=>{document.body.style.overflow=t,document.removeEventListener("keydown",s)}},[e]);let c=()=>{r(!1),setTimeout(()=>{i("idle"),o("")},200)},d=async e=>{e.preventDefault(),i("submitting"),o("");let t=e.currentTarget,s=new FormData(t),r={name:String(s.get("name")||""),tel:String(s.get("tel")||""),email:String(s.get("email")||""),message:String(s.get("message")||""),company:String(s.get("company")||"")};try{let e=await fetch("/api/enquiry",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),s=await e.json().catch(()=>({}));if(!e.ok){o(s.error||"Something went wrong. Please try again."),i("error");return}i("success"),t.reset()}catch{o("Network error. Please check your connection and try again."),i("error")}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"bg-white border border-[var(--color-border)] rounded-xl p-4 md:p-6 flex flex-col sm:flex-row items-start sm:items-center gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 flex-shrink-0",children:[(0,t.jsx)("div",{className:"w-12 h-12 rounded-full bg-green-100 flex items-center justify-center",children:(0,t.jsx)("svg",{className:"w-6 h-6 text-green-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-bold text-gray-900",children:"Not sure which test you need?"}),(0,t.jsx)("p",{className:"text-sm text-gray-600",children:"Send our team a message and we'll help you find your way around our tests."})]})]}),(0,t.jsx)("div",{className:"sm:ml-auto w-full sm:w-auto",children:(0,t.jsxs)("button",{type:"button",onClick:()=>r(!0),className:"w-full sm:w-auto inline-flex items-center justify-center gap-2 px-5 py-3 rounded-lg bg-[var(--color-primary)] text-white font-semibold hover:bg-[var(--color-primary-hover)] transition-colors shadow-sm",children:[(0,t.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 3v-3z"})}),"Message our team"]})})]}),e&&(0,t.jsxs)("div",{className:"fixed inset-0 z-50 flex items-end sm:items-center justify-center p-0 sm:p-4",role:"dialog","aria-modal":"true","aria-labelledby":"enquiry-title",children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:c,"aria-hidden":"true"}),(0,t.jsxs)("div",{className:"relative w-full sm:max-w-lg bg-white rounded-t-2xl sm:rounded-2xl shadow-xl max-h-[92vh] overflow-y-auto",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4 p-5 sm:p-6 border-b border-gray-100",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{id:"enquiry-title",className:"text-lg font-bold text-gray-900",children:"Message our team"}),(0,t.jsx)("p",{className:"text-sm text-gray-500 mt-0.5",children:"Tell us what you're looking for and we'll help you find the right test. No obligation."})]}),(0,t.jsx)("button",{type:"button",onClick:c,"aria-label":"Close",className:"flex-shrink-0 p-2 -m-2 text-gray-400 hover:text-gray-600 rounded-lg",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})})]}),"success"===a?(0,t.jsxs)("div",{className:"p-6 sm:p-8 text-center",children:[(0,t.jsx)("div",{className:"w-14 h-14 mx-auto rounded-full bg-green-100 flex items-center justify-center",children:(0,t.jsx)("svg",{className:"w-7 h-7 text-green-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M5 13l4 4L19 7"})})}),(0,t.jsx)("h3",{className:"mt-4 text-lg font-bold text-gray-900",children:"Message sent"}),(0,t.jsxs)("p",{className:"mt-2 text-sm text-gray-600",children:["Thanks for getting in touch â our team will get back to you. If it's urgent, call us on"," ",(0,t.jsx)("a",{href:"tel:02071830903",className:"font-semibold text-[var(--color-primary)] hover:underline",children:"020 7183 0903"}),"."]}),(0,t.jsx)("button",{type:"button",onClick:c,className:"mt-6 px-6 py-2.5 rounded-lg bg-[var(--color-primary)] text-white font-semibold hover:bg-[var(--color-primary-hover)] transition-colors",children:"Done"})]}):(0,t.jsxs)("form",{onSubmit:d,className:"p-5 sm:p-6 space-y-4",children:[(0,t.jsx)("div",{className:"hidden","aria-hidden":"true",children:(0,t.jsxs)("label",{children:["Company",(0,t.jsx)("input",{type:"text",name:"company",tabIndex:-1,autoComplete:"off"})]})}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{htmlFor:"enq-name",className:"block text-sm font-medium text-gray-700 mb-1",children:["Name ",(0,t.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,t.jsx)("input",{ref:l,id:"enq-name",name:"name",type:"text",required:!0,maxLength:100,autoComplete:"name",className:"w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-100 focus:border-blue-500 transition-colors"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{htmlFor:"enq-tel",className:"block text-sm font-medium text-gray-700 mb-1",children:["Telephone ",(0,t.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,t.jsx)("input",{id:"enq-tel",name:"tel",type:"tel",required:!0,maxLength:40,autoComplete:"tel",className:"w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-100 focus:border-blue-500 transition-colors"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{htmlFor:"enq-email",className:"block text-sm font-medium text-gray-700 mb-1",children:["Email ",(0,t.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,t.jsx)("input",{id:"enq-email",name:"email",type:"email",required:!0,maxLength:254,autoComplete:"email",className:"w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-100 focus:border-blue-500 transition-colors"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{htmlFor:"enq-message",className:"block text-sm font-medium text-gray-700 mb-1",children:["How can we help? ",(0,t.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,t.jsx)("textarea",{id:"enq-message",name:"message",required:!0,rows:4,maxLength:2e3,placeholder:"e.g. I get hay fever in spring and react to cats â which tests cover that?",className:"w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-100 focus:border-blue-500 transition-colors resize-y"})]}),"error"===a&&(0,t.jsx)("p",{className:"text-sm text-red-600 bg-red-50 border border-red-100 rounded-lg px-3 py-2",children:n}),(0,t.jsx)("button",{type:"submit",disabled:"submitting"===a,className:"w-full inline-flex items-center justify-center gap-2 px-5 py-3 rounded-lg bg-[var(--color-primary)] text-white font-semibold hover:bg-[var(--color-primary-hover)] transition-colors shadow-sm disabled:opacity-60 disabled:cursor-not-allowed",children:"submitting"===a?"Sendingâ¦":"Send message"}),(0,t.jsx)("p",{className:"text-xs text-gray-400 leading-relaxed",children:"We'll use your details only to respond to this enquiry. Our team can explain what each test covers; for advice on which test is clinically right for you, please speak to your GP."})]})]})]})]})}e.s(["default",0,({allProducts:e})=>{let i=(0,r.useRouter)(),n=(0,r.useSearchParams)(),[c,d]=(0,s.use
1State)("");(0,s.useEffect)(()=>{let e=n.get("q");e&&d(e)},[n]);let u=(0,s.useMemo)(()=>{if(!c)return e;let t=c.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(t)||e.keywords.some(e=>e.toLowerCase().includes(t)))},[e,c]),m=(0,s.useMemo)(()=>u.reduce((e,t)=>{let s=t.category||"individual";return e[s]||(e[s]=[]),e[s].push(t),e},{}),[u]),h={package:"Allergy Packages",profile:"Allergy Profiles",individual:"Individual Allergy Tests"},x={package:(0,t.jsx)("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})}),profile:(0,t.jsx)("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"})}),individual:(0,t.jsx)("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.675.337a4 4 0 01-2.574.344l-3.113-.623a2 2 0 01-1.554-1.554l-.623-3.113a4 4 0 01.344-2.574l.337-.675a6 6 0 00.517-3.86l-.477-2.387a2 2 0 00-.547-1.022"})})},f=e=>{i.push(`/tests/${e.slug}`)},p=e=>{i.push(`/tests/${e.slug}/book`)};return(0,t.jsxs)("div",{className:"space-y-8 animate-fade-in",children:[(0,t.jsx)(o,{}),(0,t.jsxs)("div",{className:"bg-gradient-to-r from-blue-50 to-indigo-50 border border-blue-100 rounded-xl p-4 md:p-6 flex flex-col md:flex-row items-start md:items-center gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 flex-shrink-0",children:[(0,t.jsx)("div",{className:"w-12 h-12 rounded-full bg-blue-100 flex items-center justify-center",children:(0,t.jsx)("svg",{className:"w-6 h-6 text-blue-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-bold text-gray-900",children:"Phlebotomy Fee"}),(0,t.jsx)("p",{className:"text-sm text-gray-600",children:"£50 per visit"})]})]}),(0,t.jsx)("div",{className:"h-px md:h-12 w-full md:w-px bg-blue-200"}),(0,t.jsxs)("p",{className:"text-gray-600 text-sm md:text-base",children:[(0,t.jsx)("span",{className:"font-semibold text-gray-800",children:"Save money by combining tests!"})," Book multiple tests in one appointment and pay just one phlebotomy fee."]})]}),(0,t.jsx)(l,{}),(0,t.jsxs)("div",{className:"sticky top-[73px] bg-[var(--color-bg)] py-4 z-10",children:[(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)("input",{type:"search",placeholder:"Search for a test (e.g., 'peanut', 'grass pollen', 'cat dander')...",value:c,onChange:e=>d(e.target.value),className:"w-full pl-12 pr-4 py-4 border-2 border-gray-200 rounded-xl focus:ring-4 focus:ring-blue-100 focus:border-blue-500 transition-all bg-white shadow-sm group-hover:shadow-md"}),(0,t.jsx)("div",{className:"absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none",children:(0,t.jsx)("svg",{className:"h-5 w-5 text-gray-400 group-focus-within:text-blue-500 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})}),c&&(0,t.jsx)("button",{onClick:()=>d(""),className:"absolute inset-y-0 right-0 pr-4 flex items-center text-gray-400 hover:text-gray-600",children:(0,t.jsx)("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})})]}),c&&(0,t.jsxs)("p",{className:"mt-2 text-sm text-gray-500",children:["Found ",(0,t.jsx)("span",{className:"font-semibold text-gray-700",children:u.length})," test",1!==u.length?"s":"",' matching "',c,'"']})]}),0===u.length?(0,t.jsxs)("div",{className:"text-center py-16 px-6 bg-white rounded-2xl shadow-sm border border-gray-100",children:[(0,t.jsx)("div",{className:"w-16 h-16 mx-auto mb-4 rounded-full bg-gray-100 flex items-center justify-center",children:(0,t.jsx)("svg",{className:"w-8 h-8 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),(0,t.jsx)("h3",{className:"text-xl font-bold text-gray-900",children:"No Tests Found"}),(0,t.jsxs)("p",{className:"text-gray-500 mt-2 max-w-md mx-auto",children:['Your search for "',c,'" did not match any allergy tests. Try a different term or browse all tests below.']}),(0,t.jsx)("button",{onClick:()=>d(""),className:"mt-6 px-6 py-2 bg-blue-600 text-white font-semibold rounded-lg hover:bg-blue-700 transition-colors",children:"Clear Search"})]}):["package","profile","individual"].map(e=>{let s=m[e];return s&&0!==s.length?(0,t.jsxs)("section",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:`w-10 h-10 rounded-xl flex items-center justify-center ${"package"===e?"bg-amber-100 text-amber-600":"profile"===e?"bg-purple-100 text-purple-600":"bg-blue-100 text-blue-600"}`,children:x[e]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-2xl font-bold text-gray-900",children:h[e]||e}),(0,t.jsxs)("p",{className:"text-sm text-gray-500",children:[s.length," test",1!==s.length?"s":""," available"]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:s.map((e,s)=>(0,t.jsx)("div",{className:"animate-fade-in-up",style:{animationDelay:`${50*s}ms`},children:(0,t.jsx)(a,{product:e,onSelect:f,onStartBooking:p})},e._id))})]},e):null})]})}],76946)}]);
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.