PageSourceSearch

https://thinking.fish/app.js?v=fe4c2d7c

js thinking.fish collected 2026-10-07 23:29:10 UTC 16,335 bytes, 1 lines download raw bytes

1!function(){const{useState:e,useEffect:t,useRef:a}=React,n={heroLayout:"centered",servicesLayout:"grid",accent:"#F26922",fontPair:"geist",density:"comfortable",domainStyle:"pill",showFishMark:!0},c={"#F26922":{primary:"#F26922",primary2:"#ff8a4c",soft:"#2a1a10"},"#2D5BA8":{primary:"#2D5BA8",primary2:"#6c95dd",soft:"#131c2e"},"#10B981":{primary:"#10B981",primary2:"#34d399",soft:"#0e2620"},"#8B5CF6":{primary:"#8B5CF6",primary2:"#a78bfa",soft:"#1f1633"}},r={geist:{sans:"'Geist', system-ui, sans-serif",mono:"'Geist Mono', monospace",import:"Geist:wght@400;500;600&family=Geist+Mono:wght@400;500"},grotesk:{sans:"'Space Grotesk', system-ui, sans-serif",mono:"'JetBrains Mono', monospace",import:"Space+Grotesk:wght@400;500;600&family=JetBrains+Mono:wght@400;500"},manrope:{sans:"'Manrope', system-ui, sans-serif",mono:"'IBM Plex Mono', monospace",import:"Manrope:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500"},serif:{sans:"'Instrument Serif', Georgia, serif",mono:"'Geist Mono', monospace",import:"Instrument+Serif&family=Geist+Mono:wght@400;500&family=Geist:wght@400;500"}},l={comfortable:1,compact:.7,spacious:1.3},s=[{name:"AstraZeneca",file:"astrazeneca-grey.png",scale:.86},{name:"Experian",file:"experian-grey.png",scale:.94},{name:"NHS",file:"nhs-grey.png",scale:.95},{name:"Teleperformance",file:"teleperformance-grey.png",scale:1},{name:"Caprice Holdings",file:"caprice-grey.png",scale:.88},{name:"Soho House",file:"soho-house-grey.png",scale:.85},{name:"Tesco",file:"tesco-grey.png",scale:.85},{name:"Grant Thornton",file:"grant-thornton-grey.png",scale:.82},{name:"Dayinsure",file:"dayinsure-grey.png",scale:.74},{name:"United Nations",file:"united-nations-grey.png",scale:.95}];function o(){return React.createElement("div",{className:"clients"},React.createElement("div",{className:"clients__label"},"Selected current & past projects"),React.createElement("div",{className:"clients__row"},s.map(e=>React.createElement("div",{key:e.name,className:"clients__chip",title:e.name},React.createElement("img",{src:`assets/clients/${e.file}`,alt:e.name,style:{maxHeight:36*e.scale+"px"}})))))}function i(){const[e,a]=useTweaks(n);return t(()=>{const t=document.documentElement,a=c[e.accent]||c["#F26922"];t.style.setProperty("--orange",a.primary),t.style.setProperty("--orange-2",a.primary2),t.style.setProperty("--orange-soft",a.soft),t.style.setProperty("--density",l[e.density]??1);const n=r[e.fontPair]||r.geist;t.style.setProperty("--font-sans",n.sans),t.style.setProperty("--font-mono",n.mono);const s=document.getElementById("tweak-font-link");s&&s.remove();const o=document.createElement("link");o.id="tweak-font-link",o.rel="stylesheet",o.href=`https://fonts.googleapis.com/css2?family=${n.import}&display=swap`,document.head.appendChild(o)},[e.accent,e.density,e.fontPair]),React.createElement(React.Fragment,null,React.createElement(Nav,{current:"home"}),React.createElement(m,{layout:e.heroLayout,domainStyle:e.domainStyle,showFishMark:e.showFishMark}),React.createElement(E,{layout:e.servicesLayout}),React.createElement(g,null),React.createElement(R,null),React.createElement(v,null),React.createElement(Footer,null))}function m({layout:e,domainStyle:t,showFishMark:a}){return"split"===e?React.createElement(h,{domainStyle:t}):"editorial"===e?React.createElement(p,{domainStyle:t,showFishMark:a}):React.createElement(d,{domainStyle:t,showFishMark:a})}function d({domainStyle:e,showFishMark:n}){const c=a(null);return t(()=>{const e=c.current;if(e){e.muted=!0;const t=e.play();t&&t.catch&&t.catch(()=>{})}},[]),React.createElement("section",{className:"hero"},React.createElement("video",{ref:c,className:"hero__video",autoPlay:!0,muted:!0,loop:!0,playsInline:!0,preload:"auto",poster:"assets/hero-bg-poster.jpg","aria-hidden":"true"},React.createElement("source",{src:"assets/hero-bg.mp4",type:"video/mp4"})),React.createElement("div",{className:"hero__video-scrim"}),React.createElement("div",{className:"hero__glow"}),React.createElement("div",{className:"container"},React.createElement("div",{className:"hero__inner"},React.createElement("div",{className:"hero__eyebrow eyebrow"},"British, technical, and quietly indispensable"),React.createElement("h1",{className:"display"},React.createElement("span",{className:"hero__sentence"},"Technology is moving faster than ever."),React.createElement("span",{className:"hero__sentence accent"},"We make sure you move with it.")),React.createElement("p",{className:"hero__sub"},"Websites, security, telephony, smart buildings, mobile apps and cloud infrastru
1cture — engineered together since 1998. Start with a name."),React.createElement("div",{className:"hero__search-wrap"},React.createElement(DomainSearch,{variant:"inline"})),n&&React.createElement(y,null),React.createElement(o,null))))}function h({domainStyle:e}){return React.createElement("section",{className:"hero",style:{paddingTop:"calc(80px * var(--density))"}},React.createElement("div",{className:"hero__glow",style:{left:"20%",transform:"none"}}),React.createElement("div",{className:"container"},React.createElement("div",{style:{display:"grid",gridTemplateColumns:"1.2fr 1fr",gap:80,alignItems:"center",position:"relative",zIndex:2}},React.createElement("div",null,React.createElement("div",{className:"eyebrow",style:{marginBottom:28}},"British, technical · Est. 1998"),React.createElement("h1",{className:"display",style:{textAlign:"left"}},"Six services.",React.createElement("br",null),React.createElement("span",{className:"accent"},"One engine room.")),React.createElement("p",{className:"hero__sub",style:{marginLeft:0,textAlign:"left"}},"Websites, security, telephony, smart buildings, mobile apps and cloud — engineered together since 1998. Pick any door, you'll find the same standards behind it."),React.createElement("div",{style:{marginTop:36,display:"flex",gap:12}},React.createElement("a",{href:"#services",className:"btn btn--primary btn--lg"},"Explore services",React.createElement(Icon.Arrow,{width:"16",height:"16"})),React.createElement("a",{href:"domain-search.html",className:"btn btn--ghost btn--lg"},"Find a domain"))),React.createElement("div",null,React.createElement(u,null))),React.createElement("div",{className:"hero__credentials",style:{marginTop:64}},React.createElement("span",{className:"label"},"Accreditations"),React.createElement("div",{className:"vals"},React.createElement("span",null,"ISO 27001"),React.createElement("span",null,"·"),React.createElement("span",null,"Cyber Essentials Plus"),React.createElement("span",null,"·"),React.createElement("span",null,"ICANN-accredited"),React.createElement("span",null,"·"),React.createElement("span",null,"Nominet Channel Partner"))),React.createElement(o,null)))}function u(){const[a,n]=e(""),c=["brightowl-studio","helix-studio","mendel-labs"],[r,l]=e(0);return t(()=>{const e=setInterval(()=>l(e=>(e+1)%c.length),2400);return()=>clearInterval(e)},[]),React.createElement("form",{className:"card",style:{padding:28,background:"var(--bg-elev)"},onSubmit:function(e){e.preventDefault();const t=(a||"").trim();t&&(window.location.href=`domain-search.html?q=${encodeURIComponent(t)}`)}},React.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:18}},React.createElement("div",{className:"eyebrow"},"Domain Search · Electric Cloud"),React.createElement("span",{className:"kbd"},"/domain")),React.createElement("h3",{style:{margin:0,fontSize:22,fontWeight:500,letterSpacing:"-0.018em"}},"Start with a name."),React.createElement("p",{style:{color:"var(--fg-muted)",fontSize:13.5,marginTop:6,marginBottom:22,lineHeight:1.55}},"Register across .com, .co.uk, .uk and 500+ TLDs through our ICANN & Nominet partner Electric Cloud."),React.createElement("div",{className:"dsearch__bar"},React.createElement(Icon.Search,{className:"dsearch__icon"}),React.createElement("input",{className:"dsearch__input",placeholder:c[r],value:a,onChange:e=>n(e.target.value),autoComplete:"off",spellCheck:!1}),React.createElement("button",{type:"submit",className:"dsearch__btn"},"Search")))}function p({domainStyle:e,showFishMark:t}){return React.createElement("section",{className:"hero",style:{paddingTop:"calc(56px * var(--density))",paddingBottom:"calc(40px * var(--density))"}},React.createElement("div",{className:"container"},React.createElement("div",{className:"eyebrow",style:{marginBottom:28,justifyContent:"flex-start"}},React.createElement("span",null,"Thinking Fish · Six Services, One Standard")),React.createElement("h1",{className:"display",style:{textAlign:"left",fontSize:"clamp(48px, 7vw, 112px)",marginBottom:32}},"The Internet,",React.createElement("br",null),React.createElement("em",null,"under one roof"),React.createElement("br",null),React.createElement("span",{className:"accent"},"in six rooms.")),React.createElement("hr",{className:"hr",style:{margin:"40px 0"}}),React.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1.6fr",gap:64,alignItems:"start"}},React.createElement("p",{style:{fontSize:15,color:"var(--fg-muted)",lineHeight:1.6,margin:0,fontFamily:"var(--font-mono)"}},"¶ The company was founded in London in 1998 with a single principle: own the whole stack, so the work doesn't fall through the cracks between vendors. Today, six services cover every layer — from the cable in the wall to the brand on the screen."),React.createElement("div",null,React.createElement("div",{className:"eyebrow",style:{marginBottom:20}},"Start with a domain"),React.createElement(DomainSearch,{variant:"inline"}))),t&&React.createElement("div",{style:{marginTop:56}},React.createElement(y,{variant:"inline"})),React.createElement(o,null)))}function y({variant:e="centered"}){return"inline"===e?React.createElement("div",{style:{display:"flex",alignItems:"center",gap:24,color:"var(--fg-faint)",fontFamily:"var(--font-mono)",fontSize:11,letterSpacing:"0.1em",textTransform:"uppercase"}},React.createElement("span",null,"↳"),React.createElement("span",null,"Services listed below"),React.createElement("hr",{style:{flex:1,border:0,borderTop:"1px dashed var(--border-strong)"}})):null}function E({layout:e}){return React.createElement("section",{className:"section",id:"services"},React.createElement("div",{className:"container"},React.createElement("div",{style:{display:"flex",alignItems:"end",justifyContent:"space-between",marginBottom:48,gap:24,flexWrap:"wrap"}},React.createElement("div",null,React.createElement("div",{className:"eyebrow",style:{marginBottom:18}},"Services · 06 disciplines"),React.createElement("h2",{className:"section-title"},"Six services.",React.createElement("br",null),React.createElement("em",{style:{color:"var(--fg-muted)",fontStyle:"normal",fontWeight:400}},"Built to work as one."))),React.createElement("p",{className:"lede",style:{marginBottom:8}},"Each service runs with its own clients, billing and roadmap. Together they let us own a project end-to-e
1nd — from domain to deployment, hardware to interface.")),React.createElement(ServicesGrid,{layout:e})))}function g(){return React.createElement("section",{className:"section",id:"about",style:{background:"var(--bg-elev)",borderTop:"1px solid var(--border)",borderBottom:"1px solid var(--border)"}},React.createElement("div",{className:"container"},React.createElement("div",{className:"story"},React.createElement("div",null,React.createElement("div",{className:"eyebrow",style:{marginBottom:24}},"About · Since 1998"),React.createElement("h2",{className:"section-title"},"A quiet, technical company."),React.createElement("p",{className:"lede"},"No flashy growth-hacking, no ten-page case studies. We are engineers, integrators and operators.")),React.createElement("div",null,React.createElement("p",{className:"story__quote"},'"We started as a single web studio in the City of London. ',React.createElement("em",null,"Twenty-eight years later, the same team owns the cable in your wall, the IP on your phone, the code in your app, and the SSL on your domain."),' Vertical integration is unfashionable."'),React.createElement("div",{style:{marginTop:28,fontFamily:"var(--font-mono)",fontSize:12,color:"var(--fg-muted)",letterSpacing:"0.08em",textTransform:"uppercase"}},"— Andrew Lobel, Founder & MD"),React.createElement("div",{className:"story__stats"},React.createElement("div",{className:"story__stat"},React.createElement("div",{className:"num"},"28",React.createElement("span",{className:"unit"},"yrs")),React.createElement("div",{className:"label"},"In continuous operation")),React.createElement("div",{className:"story__stat"},React.createElement("div",{className:"num"},"900",React.createElement("span",{className:"unit"},"+")),React.createElement("div",{className:"label"},"Projects delivered")),React.createElement("div",{className:"story__stat"},React.createElement("div",{className:"num"},"6",React.createElement("span",{className:"unit"})),React.createElement("div",{className:"label"},"Specialist divisions")),React.createElement("div",{className:"story__stat"},React.createElement("div",{className:"num"},"24",React.createElement("span",{className:"unit"},"/7")),React.createElement("div",{className:"label"},"Monitoring & support")))))))}const f=[{code:"LDN",city:"London",country:"United Kingdom",hq:!0,addr:["4.01 The Tea Building","56 Shoreditch High Street","London E1 6JJ","020 7100 2222"]},{code:"HOU",city:"Houston",country:"Texas, USA",addr:["1400 Broadfield Blvd","Suite 200","Houston, TX 77084"]},{code:"MUC",city:"Munich",country:"Germany",addr:["Moosacher Str. 82a","80809 München"]},{code:"IEV",city:"Kharkiv",country:"Ukraine",addr:["Akademika Pavlova St 271","Kharkiv Oblast","61054 Kharkiv"]}];function R(){return React.createElement("section",{className:"section",id:"offices"},React.createElement("div",{className:"container"},React.createElement("div",{style:{display:"flex",alignItems:"end",justifyContent:"space-between",marginBottom:48,gap:24,flexWrap:"wrap"}},React.createElement("div",null,React.createElement("div",{className:"eyebrow",style:{marginBottom:18}},"Offices · 04 locations"),React.createElement("h2",{className:"section-title"},"London-headquartered.",React.createElement("br",null),React.createElement("em",{style:{color:"var(--fg-muted)",fontStyle:"normal",fontWeight:400}},"Engineered around the world."))),React.createElement("p",{className:"lede",style:{marginBottom:8}},"We hire the best engineers and operators we can find, wherever in the world they happen to be — anchored by permanent offices where our clients need us in person: Houston for the Americas, Munich for Continental Europe, and Kharkiv for engineering depth.")),React.createElement("div",{className:"offices"},f.map(e=>React.createElement("div",{key:e.code,className:"office"},e.hq&&React.createElement("span",{className:"office__hq"},"HQ"),React.createElement("div",{className:"flag"},e.code),React.createElement("h3",{className:"office__city"},e.city),React.createElement("div",{className:"office__country"},e.country),React.createElement("div",{className:"office__addr"},e.addr.map((e,t)=>{if(/^[0+][\d ]{7,}$/.test(e.trim())){const a="+44"+e.replace(/\D/g,"").replace(/^0/,"");return React.createElement("div",{key:t,className:"office__phone"},React.createElement("a",{href:`tel:${a}`},e))}return React.createElement("div",{key:t},e)})))))))}function v(){return React.createElement("section",{className:"cta section",id:"contact"},React.createElement("div",{className:"container"},React.createElement("div",{className:"eyebrow",style:{justifyContent:"center",marginBottom:24}},"Get in touch"),React.createElement("h2",null,"Tell us what you're building."),React.createElement("p",null,"Wherever you are on the journey to 
1smarter, more capable technology, we can help you take the next step. Send a single enquiry — we'll route it to the right team and come back to you within one working day."),React.createElement("div",{className:"cta__row"},React.createElement("a",{href:"mailto:[email protected]",className:"btn btn--primary btn--lg"},React.createElement(Icon.Mail,{width:"16",height:"16"}),"[email protected]"),React.createElement("a",{href:"domain-search.html",className:"btn btn--ghost btn--lg"},React.createElement(Icon.Search,{width:"16",height:"16"}),"Or start with a domain"))))}ReactDOM.createRoot(document.getElementById("root")).render(React.createElement(i,null))}();

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.