PageSourceSearch

https://26loc.com/contact/

html 26loc.com collected 2026-10-10 02:33:16 UTC 240,550 bytes, 411 lines download raw bytes

1<!doctype html>
2<!-- for (let c = 65; c < 91; c++) // 26 times: our name, the Name in gematria. 26 + 65 = 91 - amen. Write the next line with us: /jobs -->
3<html lang="en">
4  <head>
5    <meta charset="utf-8" />
6    <!-- Sentry and Google Analytics, at the top, where the server names them (website/templatetags/site.py, outside_head) -->
7    
7<script>window.sentryOnLoad=function(){Sentry.init({environment:'production'})};</script>
7
8    
8<script src="https://js.sentry-cdn.com/03653ad145f7c93ad5f8967c4c11a110.min.js" crossorigin="anonymous" defer></script>
8
9    
9<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)};(function(){var c=(document.cookie.match(/(?:^|; )consent=(yes|no)/)||[])[1],a=function(v){return v==='yes'?'granted':'denied'};gtag('consent','default',{ad_storage:'denied',ad_user_data:'denied',ad_personalization:'denied',analytics_storage:a(c)});addEventListener('consent',function(e){gtag('consent','update',{analytics_storage:a(e.detail)})})})();gtag('js',new Date());gtag('config','G-P7EG46QQP2');(function(w,d,s){var go=function(){var j=d.createElement(s);j.async=true;j.src='https://www.googletagmanager.com/gtag/js?id=G-P7EG46QQP2';d.head.appendChild(j)},later=function(){setTimeout(function(){w.requestIdleCallback?requestIdleCallback(go,{timeout:2000}):go()},1500)};d.readyState==='complete'?later():w.addEventListener('load',later);})(window,document,'script');</script>
9
10    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
11    <title>Contact Us - 26 Lines of Code</title>
12    <meta name="description" content="Tell us about your website, app, AI or cloud project, or the developers you need. We reply in 30 minutes on weekdays, 9 am to 6 pm ET; the estimate is free." />
13    <meta name="robots" content="max-image-preview:large" />
14    <meta name="author" content="26 Lines of Code LLC" />
15    <meta name="theme-color" content="#0b0908" />
16    <link rel="canonical" href="https://26loc.com/contact/" />
17        <meta property="og:type" content="website" />
18    <meta property="og:locale" content="en_US" />
19    <meta property="og:site_name" content="26 Lines of Code" />
20    <meta property="og:url" content="https://26loc.com/contact/" />
21    <meta property="og:title" content="Contact Us - 26 Lines of Code" />
22    <meta property="og:description" content="Tell us about your website, app, AI or cloud project, or the developers you need. We reply in 30 minutes on weekdays, 9 am to 6 pm ET; the estimate is free." />
23    <meta property="og:image" content="https://26loc.com/static/site/share/page-contact.c54c196e5669.jpg" />
24    <meta property="og:image:width" content="1200" />
25    <meta property="og:image:height" content="630" />
26    <meta property="og:image:alt" content="Contact Us - 26 Lines of Code" />
27    <meta name="twitter:card" content="summary_large_image" />
28    
28<script type="application/ld+json">{"@context": "https://schema.org", "@graph": [{"@type": "Organization", "@id": "https://26loc.com/#org", "name": "26 Lines of Code", "legalName": "26 Lines of Code LLC", "url": "https://26loc.com/", "logo": {"@type": "ImageObject", "url": "https://26loc.com/static/site/favicon.8cd5a1455110.svg"}, "image": "https://26loc.com/static/site/og.e46a82d4961e.jpg", "email": "[email protected]", "telephone": "+1 (786) 777-9396", "contactPoint": [{"@type": "ContactPoint", "contactType": "sales", "email": "[email protected]", "telephone": "+1 (786) 777-9396", "availableLanguage": ["English"], "hoursAvailable": {"@type": "OpeningHoursSpecification", "opens": "09:00", "closes": "18:00", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]}}], "address": [{"@type": "PostalAddress", "streetAddress": "18117 Biscayne Blvd", "addressLocality": "Miami", "addressRegion": "FL", "postalCode": "33160", "addressCountry": "US"}], "sameAs": ["https://www.linkedin.com/company/26loc/", "https://www.facebook.com/26loc", "https://www.instagram.com/26linesofcode/", "https://x.com/26linesofcode", "https://www.upwork.com/agencies/1037055542159896576/", "https://clutch.co/profile/26-lines-code", "https://www.google.com/search?kgmid=/g/11p1md5x2_"], "location": [{"@type": "Place", "name": "Tallinn, Estonia", "address": {"@type": "PostalAddress", "addressLocality": "Tallinn", "addressCountry": "EE"}}, {"@type": "Place", "name": "Kyiv region, Ukraine", "address": {"@type": "PostalAddress", "addressLocality": "Kyiv region", "addressCountry": "UA"}}], "description": "Software development end to end: web platforms, mobile apps and AI automation for companies in the US and Europe.", "foundingDate": "2017", "founder": {"@id": "https://26loc.com/about/michael-a/#person"}}, {"@type": "WebSite", "@id": "https://26loc.com/#website", "url": "https://26loc.com/", "name": "26 Lines of Code", "publisher": {"@id": "https://26loc.com/#org"}, "inLanguage": "en"}, {"@type": ["WebPage", "ContactPage"], "@id": "https://26loc.com/contact/#webpage", "url": "https://26loc.com/contact/", "name": "Contact Us - 26 Lines of Code", "isPartOf": {"@id": "https://26loc.com/#website"}, "about": {"@id": "https://26loc.com/#org"}, "inLanguage": "en", "description": "Tell us about your website, app, AI or cloud project, or the developers you need. We reply in 30 minutes on weekdays, 9 am to 6 pm ET; the estimate is free.", "primaryImageOfPage": {"@type": "ImageObject", "url": "https://26loc.com/static/site/share/page-contact.c54c196e5669.jpg"}}, {"@type": "BreadcrumbList", "@id": "https://26loc.com/contact/#crumbs", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://26loc.com/"}, {"@type": "ListItem", "position": 2, "name": "Contact", "item": "https://26loc.com/contact/"}]}, {"@type": "FAQPage", "@id": "https://26loc.com/contact/#faq", "mainEntity": [{"@type": "Question", "name": "Do you work with startups or larger companies?", "acceptedAnswer": {"@type": "Answer", "text": "Both. We partner with fast-growing startups and with established companies, and adapt the team and process to each."}}, {"@type": "Question", "name": "How do I know what is happening on my project?", "acceptedAnswer": {"@type": "Answer", "text": "Two-week sprints with a demo, regular updates and direct access to the developers. You always know who works on what."}}, {"@type": "Question", "name": "What does it cost to start?", "acceptedAnswer": {"@type": "Answer", "text": "The first call and the rough estimate are free. On outsourced development and staff augmentation there is no upfront payment, and if the first week does not work for you, you do not pay for it; a website from $499 is paid upfront."}}, {"@type": "Question", "name": "What if my budget is small?", "acceptedAnswer": {"@type": "Answer", "text": "Start where it fits: a website from $499 with support at $29 a month (billed annually), a mobile or web app from $5,000, developers for your team from $35 an hour. Everything else gets an individual estimate, free. We suggest what fits and change it as you grow."}}, {"@type": "Question", "name": "How do you use AI to build?", "acceptedA
28nswer": {"@type": "Answer", "text": "Websites and MVPs are built with AI tools on a pipeline: documentation first, then planned tasks, each built and checked, then a code review by an engineer and a final check by our tester. On larger projects AI takes the routine and people keep the decisions."}}, {"@type": "Question", "name": "Can you sign an NDA before I share details?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. Mark it in the form or say it on the call, and we sign before you share anything sensitive."}}]}, {"@type": "Person", "@id": "https://26loc.com/about/michael-a/#person", "name": "Michael A.", "url": "https://26loc.com/about/michael-a/", "jobTitle": "CEO", "worksFor": {"@id": "https://26loc.com/#org"}, "description": "Founder and CEO of 26 Lines of Code, 18 years in software development", "image": "https://26loc.com/uploads/team/michael-a.png", "sameAs": ["https://www.linkedin.com/in/datysho/", "https://x.com/datyshoteam", "https://www.instagram.com/datysho/", "https://github.com/datysho", "https://www.upwork.com/freelancers/~014aeec6c4b6e53262"], "knowsAbout": ["Solution architecture", "DevOps", "Engineering leadership", "Python", "Django", "FastAPI", "Flask", "React", "Angular", "TypeScript", "AWS", "Docker", "Web development", "Mobile app development"], "alumniOf": [{"@type": "EducationalOrganization", "name": "Kyiv-Mohyla Business School"}, {"@type": "EducationalOrganization", "name": "National Aviation University"}], "knowsLanguage": ["English", "Ukrainian", "Russian", "Hebrew"]}]}</script>
28
29    <link rel="icon" href="/static/site/favicon.8cd5a1455110.svg" type="image/svg+xml" />
30    <!-- First, may the 3D run here (config/boot.py). Either way the page is its words
31         from the first paint (without a graphics card the first paint waits for their
32         faces, 0.6 s at most: config/boot.py, FACES); with one the 26 lines then draw
33         themselves into the mark behind them. Until the stylesheet is in, the page is
34         only its dark ground: nothing shows unstyled, whatever arrives first (main.css
35         sets --styled). Zero specificity, so every real rule wins. -->
36    <meta name="js" data-gpu="/static/dist/assets/early-C7tv-GbT.js /static/dist/assets/libraries-BHhLxTa1.js /static/dist/assets/three.core-DZ-Q8fSi.js /static/dist/assets/gsap-CjC5XO7K.js /static/dist/assets/app-CCY9691w.js /static/dist/assets/vscroll-Bp9hnXBG.js /static/dist/assets/scroll-Bi7ivdN-.js /static/dist/assets/preload-helper-Dsl5vJzy.js /static/dist/assets/resize-BrrRsqZ8.js /static/dist/assets/stage-DmSQgX29.js /static/dist/assets/icons-3vB_BHbx.js /static/dist/assets/idle-AqJ3EEpW.js /static/dist/assets/tictactoe-ko3ROaAu.js /static/dist/assets/place-B6IaFcr-.js /static/dist/assets/owns-CXjbDaIw.js /static/dist/assets/texts-CdZROvIL.js /static/dist/assets/company-o_KCp00p.js /static/dist/assets/projects-Cw3E5SoR.js /static/dist/assets/consent-fxZNHYf0.js /static/dist/assets/mark-CrVqF63Y.js /static/dist/assets/thumbs-C52QT4s7.js /static/dist/assets/screens-DGetHooj.js /static/dist/assets/common-BBJUzBLx.js /static/dist/assets/lines-CssFPcin.js /static/dist/assets/formations-CZpl9UPy.js /static/dist/assets/pause-DRe1ZPxx.js /static/dist/assets/reveal-BtW59rlQ.js /static/dist/assets/toast-BRH5z6SN.js /static/dist/assets/diagmode-C2hJ2WHm.js /static/dist/assets/hydrate-CVUt8Yxp.js /static/dist/assets/contact-CA26a-zI.js /static/dist/assets/leadform-D2-QORix.js" data-lite="/static/dist/assets/lite-ouq10t45.js /static/dist/assets/jobform-vK9bp_Uj.js /static/dist/assets/leadform-D2-QORix.js /static/dist/assets/toast-BRH5z6SN.js /static/dist/assets/icons-3vB_BHbx.js /static/dist/assets/texts-CdZROvIL.js /static/dist/assets/estimator-form-DENnOxEu.js /static/dist/assets/place-B6IaFcr-.js /static/dist/assets/owns-CXjbDaIw.js /static/dist/assets/resize-BrrRsqZ8.js /static/dist/assets/company-o_KCp00p.js /static/dist/assets/projects-Cw3E5SoR.js /static/dist/assets/consent-fxZNHYf0.js /static/dist/assets/preload-helper-Dsl5vJzy.js /static/dist/assets/pause-DRe1ZPxx.js" data-smooth="/static/dist/assets/lenis-SLnaB0gZ.js">
37    
37<script>(function(){var d=document.documentElement,k='gl',v,t=Date.now(),q=location.search,s,b=/[?&]noblur\b/.test(q),p=0;if(/[?&]3d\b/.test(q))try{sessionStorage.removeItem('lite');sessionStorage.removeItem('noblur');localStorage.removeItem(k);localStorage.removeItem('ladder')}catch(e){}if(/[?&]lite\b/.test(q))try{sessionStorage.setItem('lite','1')}catch(e){}try{b&&sessionStorage.setItem('noblur','1');b=b||sessionStorage.getItem('noblur')==='1'}catch(e){}try{s=sessionStorage.getItem('lite')==='1'}catch(e){}try{v=JSON.parse(localStorage.getItem(k)||'0')}catch(e){}v&&v.gl==='slow'&&v.v!==2&&(v=0);try{p=JSON.parse(localStorage.getItem('ladder')||'0');p=p&&p.v===2&&t-p.t<864e5?p.step|0:0}catch(e){p=0}if(!v||v.gl!=='off'&&t-v.t>(v.gl==='slow'?864e5:6048e5)){v={t:t,gl:window.WebGL2RenderingContext?'soft':'none'};try{var g=document.createElement('canvas').getContext('webgl2',{failIfMajorPerformanceCaveat:true});if(g){var i=g.getExtension('WEBGL_debug_renderer_info'),n=i?g.getParameter(i.UNMASKED_RENDERER_WEBGL):'';v.gl=/swiftshader|llvmpipe|softpipe|software|basic render/i.test(n)?'soft':'gpu';var l=g.getExtension('WEBGL_lose_context');l&&l.loseContext()}}catch(e){}try{localStorage.setItem(k,JSON.stringify(v))}catch(e){}}if(s||v.gl!=='gpu'){d.classList.add('no-webgl');d.dataset.gl=s?'lite':v.gl}else{d.classList.add('webgl');var a=navigator.userAgent;if((/iP(hone|ad|od)/.test(a)||/Macintosh/.test(a)&&navigator.maxTouchPoints>1)&&!(+(a.match(/Version\/(\d+)/)||[])[1]>=27))d.classList.add('gl-fixed');if(p>2){d.dataset.step=p;b=1}}b&&d.classList.add('noblur');var m=document.querySelector('meta[name=js]'),u=!s&&v.gl==='gpu'&&m&&m.getAttribute('data-gpu');if(u&&p<6&&!matchMedia('(pointer: coarse)').matches&&!matchMedia('(prefers-reduced-motion: reduce)').matches)u+=' '+(m.getAttribute('data-smooth')||'');u&&u.split(' ').forEach(function(h){if(!h)return;var l=document.createElement('link');l.rel='modulepreload';l.href=h;l.crossOrigin='';l.fetchPriority='low';document.head.appendChild(l)})})();</script>
37
38    <style>:where(html){background:#0b0908}:where(body){margin:0}:where(body>*){visibility:var(--styled,hidden)}.no-webgl:not(.faces) body{opacity:0}</style>
39    <link rel="preload" href="/static/dist/assets/loc-sans-basic-var-CAO8sDKR.woff2" as="font" type="font/woff2" crossorigin="">
40    <link rel="preload" href="/static/dist/assets/jetbrains-mono-basic-var-JCRlCD8N.woff2" as="font" type="font/woff2" crossorigin="">
41    
41<script type="module" crossorigin fetchpriority="low" src="/static/dist/assets/main-Bn54JCO7.js"></script>
41
42    <style>@font-face{font-family:LOC Sans Fallback;src:local(Arial),local(ArialMT),local(Liberation Sans),local(LiberationSans),local(Arimo),local(Helvetica Neue),local(Helvetica);size-adjust:103.81%;ascent-override:105%;descent-override:30.82%;line-gap-override:0%}@font-face{font-family:LOC Sans Display Fallback;src:local(Arial Bold),local(Arial-BoldMT),local(Liberation Sans Bold),local(LiberationSans-Bold),local(Arimo Bold),local(Arimo-Bold),local(Helvetica Neue Bold),local(HelveticaNeue-Bold);font-weight:100 900;font-stretch:50% 200%;size-adjust:111.5%;ascent-override:97.8%;descent-override:28.7%;line-gap-override:0%}@font-face{font-family:LOC Sans;font-style:normal;font-display:swap;font-weight:400 800;font-stretch:100% 120%;src:url(/static/dist/assets/loc-sans-basic-var-CAO8sDKR.woff2)format("woff2-variations");unicode-range:U+20-7E,U+A0,U+A9,U+AB,U+AE,U+B0,U+B7,U+BB,U+D7,U+2013-2014,U+2018-201A,U+201C-201E,U+2022,U+2026,U+2039-203A,U+20AC,U+2122,U+2191,U+2193,U+2212}@font-face{font-family:LOC Sans;font-style:normal;font-display:swap;font-weight:400 800;font-stretch:100% 120%;src:url(/static/dist/assets/loc-sans-latin-var-BfJ4zARg.woff2)format("woff2-variations");unicode-range:U+0-1F,U+7F-9F,U+A1-A8,U+AA,U+AC-AD,U+AF,U+B1-B6,U+B8-BA,U+BC-D6,U+D8-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-2012,U+2015-2017,U+201B,U+201F-2021,U+2023-2025,U+2027-2038,U+203B-206F,U+2215,U+FEFF,U+FFFD}@font-face{font-family:LOC Sans;font-style:normal;font-display:swap;font-weight:400 800;font-stretch:100% 120%;src:url(/static/dist/assets/mona-sans-latin-ext-wdth-normal-CQ1tG6In.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/static/dist/assets/jetbrains-mono-basic-var-JCRlCD8N.woff2)format("woff2-variations");unicode-range:U+20-7E,U+A0,U+A9,U+AB,U+AE,U+B0,U+B7,U+BB,U+D7,U+2013-2014,U+2018-201A,U+201C-201E,U+2022,U+2026,U+2039-203A,U+20AC,U+2122,U+2191,U+2193,U+2212}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/static/dist/assets/jetbrains-mono-latin-var-B2kzHldx.woff2)format("woff2-variations");unicode-range:U+0-1F,U+7F-9F,U+A1-A8,U+AA,U+AC-AD,U+AF,U+B1-B6,U+B8-BA,U+BC-D6,U+D8-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-2012,U+2015-2017,U+201B,U+201F-2021,U+2023-2025,U+2027-2038,U+203B-206F,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/static/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--svh:1vh;--lvh:1vh}@supports (height:1svh){:root{--svh:1svh;--lvh:1lvh}}:root{--shade:#0b0908c7;--bg:#0b0908;--bg-1:#110e0c;--bg-2:#1a1613;--graphite:#212529;--paper:#f3f3f3;--white:#fff;--text:#ece8e2;--muted:#a8a29a;--faint:#6f6962;--line:#f3f3f31a;--line-2:#f3f3f333;--amber:#ffc107;--amber-2:#f5ab34;--amber-ink:#171004;--amber-glow:#ffc10773;--ok:#8fd694;--err:#ff8a75;--font:"LOC Sans", "LOC Sans Fallback", ui-sans-serif, system-ui, sans-serif;--mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--measure:660px;--read:680px;--pad:clamp(20px, 4.4vw, 72px);--r:14px;--ease:cubic-bezier(.2, .7, .1, 1);--nav-h:84px;--styled:visible;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped,html.scroll-locked{overflow:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:17.5px;font-weight:400;font-stretch:100%;line-height:1.62;overflow-x:hidden}::selection{background:var(--amber);color:var(--amber-ink)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}picture{display:contents}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:6px}[tabindex="-1"]:focus{outline:none}.skipped-to:focus{outline:2px solid var(--amber);outline-offset:10px;border-radius:8px}.skipped-to{scroll-margin-top:calc(var(--nav-h) + 24px)}.skip{left:var(--pad);top:calc(var(--nav-h) + 4px);z-index:200;-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);height:40px;color:var(--paper);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s, transform .25s var(--ease);background:#110e0cd1;border-radius:12px;align-items:center;gap:10px;padding:0 8px 0 14px;font-size:14px;font-weight:560;display:inline-flex;position:fixed;transform:translateY(-6px);box-shadow:inset 0 0 0 1px #ffc1078c,inset 0 1px #ffffff0d,0 12px 34px #00000059}.skip kbd{font:500 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amber);background:#ffc10714;border-radius:7px;padding:6px 7px;box-shadow:inset 0 0 0 1px #ffc10766}.skip:focus{opacity:1;pointer-events:auto;outline:none;transform:none}@media (prefers-reduced-motion:reduce){.skip{transition:opacity .2s;transform:none}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.print-head,.print-cover{display:none}#gl{width:100vw;height:100vh;height:calc(100 * var(--lvh));z-index:0;display:block;position:fixed;inset:0}.gl-words{width:100vw;height:100vh;height:calc(100 * var(--lvh));z-index:1;pointer-events:none;clip-path:inset(8px 0);display:block;position:fixed;inset:0}.gl-room{display:contents}.gl-fade{display:none}@media (hover:none) and (pointer:coarse){@supports (animation-timeline:scroll()){:root:not(.gl-fixed) body{position:relative}:root:not(.gl-fixed) .gl-room{z-index:0;pointer-events:none;display:block;position:absolute;inset:0;overflow:clip}:root:not(.gl-fixed) #gl,:root:not(.gl-fixed) .gl-words,:root:not(.gl-fixed) .gl-fade{will-change:transform;animation:linear both gl-carry;animation-timeline:scroll(root);animation-range:0 1000000px;position:absolute;inset:0 auto auto 0}:root:not(.gl-fixed) .gl-fade{z-index:2;top:calc(100 * var(--lvh) - 56px);background:linear-gradient(to bottom, #0b090800, var(--bg));width:100%;height:56px;display:block}@keyframes gl-carry{to{transform:translateY(1000000px)}}}}#view{z-index:2;min-height:calc(100 * var(--svh));position:relative}
42body.cursor-hidden,body.cursor-hidden *{cursor:none!important}.eyebrow{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:12px;margin:0 0 22px;font-size:12px;font-weight:500;display:inline-flex}.eyebrow:before{content:"";background:var(--amber-2);width:26px;height:1px;box-shadow:0 0 10px var(--amber-glow)}.eyebrow.plain:before{display:none}.display{letter-spacing:-.028em;color:var(--white);text-wrap:balance;margin:0;font-family:LOC Sans,LOC Sans Display Fallback,LOC Sans Fallback,ui-sans-serif,system-ui,sans-serif;font-size:clamp(42px,5.9vw,104px);font-weight:780;font-stretch:116%;line-height:.97}h1,h2,h3{color:var(--white);text-wrap:balance}.h2{letter-spacing:-.024em;margin:0 0 22px;font-size:clamp(34px,3.9vw,66px);font-weight:760;font-stretch:112%;line-height:1.02}.h3{letter-spacing:-.01em;margin:0 0 8px;font-size:clamp(20px,1.55vw,25px);font-weight:660;font-stretch:106%;line-height:1.2}.lead{color:#d8d2c9;max-width:34em;margin:0 0 28px;font-size:clamp(18px,1.3vw,21px);line-height:1.55}.muted{color:var(--muted)}.accent{color:var(--amber)}.split-line{margin-bottom:-.06em;padding-bottom:.06em}.mono{font-family:var(--mono)}.shadowed{text-shadow:0 1px 30px #0b0908d9,0 0 2px #0b090899}.btn{--h:54px;height:var(--h);letter-spacing:.005em;cursor:pointer;white-space:nowrap;transition:box-shadow .35s var(--ease), background .35s var(--ease), border-color .35s var(--ease), color .35s var(--ease);isolation:isolate;text-shadow:none;border-radius:12px;justify-content:center;align-items:center;gap:10px;padding:0 24px;font-size:15.5px;font-weight:650;font-stretch:104%;display:inline-flex;position:relative}.btn .i{width:18px;height:18px;transition:transform .35s var(--ease)}.btn:hover .i{transform:translate(4px)}.btn-primary{background:var(--amber);color:var(--amber-ink);box-shadow:0 0 0 1px #ffc10780,0 12px 44px -12px #ffc10799}.btn-primary:after{content:"";border-radius:inherit;opacity:.8;z-index:-1;transition:background-position .9s var(--ease);background:linear-gradient(110deg,#0000 30%,#ffffff8c 50%,#0000 70%) 120% 0/250% 100%;position:absolute;inset:0}.btn-primary:hover{box-shadow:0 0 0 1px #ffc107e6,0 18px 60px -10px #ffc107cc}.btn-primary:hover:after{background-position:-30% 0}.btn-ghost{border:1px solid var(--line-2);color:var(--paper);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#14110f59}.btn-ghost:hover{color:var(--white);border-color:#ffc107b3}.btn-sm{--h:42px;border-radius:11px;padding:0 18px;font-size:14.5px}.btn:active{filter:brightness(.94)}.link{color:var(--paper);transition:color .3s, border-color .3s, gap .3s var(--ease);cursor:pointer;border-bottom:1px solid #ffc10766;align-items:center;gap:8px;padding-bottom:2px;font-weight:600;display:inline-flex}.link:hover{color:var(--amber);border-color:var(--amber);gap:12px}.link .i{width:16px;height:16px}.actions{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.top-scrim{display:none}@supports (animation-timeline:scroll()){.top-scrim{z-index:49;height:calc(160px + var(--nav-h) + 30px);pointer-events:none;will-change:transform;animation:linear both top-scrim;animation-timeline:scroll(root);animation-range:0 1000000px;display:block;position:absolute;top:-160px;left:0;right:0}.top-scrim:before{content:"";background:linear-gradient(to bottom, var(--shade) 0, var(--shade) 168px, transparent 100%);opacity:0;transition:opacity .4s;position:absolute;inset:0}body.scrolled .top-scrim:before{opacity:1}.nav:before{display:none}@keyframes top-scrim{to{transform:translateY(1000000px)}}}@supports (-webkit-touch-callout:none){.top-scrim{display:none}.nav:before{display:block}}@media (hover:none) and (pointer:coarse){.top-scrim,.nav:before{display:none!important}}.edge-guard{z-index:2147483647;pointer-events:none;visibility:visible;background:#0b090803;width:48px;height:24px;position:fixed;bottom:0;left:calc(50% - 24px)}.nav{z-index:50;height:calc(var(--nav-h) - 8px);padding:0 var(--pad) 8px;pointer-events:none;transition:transform .5s var(--ease), opacity .5s;justify-content:space-between;align-items:center;gap:16px;display:flex;position:fixed;top:8px;left:0;right:0}.nav>*{pointer-events:auto}.nav:before{content:"";background:linear-gradient(to bottom, var(--shade), transparent);pointer-events:none;z-index:-1;opacity:0;transition:opacity .4s;position:absolute;inset:0 0 -30px}body.scrolled .nav:before{opacity:1}.brand{cursor:pointer;align-items:center;gap:12px;display:flex}.nav .brand{transition:background .4s var(--ease), border-color .4s var(--ease), box-shadow .4s var(--ease);border:1px solid #0000;border-radius:14px;margin-left:-12px;padding:6px 14px 6px 12px}body.scrolled .nav .brand,:root:not(.webgl) .nav .brand{border-color:var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);background:#110e0cad;box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}.nav .brand{isolation:isolate;position:relative}.nav .brand:before,.nav .brand:after{content:"";pointer-events:none;opacity:0;position:absolute}.nav .brand:before{z-index:-1;border-radius:inherit;background:radial-gradient(100% 150% at 50% 125%,#ffc10738,#ffc1070d 58%,#0000 76%);transition:opacity .45s;inset:0;box-shadow:inset 0 0 0 1px #ffc10724}.nav .brand:after{background:linear-gradient(90deg, transparent, #fff1c9 28%, var(--amber) 50%, #fff1c9 72%, transparent);height:1.5px;box-shadow:0 0 8px var(--amber), 0 0 2px #fff;border-radius:1px;transition:opacity .35s,transform .55s cubic-bezier(.3,1.3,.4,1);bottom:3px;left:22%;right:22%;
42transform:scaleX(.3)}.nav .brand.is-here{border-color:var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);background:#110e0cad;box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}.nav .brand.is-here:before{opacity:1}.nav .brand.is-here:after{opacity:1;animation:.55s cubic-bezier(.2,.7,.3,1) .15s nl-shiver;transform:none}.nav .brand.is-here .lm-brace{filter:drop-shadow(0 0 10px #f5ab34e6)}.nav .brand.is-here .brand-text{color:var(--paper)}.nav .brand.is-still,.nav .brand.is-still:before,.nav .brand.is-still:after,.nav .brand.is-still *{transition:none!important;animation:none!important}.brand .logo-mark{width:auto;height:30px;overflow:visible}.logo-mark .lm-brace{fill:var(--amber-2);filter:drop-shadow(0 0 6px #f5ab3473)}.logo-mark .lm-digit{fill:var(--paper)}.brand-text{font-family:var(--mono);color:var(--muted);letter-spacing:.02em;font-size:10.5px;line-height:1.12}.brand .lm-brace,.brand .lm-digit{transform-box:fill-box;transform-origin:50%;transition:transform .55s cubic-bezier(.3,1.45,.4,1),fill .3s,filter .3s}.brand:hover .lm-brace{filter:drop-shadow(0 0 10px #f5ab34e6)}.brand:hover .lm-brace:first-of-type{transform:translate(-6px)}.brand:hover .lm-brace:nth-of-type(4){transform:translate(6px)}.brand:hover .lm-digit{fill:#fff6dc}.bt-name:after{content:"";vertical-align:-.18em;background:var(--amber);width:.55em;height:1.05em;box-shadow:0 0 8px var(--amber);opacity:0;margin-left:2px;display:inline-block}.brand:hover .bt-name:after{animation:1s step-end infinite caret}
42.nav-id{align-items:center;display:flex}.nav-home{isolation:isolate;width:0;height:44px;margin-left:calc(-1 * var(--hl));padding:0 0 0 var(--hl);box-shadow:inset 0 0 0 1px var(--line), inset 0 1px 0 #ffffff0b, 0 12px 34px #00000047;-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);color:var(--paper);white-space:nowrap;opacity:0;visibility:hidden;cursor:pointer;transition:width .45s var(--ease), margin .45s var(--ease), opacity .3s, visibility 0s .45s, transform .25s var(--ease), color .3s;--hl:12px;--hr:15px;background:#110e0cad;border-radius:14px;flex:none;align-items:center;gap:8px;font-size:14px;font-weight:560;display:inline-flex;position:relative;overflow:hidden}body.show-home .nav-home{width:var(--hw,96px);opacity:1;visibility:visible;transition:width .75s cubic-bezier(.3, 1.35, .4, 1), margin .75s cubic-bezier(.3, 1.35, .4, 1), opacity .2s, visibility 0s, transform .25s var(--ease), color .3s;margin-left:8px}.nav-home:hover,.nav-home:focus-visible{color:var(--white)}.nav-home:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.nav-home:active{transform:scale(.95)}.nav-home>.nh-ico,.nav-home>.nh-t{opacity:0;transition:opacity .25s, transform .5s var(--ease);flex:none;transform:translate(-12px)}body.show-home .nav-home>.nh-ico,body.show-home .nav-home>.nh-t{opacity:1;transition:opacity .35s .12s,transform .65s cubic-bezier(.3,1.5,.4,1) .1s;transform:none}.nh-ico{flex:none;width:18px;height:18px;overflow:visible}.nh-ico path{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.nh-ico .nh-roof,.nh-ico .nh-wall,.nh-ico .nh-door{stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset .2s,transform .45s cubic-bezier(.3,1.6,.4,1)}.nh-ico .nh-roof{stroke:var(--amber);filter:drop-shadow(0 0 3px #ffc107a6)}body.show-home .nh-ico .nh-roof,body.show-home .nh-ico .nh-wall,body.show-home .nh-ico .nh-door{stroke-dashoffset:0}body.show-home .nh-ico .nh-roof{transition:stroke-dashoffset .45s var(--ease) .25s, transform .45s cubic-bezier(.3, 1.6, .4, 1)}body.show-home .nh-ico .nh-wall{transition:stroke-dashoffset .5s var(--ease) .42s, transform .45s cubic-bezier(.3, 1.6, .4, 1)}body.show-home .nh-ico .nh-door{transition:stroke-dashoffset .3s var(--ease) .72s, transform .45s cubic-bezier(.3, 1.6, .4, 1)}.nh-ico .nh-glow{fill:var(--amber);stroke:none;opacity:0;filter:drop-shadow(0 0 3px var(--amber));transition:opacity .3s}body.show-home .nh-ico .nh-glow{opacity:.5;transition:opacity .2s .95s;animation:.9s .95s both nh-light}@keyframes nh-light{0%,12%{filter:brightness(0)drop-shadow(0 0 #0000)}22%{filter:brightness(2.2) drop-shadow(0 0 6px var(--amber))}34%{filter:brightness(.2)drop-shadow(0 0 #0000)}48%{filter:brightness(1.9) drop-shadow(0 0 6px var(--amber))}to{filter:brightness(1) drop-shadow(0 0 3px var(--amber))}}body.show-home .nav-home:hover .nh-glow,body.show-home .nav-home:focus-visible .nh-glow{opacity:1;transition-delay:0s}.nav-home:hover .nh-roof,.nav-home:focus-visible .nh-roof{transform:translateY(-1.6px)}.nav-home:hover .nl-t span,.nav-home:focus-visible .nl-t span{transform:translateY(-1.3em)}.nh-ring{z-index:-1;border-radius:inherit;-webkit-mask-composite:xor;opacity:0;pointer-events:none;padding:1px;transition:opacity .4s;position:absolute;inset:0;overflow:hidden;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.nh-ring b{background:conic-gradient(#0000 0deg 250deg,#ffc1078c 290deg,#fff1c9 304deg,#ffc10773 314deg,#0000 330deg);width:128px;height:128px;margin:-64px 0 0 -64px;position:absolute;top:50%;left:50%}body.show-home .nh-ring{animation:1.5s ease-out .2s both nh-ring}body.show-home .nh-ring b{animation:1.5s cubic-bezier(.45,.1,.3,1) .2s both nl-run}@keyframes nh-ring{0%{opacity:0}15%,70%{opacity:1}to{opacity:0}}body.show-home .nav-home:hover .nh-ring,body.show-home .nav-home:focus-visible .nh-ring{opacity:1;animation:none}body.show-home .nav-home:hover .nh-ring b,body.show-home .nav-home:focus-visible .nh-ring b{animation:2.6s linear infinite nl-run}.show-home .nav-id .lm-brace:nth-of-type(4){animation:.6s cubic-bezier(.3,1.4,.4,1) lm-push}@keyframes lm-push{30%{filter:drop-shadow(0 0 12px #ffc107);transform:translate(5px)}}.nav .brand-text{white-space:nowrap;max-width:80px;transition:max-width .5s var(--ease), margin .5s var(--ease), opacity .3s;overflow:hidden}@media (max-width:480px){body.show-home .nav .brand-text{opacity:0;max-width:0;margin-left:-12px}body.show-home .nav .brand{padding-right:12px}.nav-home{--hl:10px;--hr:12px;gap:6px}.nav .nav-right{gap:6px}.nav .nav-top{margin-right:-6px}}@media (max-width:370px){.nav-home .nh-t{display:none}}
42@media (prefers-reduced-motion:reduce){.nav-home,body.show-home .nav-home,.nav-home>.nh-ico,.nav-home>.nh-t,.nh-ico path,.nav .brand-text{transition-duration:0s!important;transition-delay:0s!important}body.show-home .nh-ring,body.show-home .nh-ring b,body.show-home .nh-ico .nh-glow,.show-home .nav-id .lm-brace:nth-of-type(4){animation:none!important}}@keyframes caret{50%{opacity:0}}.brand.is-strike .lm-brace:first-of-type{animation:.7s cubic-bezier(.2,.7,.3,1) lm-snap-l}.brand.is-strike .lm-brace:nth-of-type(4){animation:.7s cubic-bezier(.2,.7,.3,1) lm-snap-r}.brand.is-strike .lm-digit{animation:.7s ease-out lm-flash}@keyframes lm-snap-l{24%{filter:drop-shadow(0 0 16px #ffc107);transform:translate(7px)scale(.9)}}@keyframes lm-snap-r{24%{filter:drop-shadow(0 0 16px #ffc107);transform:translate(-7px)scale(.9)}}@keyframes lm-flash{22%{fill:#ffc107;transform:scale(1.12)}}@media (prefers-reduced-motion:reduce){.brand .lm-brace,.brand .lm-digit{transition:none}.brand.is-strike .lm-brace,.brand.is-strike .lm-digit,.brand:hover .brand-text:after{animation:none}}.nav-links{isolation:isolate;border:1px solid var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);background:#110e0cad;border-radius:999px;gap:2px;padding:5px;display:flex;position:relative;box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}.nl-ring{z-index:-1;border-radius:inherit;-webkit-mask-composite:xor;opacity:.5;pointer-events:none;padding:1px;transition:opacity .5s;position:absolute;inset:-1px;overflow:hidden;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.nav-links:hover .nl-ring{opacity:1}.nl-ring b{width:var(--d,640px);height:var(--d,640px);margin:calc(var(--d,640px) / -2) 0 0 calc(var(--d,640px) / -2);background:conic-gradient(#0000 0deg 262deg,#ffc10780 292deg,#fff1c9 304deg,#ffc10766 312deg,#0000 326deg);animation:9s linear infinite nl-run;position:absolute;top:50%;left:50%}@keyframes nl-run{to{transform:rotate(360deg)}}.nl-lamp{z-index:-1;width:var(--w,0px);transform:translateX(var(--x,0px));opacity:0;pointer-events:none;background:radial-gradient(100% 150% at 50% 125%,#ffc10738,#ffc1070d 58%,#0000 76%),#ffffff0b;border-radius:999px;transition:transform .55s cubic-bezier(.3,1.3,.4,1),width .55s cubic-bezier(.3,1.3,.4,1),opacity .35s;position:absolute;top:5px;bottom:5px;left:0;box-shadow:inset 0 0 0 1px #ffc10724}.nav-links.has-lamp .nl-lamp{opacity:1}.nl-lamp{overflow:hidden}.nl-lamp.is-press{filter:brightness(1.35);transform:translateX(var(--x,0px)) scale(.95);transition:transform .12s ease-out,filter .12s,width .55s cubic-bezier(.3,1.3,.4,1),opacity .35s}.nl-lamp.is-pop{animation:.6s cubic-bezier(.3,1.4,.4,1) nl-pop}@keyframes nl-pop{30%{filter:brightness(1.6)}}.nl-ripple{pointer-events:none;background:radial-gradient(circle,#fff1c9bf,#ffc10747 45%,#0000 70%);border-radius:50%;width:12px;height:12px;margin:-6px 0 0 -6px;animation:.75s cubic-bezier(.2,.7,.3,1) forwards nl-ripple;position:absolute;top:50%}@keyframes nl-ripple{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(24)}}.nav-links a:active .nl-t{transform:translateY(1px)}.nl-lamp:after{content:"";background:linear-gradient(90deg, transparent, #fff1c9 28%, var(--amber) 50%, #fff1c9 72%, transparent);height:1.5px;box-shadow:0 0 8px var(--amber), 0 0 2px #fff;border-radius:1px;position:absolute;bottom:2px;left:20%;right:20%}.nl-lamp.is-land:after{animation:.55s cubic-bezier(.2,.7,.3,1) nl-shiver}@keyframes nl-shiver{0%{filter:brightness(1.8);transform:translateY(-2px)scaleX(1.3)}
4218%{transform:translateY(1.7px)scaleX(1.12)}36%{transform:translateY(-1.1px)}54%{transform:translateY(.6px)}72%{transform:translateY(-.3px)}to{transform:none}}.nav-links a{color:var(--muted);cursor:pointer;border-radius:999px;align-items:baseline;padding:8px 13px;font-size:14px;font-weight:520;transition:color .3s;display:flex;position:relative}.nav-links a:hover,.nav-links a:focus-visible,.nav-links a.is-active,.nav-links a.is-here{color:var(--white)}.nav-links a:focus-visible{outline:2px solid var(--amber);outline-offset:1px}.nl-t{height:1.3em;line-height:1.3;display:inline-flex;overflow:hidden}.nl-t span{text-shadow:0 1.3em #ffd76a;transition:transform .5s cubic-bezier(.2, .8, .2, 1) calc(var(--d) * 22ms);display:inline-block}.nav-links a:hover .nl-t span,.nav-links a:focus-visible .nl-t span{transform:translateY(-1.3em)}@media (prefers-reduced-motion:reduce){.nl-ring b{animation:none}.nl-t span{transition:none}.nav-links a:hover .nl-t span,.nav-links a:focus-visible .nl-t span{color:#ffd76a;transform:none}}.nav-right{align-items:center;gap:10px;display:flex}.icon-btn{border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:42px;height:42px;color:var(--muted);cursor:pointer;background:#110e0c80;border-radius:11px;place-items:center;transition:color .3s,border-color .3s;display:grid}.icon-btn:hover{color:var(--white);border-color:var(--line-2)}.icon-btn .i{width:18px;height:18px}.icon-btn.is-on{color:var(--amber);border-color:#ffc10766}.nav-burger{display:none}.menu{z-index:45;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);opacity:0;visibility:hidden;transition:opacity .45s var(--ease), visibility .45s;background:#0b0908b8;position:fixed;inset:-20vh 0;overflow:hidden}.menu-panel{padding:104px var(--pad) 40px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;transition:transform .45s var(--ease), opacity .35s var(--ease);flex-direction:column;display:flex;position:absolute;inset:20vh 0;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000 64px,#000 108px);mask-image:linear-gradient(#0000 64px,#000 108px)}.menu-in{text-align:center;flex-direction:column;align-items:center;width:100%;margin:auto 0;display:flex}.menu-sub{transform:translate(100%)}.menu-sub.is-in{transform:none}.menu-panel.is-under{opacity:0;transform:translate(-16%)}.menu-sub .menu-in{text-align:left;align-items:stretch;max-width:520px;margin:0 auto}.menu-back{border:1px solid var(--line-2);height:42px;color:var(--paper);font:500 15px var(--font);cursor:pointer;background:#f3f3f30a;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:0 18px 0 12px;display:inline-flex}.menu-back .i{width:18px;height:18px}.menu-title{letter-spacing:-.02em;color:var(--white);margin:24px 0 12px;font-size:clamp(28px,8.2vw,46px);font-weight:760;font-stretch:112%;line-height:1.08;display:block}a.menu-title{align-items:center;gap:.24em;display:flex}a.menu-title .i{width:.62em;height:.62em;color:var(--amber);flex:none}.menu-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.menu-item{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--text);font:600 clamp(19px, 5.4vw, 24px) / 1.25 var(--font);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:16px;padding:16px 2px;transition:color .2s;display:flex}.menu-item:hover,.menu-item:focus-visible{color:var(--amber)}.menu-item .i{width:22px;height:22px;color:var(--amber);flex:none;transform:rotate(-90deg)}.menu-item.menu-all{color:var(--amber)}.menu-talk{gap:10px;width:100%;max-width:420px;margin-top:30px;display:grid}.menu-eyebrow{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;font-size:11.5px}.talk-row{border:1px solid var(--line);border-radius:var(--r);text-align:left;background:#f3f3f30a;align-items:center;gap:14px;padding:12px 16px;transition:border-color .3s,background .3s;display:flex}.talk-row:hover,.talk-row:active{background:#ffc1070f;border-color:#ffc10773}.talk-row .i{width:42px;height:42px;color:var(--amber);background:#ffc1071f;border-radius:50%;flex:none;padding:11px}.talk-row span{gap:2px;min-width:0;display:grid}.talk-row b{color:var(--white);overflow-wrap:anywhere;font-size:17px;font-weight:600}.talk-row small{color:var(--muted);font-size:13px}.talk-book{justify-content:center;height:52px;margin-top:4px}.talk-book .i{width:18px;height:18px}body.menu-open .menu{opacity:1;visibility:visible}body:not(.menu-open) .menu *{animation-play-state:paused}.menu .menu-link{cursor:pointer;font-family:inherit;font-size:clamp(28px, min(11vw, calc(6.1 * var(--svh))), 64px);color:var(--white);letter-spacing:-.02em;background:0 0;border:0;align-items:baseline;padding:0;font-weight:760;font-stretch:114%;line-height:1.12;display:flex}.menu-more .i{width:.55em;height:.55em;color:var(--amber);align-self:center;margin-left:.16em;transform:rotate(-90deg)}.menu a.menu-link.is-active,.menu a.menu-link.is-here{color:var(--amber);text-shadow:0 0 22px #ffc10759}.st{min-height:calc(100 * var(--svh));padding:calc(var(--nav-h) + 40px) var(--pad) 80px;align-items:center;display:flex;position:relative}.st-copy{width:min(560px,42vw);position:relative}.st-copy.wide{width:min(720px,56vw)}@media (min-width:761px) and (min-aspect-ratio:1051/1000){.st:not(.st-hero):not(.st-center)>.st-copy,.gallery-item>.st-copy{isolation:isolate}.st:not(.st-hero):not(.st-center)>.st-copy:before,.gallery-item>.st-copy:before{content:"";z-index:-1;border:1px solid var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);opacity:0;pointer-events:none;transition:opacity .8s var(--ease);background:#110e0cad;border-radius:20px;position:absolute;inset:-30px -34px;box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}.st:not(.st-hero):not(.st-center)>.st-copy:has(.is-in):before{opacity:1}.gallery-item>.st-copy:has(.is-in):before{opacity:1}}.st-center{text-align:center;justify-content:center}.st-center .st-copy{width:min(760px,90vw)}.st-center .eyebrow{justify-content:center}.st-center .lead{margin-left:auto;margin-right:auto}.st-center .actions{justify-content:center}.st-hero{padding-bottom:clamp(56px, calc(9 * var(--svh)), 110px);align-items:flex-end}.st-hero .st-copy{width:min(760px,52vw)}.st-hero .display{font-size:clamp(40px,5.1vw,92px)}.hero-row{justify-content:space-between;align-items:flex-end;
42gap:40px;width:100%;display:flex}.hero-side{text-align:right;justify-items:end;gap:18px;padding-bottom:6px;display:grid}.rated{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11.5px;line-height:1.8}.rated b{color:var(--paper);font-weight:500}.scroll-hint{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);align-items:center;gap:12px;font-size:11px;display:inline-flex}.scroll-hint i{background:var(--line-2);width:1px;height:44px;position:relative;overflow:hidden}.scroll-hint i:after{content:"";background:var(--amber);width:1px;height:40%;box-shadow:0 0 8px var(--amber);animation:drip 2.2s var(--ease) infinite;position:absolute;top:-40%;left:0}@keyframes drip{to{transform:translateY(375%)}}.points{gap:10px;margin:0 0 28px;padding:0;list-style:none;display:grid}.points li{color:#d8d2c9;align-items:baseline;gap:14px;display:flex}.points li:before{content:"";background:var(--amber-2);flex:none;width:14px;height:1px;transform:translateY(-4px)}.proof{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 18px;font-size:15px;display:flex}.proof a{color:var(--paper);border-bottom:1px solid var(--line-2);cursor:pointer;transition:color .3s,border-color .3s}.proof a:hover{color:var(--amber);border-color:var(--amber)}.idx{font-family:var(--mono);color:var(--amber);letter-spacing:.12em;font-size:12px}.hx.is-on{position:relative}.hx.is-on>.hx-pin{height:calc(100 * var(--svh));position:sticky;top:0;overflow:clip}.hx.is-on .hx-track{align-items:flex-start;height:100%;display:flex}.hx.is-on .hx-track>.st{flex:0 0 100%;min-width:0;min-height:100%}.hx.is-on.is-deck>.hx-pin{touch-action:pan-y;position:relative}.hx.is-on.is-deck .hx-track{height:auto}.hx.is-on.is-deck .hx-track>.st{min-height:calc(100 * var(--svh))}.hx-strings{z-index:2;pointer-events:none;position:absolute;inset:0}.hx.is-deck .hx-strings{height:0;position:fixed;inset:0 0 auto}.hx-string{width:60px;height:min(240px, calc(34 * var(--svh)));pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%)}.hx.is-deck .hx-string{top:calc(50 * var(--svh))}.hx-string[data-go="-1"]{left:var(--room-l,58%)}.hx-string[data-go="1"]{left:var(--room-r,94%)}.hx-string:focus-visible{outline:none}.hx-string.is-none,.hx.is-deck:not(.is-near) .hx-string{visibility:hidden;pointer-events:none}.no-webgl .hx-string:before{content:"";border-left:2px solid var(--amber);border-bottom:2px solid var(--amber);width:14px;height:14px;position:absolute;top:50%;left:50%;transform:translate(-30%,-50%)rotate(45deg)}.no-webgl .hx-string[data-go="1"]:before{transform:translate(-70%,-50%)rotate(-135deg)}.creed-proof{font-family:var(--mono);letter-spacing:.04em;color:var(--amber-2);text-wrap:balance;margin:0 0 24px;font-size:13px;line-height:1.6}@media (min-width:761px) and (min-aspect-ratio:1051/1000){.st-creed{text-align:center;justify-content:center}.st-creed .st-copy{width:min(680px,100vw - 300px)}.st-creed .lead{max-width:58ch;margin-inline:auto}}.work-item .st-copy{width:min(470px,38vw)}.work-meta{flex-wrap:wrap;gap:10px;margin:0 0 18px;display:flex}.tag{border:1px solid var(--line-2);height:28px;color:var(--muted);font-size:12.5px;font-family:var(--mono);letter-spacing:.02em;border-radius:999px;align-items:center;padding:0 11px;display:inline-flex}.outcome{color:var(--white);border-left:2px solid var(--amber-2);margin:0 0 24px;padding-left:18px;font-size:19px;line-height:1.45}.steps{counter-reset:s;gap:2px;margin:0 0 30px;padding:0;list-style:none;display:grid}.steps li{border-top:1px solid var(--line);grid-template-columns:40px 1fr;gap:2px 10px;padding:10px 0;display:grid}.steps li:last-child{border-bottom:1px solid var(--line)}.steps li b{color:var(--white);font-size:17.5px;font-weight:640}.steps li span.n{font-family:var(--mono);color:var(--amber);grid-row:span 2;padding-top:5px;font-size:12px}.steps li p{color:var(--muted);margin:0;font-size:14.5px;line-height:1.45}@media (min-width:761px) and (max-height:1000px){.hx .steps{margin-bottom:20px}.hx .steps li{padding:7px 0}.hx .stats{gap:22px 34px;margin-bottom:26px}.hx .offices{gap:6px}.hx .office{padding:8px 0}}.pills{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.pills li{height:36px;color:var(--paper);background:#ffc1070f;border:1px solid #ffc10752;border-radius:999px;align-items:center;gap:8px;padding:0 14px 0 11px;font-size:14px;font-weight:560;display:inline-flex}.pills .i{width:16px;height:16px;color:var(--amber)}.guarantees{gap:14px;display:grid}.guarantee{align-items:flex-start;gap:14px;display:flex}.guarantee .i{width:20px;height:20px;color:var(--amber);flex:none;margin-top:3px}.guarantee b{color:var(--white);font-weight:640;display:block}.guarantee span{color:var(--muted);font-size:15.5px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 34px;margin:8px 0 34px;display:grid}.stat b{color:var(--white);letter-spacing:-.03em;font-size:clamp(40px,3.8vw,66px);font-weight:800;font-stretch:118%;line-height:1;display:block}.stat b small{color:var(--amber);letter-spacing:0;margin-left:6px;font-size:.34em;font-weight:600;font-stretch:100%}.stat>span{color:var(--muted);margin-top:8px;font-size:14.5px;line-height:1.45;display:block}
42.offices{gap:8px;margin:0 0 24px;display:grid}.office{border-top:1px solid var(--line);justify-content:space-between;gap:16px;padding:11px 0;font-size:15.5px;display:flex}.office:last-child{border-bottom:1px solid var(--line)}.office b{color:var(--white);font-weight:620}.office span{color:var(--muted)}.deals{margin:4px 0 28px;padding:0;list-style:none;display:grid}.deal{border-top:1px solid var(--line);grid-template-columns:40px 1fr;gap:3px 10px;padding:13px 0;display:grid}.deal:last-child{border-bottom:1px solid var(--line)}.deal .n{font-family:var(--mono);color:var(--amber);grid-row:span 3;padding-top:5px;font-size:12px}.deal b{color:var(--white);font-size:17.5px;font-weight:640}.deal p{color:var(--muted);margin:0;font-size:14.5px;line-height:1.45}.deal .deal-earn{color:var(--paper);margin-top:3px}.deal-earn em{font-style:normal;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amber);margin-right:8px;font-size:11px}.posts{gap:0;margin:0 0 28px;display:grid}.post{border-top:1px solid var(--line);cursor:pointer;transition:padding .4s var(--ease);gap:6px;padding:20px 0;display:grid}.post:last-child{border-bottom:1px solid var(--line)}.byline{color:var(--muted);margin:18px 0 0;font-size:15px}.byline a{color:var(--paper);text-underline-offset:3px;-webkit-text-decoration:underline #ffc10780;text-decoration:underline #ffc10780}.byline a:hover{color:var(--amber)}.post-meta{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);gap:14px;font-size:11.5px;display:flex}.post-meta .cat{color:var(--amber)}.post h2,.post h3{margin:0;font-size:clamp(19px,1.5vw,24px);font-weight:650;font-stretch:106%;line-height:1.25;transition:color .3s}.post p{color:var(--muted);margin:0;font-size:15.5px;line-height:1.5}.post:hover{padding-left:10px}.post:hover h2,.post:hover h3{color:var(--amber)}.cta-title{letter-spacing:-.03em;color:var(--white);margin:0 0 22px;font-size:clamp(44px,6.4vw,112px);font-weight:800;font-stretch:118%;line-height:.96}.cta-contacts{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:10px 28px;margin-top:30px;font-size:15.5px;display:flex}.cta-contacts a{color:var(--paper);cursor:pointer;align-items:center;gap:8px;transition:color .3s;display:inline-flex}.cta-contacts a:hover{color:var(--amber)}.cta-contacts .i{width:16px;height:16px;color:var(--amber)}.page-head{min-height:calc(62 * var(--svh));padding:calc(var(--nav-h) + 60px) var(--pad) 48px;align-items:flex-end;display:flex}.page-head .st-copy{width:min(720px,56vw)}.col{width:min(var(--measure), 100%)}.wrap{padding:0 var(--pad)}#work-head{text-align:center;justify-content:center}#work-head .lead{max-width:60ch;margin:24px auto 20px}#work-head .creed-proof{max-width:62ch;margin-inline:auto}#work-head .filters{justify-content:center}@media (min-width:761px) and (min-aspect-ratio:1051/1000){#work-head{min-height:calc(100 * var(--svh));align-items:center;padding-bottom:80px}#work-head .st-copy{isolation:isolate;width:min(780px,100vw - 300px)}#work-head .display{font-size:clamp(42px,4.4vw,76px)}#work-head .st-copy:before{content:"";z-index:-1;border:1px solid var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);opacity:0;pointer-events:none;transition:opacity .8s var(--ease);background:#110e0cad;border-radius:20px;position:absolute;inset:-44px -48px;box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}#work-head .st-copy:has(.is-in):before{opacity:1}}.text-link{color:inherit;text-underline-offset:4px;-webkit-text-decoration:underline #ffc10773;text-decoration:underline #ffc10773;text-decoration-thickness:1px;transition:color .3s,text-decoration-color .3s}.text-link:hover,.text-link:focus-visible{color:var(--amber);-webkit-text-decoration-color:var(--amber);text-decoration-color:var(--amber)}.peek{font-family:var(--mono);letter-spacing:0;gap:9px;font-size:14px;font-weight:500;font-stretch:100%}.peek-p{color:var(--amber)}.peek-t b{text-align:left;color:var(--amber-2);font-weight:600;display:inline-block}.peek-caret{background:var(--amber);width:.6em;height:1.15em;box-shadow:0 0 8px var(--amber);margin-left:-6px;animation:1.05s step-end infinite caret}@media (prefers-reduced-motion:reduce){.peek-caret{animation:none}}.filters{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.chip{border:1px solid var(--line-2);height:36px;color:var(--muted);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;background:#110e0c73;border-radius:999px;padding:0 15px;font-size:13.5px;transition:color .3s,border-color .3s,background .3s}.chip:hover{color:var(--white);border-color:#ffc10799}.chip.is-on{background:var(--amber);color:var(--amber-ink);border-color:#0000;font-weight:620}a.chip{align-items:center;display:inline-flex}.topics{margin-top:26px}a.cat:hover{color:var(--amber)}.chip sup{font-family:var(--mono);opacity:.7;margin-left:4px;font-size:10px}.gallery-item{min-height:calc(86 * var(--svh));padding:40px var(--pad);align-items:center;display:flex}.gallery-item .st-copy{width:min(470px,38vw)}.gallery-item .h2{font-size:clamp(34px,3.6vw,60px)}.counter{font-family:var(--mono);color:var(--muted);letter-spacing:.1em;margin-bottom:16px;font-size:12px}.counter b{color:var(--amber);font-weight:500}.case-hero{min-height:calc(100 * var(--svh));padding:calc(var(--nav-h) + 20px) var(--pad) 56px;align-items:flex-end;display:flex}.case-hero-row{justify-content:space-between;align-items:flex-end;
42gap:40px;width:100%;display:flex}.case-hero .display{font-size:clamp(44px,6vw,110px)}.back{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);transition:color .3s, gap .3s var(--ease);cursor:pointer;align-items:center;gap:8px;margin-bottom:22px;font-size:12px;display:inline-flex}.back:hover{color:var(--amber);gap:12px}.back .i{width:16px;height:16px}.facts{text-align:left;grid-template-columns:auto auto;gap:6px 22px;font-size:14.5px;display:grid}.facts dt{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding-top:3px;font-size:11px}.facts dd{color:var(--paper);margin:0}.facts dd a,.cta-services a{color:var(--paper);text-underline-offset:3px;-webkit-text-decoration:underline #ffc10780;text-decoration:underline #ffc10780;transition:color .3s,text-decoration-color .3s}.facts dd a:hover,.cta-services a:hover{color:var(--amber);-webkit-text-decoration-color:var(--amber);text-decoration-color:var(--amber)}.reading{padding:90px var(--pad) 40px;justify-content:center;display:flex;position:relative}.reading:before{content:"";pointer-events:none;background:linear-gradient(90deg,#0b0908db,#0b0908f7 calc(50% - 420px) calc(50% + 420px),#0b0908db);position:absolute;inset:0 0 -140px;-webkit-mask-image:linear-gradient(#0000,#000 64px calc(100% - 140px),#0000);mask-image:linear-gradient(#0000,#000 64px calc(100% - 140px),#0000)}.reading+.reading:before{-webkit-mask-image:linear-gradient(#000,#000 calc(100% - 140px),#0000);mask-image:linear-gradient(#000,#000 calc(100% - 140px),#0000)}.reading>.col{position:relative}.block{margin:0 0 64px}.block h2{letter-spacing:-.015em;margin:0 0 16px;font-size:clamp(26px,2.2vw,34px);font-weight:720;font-stretch:110%;line-height:1.12}.block p{margin:0 0 16px}.challenges{gap:12px;margin:0;padding:0;list-style:none;display:grid}.challenges li{grid-template-columns:34px 1fr;gap:10px;display:grid}.challenges li span{font-family:var(--mono);color:var(--amber);padding-top:5px;font-size:12px}.measured{color:var(--faint);margin:14px 0 0;font-size:13.5px;line-height:1.5}.measured a{color:var(--muted);text-underline-offset:3px;white-space:nowrap;-webkit-text-decoration:underline #ffc10780;text-decoration:underline #ffc10780}.measured a:hover{color:var(--amber)}.measured .i{vertical-align:-1px;width:12px;height:12px}.stories{margin:0;padding:0;list-style:none}.stories li{border-top:1px solid var(--line);color:var(--muted);padding:16px 0}.stories li:last-child{border-bottom:1px solid var(--line)}.stories b{color:var(--paper);font-weight:600}.results{gap:0;display:grid}.result{border-top:1px solid var(--line);padding:20px 0}.result:last-child{border-bottom:1px solid var(--line)}.result h3{margin:0 0 6px;font-size:19px;font-weight:650;font-stretch:104%}.result p{color:var(--muted);margin:0}.stack{flex-wrap:wrap;gap:8px;display:flex}.figure{border-radius:var(--r);border:1px solid var(--line);background:var(--bg-2);aspect-ratio:16/10;margin:0 0 64px;overflow:hidden}.figure img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity 1s var(--ease), transform 1.4s var(--ease);transform:scale(1.04)}.figure img.is-loaded{opacity:1;transform:none}.next{border-top:1px solid var(--line);cursor:pointer;margin-top:64px;padding:44px 0 10px;display:block}.next .eyebrow{margin-bottom:14px}.next b{letter-spacing:-.03em;color:var(--white);transition:color .35s, gap .45s var(--ease);align-items:center;gap:18px;font-size:clamp(36px,4.6vw,72px);font-weight:790;font-stretch:116%;line-height:1;display:flex}.next b .i{width:.7em;height:.7em;color:var(--amber)}.next:hover b{color:var(--amber);gap:28px}.cta-box{background:radial-gradient(120% 140% at 0 0,#ffc1071a,#0000 60%),#110e0cb3;border:1px solid #ffc10747;border-radius:18px;margin:70px 0 0;padding:30px}.cta-box h2{margin:0 0 8px;font-size:24px;font-weight:700;font-stretch:108%}.cta-box p{color:var(--muted);margin:0 0 20px}.cta-box .cta-services{margin:-8px 0 20px;font-size:14.5px}.article-head{padding:calc(var(--nav-h) + 90px) var(--pad) 30px;justify-content:center;display:flex}.article-head h1{letter-spacing:-.02em;text-wrap:balance;margin:0 0 22px;font-size:clamp(34px,3.3vw,52px);font-weight:760;font-stretch:106%;line-height:1.08}.article-head .col,.reading>.col{width:min(var(--read), 100%)}.article-head .lead{color:var(--text);font-size:clamp(19px,.9rem + .45vw,22px);line-height:1.55}
42.prose{color:#ebe6de;text-wrap:pretty;font-size:clamp(18px,.86rem + .4vw,20px);font-weight:420;line-height:1.7}.prose>:first-child{margin-top:0}.prose h2{letter-spacing:-.012em;color:var(--white);text-wrap:balance;scroll-margin-top:calc(var(--nav-h) + 28px);margin:2.1em 0 .6em;font-size:clamp(25px,1.15em + .5vw,32px);font-weight:700;font-stretch:104%;line-height:1.22}.prose h3{color:var(--white);scroll-margin-top:calc(var(--nav-h) + 28px);margin:1.7em 0 .45em;font-size:1.15em;font-weight:650;line-height:1.3}.prose p{margin:0 0 1.05em}.prose ul,.prose ol{margin:0 0 1.15em;padding-left:1.25em}.prose li{margin:0 0 .5em;padding-left:.2em}.prose li::marker{color:var(--amber)}.prose b,.prose strong{color:var(--white);font-weight:640}.prose a{color:var(--amber);text-underline-offset:.2em;-webkit-text-decoration:underline #ffc10766;text-decoration:underline #ffc10766;text-decoration-thickness:1px;transition:text-decoration-color .2s}.prose a:hover{-webkit-text-decoration-color:var(--amber);text-decoration-color:var(--amber)}.prose blockquote{border-left:2px solid var(--amber);color:var(--paper);margin:1.5em 0;padding:.15em 0 .15em 1.1em;font-size:1.08em}.prose code{font-family:var(--mono);background:#f3f3f312;border-radius:6px;padding:.12em .36em;font-size:.86em}.prose .table-wrap{margin:1.4em 0 1.6em;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:.86em;line-height:1.5}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid #f3f3f31f;padding:.6em .8em}.prose th{color:var(--white);border-bottom-color:#ffc10773;font-weight:640}.prose td:first-child{color:var(--paper)}@media (max-width:760px){.prose .table-wrap{background:linear-gradient(90deg,#0d0b0a 30%,#0d0b0a00) 0/36px 100% no-repeat local,linear-gradient(270deg,#0d0b0a 30%,#0d0b0a00) 100%/36px 100% no-repeat local,radial-gradient(farthest-side at 0,#ffc10747,#ffc10700) 0/14px 100% no-repeat,radial-gradient(farthest-side at 100%,#ffc10747,#ffc10700) 100%/14px 100% no-repeat}.prose table{width:max-content;min-width:100%}.prose th,.prose td{min-width:8.5em;max-width:15em}}.prose .byline{margin-top:2.4em}.prose figure.photo{margin:1.8em 0 2em}.prose figure.photo:first-child{margin-top:0}.prose figure.photo img{background:#120f0c;border:1px solid #ffc4402e;border-radius:14px;width:100%;height:auto;display:block}.prose figure.photo figcaption{color:var(--muted);margin-top:.7em;font-size:.82em;line-height:1.5}.svc-read{color:var(--paper);align-items:center;gap:10px;margin-top:26px;font-size:15.5px;transition:color .25s;display:inline-flex}.svc-read .i{width:18px;height:18px;color:var(--amber);animation:2.4s ease-in-out infinite svc-read}.svc-read-min{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:11.5px}.svc-read:hover{color:var(--amber)}@keyframes svc-read{0%,to{transform:translateY(-2px)}50%{transform:translateY(3px)}}@media (prefers-reduced-motion:reduce){.svc-read .i{animation:none}}.author{align-items:center;gap:24px;margin:0 0 24px;display:flex}.author-photo{border:1px solid var(--line);background:var(--bg-2);border-radius:14px;flex:none;width:132px;overflow:hidden}.author-photo img{width:100%;height:auto;display:block}.article-head .author h1{margin:0 0 8px}.article-head .author .lead{margin:0;font-size:18px}.author-links{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.author-links a{border:1px solid var(--line);color:var(--paper);border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;transition:color .25s,border-color .25s;display:inline-flex}.author-links a:hover{color:var(--amber);border-color:#ffc10780}.author-links .i{width:14px;height:14px}.author-list{padding-top:40px;padding-bottom:120px}.author-about{padding-top:24px;padding-bottom:8px}.author-page{color:var(--faint);margin-left:12px}.pager{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:44px;display:flex}.pager .chip{min-width:40px;font-family:var(--mono);justify-content:center}span.chip{cursor:default;align-items:center;display:inline-flex}.pager-step .i{width:16px;height:16px}@media (max-width:560px){.author{flex-direction:column;align-items:flex-start;gap:16px}.author-photo{width:104px}}.toc{display:none}@media (min-width:1240px){.reading.has-toc{grid-template-columns:minmax(0, 1fr) min(var(--read), 100%) minmax(0, 1fr);align-items:start;display:grid}.reading.has-toc>.col{grid-area:1/2}.toc{top:calc(var(--nav-h) + 36px);grid-area:1/1;justify-self:end;width:min(250px,100%);margin-right:56px;font-size:14px;line-height:1.4;display:block;position:sticky}.toc-head{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-size:11.5px}.toc ol{border-left:1px solid var(--line);margin:0;padding:0;list-style:none}.toc a{color:var(--muted);border-left:1px solid #0000;margin-left:-1px;padding:6px 0 6px 14px;transition:color .2s,border-color .2s;
42display:block}.toc a:hover{color:var(--paper)}.toc a.is-here{color:var(--amber);border-left-color:var(--amber)}}.progress{z-index:60;transform-origin:0;background:var(--amber);width:100%;height:2px;box-shadow:0 0 12px var(--amber);position:fixed;top:0;left:0;transform:scaleX(0)}.team{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;margin:0 0 20px;display:grid}.member{border:1px solid var(--line);background:var(--bg-2);aspect-ratio:315/361;border-radius:14px;margin:0;position:relative;overflow:hidden}.member img{object-fit:cover;filter:grayscale()contrast(1.05)brightness(.9);width:100%;height:100%;transition:filter .6s var(--ease), transform .8s var(--ease)}.member:hover img{filter:grayscale(0)contrast()brightness();transform:scale(1.04)}.member figcaption{background:linear-gradient(#0000,#0b0908eb);padding:30px 12px 11px;font-size:14px;line-height:1.3;position:absolute;bottom:0;left:0;right:0}.member figcaption b{color:var(--white);font-weight:640;display:block}.member figcaption span{color:var(--amber);font-family:var(--mono);letter-spacing:.06em;font-size:11px}.contact{padding:calc(var(--nav-h) + 70px) var(--pad) 40px;text-align:center;justify-items:center;display:grid}.contact .eyebrow{justify-content:center}.contact .lead{margin-left:auto;margin-right:auto}.contact-form{text-align:left;width:min(600px,100%);margin:40px auto 0}.contact-more{width:min(1040px,100%);padding:90px var(--pad) 110px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(30px,5vw,80px);margin:0 auto;display:grid}.next-steps{gap:12px;margin:0 0 30px;padding:0;list-style:none;display:grid}.next-steps li{color:#d8d2c9;grid-template-columns:30px 1fr;gap:8px;font-size:16px;display:grid}.next-steps li span{font-family:var(--mono);color:var(--amber);padding-top:4px;font-size:12px}.direct{border-top:1px solid var(--line);gap:10px;padding-top:22px;display:grid}.direct a{color:var(--paper);cursor:pointer;align-items:center;gap:10px;font-size:17px;transition:color .3s;display:inline-flex}.direct a:hover{color:var(--amber)}.direct .i{width:18px;height:18px;color:var(--amber)}.form{border:1px solid var(--line-2);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0f0c0ab8;border-radius:20px;gap:16px;padding:clamp(22px,3vw,36px);display:grid;position:relative}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.field{gap:7px;display:grid;position:relative}.field label,.field .label{color:var(--muted);letter-spacing:.01em;font-size:13px;font-weight:560}.field label em{color:var(--amber);font-style:normal}.input{border:1px solid var(--line-2);width:100%;height:50px;color:var(--white);font:inherit;background:#ffffff08;border-radius:11px;padding:0 15px;font-size:16px;transition:border-color .3s,box-shadow .3s,background .3s}textarea.input{resize:vertical;height:118px;padding:13px 15px;line-height:1.5}.input::placeholder{color:var(--faint)}.input:hover{border-color:#f3f3f352}.input:focus{border-color:var(--amber);background:#ffffff0d;outline:none;box-shadow:0 0 0 4px #ffc10724}.input:-webkit-autofill{-webkit-text-fill-color:var(--white);caret-color:var(--amber);border-color:#ffc10766;transition:border-color .3s,background-color 600000s,color 600000s;box-shadow:inset 0 0 0 100px #1b1713}.input:autofill{-webkit-text-fill-color:var(--white);caret-color:var(--amber);border-color:#ffc10766;transition:border-color .3s,background-color 600000s,color 600000s;box-shadow:inset 0 0 0 100px #1b1713}.input:-webkit-autofill:focus{border-color:var(--amber);box-shadow:inset 0 0 0 100px #1b1713,0 0 0 4px #ffc10724}.input:autofill:focus{border-color:var(--amber);box-shadow:inset 0 0 0 100px #1b1713,0 0 0 4px #ffc10724}.field.is-error .input{border-color:var(--err)}.field .err{color:var(--err);min-height:0;font-size:12.5px}.select{position:relative}.select-btn{border:1px solid var(--line-2);width:100%;height:50px;color:var(--faint);text-align:left;cursor:pointer;background:#ffffff08;border-radius:11px;padding:0 44px 0 15px;font-size:16px;transition:border-color .3s,box-shadow .3s}.select-btn.has-value{color:var(--white)}.select-btn .i{width:18px;height:18px;color:var(--muted);transition:transform .3s var(--ease);position:absolute;top:15px;right:14px}.select.is-open .select-btn{border-color:var(--amber);box-shadow:0 0 0 4px #ffc10724}.select.is-open .select-btn .i{transform:rotate(180deg)}.select-list{z-index:5;border:1px solid var(--line-2);opacity:0;visibility:hidden;transition:opacity .25s, transform .3s var(--ease), visibility .3s;background:#16120ff7;border-radius:12px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;transform:translateY(-6px);box-shadow:0 24px 60px -20px #000c}
42.select.is-open .select-list{opacity:1;visibility:visible;transform:none}.select-list li{color:var(--paper);cursor:pointer;border-radius:8px;padding:10px 12px;font-size:15px}.select-list li:hover,.select-list li.is-focus{color:var(--white);background:#ffc1071f}.select-list li[aria-selected=true]{color:var(--amber)}.check{color:var(--muted);cursor:pointer;align-items:flex-start;gap:12px;font-size:14.5px;line-height:1.45;display:flex}.check input{opacity:0;pointer-events:none;position:absolute}.check .box{border:1px solid var(--line-2);border-radius:6px;flex:none;place-items:center;width:20px;height:20px;margin-top:1px;transition:background .25s,border-color .25s;display:grid}.check .box .i{width:14px;height:14px;color:var(--amber-ink);opacity:0;transition:opacity .2s, transform .25s var(--ease);transform:scale(.6)}.check input:checked+.box{background:var(--amber);border-color:var(--amber)}.check input:checked+.box .i{opacity:1;transform:none}.check input:focus-visible+.box{outline:2px solid var(--amber);outline-offset:2px}.form .btn{width:100%;margin-top:6px}.btn.is-loading{pointer-events:none;opacity:.85}.btn .spin{border:2px solid #1710044d;border-top-color:var(--amber-ink);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.faq{margin-top:36px}.faq details{border-top:1px solid var(--line);padding:4px 0}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;color:var(--white);padding:14px 30px 14px 0;font-size:16px;font-weight:600;list-style:none;position:relative}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--amber);transition:transform .3s var(--ease);font-size:22px;font-weight:400;position:absolute;top:10px;right:4px}.faq details[open] summary:after{transform:rotate(45deg)}.faq details p{color:var(--muted);margin:0 0 16px;font-size:15.5px}.roles{margin-top:24px;display:grid}.role{border-top:1px solid var(--line);transition:padding .4s var(--ease);gap:6px;padding:20px 0;display:grid}.role:last-child{border-bottom:1px solid var(--line)}.role-meta,.job-facts{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--amber);font-size:11.5px}.role-title{font-size:clamp(19px,1.5vw,24px);font-weight:650;font-stretch:106%;line-height:1.25;transition:color .3s}.role-text{color:var(--muted);font-size:15.5px;line-height:1.5}.role-foot{color:var(--faint);justify-content:space-between;align-items:center;gap:12px;font-size:13.5px;display:flex}.role-foot .i{width:18px;height:18px;color:var(--amber);transition:transform .4s var(--ease);flex:none}.role:hover{padding-left:10px}.role:hover .role-title{color:var(--amber)}.role:hover .role-foot .i{transform:translate(4px)}.roles-small{margin-top:10px}.roles-small .role-text{display:none}.job-title{font-size:clamp(38px,4.6vw,76px)}.job-facts{flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none;display:flex}.job-facts li{border:1px solid #ffc10752;border-radius:999px;padding:6px 11px}.job-lead{margin-top:18px}.job-tags{margin:22px 0 4px}.job-tags li{height:32px;padding:0 12px;font-size:13.5px}.job-parts{grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:30px 44px;display:grid}.job-part .h3{margin:0 0 14px}.job-part .points{margin:0}.apply-st{padding:calc(var(--nav-h) + 40px) var(--pad) 64px;justify-content:center}.apply-wrap{text-align:center;justify-items:center;width:min(640px,100%);margin:0 auto;display:grid}.apply-wrap .eyebrow{justify-content:center}.apply-wrap .lead{margin-left:auto;margin-right:auto}.apply-form{text-align:left;width:100%;margin-top:32px}.drop{border:1px dashed var(--line-2);cursor:pointer;background:#f3f3f308;border-radius:11px;align-items:center;gap:14px;min-height:76px;padding:14px 16px;transition:border-color .3s,background .3s;display:flex;position:relative}.drop input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.drop:hover,.drop.is-over{background:#ffc1070f;border-color:#ffc10799}.drop:focus-within{outline:2px solid var(--amber);outline-offset:2px}.drop.has-file{border-style:solid;border-color:#ffc10780}.field.is-error .drop{border-color:var(--err)}.drop-mark{width:40px;height:40px;color:var(--amber);border:1px solid #ffc10766;border-radius:50%;flex:none;place-items:center;display:grid}.drop-mark .i{width:18px;height:18px}.drop-text{gap:2px;min-width:0;display:grid}.drop-text b{color:var(--paper);overflow-wrap:anywhere;font-size:15px;font-weight:600}.drop-text small{color:var(--muted);font-size:12.5px}.check a,.form-note a{color:var(--amber)}.field[hidden]{display:none}
42.form-note{color:var(--muted);margin:0;font-size:14.5px;line-height:1.45}.hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.apply-done{text-align:center;justify-items:center;gap:10px;display:grid}.apply-done .i{width:34px;height:34px;color:var(--amber)}.other-roles{text-align:left;width:100%;margin-top:56px}.job-facts~.actions{margin-top:28px}@media (max-aspect-ratio:21/20),(max-width:760px){.st.apply-st{padding-top:calc(var(--nav-h) + 160px);align-items:center}.st.apply-st:before{display:none}}.nf{min-height:calc(100 * var(--svh));text-align:center;padding:120px var(--pad);justify-content:center;align-items:center;display:flex}.nf-card{isolation:isolate;border:1px solid var(--line);-webkit-backdrop-filter:blur(20px)saturate(1.15);backdrop-filter:blur(20px)saturate(1.15);background:#0e0b09bd;border-radius:22px;width:min(640px,100%);padding:clamp(30px,5vw,52px) clamp(22px,5vw,56px);position:relative;box-shadow:inset 0 1px #ffffff0d,0 30px 80px -30px #000000e6}.nf-card .h2{text-wrap:balance;margin:0 0 14px}.nf-card .lead{color:var(--text);max-width:30em}.nf-card .btn-ghost{background:#0b0908d9}.nf-code{font-family:var(--mono);color:var(--white);letter-spacing:-.04em;text-shadow:0 0 40px #f5ab3480;margin:0 0 10px;font-size:clamp(72px,12vw,148px);line-height:1}@media (max-width:520px){.nf{padding:100px 16px 60px}.nf-card .actions{flex-direction:column;align-items:stretch}}.foot{z-index:2;padding:120px var(--pad) 28px;color:var(--muted);font-size:14.5px;position:relative}.foot:before{content:"";z-index:-1;pointer-events:none;--hb:var(--harp-bot,200vh);-webkit-mask-image:linear-gradient(to bottom, transparent calc(var(--hb) - 6px), #000 calc(var(--hb) + 60px));-webkit-mask-image:linear-gradient(to bottom, transparent calc(var(--hb) - 6px), #000 calc(var(--hb) + 60px));mask-image:linear-gradient(to bottom, transparent calc(var(--hb) - 6px), #000 calc(var(--hb) + 60px));background:linear-gradient(#0b090800,#0b0908b8 22%,#0b0908e6);position:absolute;inset:0}.foot h3{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:0 0 14px;font-size:11px;font-weight:500}.foot ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.foot .fc-profiles-head{margin-top:28px}.foot a:not(.btn){cursor:pointer;transition:color .3s}.foot a:not(.btn):hover{color:var(--amber)}.foot a:not(.btn) .i{vertical-align:-1px;width:13px;height:13px}.foot .btn .i{width:16px;height:16px}.fc-ico,.foot-swipe{display:none}.foot-cta{text-align:center;max-width:980px;margin:0 auto}.foot-cta .actions{justify-content:center}.foot-title{letter-spacing:-.035em;color:var(--white);text-wrap:balance;margin:14px 0 30px;font-size:clamp(38px,5.4vw,86px);font-weight:700;font-stretch:112%;line-height:.98}.foot-title span{color:var(--amber);text-shadow:0 0 40px #ffc10759;display:block}.harp{height:clamp(170px, calc(24 * var(--lvh)), 240px);margin:56px calc(var(--pad) * -1) 106px;touch-action:pan-y;cursor:crosshair;position:relative}.harp-hint{left:var(--pad);font-family:var(--mono);letter-spacing:.08em;color:var(--faint);align-items:center;gap:10px;margin:0;font-size:11.5px;display:flex;position:absolute;top:-36px}.harp-hint span{background:var(--amber);width:7px;height:7px;box-shadow:0 0 12px var(--amber);border-radius:50%;animation:1.6s ease-in-out infinite pulse-dot}@keyframes pulse-dot{50%{opacity:.5;transform:scale(.6)}}.harp-n{font-family:var(--mono);color:var(--faint);justify-content:space-between;font-size:11px;display:flex;position:absolute;bottom:-18px;left:8%;right:8%}.harp-n i{width:0;opacity:calc(.6 + var(--a,0) * .4);color:color-mix(in srgb, #ffd76a calc(var(--a,0) * 100%), var(--faint));text-shadow:0 0 calc(var(--a,0) * 12px) rgba(255, 193, 7, calc(var(--a,0) * .85));transform:translateY(calc(var(--a,0) * -2px));justify-content:center;font-style:normal;display:flex}.harp-bar{align-items:center;gap:28px;height:46px;display:flex;position:absolute;bottom:-86px;left:calc(8% - 18px);right:8%}.harp-play{color:var(--white);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:999px;flex:none;align-items:center;gap:13px;padding:0;display:inline-flex}.harp-play:focus-visible{outline:2px solid var(--amber);outline-offset:5px}.hp-ico{background:var(--amber);width:36px;height:36px;color:var(--amber-ink);box-shadow:0 0 20px var(--amber-glow);border-radius:50%;place-items:center;transition:transform .25s;display:grid}.harp-play:hover .hp-ico{transform:scale(1.06);box-shadow:0 0 30px #ffc1078c}.hp-ico svg{fill:currentColor;width:18px;height:18px}.hp-bars,.harp-play.is-playing .hp-tri,.harp-play.is-loading .hp-tri{display:none}.harp-play.is-playing .hp-bars,.harp-play.is-loading .hp-bars{display:inline}.harp-play.is-loading .hp-ico{animation:.9s ease-in-out infinite hp-wait}@keyframes hp-wait{50%{transform:scale(.9);box-shadow:0 0 6px #ffc10733}}.hp-txt{flex-direction:column;align-items:flex-start;gap:2px;line-height:1.15;display:flex}.hp-txt b{letter-spacing:-.005em;font-size:13.5px;font-weight:600}.hp-txt em{font-style:normal;font-family:var(--mono);letter-spacing:.04em;color:var(--faint);font-size:11px}.harp-play.is-playing .hp-txt em{color:var(--amber-2)}.harp-wave{cursor:pointer;touch-action:pan-y;flex:1;min-width:0;height:36px;position:relative}.harp-wave:before{content:"";height:1px;transition:opacity .8s var(--ease);background:#f3f3f324;position:absolute;top:62%;left:0;right:0}.harp-wave.is-drawn:before{opacity:0}
42.harp-wave canvas{transform-origin:50% 62%;width:100%;height:100%;transition:transform 1.1s var(--ease);position:absolute;inset:0;transform:scaleY(0)}.harp-wave.is-drawn canvas{transform:none}.harp-wave .hw-lit{clip-path:inset(0 calc(100% - var(--p,0) * 100%) 0 0)}.hw-head{top:-4px;bottom:2px;left:calc(var(--p,0) * 100%);width:2px;box-shadow:0 0 12px var(--amber), 0 0 3px #fff;opacity:0;transition:opacity .5s var(--ease);background:#fff6dc;border-radius:1px;margin-left:-1px;position:absolute}.harp.is-song .hw-head{opacity:1}.harp.is-playing .hw-head{animation:1.2s ease-in-out infinite hw-beat}@keyframes hw-beat{50%{box-shadow:0 0 20px var(--amber), 0 0 4px #fff}}.hw-tip{border:1px solid var(--line-2);font-family:var(--mono);color:var(--text);white-space:nowrap;pointer-events:none;opacity:0;background:#0f0c0aeb;border-radius:7px;padding:2px 7px;font-size:10.5px;font-style:normal;transition:opacity .2s;position:absolute;bottom:calc(100% + 8px);transform:translate(-50%)}.harp-wave:hover .hw-tip,.harp-wave.is-drag .hw-tip{opacity:1}.harp-wave:focus-visible{outline:2px solid var(--amber);outline-offset:5px;border-radius:4px}.foot-grid{border-top:1px solid var(--line);grid-template-columns:minmax(300px,1.4fr) 1fr 1fr .7fr .9fr;gap:36px;margin-top:60px;padding-top:36px;display:grid}.term{border:1px solid var(--line);font-family:var(--mono);cursor:text;background:#080706d1;border-radius:14px;font-size:12.5px;line-height:1.6;overflow:hidden;box-shadow:0 20px 50px #00000059}.term-bar{border-bottom:1px solid var(--line);color:var(--faint);align-items:center;gap:6px;padding:9px 12px;font-size:11px;display:flex}.term-bar i{background:#f3f3f31f;border-radius:50%;width:9px;height:9px}.term-bar i:first-child{background:var(--amber);box-shadow:0 0 8px var(--amber-glow)}.term-bar span{margin-left:8px}.term-out{height:148px;color:var(--text);padding:12px 18px 4px 14px;overflow-y:auto}.term-out p{word-break:break-word;margin:0 0 4px}.term-out b{color:var(--amber);font-weight:500}.term-out a{color:var(--amber-2);text-underline-offset:3px;margin-right:4px;-webkit-text-decoration:underline #f5ab3459;text-decoration:underline #f5ab3459}.t-dim{color:var(--faint)}.t-err{color:var(--err)}.t-cmd{color:var(--muted)}.t-prompt{color:var(--amber-2);white-space:nowrap}.term-in{align-items:center;gap:8px;padding:6px 14px 12px;display:flex}.term-in input{min-width:0;color:var(--white);font:inherit;caret-color:var(--amber);background:0 0;border:0;outline:0;flex:1}.clock{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:baseline;padding:9px 0;display:grid}.clock b{color:var(--text);font-weight:600}.clock time{font-family:var(--mono);letter-spacing:-.02em;color:var(--white);font-size:22px}.clock .cl-st{font-family:var(--mono);color:var(--faint);grid-column:1/-1;align-items:center;gap:7px;font-size:11px;display:flex}.clock .cl-st i{background:var(--faint);border-radius:50%;width:6px;height:6px}.clock[data-state=on] .cl-st i{background:var(--amber);box-shadow:0 0 10px var(--amber)}.clock[data-state=on] .cl-st em{color:var(--amber-2)}.clock[data-state=eve] .cl-st i{background:var(--amber-2);opacity:.6}.clock .cl-st em{font-style:normal}.clock-note{color:var(--faint);margin:12px 0 0;font-size:12.5px}.foot-bottom{border-top:1px solid var(--line);color:var(--faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 32px;margin-top:44px;padding-top:22px;font-size:13px;display:flex}.fb-id{flex-wrap:wrap;align-items:center;gap:12px 26px;display:flex}.loc{align-items:center;gap:11px;margin:0;display:flex}.loc-dot{background:var(--amber);width:6px;height:6px;box-shadow:0 0 10px var(--amber);border-radius:50%;flex:none;animation:1.6s ease-in-out infinite pulse-dot}.foot-bottom .brand{transform-origin:0;margin-right:-14px;transform:scale(.8)}.foot-btn{color:inherit;font:inherit;cursor:pointer;text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line-2);text-decoration-color:var(--line-2);background:0 0;border:0;padding:0}.foot-btn:hover{color:var(--amber)}.fb-legal{display:contents}.loc b{color:var(--amber-2);font-family:var(--mono);text-align:right;font-weight:500;display:inline-block}.loc-glow{font:inherit;color:#ffd76a;
42cursor:pointer;text-shadow:0 0 10px #ffc10780,0 0 22px #ff9d1742;background:0 0;border:0;padding:0;transition:color .3s;position:relative}.lg-halo{color:#0000;text-shadow:0 0 14px #ffc10780,0 0 32px #ff9d1752;opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;animation:3.4s ease-in-out infinite loc-glow;position:absolute;inset:0}.loc-glow:hover,.loc-glow:focus-visible{color:#fff1c9}.loc-glow:focus-visible{outline:2px solid var(--amber);outline-offset:4px;border-radius:4px}@keyframes loc-glow{50%{opacity:1}}.to-top{align-self:start}.nav-top{opacity:0;pointer-events:none;width:0;transition:width .45s var(--ease), margin .45s var(--ease), opacity .3s, border-width .3s;border-width:0;margin-right:-10px;overflow:hidden}body.show-top .nav-top{opacity:1;pointer-events:auto;border-width:1px;width:42px;margin-right:0}#cursor{z-index:70;pointer-events:none;position:fixed;top:0;left:0}#cursor>div{background:var(--amber);width:92px;height:92px;color:var(--amber-ink);font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;transition:transform .4s var(--ease);border-radius:50%;place-items:center;margin:-46px 0 0 -46px;font-size:12px;font-weight:600;display:grid;transform:scale(0);box-shadow:0 0 40px #ffc10780}#cursor.is-on>div{transform:scale(1)}.count-badge{z-index:80;font-family:var(--mono);letter-spacing:.14em;color:var(--amber);pointer-events:none;background:#110e0cd9;border:1px solid #ffc10780;border-radius:999px;padding:10px 18px;font-size:13px;position:fixed;bottom:30px;left:50%;transform:translate(-50%)}:root.noblur *,:root.noblur :before,:root.noblur :after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}:root.noblur .st:not(.st-hero):not(.st-center)>.st-copy:before,:root.noblur .gallery-item>.st-copy:before,:root.noblur #gallery.is-orbit .gallery-item>.st-copy:before,:root.noblur #work-head .st-copy:before,:root.noblur body.scrolled .nav .brand,:root.noblur .nav .brand.is-here,:root.noblur .nav-home,:root.noblur .nav-links,:root.noblur .gutter,:root.noblur .quote{background-color:#110e0cdb}:root.noblur .form,:root.noblur .nf-card,:root.noblur .oc-panel{background-color:#0e0b09e0}:root.noblur .menu{background-color:#0b0908e0}:root:not(.webgl) #gl{display:none}:root:not(.webgl) body{background:radial-gradient(120% 80% at 70% 20%, #1c1611, var(--bg))}:root:not(.webgl) #view *,:root:not(.webgl) #view :before,:root:not(.webgl) #view :after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}:root:not(.webgl) .nl-ring b,:root:not(.webgl) .scroll-hint i:after,:root:not(.webgl) .peek-caret,:root:not(.webgl) .caret,:root:not(.webgl) .loc-dot,:root:not(.webgl) .lg-halo,:root:not(.webgl) .harp-hint span,:root:not(.webgl) .brand .bt-name:after{animation:none!important}:root:not(.webgl) #gutter,:root:not(.webgl) .audio-slot,:root:not(.webgl) .menu-audio,:root:not(.webgl) .harp,:root:not(.webgl) #cursor,:root:not(.webgl) .scroll-hint{display:none!important}:root:not(.webgl) #view>:not(:first-child):not(.progress):not(.hx),:root:not(.webgl) .hx-track>*{content-visibility:auto;contain-intrinsic-size:auto 900px}:root:not(.webgl) .st,:root:not(.webgl) .case-hero,:root:not(.webgl) .page-head,:root:not(.webgl) #work-head,:root:not(.webgl) .gallery-item{min-height:0}:root:not(.webgl) .st{padding-top:64px;padding-bottom:64px}:root:not(.webgl) #view>.st:first-child,:root:not(.webgl) .case-hero,:root:not(.webgl) .page-head{padding-top:calc(var(--nav-h) + 48px)}:root:not(.webgl) .article-head{padding-top:calc(var(--nav-h) + 40px)}@media (max-aspect-ratio:21/20),(max-width:760px){:root:not(.webgl) .st,:root:not(.webgl) .st-hero,:root:not(.webgl) .st-center,:root:not(.webgl) .st.apply-st{padding-top:44px;padding-bottom:44px}:root:not(.webgl) #view>.st:first-child,:root:not(.webgl) .case-hero,:root:not(.webgl) .page-head,:root:not(.webgl) .article-head{padding-top:calc(var(--nav-h) + 24px)}:root:not(.webgl) .st:before,:root:not(.webgl) .page-head:before{display:none}}.st-still{display:none}:root:not(.webgl) .st-still{width:min(40vw,520px);height:auto;max-height:calc(58 * var(--svh));object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;flex:0 auto;order:2;margin-left:auto;display:block}:root:not(.webgl) .still-hero{right:var(--pad);width:min(32vw,440px);position:absolute;top:44%;transform:translateY(-50%)}@media (max-aspect-ratio:21/20),(max-width:760px){:root:not(.webgl) .st:has(>.st-still){flex-wrap:wrap}:root:not(.webgl) .st-still{width:min(86vw,420px);max-height:calc(34 * var(--svh));order:-1;margin:0 auto 22px}:root:not(.webgl) .still-hero{display:none}}.crumbs{font-family:var(--mono);letter-spacing:.04em;color:var(--faint);flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0 0 18px;font-size:12px;display:flex}.crumbs a{color:var(--muted);transition:color .3s}.crumbs a:hover{color:var(--amber)}.crumbs [aria-current]{color:var(--text)}.svc-hero{container-type:inline-size}.svc-hero #svc-title{font-size:min(clamp(42px, 5.9vw, 104px), calc(100cqi / (var(--em,7.6) * 1.02)))}#svc-title+.lead{margin-top:26px}.draft-mark{background:var(--amber);color:var(--amber-ink);font-family:var(--mono);border-radius:999px;margin:0 0 14px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-block}.svc-index{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 28px;margin:26px 0 0;padding:0;list-style:none;display:grid}.svc-index a,.related a{color:var(--paper);align-items:baseline;gap:8px;padding:7px 0;font-weight:600;transition:color .3s;display:inline-flex}.svc-index a:hover,.related a:hover{color:var(--amber)}.svc-index-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ind-head{font-size:15px;font-family:var(--mono);letter-spacing:.02em;color:var(--muted);margin:30px 0 0;font-weight:500}.ind-head a{color:var(--muted);transition:color .3s}.ind-head a:hover{color:var(--amber)}.ind-head+.svc-index{margin-top:10px}
42@media (max-width:900px){.svc-index-3{grid-template-columns:repeat(2,minmax(0,1fr))}}.ind-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:0 18px}.ind-list a{padding:4px 0;font-size:15px;font-weight:500}@media (max-width:900px){.ind-list{grid-template-columns:repeat(3,minmax(0,1fr))}}.card-links{flex-wrap:wrap;gap:8px;margin:0 0 22px;padding:0;list-style:none;display:flex}.card-links a{border:1px solid var(--line-2);color:var(--text);border-radius:999px;padding:6px 13px;font-size:14px;transition:color .3s,border-color .3s;display:inline-block}.card-links a:hover{color:var(--amber);border-color:var(--amber)}.related{text-align:left;margin-top:40px}.related h3{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:12px;font-weight:500}.related ul{flex-wrap:wrap;gap:0 22px;margin:0;padding:0;list-style:none;display:flex}.mega{top:calc(var(--nav-h) - 4px);z-index:46;width:min(1080px, calc(100vw - 2 * var(--pad)));border:1px solid var(--line);-webkit-backdrop-filter:blur(22px)saturate(1.2);backdrop-filter:blur(22px)saturate(1.2);animation:mega-in .32s var(--ease);max-height:calc(100vh - var(--nav-h) - 12px);overscroll-behavior:contain;background:#110e0ce0;border-radius:22px;padding:26px 30px 18px;position:fixed;left:50%;overflow-y:auto;transform:translate(-50%);box-shadow:inset 0 1px #ffffff0b,0 24px 60px #00000073}@keyframes mega-in{0%{opacity:0;transform:translate(-50%,-8px)}}.mega-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px 30px;display:grid}.mega-hub{color:var(--white);margin-bottom:8px;font-weight:700;font-stretch:106%;transition:color .3s;display:block}.mega ul{margin:0;padding:0;list-style:none}.mega-cols-2{grid-column:span 2}.mega-cols-3{grid-column:span 3}.mega-cols-4{grid-column:1/-1}.mega-cols-2 ul,.mega-cols-3 ul,.mega-cols-4 ul{columns:2;column-gap:30px}.mega-cols-3 ul{columns:3}.mega-cols-4 ul{columns:4}.mega-cols-2 li,.mega-cols-3 li,.mega-cols-4 li{break-inside:avoid}.mega ul+.mega-hub{margin-top:18px}.mega li a{color:var(--muted);padding:3px 0;font-size:14px;transition:color .3s;display:block}.mega a:hover,.mega a:focus-visible{color:var(--amber)}.mega-foot{border-top:1px solid var(--line);font-family:var(--mono);flex-wrap:wrap;gap:8px 26px;margin-top:20px;padding-top:14px;font-size:12px;display:flex}.mega-foot a{color:var(--muted)}@media (min-width:1260px){.nav{grid-template-columns:1fr auto 1fr;display:grid}.nav-id{justify-self:start}.nav-right{justify-self:end}}@media (min-width:1260px) and (max-width:1299px){.nav-links a{padding-inline:12px}}@media (max-width:1259px){.nav-links,.nav-cta{display:none}.nav-burger{display:grid}.nav .audio-level{display:none}}@media (max-width:1100px){.foot-grid{grid-template-columns:1fr 1fr}}@media (max-width:900px){:root{--nav-h:70px}.nav-links,.nav-cta{display:none}.nav-burger{display:grid}.contact-more{grid-template-columns:1fr}}@media (max-aspect-ratio:21/20),(max-width:760px){body{font-size:17px}.st{padding-top:calc(48 * var(--svh));align-items:flex-end;padding-bottom:64px}.st:before{content:"";inset:calc(38 * var(--svh)) 0 0;pointer-events:none;background:linear-gradient(#0000,#0b0908c7 30%,#0b0908db);position:absolute;-webkit-mask-image:linear-gradient(#000 calc(100% - 64px),#0000);mask-image:linear-gradient(#000 calc(100% - 64px),#0000)}.st-copy,.st-copy.wide,.st-hero .st-copy,.work-item .st-copy,.gallery-item .st-copy,.page-head .st-copy{width:100%;max-width:var(--measure)}.st-hero{padding-top:calc(40 * var(--svh));padding-bottom:40px}.hx-string,.hx.is-deck .hx-string{top:var(--room-y,calc(26 * var(--svh)));width:40px;height:var(--room-h,calc(23 * var(--svh)));transform:translateY(-50%)}.hx.is-on.is-deck .hx-track>.st{align-items:flex-start}.hx-string[data-go="-1"]{left:0}.hx-string[data-go="1"]{left:auto;right:0}.st:not(.st-hero):not(.st-center)>.st-copy{isolation:isolate}.st:not(.st-hero):not(.st-center)>.st-copy:before{content:"";inset:-22px calc(8px - var(--pad)) -26px;z-index:-1;border:1px solid var(--line);-webkit-backdrop-filter:blur(16px)saturate(1.2);backdrop-filter:blur(16px)saturate(1.2);opacity:0;pointer-events:none;transition:opacity .8s var(--ease);background:#110e0cb3;border-radius:18px;position:absolute;box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}.st:not(.st-hero):not(.st-center)>.st-copy:has(.is-in):before{opacity:1}.st-hero:before{inset:calc(36 * var(--svh)) 0 0}.st-hero .lead{font-size:16.5px;margin:18px 0 22px!important}.st-hero .rated,.st-hero .scroll-hint{display:none}.hero-row{flex-direction:column;align-items:flex-start;gap:26px}.hero-side{text-align:left;justify-items:start}.st-center{padding-top:calc(30 * var(--svh))}.gallery-item{align-items:flex-start;min-height:0;padding-top:44px;padding-bottom:44px;position:relative}.gallery-item .st-copy{isolation:isolate;position:relative}.gallery-item>.st-copy:before{content:"";inset:-18px calc(8px - var(--pad)) -22px;z-index:-1;border:1px solid var(--line);-webkit-backdrop-filter:blur(16px)saturate(1.2);backdrop-filter:blur(16px)saturate(1.2);background:#110e0cb3;border-radius:18px;position:absolute;box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}.gallery-item .print-cover{aspect-ratio:16/10;object-fit:cover;object-position:top center;background:#120f0c;border:1px solid #ffc44080;border-radius:12px;width:100%;height:auto;margin:0 0 24px;display:block;box-shadow:0 0 0 4px #ffaa1e0d,0 0 26px #ffa01429,0 16px 36px #00000080}.page-head{position:relative}.page-head:before{content:"";pointer-events:none;background:linear-gradient(#0b090833,#0b0908c7 45%,#0b0908d9);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 calc(100% - 96px),#0000);mask-image:linear-gradient(#000 calc(100% - 96px),#0000)}.page-head .st-copy{position:relative}#work-head{min-height:0;padding-top:calc(var(--nav-h) + 40px);padding-bottom:36px}.case-hero{padding-top:calc(52 * var(--svh))}.case-hero-row{flex-direction:column;align-items:flex-start}.stats{gap:22px}.form-row{grid-template-columns:1fr}.foot{padding-top:80px}.foot-grid{grid-template-columns:1fr;gap:30px}.harp{height:150px;margin-top:40px}.harp-n{display:none}}#gallery.is-orbit{padding:0;display:flow-root;position:relative}.orbit-stage{width:0;height:0;margin-bottom:calc(100 * var(--svh));position:sticky;top:0}.orbit-room{width:100vw;height:calc(100 * var(--svh));visibility:hidden;pointer-events:none;position:absolute;top:0;left:0;overflow:hidden}html.snap-orbit{scroll-snap-type:y proximity}.orbit-snap{opacity:0;pointer-events:none;scroll-snap-align:start;scroll-snap-stop:always;width:1px;height:1px;position:absolute;
42left:0}#gallery.is-orbit:not(.has-plates) .gallery-item.is-front{pointer-events:auto}.orbit-hit{visibility:visible;pointer-events:auto;-webkit-tap-highlight-color:transparent;position:absolute}#gallery.is-orbit .gallery-item{left:0;right:0;top:var(--orbit-words,60%);opacity:0;visibility:hidden;width:min(100vw - 24px,440px);min-height:0;transition:opacity .3s var(--ease), transform .4s var(--ease), visibility 0s linear .4s;margin:0 auto;padding:0;display:block;position:absolute;transform:translateY(22px)}#gallery.is-orbit .gallery-item.is-front{opacity:1;visibility:visible;transition:opacity .45s var(--ease) .1s, transform .6s var(--ease) .1s, visibility 0s;transform:none}#gallery.is-orbit .gallery-item>.st-copy{width:auto;max-width:none;padding:14px 16px 16px}#gallery.is-orbit .gallery-item>.st-copy:before{opacity:1;-webkit-backdrop-filter:blur(16px)saturate(1.3);backdrop-filter:blur(16px)saturate(1.3);background:#0e0b09a8;border-color:#ffbe504d;border-radius:18px;inset:0}#gallery.is-orbit .print-cover,#gallery.is-orbit .gallery-item .muted{display:none}#gallery.is-orbit .counter{margin-bottom:8px}#gallery.is-orbit .gallery-item .h2{margin-bottom:6px;font-size:clamp(24px,7vw,32px)}#gallery.is-orbit .gallery-item .lead{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15.5px;display:-webkit-box;overflow:hidden;margin-bottom:12px!important}#gallery.is-orbit .work-meta{flex-wrap:nowrap;margin-bottom:12px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 82%,#0000);mask-image:linear-gradient(90deg,#000 82%,#0000)}#gallery.has-plates .gallery-item{width:var(--orbit-plate,360px);pointer-events:none}#gallery.has-plates .gallery-item.is-front{opacity:0;transition:none;transform:none}#gallery.has-plates .gallery-item.is-front:focus-within{opacity:1;pointer-events:auto}@media screen and (max-aspect-ratio:21/20),screen and (max-width:760px){@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){#gallery:not(.is-orbit) .gallery-item .print-cover{backface-visibility:hidden;animation:linear both helix-shot;animation-timeline:view()}}}}@keyframes helix-shot{0%{opacity:.3;transform:perspective(900px)translate3d(10%,0,-140px)rotateY(42deg)rotateX(10deg)}36%{opacity:1;transform:perspective(900px)translate(0,0)rotateY(0)rotateX(0)}80%{opacity:1;transform:perspective(900px)translate(0,0)rotateY(0)rotateX(0)}to{opacity:.3;transform:perspective(900px)translate3d(-10%,0,-140px)rotateY(-38deg)rotateX(-8deg)}}@media (min-width:1700px){body{font-size:18.5px}.st-copy{width:min(620px,40vw)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.gutter{z-index:30;border:1px solid var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);opacity:0;pointer-events:none;transition:opacity .6s var(--ease);background:#110e0cad;border-radius:14px;gap:2px;padding:10px 8px 10px 14px;display:grid;position:fixed;top:50%;right:16px;transform:translateY(-50%);box-shadow:inset 0 1px #ffffff0b,0 12px 34px #00000047}.gutter.is-on{opacity:1;pointer-events:auto}.gutter.is-measure,.gutter.is-measure *{transition:none!important}.gutter.is-still{transition-property:opacity!important}.gutter.is-still *{transition:none!important}.gutter.is-on.is-away,.at-foot .gutter.is-on{opacity:0;pointer-events:none}.gl{height:22px;font-family:var(--mono);letter-spacing:.06em;color:var(--faint);cursor:pointer;background:0 0;border:0;justify-content:flex-end;align-items:center;gap:10px;padding:0 4px;font-size:10.5px;display:flex;position:relative}.gl-t{text-overflow:ellipsis;white-space:nowrap;max-width:170px;color:var(--muted);opacity:.72;text-shadow:0 0 10px #0b0908f2,0 0 2px #0b0908e6;transition:color .3s,opacity .3s;overflow:hidden}.gl-n{text-align:right;opacity:.6;min-width:2ch;transition:color .3s,opacity .3s}.gl:after{content:"";opacity:.6;width:10px;height:1px;transition:width .4s var(--ease), background .3s, box-shadow .3s, opacity .3s;background:currentColor}.gl:hover,.gl:focus-visible{color:var(--paper)}.gl:hover .gl-t,.gl:focus-visible .gl-t,.gl:hover .gl-n,.gl:hover:after{opacity:1;color:var(--paper)}.gl.is-current{color:var(--amber)}.gl.is-current .gl-t{color:var(--white);opacity:1}.gl.is-current .gl-n,.gl.is-current:after{opacity:1}.gl.is-current:after{background:var(--amber);width:22px;box-shadow:0 0 10px var(--amber)}@media (min-width:1101px) and (max-width:1799px) and (min-aspect-ratio:1051/1000){.gutter{right:8px}}@media (min-width:1101px) and (min-aspect-ratio:1051/1000){.gutter{transition:opacity .4s, padding .35s var(--ease), background-color .3s, border-color .3s, box-shadow .3s}.gutter.is-slim:before{content:"";position:absolute;inset:-24px -8px -24px -30px}
42.gutter .gl{transition:gap .4s var(--ease), color .3s}.gutter .gl-t,.gutter .gl-n,.gutter .gl-fold,.gutter .gl-more{transition:max-width .4s var(--ease), opacity .3s, color .3s, transform .35s var(--ease);overflow:hidden}.gutter.is-slim:not(:hover):not(:focus-within):not(.is-open){box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-color:#0000;padding:10px 6px;transition-delay:.3s}.gutter.is-slim:not(:hover):not(:focus-within):not(.is-open) .gl{gap:0;transition-delay:.3s}.gutter.is-slim:not(:hover):not(:focus-within):not(.is-open) .gl-t,.gutter.is-slim:not(:hover):not(:focus-within):not(.is-open) .gl-n,.gutter.is-slim:not(:hover):not(:focus-within):not(.is-open) .gl-fold,.gutter.is-slim:not(:hover):not(:focus-within):not(.is-open) .gl-more{opacity:0;max-width:0;transition-delay:.3s}}@media (max-width:1100px),(max-aspect-ratio:21/20){.gutter{display:none}}.caret{background:var(--amber);width:.09em;height:.82em;box-shadow:0 0 18px var(--amber);vertical-align:-.04em;margin-left:.08em;animation:1.05s step-end infinite caret;display:inline-block}.stars{color:var(--amber);filter:drop-shadow(0 0 6px #ffc1078c);gap:2px;display:inline-flex}.stars svg{width:13px;height:13px}a.rated{cursor:pointer;justify-items:end;gap:6px;transition:color .3s;display:grid}a.rated:hover{color:var(--paper)}a.rated.rated-line{flex-wrap:wrap;align-items:center;gap:4px 12px;width:-moz-fit-content;width:fit-content;max-width:100%;margin-top:22px;display:flex}.rated-line+.svc-read{margin-top:16px}.classes{gap:0;margin:6px 0 28px;display:grid}.cls{border-top:1px solid var(--line);grid-template-rows:auto auto;grid-template-columns:1fr auto;gap:2px 16px;padding:14px 0;display:grid}.cls:last-child{border-bottom:1px solid var(--line)}.cls span{color:var(--paper);font-weight:560}.cls b{color:var(--white);font-variant-numeric:tabular-nums;letter-spacing:-.01em;grid-row:span 2;align-self:center;font-size:clamp(22px,1.8vw,28px);font-weight:760;font-stretch:112%}.cls em{font-style:normal;font-family:var(--mono);color:var(--muted);letter-spacing:.04em;font-size:12px}.cls-price b{color:var(--amber);text-shadow:0 0 22px #ffc1074d}a.cls{cursor:pointer}a.cls span{transition:color .3s}a.cls:hover span{color:var(--amber)}.cls-quote b{color:var(--amber-2);font-size:clamp(17px,1.4vw,21px);font-weight:650}.points-2{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:26px;display:grid}@media (max-width:760px){.points-2{grid-template-columns:1fr}}.quote-line{margin:0}.quote-line blockquote{color:var(--paper);margin:0 0 8px;font-size:17px;line-height:1.5}.quote-line figcaption{color:var(--muted);font-size:13.5px}.quote-line figcaption b{color:var(--text);font-weight:600}.quote-line figcaption span{font-family:var(--mono);letter-spacing:.02em;color:var(--faint);margin-top:3px;font-size:11.5px;display:block}.note{color:var(--muted);margin:22px 0 0;font-size:14.5px}.note a{color:var(--amber);text-underline-offset:3px;-webkit-text-decoration:underline #ffc10766;text-decoration:underline #ffc10766;transition:text-decoration-color .3s}.note a:hover{-webkit-text-decoration-color:var(--amber);text-decoration-color:var(--amber)}.price{flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin:-4px 0 18px;display:flex}.price b{letter-spacing:-.015em;color:var(--amber);text-shadow:0 0 26px #ffc10752;font-size:clamp(26px,2.4vw,36px);font-weight:760;font-stretch:112%}.price span{font-family:var(--mono);letter-spacing:.06em;color:var(--paper);font-size:12.5px}.price-words b{color:var(--amber-2);text-shadow:none;font-size:clamp(19px,1.6vw,24px);font-weight:680}.price-hero.price-words b{font-size:clamp(22px,2vw,30px)}a.result-link{cursor:pointer;display:block}a.result-link h3{transition:color .3s}a.result-link:hover h3{color:var(--amber)}.result h3 span{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-left:8px;font-size:11px;font-weight:500}.price-hero{margin:22px 0 18px}.price-alt{max-width:52ch;color:var(--muted);margin:-8px 0 18px;font-size:14.5px;line-height:1.55}.price-alt b{color:var(--amber-2);font-weight:650}.price-alt a{color:var(--paper);text-underline-offset:3px;margin-left:4px;-webkit-text-decoration:underline #ffc10766;text-decoration:underline #ffc10766}.price-alt a:hover{color:var(--amber)}.price-hero b{font-size:clamp(34px,3.4vw,52px)}.quotes{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:8px 0 22px;display:grid}.quote{border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#110e0c9e;border-radius:16px;align-content:space-between;gap:16px;margin:0;padding:20px 20px 18px;transition:border-color .4s;display:grid}.quote:hover{border-color:#ffc10773}.quote blockquote{color:var(--white);text-wrap:pretty;margin:0;font-size:16px;line-height:1.5}.quote blockquote:before{content:"“";height:18px;color:var(--amber);font-size:40px;font-weight:700;line-height:.6;display:block}.quote figcaption{gap:2px;font-size:13.5px;display:grid}.quote figcaption b{color:var(--paper);font-weight:620}.quote figcaption span{color:var(--muted)}.mentions{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 20px;font-size:14px;display:flex}.quote-long blockquote p{-webkit-line-clamp:7;line-clamp:7;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.quote figcaption a{width:max-content;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amber);margin-top:6px;font-size:11.5px}.quote figcaption a:hover{text-underline-offset:3px;text-decoration:underline}.links{flex-wrap:wrap;align-items:center;gap:12px 26px;margin:0;display:flex}.link-quiet{color:var(--muted);border-color:var(--line-2)}.reviews-st{align-items:flex-start}.reviews-top{align-items:center}.reviews-top .note{max-width:62ch}.reviews-wall{width:min(1260px,100% - 96px);margin:0 auto}.reviews-head{max-width:760px;margin:0 0 24px}.reviews-head .h2{margin:0 0 12px}.reviews-lead{max-width:64ch;color:var(--muted);margin:0 0 14px;font-size:16px;line-height:1.6}.reviews-year{font-family:var(--mono);letter-spacing:.16em;color:var(--amber);margin:18px 0 0;font-size:13px;font-weight:600}.reviews{columns:320px;column-gap:14px;margin:0 0 22px}.review{break-inside:avoid;border:1px solid var(--line);scroll-margin-top:calc(var(--nav-h) + 24px);background:#110e0ce0;border-radius:16px;grid-template-columns:minmax(0,1fr);gap:10px;margin:0 0 14px;padding:18px 18px 16px;transition:border-color .4s,box-shadow .4s;display:grid}.review:hover{border-color:#ffc10759}.review:target{border-color:var(--amber);box-shadow:0 0 0 1px var(--amber), 0 0 34px #ffc10729}.review-pic{border-bottom:1px solid var(--line);border-radius:15px 15px 0 0;margin:-18px -18px 6px;display:block;position:relative;overflow:hidden}.review-pic img{width:100%;height:auto;transition:transform .6s var(--ease);display:block}a.review-pic:hover img{transform:scale(1.03)}.review-pic-go{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--amber-ink);background:var(--amber);opacity:0;transition:opacity .3s, transform .3s var(--ease);border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:11px;display:inline-flex;position:absolute;bottom:10px;right:10px;transform:translateY(4px)}.review-pic-go .i{width:13px;height:13px}a.review-pic:hover .review-pic-go,a.review-pic:focus-visible .review-pic-go{opacity:1;transform:none}.review-head{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 14px;margin:0;font-size:11px;display:flex}.review-checked{color:var(--ok)}.rate{align-items:center;gap:8px;display:inline-flex}.rate-stars{background:#fff4e629;width:85px;height:15px;
42display:inline-block;position:relative;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27.2 24'%3E%3Cpath d='M12 2.6l2.9 6.1 6.6.8-4.9 4.6 1.3 6.6L12 17.4l-5.9 3.3 1.3-6.6-4.9-4.6 6.6-.8z'/%3E%3C/svg%3E") 0 0/17px 15px repeat-x;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27.2 24'%3E%3Cpath d='M12 2.6l2.9 6.1 6.6.8-4.9 4.6 1.3 6.6L12 17.4l-5.9 3.3 1.3-6.6-4.9-4.6 6.6-.8z'/%3E%3C/svg%3E") 0 0/17px 15px repeat-x}.rate-on{background:var(--amber);position:absolute;inset:0 auto 0 0}.rate b{letter-spacing:.02em;color:var(--white);font-weight:650}.review-title{color:var(--paper);margin:0;font-size:17px;font-weight:640;font-stretch:104%;line-height:1.3}.review-quote{border-left:2px solid #ffc1078c;margin:0;padding-left:14px;position:relative}.review-quote p{color:var(--white);text-wrap:pretty;margin:0;font-size:15.5px;line-height:1.6}.review-quiet{color:var(--faint);margin:0;font-size:14px}.review-who{color:var(--muted);flex-wrap:wrap;gap:2px 10px;margin:0;font-size:13.5px;display:flex}.review-who b{color:var(--paper);font-weight:620}.review-tags{flex-wrap:wrap;gap:6px;margin:2px 0 0;display:flex}.review-tags .tag{height:24px;padding:0 9px;font-size:11.5px}.review-links,.review-profiles{flex-wrap:wrap;gap:6px 18px;margin:2px 0 0;font-size:13.5px;display:flex}.review-links:empty{display:none}.review-profiles{margin:0 0 4px;font-size:14.5px}.review-links a,.review-profiles a{color:var(--muted);border-bottom:1px solid var(--line-2);align-items:center;gap:6px;transition:color .3s,border-color .3s;display:inline-flex}.review-profiles a{color:var(--paper)}.review-links a:hover,.review-profiles a:hover{color:var(--amber);border-color:var(--amber)}.review-links .i,.review-profiles .i{width:13px;height:13px}@media (max-width:760px){.reviews-wall{width:100%}}.price-title{margin-bottom:20px;font-size:clamp(36px,3.6vw,64px)}.pkgs{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.pkg{border:1px solid var(--line-2);background:#ffffff06;border-radius:14px;flex-direction:column;padding:16px 18px 15px;display:flex}.pkg-first{background:radial-gradient(120% 140% at 0 0,#ffc10717,#0000 62%),#ffffff05;border-color:#ffc10799;box-shadow:0 14px 40px -24px #ffc107a6}.pkg-name{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:12px;font-weight:500}.pkg-name a{color:inherit;transition:color .3s}.pkg-name a:hover{color:var(--amber)}.pkg-price{gap:2px;margin:0;display:grid}.pkg-price b{letter-spacing:-.015em;white-space:nowrap;color:var(--amber);text-shadow:0 0 26px #ffc1074d;font-size:clamp(25px,2.1vw,33px);font-weight:760;font-stretch:112%}.pkg-price span{font-family:var(--mono);letter-spacing:.04em;color:var(--paper);font-size:12px}.pkg-text{color:var(--muted);margin:8px 0 12px;font-size:14.5px;line-height:1.5}.pkg-go{color:var(--white);align-items:center;gap:8px;margin-top:auto;font-size:14.5px;font-weight:620;transition:color .3s;display:inline-flex}.pkg-go .i{width:15px;height:15px;color:var(--amber);transition:transform .3s var(--ease)}.pkg-go:hover{color:var(--amber)}.pkg-go:hover .i{transform:translate(3px)}.pkg-quote{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px 22px;margin:18px 0 0;padding:16px 0 0;display:flex}.pkg-quote p{max-width:470px;color:var(--muted);margin:0;font-size:15px;line-height:1.5}.pkg-quote b{color:var(--white);font-weight:650}.pkg-quote .btn{flex:none}.estimate .q:first-of-type{margin-top:26px}.q{border:0;min-width:0;margin:0 0 34px;padding:0}.q legend{color:var(--white);align-items:baseline;gap:12px;margin-bottom:14px;padding:0;font-size:19px;font-weight:650;font-stretch:106%;display:flex}.q legend em{color:var(--faint);font-size:13.5px;font-style:normal;font-weight:400}.opts{gap:10px;display:grid}.opts-3{grid-template-columns:repeat(3,minmax(0,1fr))}.opts-2{grid-template-columns:repeat(2,minmax(0,1fr))}.opt{text-align:left;border:1px solid var(--line-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-height:56px;transition:border-color .3s, background .3s, box-shadow .4s var(--ease);cursor:pointer;background:#110e0c8c;border-radius:14px;align-content:center;gap:3px;padding:13px 44px 13px 15px;display:grid;position:relative}.opt b{color:var(--paper);font-size:15px;font-weight:620;line-height:1.3}.opt span{color:var(--muted);font-size:12.5px;line-height:1.35}.opt:hover{border-color:#ffc1078c}.opt.is-on{border-color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber), 0 12px 40px -20px #ffc107b3;background:#ffc10714}.opt.is-on b{color:var(--white)}.opt:after{content:"";border:1px solid var(--line-2);border-radius:50%;width:10px;height:10px;margin-top:-5px;transition:background .3s,border-color .3s,box-shadow .3s;position:absolute;top:50%;right:15px}.opt.is-on:after{background:var(--amber);border-color:var(--amber);box-shadow:0 0 10px var(--amber)}.opt[data-multi]:after{display:none}.opt-box{border:1px solid var(--line-2);border-radius:6px;place-items:center;width:20px;height:20px;margin-top:-10px;transition:background .25s,border-color .25s;display:grid;position:absolute;top:50%;right:13px}.opt-box .i{width:14px;
42height:14px;color:var(--amber-ink);opacity:0;transition:opacity .2s, transform .25s var(--ease);transform:scale(.6)}.opt.is-on .opt-box{background:var(--amber);border-color:var(--amber)}.opt.is-on .opt-box .i{opacity:1;transform:none}.est-result{z-index:2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0f0c0ae6;border:1px solid #ffc10759;border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 18px;margin-top:4px;padding:14px 14px 14px 18px;display:flex;position:sticky;bottom:14px}.est-price{gap:2px;margin:0;display:grid}.est-price span{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:11px}.est-price b{color:var(--amber);font-size:clamp(22px,1.9vw,28px);font-weight:760;font-stretch:112%}.dir-prices{margin:22px 0 0;padding:0;list-style:none}.dir-prices>li{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:2px 18px;padding:10px 0;display:grid}.dir-prices>li:last-child{border-bottom:1px solid var(--line)}.dir-name{color:var(--white);font-size:17px;font-weight:620;transition:color .3s}.dir-name:hover{color:var(--amber)}.dir-price{text-align:right;flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:0 10px;margin:0;display:flex}.dir-price b{white-space:nowrap;color:var(--amber);font-size:17px;font-weight:720;font-stretch:108%}.dir-price span{font-family:var(--mono);letter-spacing:.03em;color:var(--muted);font-size:11.5px}.dir-words b{color:var(--amber-2);font-size:15px;font-weight:600}.dir-links{flex-wrap:wrap;grid-column:1/-1;gap:0 14px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.dir-links a{color:var(--muted);transition:color .3s}.dir-links a:hover{color:var(--amber)}.est-note{color:var(--ok);align-items:center;gap:8px;font-size:13px;display:flex}.est-note .i{width:15px;height:15px}@media (max-width:1100px){.quotes{grid-template-columns:1fr}}@media (max-width:1000px),(max-aspect-ratio:21/20){.opts-3{grid-template-columns:1fr 1fr}}@media (max-aspect-ratio:21/20),(max-width:760px){.pkgs{grid-template-columns:1fr}.pkg-quote{flex-direction:column;align-items:flex-start}.est-result{flex-wrap:nowrap;gap:12px;padding:10px 10px 10px 14px}.est-price span,.est-result .btn-ghost{display:none}.est-price b{font-size:18px;line-height:1.2}.est-result .btn-primary{--h:46px;padding:0 16px;font-size:14.5px}.dir-prices>li{grid-template-columns:minmax(0,1fr)}.dir-price{text-align:left;justify-content:flex-start}}@media (max-width:520px){.opts-3,.opts-2{grid-template-columns:1fr}}.sweep{z-index:55;pointer-events:none;background:linear-gradient(90deg, transparent, var(--amber) 20%, #fff4d6 50%, var(--amber) 80%, transparent);opacity:0;height:2px;position:fixed;top:0;left:0;right:0;box-shadow:0 0 24px 4px #ffaa288c,0 0 80px 10px #ff961440}.est-note[hidden]{display:none}@media (max-aspect-ratio:21/20),(max-width:760px){.quotes{scroll-snap-type:x mandatory;scroll-padding-inline:calc(var(--pad) - 8px);margin-left:calc(8px - var(--pad));margin-right:calc(8px - var(--pad));padding:0 calc(var(--pad) - 8px) 6px;scrollbar-width:none;align-items:stretch;gap:12px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10px calc(100% - 10px),#0000);mask-image:linear-gradient(90deg,#0000,#000 10px calc(100% - 10px),#0000)}.quotes::-webkit-scrollbar{display:none}.quote{scroll-snap-align:start;flex:0 0 84%}.hx.is-deck .quotes{margin:8px 0 22px;padding:0;display:grid;overflow:visible;-webkit-mask-image:none;mask-image:none}}.audio{border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#110e0c80;border-radius:11px;align-items:center;height:42px;transition:border-color .3s,background .3s;display:flex;position:relative}.audio:hover,.audio:focus-within,.audio.is-drag{background:#110e0cc7;border-color:#ffc10761}.audio-btn{height:100%;color:var(--amber);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:9px;padding:0 12px 0 11px;transition:color .3s;display:flex}.audio-btn:focus-visible{outline:2px solid var(--amber);outline-offset:-3px}.nav .audio-btn{justify-content:center;width:40px;padding:0}.audio-ico{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px;
42display:block;position:relative}.audio-ico svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.audio-ico .spk{fill:currentColor;fill-opacity:.18}.audio-ico .w1,.audio-ico .w2,.audio-ico .w3{transform-origin:52.5%;will-change:transform, opacity;transition:opacity .25s, transform .35s var(--ease)}.audio-ico .w2{opacity:.7}.audio-ico .w3{opacity:.35}.audio.is-live .audio-ico .w1,.audio.is-live .audio-ico .w2,.audio.is-live .audio-ico .w3{transition:opacity 90ms linear,transform 90ms linear}.audio.is-live .audio-ico .w1{opacity:calc(.45 + var(--l1,0) * .55);transform:scale(calc(.9 + var(--l1,0) * .16))}.audio.is-live .audio-ico .w2{opacity:calc(.25 + var(--l2,0) * .75);transform:scale(calc(.9 + var(--l2,0) * .16))}.audio.is-live .audio-ico .w3{opacity:calc(.06 + var(--l3,0) * .94);transform:scale(calc(.9 + var(--l3,0) * .16))}.audio.is-waiting .audio-ico .w1,.audio.is-waiting .audio-ico .w2,.audio.is-waiting .audio-ico .w3{animation:1.6s ease-in-out infinite wave-run}.audio.is-waiting .audio-ico .w2{animation-delay:.2s}.audio.is-waiting .audio-ico .w3{animation-delay:.4s}@keyframes wave-run{0%,to{opacity:.18;transform:scale(.9)}35%{opacity:1;transform:scale(1)}70%{opacity:.18}}.audio:before,.audio:after{content:"";z-index:-1;border-radius:inherit;pointer-events:none;opacity:0;position:absolute;inset:-1px}.audio:before{box-shadow:0 0 calc(26px + var(--charge,0) * 34px) rgba(255, 193, 7, calc(.42 + var(--charge,0) * .45));transition:opacity .6s var(--ease);background:#ffc1071f;border:1px solid #ffc107d9}.nav .audio{transform:scale(calc(1 + var(--charge,0) * .07));transform-origin:21px}.nav .audio-slot{width:42px;height:42px;transition:width .45s var(--ease);flex:none;position:relative}.nav .audio-slot.has-song{width:78px}.nav .audio-slot>.audio{z-index:3;position:absolute;top:0;left:0}.nav .audio-slot:is(:hover,:focus-within)>.audio,.nav .audio-slot>.audio.is-drag{background:#0f0c0a;border-color:#ffc10761;box-shadow:0 10px 30px #00000073}.nav .audio-slot:is(:hover,:focus-within)>.audio .audio-level{opacity:1;width:158px;padding-right:6px}.nav .audio-slot.has-song:is(:hover,:focus-within)>.audio .audio-level{width:126px;padding-right:14px}.nav .audio.has-song .audio-music{display:none}.nav-cta{transition:opacity .3s var(--ease)}.nav-right:has(.audio-slot:is(:hover,:focus-within),.audio-slot .audio.is-drag) .nav-cta{opacity:0;pointer-events:none}.audio-song{width:38px;height:100%;color:var(--amber);cursor:pointer;background:0 0;border:0;border-radius:10px;place-items:center;margin-left:-3px;padding:0;display:none;position:relative}.audio.has-song .audio-song{animation:as-in .5s var(--ease);display:grid}@keyframes as-in{0%{opacity:0;transform:scale(.5)}}.as-ring{background:conic-gradient(var(--amber) calc(var(--p,0) * 1turn), #f3f3f329 0);border-radius:50%;width:28px;height:28px;margin:-14px 0 0 -14px;position:absolute;top:50%;left:50%;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 2px),#000 calc(100% - 1.5px));mask:radial-gradient(farthest-side,#0000 calc(100% - 2px),#000 calc(100% - 1.5px))}.audio-song.is-playing .as-ring{filter:drop-shadow(0 0 4px #ffc1078c)}.audio-song.is-loading .as-ring{animation:.9s ease-in-out infinite hp-wait}.audio-song svg{fill:currentColor;width:14px;height:14px;position:relative}.audio-song .as-bars,.audio-song.is-playing .as-tri,.audio-song.is-loading .as-tri{display:none}.audio-song.is-playing .as-bars,.audio-song.is-loading .as-bars{display:inline}.audio-song:focus-visible{outline:2px solid var(--amber);outline-offset:-3px}.audio-now{z-index:3;opacity:0;visibility:hidden;width:203px;transition:opacity .25s, transform .35s var(--ease), visibility 0s .35s;padding-top:8px;position:absolute;top:100%;left:0;transform:translateY(-4px)}@media (hover:hover){.nav .audio-slot.has-song:is(:hover,:focus-within) .audio-now{opacity:1;visibility:visible;transition:opacity .25s, transform .35s var(--ease);transform:none}}.an-card{background:#0f0c0a;border:1px solid #ffc10761;border-radius:11px;gap:7px;padding:11px 14px 10px;display:grid;box-shadow:0 10px 30px #00000073}.an-card b{letter-spacing:-.005em;color:var(--white);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:600;overflow:hidden}.an-row{align-items:center;gap:10px;display:flex}.an-row em{font-family:var(--mono);letter-spacing:.03em;color:var(--amber-2);white-space:nowrap;font-size:10.5px;font-style:normal}.an-bar{cursor:pointer;touch-action:none;flex:1;height:16px;position:relative}.an-bar:before,.an-bar i{content:"";border-radius:2px;height:3px;margin-top:-1.5px;position:absolute;top:50%;left:0}.an-bar:before{background:#f3f3f324;right:0}.an-bar i{width:calc(var(--p,0) * 100%);background:var(--amber);box-shadow:0 0 8px var(--amber-glow)}.an-bar i:after{content:"";background:var(--amber);border-radius:50%;width:9px;height:9px;margin-top:-4.5px;position:absolute;top:50%;right:-4.5px;box-shadow:0 0 0 3px #ffc10729}.an-bar:focus-visible{outline:2px solid var(--amber);outline-offset:2px;border-radius:4px}.audio.is-call:before{opacity:1}.audio.is-call:after{animation:1.2s ease-out infinite sound-ring}@keyframes sound-ring{0%{opacity:1;box-shadow:0 0 #ffc10799}to{opacity:0;box-shadow:0 0 0 16px #ffc10700}}.audio.is-call .audio-btn{color:var(--amber)}.audio.is-call .audio-ico .w1,.audio.is-call .audio-ico .w2,.audio.is-call .audio-ico .w3{animation:1.2s ease-in-out infinite wave-run}.audio.is-call .audio-ico .w2{animation-delay:.15s}.audio.is-call .audio-ico .w3{animation-delay:.3s}.audio-ico .x{opacity:0;transition:opacity .25s}.audio.is-muted .audio-btn{color:var(--muted)}.audio.is-muted.is-call .audio-btn{color:var(--amber)}.audio.is-muted .audio-ico .w1,.audio.is-muted .audio-ico .w2,.audio.is-muted .audio-ico .w3{opacity:0;animation:none;transform:scale(.6)}.audio.is-muted .audio-ico .x{opacity:1}.audio-level{opacity:0;width:0;transition:width .45s var(--ease), opacity .3s, padding .45s var(--ease);align-items:center;gap:8px;display:flex;overflow:hidden}.audio:hover .audio-level,.audio:focus-within .audio-level,.audio.is-drag .audio-level{opacity:1;width:158px;padding-right:6px}.audio-level input{--v:20%;appearance:none;cursor:pointer;background:0 0;flex:1;min-width:0;height:22px;margin:0}.audio-level input::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--amber) var(--v), #f3f3f324 var(--v));border-radius:2px;height:3px}.audio-level input::-moz-range-track{background:linear-gradient(to right, var(--amber) var(--v), #f3f3f324 var(--v));border-radius:2px;height:3px}.audio-level input::-webkit-slider-thumb{-webkit-appearance:none;background:var(--amber);width:13px;height:13px;box-shadow:0 0 0 4px #ffc10729, 0 0 14px var(--amber-glow);border-radius:50%;margin-top:-5px;transition:transform .2s}.audio-level input::-moz-range-thumb{background:var(--amber);width:13px;height:13px;box-shadow:0 0 0 4px #ffc10729, 0 0 14px var(--amber-glow);border:0;border-radius:50%}.audio-level input:active::-webkit-slider-thumb{transform:scale(1.2)}.audio-level input:focus-visible{outline:none}.audio-level input:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px #ffc10773}.audio-level output{text-align:right;min-width:3ch;font-family:var(--mono);color:var(--muted);font-size:11px}.audio-music{height:30px;color:var(--amber);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;align-items:center;gap:9px;margin-left:3px;padding:0 7px;transition:color .3s,background .3s;display:flex;position:relative}.audio-music:before{content:"";background:var(--line-2);width:1px;position:absolute;top:6px;bottom:6px;left:-7px}.audio-music:hover{background:#ffc1071a}.audio-music:focus-visible{outline:2px solid var(--amber);outline-offset:-2px}.audio-music svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px;overflow:visible}.audio-music .am-head{fill:currentColor;fill-opacity:.18}.audio-music .am-slash{opacity:0;transition:opacity .25s}.audio.no-music .audio-music{color:var(--muted)}.audio.no-music .audio-music .am-slash{opacity:1}.audio.is-muted .audio-level input{opacity:.45}.audio-t{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;font-size:12px}@media (hover:none){.nav .audio-level{display:none}}.menu-audio{width:100%;max-width:420px;height:52px;margin-top:28px}.menu-audio .audio-level{opacity:1;flex:1;width:auto;padding-right:8px}.menu-audio .audio-music{height:38px;margin-left:6px;padding:0 10px}.menu-audio .audio-level input::-webkit-slider-thumb{width:20px;height:20px;margin-top:-8.5px}.menu-audio .audio-level input::-moz-range-thumb{width:20px;height:20px}.case-links{flex-wrap:wrap;align-items:center;gap:12px;margin-top:24px;display:flex}.case-links .i{width:14px;
42height:14px}.facts-row{background:var(--line);border:1px solid var(--line);border-radius:14px;grid-template-columns:repeat(2,1fr);gap:1px;margin-top:30px;display:grid;overflow:hidden}.fact{background:#0f0c0aeb;padding:18px 20px 16px}.fact b{letter-spacing:-.03em;color:var(--amber);text-shadow:0 0 26px #ffc10747;align-items:baseline;gap:5px;font-size:clamp(34px,3.4vw,46px);font-weight:700;line-height:1;display:flex}.fact small{letter-spacing:0;color:var(--amber-2);font-size:15px;font-weight:500}.fact>span{color:var(--muted);margin-top:8px;font-size:13.5px;display:block}.tour{--tw:min(1120px, calc(100vw - 2 * var(--pad)));width:var(--tw);margin-left:calc((100% - var(--tw)) / 2);grid-template-columns:1fr 272px;align-items:stretch;gap:34px;margin-bottom:70px;display:grid;position:relative}.tour-desk{background:#0f0c0a;border:1px solid #f5ab3440;border-radius:14px;overflow:hidden;box-shadow:0 40px 90px #0000008c,0 0 50px #ffc1070d}.tour-bar{border-bottom:1px solid var(--line);font-family:var(--mono);color:var(--faint);align-items:center;gap:6px;padding:10px 14px;font-size:11.5px;display:flex}.tour-bar i{background:#f3f3f324;border-radius:50%;width:9px;height:9px}.tour-bar span{background:#f3f3f30d;border-radius:20px;margin:0 auto;padding:3px 14px}.tour-view{overscroll-behavior:contain;outline:none;height:min(560px,62vh);overflow-y:auto}.tour-view img{object-fit:cover;object-position:top;width:100%;height:auto;min-height:100%;display:block}.tour-phone{contain:size;background:#0f0c0a;border:1px solid #f5ab344d;border-radius:34px;flex-direction:column;padding:10px;display:flex;position:relative;box-shadow:0 40px 90px #0000008c}.tour-phone .tour-view{border-radius:25px;flex:1;height:auto;min-height:0}.tour-hint{font-family:var(--mono);color:var(--faint);grid-column:1/-1;margin:0;font-size:12px}.tour-hint a{color:var(--amber-2)}.tour-hint .i{width:12px;height:12px}@media (hover:hover) and (pointer:fine){.tour-view{cursor:grab}.tour-view img.zoomable{cursor:inherit}.tour-view.is-drag{cursor:grabbing;-webkit-user-select:none;user-select:none}}.strip{overscroll-behavior-x:contain;width:100vw;padding:0 max(var(--pad), calc(50vw - 560px)) 16px;scrollbar-width:none;cursor:grab;gap:18px;margin-bottom:70px;margin-left:calc(50% - 50vw);
42display:flex;position:relative;overflow-x:auto}.strip::-webkit-scrollbar{display:none}.strip figure{border:1px solid var(--line);border-radius:12px;flex:0 0 min(640px,78vw);margin:0;overflow:hidden;box-shadow:0 30px 60px #00000073}.strip img{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%;height:auto;display:block}@media (max-width:900px){.tour{grid-template-columns:1fr;justify-items:center}.tour-desk{width:100%}.tour-view{height:420px}.tour-phone{width:250px;height:520px}}html,body,*{scrollbar-width:none}::-webkit-scrollbar{width:0;height:0;display:none}.vbar{z-index:6;cursor:pointer;touch-action:none;width:3px;transition:width .25s var(--ease), height .25s var(--ease), background .25s;background:#f3f3f314;border-radius:3px;position:absolute}.vbar i{background:linear-gradient(to bottom, var(--amber), var(--amber-2));cursor:grab;will-change:transform;border-radius:3px;width:100%;height:100%;position:absolute;top:0;left:0;box-shadow:0 0 10px #ffc10773}.vbar-x i{background:linear-gradient(to right, var(--amber), var(--amber-2))}.vbar.is-drag i{cursor:grabbing}.vbar:hover,.vbar.is-drag{background:#f3f3f324;width:6px}.vbar-x{height:3px}.vbar-x:hover,.vbar-x.is-drag{height:6px}.vbar.is-still i{opacity:.45;box-shadow:none}.vbar-in.is-still{opacity:0}.vbar-page{z-index:46;position:fixed;top:10px;bottom:10px;right:3px}.has-modal .vbar-page{opacity:0}@media (hover:none){.vbar-page{width:2px;right:2px}}.gl-group{display:grid}.gl-fold{opacity:.7;width:0;height:0;transition:transform .35s var(--ease), opacity .3s;border-top:3.5px solid #0000;border-bottom:3.5px solid #0000;border-left:4px solid;margin-right:-2px}.gl-group.is-open .gl-fold{transform:rotate(90deg)}.gl-more{color:var(--amber-2);opacity:.75;transition:opacity .3s, max-width .4s var(--ease);max-width:3ch;font-size:9.5px;overflow:hidden}.gl-group.is-open .gl-more{opacity:0;max-width:0}.gl-sub{transition:grid-template-rows .5s var(--ease);grid-template-rows:0fr;display:grid}.gl-sub>div{gap:1px;display:grid;overflow:hidden}.gl-group.is-open .gl-sub{grid-template-rows:1fr}.gl-item{opacity:0;height:19px;transition:opacity .35s, transform .45s var(--ease), color .3s;font-size:9.5px;transform:translate(6px)}.gl-group.is-open .gl-item{opacity:1;transform:none}.gl-group.is-open .gl-item:nth-child(2){transition-delay:30ms}.gl-group.is-open .gl-item:nth-child(3){transition-delay:60ms}.gl-group.is-open .gl-item:nth-child(4){transition-delay:90ms}.gl-group.is-open .gl-item:nth-child(5){transition-delay:.12s}.gl-group.is-open .gl-item:nth-child(6){transition-delay:.15s}.gl-group.is-open .gl-item:nth-child(7){transition-delay:.18s}.gl-item:after{width:6px}.gl-item .gl-n{min-width:3ch}.gl-group.is-inside .gl-head{color:var(--amber-2)}.gl-group.is-inside .gl-head .gl-t{color:var(--paper);opacity:.9}@media (max-width:760px){.foot{padding:72px 20px calc(22px + env(safe-area-inset-bottom))}.foot-title{margin:12px 0 24px;font-size:clamp(34px,10.5vw,46px)}.foot-cta .actions{grid-template-columns:1fr;gap:10px;display:grid}.foot-cta .actions .btn{justify-content:center}.harp{height:128px;margin:34px -20px 124px}.harp-bar{flex-direction:column;align-items:stretch;gap:12px;height:auto;bottom:-112px;left:20px;right:20px}.harp-play{align-self:flex-start}.harp-wave{flex:none;height:30px}.harp-hint{font-size:10.5px;top:-28px;left:20px}.foot-grid{grid-template-columns:minmax(0,1fr);gap:32px;margin-top:34px;padding-top:26px}.term{grid-column:1/-1;font-size:12px}.term-out{height:92px}.clocks{grid-column:1/-1;grid-template-columns:repeat(3,1fr);gap:0 10px;display:grid}.clocks h3,.clock-note{grid-column:1/-1}.clock{border:1px solid var(--line);background:#0f0c0a99;border-radius:12px;grid-template-columns:1fr;gap:2px;padding:10px 12px}.clock b{color:var(--muted);font-size:13px;font-weight:500}.clock time{font-size:20px}.clock .cl-st{font-size:10px}.clock-note{margin-top:10px;font-size:12px}.foot h3{margin-bottom:12px}.foot-services{min-width:0;position:relative}.foot-swipe{color:var(--faint);display:block;position:absolute;top:-3px;right:0}.foot-swipe .i{width:17px;height:17px;display:block}.foot-services ul{margin:0 calc(-1 * var(--pad));padding:0 var(--pad);overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--pad);scrollbar-width:none;-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--pad), #000 calc(100% - 40px), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--pad), #000 calc(100% - 40px), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--pad), #000 calc(100% - 40px), transparent);grid-template-rows:repeat(3,auto);
42grid-auto-columns:min(52vw,210px);grid-auto-flow:column;gap:8px;display:grid;overflow-x:auto}.foot-services ul::-webkit-scrollbar{display:none}.foot-services li{scroll-snap-align:start;min-width:0}.foot-services a,.foot-links:not(.foot-services) a,.foot-contact a{border:1px solid var(--line);color:var(--paper);background:#110e0c9e}.foot-services a{white-space:nowrap;text-overflow:ellipsis;border-radius:12px;align-items:center;height:48px;padding:0 14px;font-size:15px;display:flex;overflow:hidden}.foot-links:not(.foot-services) ul{flex-wrap:wrap;gap:8px;display:flex}.foot-links:not(.foot-services) a{border-radius:11px;align-items:center;gap:6px;height:40px;padding:0 14px;font-size:14.5px;display:inline-flex}.foot-contact ul{grid-template-columns:1fr 1fr;gap:8px}.foot-contact a{border-radius:14px;flex-direction:column;justify-content:space-between;gap:12px;height:100%;min-height:84px;padding:14px;font-size:14.5px;line-height:1.3;display:flex}.foot-contact a span{overflow-wrap:anywhere}.foot-contact .fc-addr{order:1;grid-column:1/-1}.foot-contact .fc-addr a{min-height:48px;color:var(--muted);flex-direction:row;justify-content:flex-start;align-items:center;gap:10px;padding:0 14px}.foot-contact .fc-addr .fc-ico .i{width:17px;height:17px}.fc-ico{color:var(--amber);display:block}.fc-ico .i{width:21px;height:21px;display:block}.foot-contact a:not(:has(.fc-ico)){flex-direction:row;justify-content:flex-start;align-items:center;gap:6px;min-height:44px;padding:0 14px}.foot-contact a:hover,.foot-services a:hover,.foot-links:not(.foot-services) a:hover{border-color:#ffc10773}.foot-bottom{text-align:center;flex-direction:column;align-items:center;gap:16px;margin-top:40px;padding-top:30px;font-size:12.5px;display:flex}.fb-id{display:contents}.fb-id .brand{order:1;margin:0;transform:none}.loc{border:1px solid var(--line);background:#110e0c9e;border-radius:14px;order:2;justify-content:center;gap:10px;padding:10px 16px;font-size:13px;line-height:1.45}.fb-legal{flex-wrap:wrap;order:3;justify-content:center;gap:8px 20px;display:flex}.fb-copy{order:4}}.strip.is-drag{cursor:grabbing}.strip.is-drag img{pointer-events:none}.zoomable{cursor:zoom-in}.strip img.zoomable{cursor:inherit;transition:transform .6s var(--ease), filter .4s}.strip figure:hover img.zoomable{transform:scale(1.02)}.h-touch{display:none}.harp-hint em{font-style:normal}@media (hover:none){.h-touch{display:inline}.h-mouse{display:none}}@media (max-width:600px){.svc-index{grid-template-columns:1fr}.svc-index-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
43</style>
44    <link rel="stylesheet" href="/static/dist/assets/print-CdwJgxFl.css" media="print">
45    <link rel="stylesheet" href="/static/dist/assets/later-CyYL3uZH.css" media="print" data-later>
46    <noscript><link rel="stylesheet" href="/static/dist/assets/later-CyYL3uZH.css"></noscript>
47    
47<script>(function(){var d=document.documentElement,f=document.fonts;if(!d.classList.contains('no-webgl'))return;var done=function(){d.classList.add('faces')};setTimeout(done,600);if(!f||!f.load){done();return}Promise.all([f.load('400 1em "LOC Sans"'),f.load('500 1em "JetBrains Mono Variable"')]).then(done,done)})();</script>
47
48    <!-- without scripts the page is its words, at once; what lives by a script steps aside and the
49         cases' pictures stand where the 3D shows their screens (static/site/noscript.css; the room
50         kept for a picture goes for a machine without a graphics card too: main.css) -->
51    <noscript><style>body>*{visibility:visible}body{opacity:1!important}</style><link rel="stylesheet" href="/static/site/noscript.16bc424dee0f.css" /></noscript>
52  </head>
53  <body data-page="contact" class="show-home">
54    <!-- Cloudflare, in front of 26loc.com, writes every email address on a page as a script that decodes it when the
55         page loads: a page this one swaps in (src/core/router.ts) would show the codes. Its own comment keeps it off -->
56    
57    <!-- the shade under Safari's status bar, just above the page's view (main.css, .top-scrim) -->
58    <i class="top-scrim" aria-hidden="true"></i>
59    <!-- what Safari finds at the screen's foot: nothing it would fill the strip round its address bar with (main.css, .edge-guard) -->
60    <i class="edge-guard" aria-hidden="true"></i>
61    <!--
62         {  2 6  }
63         26 lines of code drew everything you see on this page. Count them: press 2, then 6.
64         If you read source code for fun, we should talk: [email protected]
65    -->
66    <a class="skip" href="#view">Skip to content <kbd aria-hidden="true">Enter</kbd></a>
67    <!-- the picture's room: on a phone a layer of the page carried by the scroll, not fixed (main.css, .gl-room) -->
68    <div class="gl-room" aria-hidden="true"><canvas id="gl"></canvas><i class="gl-fade"></i></div>
69
70    <nav class="nav" aria-label="Main">
71      <div class="nav-id">
72        <a class="brand" href="/" title="26 Lines of Code - home" data-brand>
73<svg class="logo-mark " viewBox="0 0 102 48" aria-hidden="true">
74  <path class="lm-brace" d="M0 24L0 20.8653C1.3601 20.8653 2.5664 20.7265 3.6189 20.449C4.6713 20.1551 5.4728 19.6571 6.0233 18.9551C6.5739 18.2531 6.7844 17.2816 6.6548 16.0408L5.9262 9.0857C5.7481 7.4041 5.829 5.9837 6.1691 4.8245C6.5253 3.6653 7.1649 2.7347 8.0878 2.0326C9.0269 1.3143 10.2737 0.8 11.8281 0.4898C13.3987 0.1633 15.3013 0 17.5357 0L17.5357 5.3878C16.548 5.3878 15.698 5.4775 14.9855 5.6571C14.2893 5.8204 13.763 6.1306 13.4068 6.5878C13.0668 7.0286 12.9373 7.6653 13.0182 8.498L13.7711 15.7224C13.9654 17.551 13.763 19.0286 13.1639 20.1551C12.581 21.2816 11.6824 22.1469 10.468 22.751C9.2698 23.3388 7.853 23.7551 6.2176 24C7.9502 24.2612 9.4155 24.6857 10.6137 25.2735C11.8119 25.8612 12.6863 26.7102 13.2368 27.8204C13.7873 28.9306 13.9654 30.4163 13.7711 32.2776L13.0182 39.502C12.9373 40.3184 13.0668 40.9551 13.4068 41.4122C13.763 41.8694 14.2974 42.1796 15.0098 42.3429C15.7222 42.5224 16.5642 42.6122 17.5357 42.6122L17.5357 48C15.3013 48 13.4068 47.8367 11.8524 47.5102C10.298 47.1837 9.0512 46.6612 8.1121 45.9429C7.1892 45.2408 6.5496 44.3102 6.1934 43.151C5.8533 42.0082 5.7643 40.6122 5.9262 38.9633L6.6548 31.9592C6.7844 30.7184 6.5739 29.7469 6.0233 29.0449C5.489 28.3429 4.6956 27.8531 3.6432 27.5755C2.5907 27.2816 1.3763 27.1347 0 27.1347L0 24Z"/>
75  <path class="lm-digit" d="M36.2754 6.3438C38.8337 6.3438 40.9711 6.7927 42.6874 7.6907C44.4199 8.5886 45.7153 9.7805 46.5734 
7511.2662C47.4478 12.7356 47.885 14.3356 47.885 16.0662C47.885 17.4376 47.6502 18.7846 47.1806 20.107C46.7272 21.4131 45.9743 22.8009 44.9219 24.2703C43.8694 25.7233 42.4688 27.3397 40.7201 29.1193C38.9876 30.8989 36.8422 32.9397 34.2838 35.2417L48.6622 35.2417L47.8364 41.1438L25.4674 41.1438L25.4674 35.658C27.6857 33.5029 29.6125 31.5927 31.2479 29.9274C32.8833 28.2621 34.2596 26.7846 35.3768 25.4948C36.5102 24.205 37.417 23.054 38.097 22.0417C38.7933 21.0295 39.2952 20.0989 39.6029 19.2499C39.9105 18.3846 40.0643 17.5519 40.0643 16.7519C40.0643 15.3805 39.6676 14.2948 38.8742 13.4948C38.097 12.6948 36.9879 12.2948 35.5468 12.2948C34.2677 12.2948 33.1585 12.5642 32.2194 13.1029C31.2803 13.6417 30.3735 14.5152 29.4992 15.7233L24.7874 12.1478C26.0503 10.3846 27.6047 8.9805 29.4506 7.9356C31.2965 6.8744 33.5714 6.3438 36.2754 6.3438Z"/>
76  <path class="lm-digit" fill-rule="evenodd" d="M66.7532 6.3438C68.2428 6.3438 69.5948 6.5397 70.8092 6.9315C72.0398 7.3233 73.1246 7.854 74.0638 8.5233L71.1492 13.2254C70.5016 12.7519 69.8053 12.4091 69.0605 12.1968C68.3319 11.9682 67.6113 11.854 66.8989 11.854C65.6035 11.854 64.4458 12.2703 63.4257 13.1029C62.4219 13.9356 61.6204 15.1519 61.0213 16.7519C60.5384 18.0775 60.2443 19.6497 60.1393 21.4684C61.0498 20.5188 62.0643 19.7956 63.1829 19.2989C64.543 18.6948 65.8869 18.3927 67.2146 18.3927C68.9633 18.3927 70.5501 18.8336 71.975 19.7152C73.3999 20.5805 74.5333 21.854 75.3753 23.5356C76.2173 25.2009 76.6383 27.2335 76.6383 29.6336C76.6383 31.9029 76.1525 33.9764 75.181 35.854C74.2095 37.7152 72.8251 39.2009 71.0278 40.3111C69.2467 41.4213 67.1337 41.9764 64.6887 41.9764C62.4542 41.9764 60.5436 41.5519 58.9568 40.7029C57.37 39.8376 56.0747 38.6621 55.0708 37.1764C54.0669 35.6744 53.3302 33.9519 52.8606 32.0091C52.391 30.0499 52.1562 27.9764 52.1562 25.7887C52.1562 21.9682 52.7392 18.5968 53.905 15.6744C55.087 12.7519 56.7628 10.4662 58.9325 8.8172C61.1184 7.1682 63.7253 6.3438 66.7532 6.3438ZM65.223 23.7315C64.203 23.7315 63.1991 24.0172 62.2114 24.5886C61.4546 25.0265 60.7692 25.6032 60.155 26.319C60.2096 29.5025 60.5227 31.9298 61.0941 33.6009C61.7418 35.4948 62.9724 36.4417 64.7859 36.4417C66.2269 36.4417 67.2794 35.8213 67.9433 34.5805C68.6233 33.3397 68.9633 31.8376 68.9633 30.0744C68.9633 28.5233 68.8095 27.2907 68.5019 26.3764C68.2104 25.4458 67.7894 24.7764 67.2389 24.3682C66.6884 23.9438 66.0164 23.7315 65.223 23.7315Z"/>
77  <path class="lm-brace" d="M101.741 24L101.741 20.8653C100.365 20.8653 99.1504 20.7265 98.0979 20.449C97.0616 20.1551 96.2682 19.6571 95.7177 18.9551C95.1672 18.2531 94.9567 17.2816 95.0862 16.0408L95.8148 9.0367C95.993 7.3877 95.9039 5.9918 95.5477 4.849C95.1915 3.6898 94.5438 2.7592 93.6047 2.0571C92.6817 1.3388 91.4431 0.8163 89.8886 0.4898C88.3342 0.1633 86.4398 0 84.2053 0L84.2053 5.3878C85.193 5.3878 86.035 5.4775 86.7312 5.6571C87.4437 5.8204 87.9699 6.1306 88.3099 6.5878C88.6662 7.0286 88.8038 7.6653 88.7228 8.498L87.9699 15.7224C87.7756 17.5673 87.9537 19.0531 88.5043 20.1796C89.0548 21.2898 89.9291 22.1388 91.1273 22.7265C92.3417 23.3143 93.8152 23.7388 95.5477 24C93.9123 24.2449 92.4874 24.6694 91.273 25.2735C90.0587 25.8612 89.1519 26.7184 88.5528 27.8449C87.9699 28.9551 87.7756 30.4327 87.9699 32.2776L88.7228 39.502C88.8038 40.3184 88.6662 40.9551 88.3099 41.4122C87.9699 41.8694 87.4437 42.1796 86.7312 42.3429C86.035 42.5224 85.193 42.6122 84.2053 42.6122L84.2053 48C86.4398 48 88.3342 47.8367 89.8886 47.5102C91.4592 47.2 92.706 46.6857 93.629 45.9674C94.5681 45.2653 95.2077 44.3347 95.5477 43.1755C95.9039 42.0163 95.993 40.5959 95.8148 38.9143L95.0862 31.9592C94.9567 30.7184 95.1672 29.7469 95.7177 29.0449C96.2682 28.3429 97.0697 27.8531 98.1222 27.5755C99.1747 27.2816 100.381 27.1347 101.741 27.1347L101.741 24Z"/>
78</svg><span class="brand-text"><span class="bt-name">Lines<br>of Code</span></span></a>
79        <!-- the way home, beside the mark: out once the home page has gone down, always on the other pages (ui/brand.ts) -->
80        <a class="nav-home" href="/" title="Back to the home page" data-home><i class="nh-ring" aria-hidden="true"><b></b></i><svg class="nh-ico" viewBox="0 0 24 24" aria-hidden="true"><path class="nh-glow" d="M10.4 19.6v-4.5h3.2v4.5z"/><path class="nh-roof" pathLength="1" d="M3.4 11.5 12 4.3l8.6 7.2"/><path class="nh-wall" pathLength="1" d="M5.9 9.6v10h12.2v-10"/><path class="nh-door" pathLength="1" d="M10.4 19.6v-4.5h3.2v4.5"/></svg><span class="nh-t nl-t">Home</span></a>
81      </div>
82      <div class="nav-links">
83        <i class="nl-ring" aria-hidden="true"><b></b></i>
84        <i class="nl-lamp" aria-hidden="true"></i>
85        <a href="/about/" data-nav="about" title="Team and offices">About</a>
86        <a href="/#services" data-nav="services" data-mega aria-haspopup="true" aria-expanded="false" aria-controls="mega" title="What we build">Services</a>
87        <a href="/portfolio/" data-nav="portfolio" title="Case studies">Portfolio</a>
88        <a href="/pricing/" data-nav="pricing" title="What it costs">Pricing</a>
89        <a href="/reviews/" data-nav="reviews" title="What our clients say">Reviews</a>
90        <a href="/#partners" data-nav="partners" title="Work with us as a partner">Partners</a>
91        <a href="/blog/" data-nav="blog" title="Articles">Blog</a>
92        <a href="/contact/" data-nav="contact" title="Start a project" class="is-active" aria-current="page">Contact</a>
93              </div>
94      <div class="nav-right">
95        <button class="icon-btn nav-top" data-top aria-label="Back to top" title="Back to top"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 19V5"/><path d="m6 11 6-6 6 6"/></svg></button>
96        <div class="audio-slot">
97          <div class="audio" data-audio>
98            <button type="button" class="audio-btn" data-mute data-sound aria-pressed="false" aria-label="Mute the sound" title="Mute"><span class="audio-ico" aria-hidden="true"><svg viewBox="0 0 24 24">
98<path class="spk" d="M4 9.5h3.2L12 5.6v12.8l-4.8-3.9H4z"/></svg><svg class="w1" viewBox="0 0 24 24"><path d="M15.4 9.3a3.9 3.9 0 0 1 0 5.4"/></svg><svg class="w2" viewBox="0 0 24 24"><path d="M18.2 6.7a7.6 7.6 0 0 1 0 10.6"/></svg><svg class="w3" viewBox="0 0 24 24"><path d="M20.7 4.2a11.2 11.2 0 0 1 0 15.6"/></svg><svg viewBox="0 0 24 24"><path class="x" d="M15.8 9.6l4.8 4.8M20.6 9.6l-4.8 4.8"/></svg></span></button>
99            <button type="button" class="audio-song" data-song-toggle aria-label="Play the piece" title="Play the piece"><i class="as-ring" aria-hidden="true"></i><svg viewBox="0 0 24 24" aria-hidden="true"><path class="as-tri" d="M9.4 7.4v9.2l7.3-4.6z"/><path class="as-bars" d="M8.3 7.3h2.7v9.4H8.3zm4.7 0h2.7v9.4H13z"/></svg></button>
100            <div class="audio-level">
101              <input type="range" min="0" max="100" step="1" value="20" name="volume" data-vol aria-label="Volume" />
102              <output data-vol-out>20</output>
103              <button type="button" class="audio-music" data-music aria-pressed="true" aria-label="Background music" title="Background music is on"><svg viewBox="0 0 24 24" aria-hidden="true"><circle class="am-head" cx="6.9" cy="17.6" r="2.35"/><circle class="am-head" cx="16.9" cy="15.6" r="2.35"/><path d="M9.25 17.6V6.3l10-2v11.3"/><path class="am-slash" d="M4.2 3.6l15.6 17.2"/></svg></button>
104            </div>
105          </div>
106          <div class="audio-now">
107            <div class="an-card">
108              <b data-song-title></b>
109              <div class="an-row"><div class="an-bar" data-song-bar role="slider" tabindex="0" aria-label="Where the piece is" aria-valuemin="0" aria-valuemax="223"><i></i></div><em data-song-time>0:00 / 3:43</em></div>
110            </div>
111          </div>
112        </div>
113        <a class="btn btn-primary btn-sm nav-cta" href="https://fantastical.app/datysho/face-to-face" data-book target="_blank" rel="noopener" title="Book a call in our calendar">Book a call</a>
114        <button class="icon-btn nav-burger" data-burger aria-label="Open menu" aria-expanded="false"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h10"/></svg></button>
115        <!-- (with no script the menu cannot open: the button leads down to the footer's lists of every page) -->
116        <noscript><a class="icon-btn nav-burger" href="#site-links" aria-label="The site's pages" title="The site's pages"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h10"/></svg></a></noscript>
117      </div>
118    </nav>
119    <!-- the Services menu: the hubs as columns in their order, a long list over two columns or the menu's width (website/tree.py, menu_columns), the hubs with nothing under them yet under the last list (Cloud's); in the HTML the server sends, so every page links to every service (ui/mega.ts opens it) -->
120    <div class="mega" id="mega" hidden data-mega-panel data-lenis-prevent>
121      <div class="mega-grid">
122        <div class="mega-col"><a class="mega-hub" href="/web-development/" title="Web Development">Web Development</a><ul><li><a href="/web-development/affordable/" title="Affordable Web Development">Affordable Website Development</a></li><li><a href="/web-development/small-business/" title="Web Development for Small Business">Small Business Websites</a></li><li><a href="/web-development/custom/" title="Custom Web Development">Custom Web Development</a></li><li><a href="/web-development/consulting/" title="Web Development Consulting">Web Consulting</a></li><li><a href="/#industries" title="Websites by Industry">By Industry</a></li></ul></div>
123        <div class="mega-col"><a class="mega-hub" href="/mobile-app-development/" title="Mobile App Development">Mobile Apps</a><ul><li><a href="/mobile-app-development/android/" title="Android App Development">Android Apps</a></li><li><a href="/mobile-app-development/ios/" title="iOS App Development">iOS Apps</a></li><li><a href="/mobile-app-development/hybrid/" title="Hybrid App Development">Hybrid Apps</a></li><li><a href="/mobile-app-development/native/" title="Native App Development">Native Apps</a></li></ul></div>
124        <div class="mega-col"><a class="mega-hub" href="/web-application-development/" title="Web Application Development">Web Apps</a><ul><li><a href="/web-application-development/progressive/" title="Progressive Web App Development">Progressive Web Apps</a></li><li><a href="/web-application-development/custom/" title="Custom Web Application Development">
124Custom Web Apps</a></li><li><a href="/web-application-development/enterprise/" title="Enterprise Web Application Development">Enterprise Web Apps</a></li><li><a href="/web-application-development/startups/" title="Web App Development for Startups">Startup Web Apps</a></li></ul></div>
125        <div class="mega-col"><a class="mega-hub" href="/ai-development/" title="AI Development">AI Development</a><ul><li><a href="/ai-development/chatbot-development/" title="AI Chatbot Development">AI Chatbot Development</a></li><li><a href="/ai-development/ai-integration/" title="AI Integration">AI Integration</a></li><li><a href="/ai-development/consulting/" title="AI Consulting">AI Consulting</a></li><li><a href="/ai-development/ai-automation/" title="AI Automation">AI Automation</a></li></ul></div>
126        <div class="mega-col"><a class="mega-hub" href="/it-outsourcing/" title="IT Outsourcing">IT Outsourcing</a><ul><li><a href="/it-outsourcing/web-design/" title="Web Design Outsourcing">Web Design Outsourcing</a></li><li><a href="/it-outsourcing/software-development/" title="Software Development Outsourcing">Software Outsourcing</a></li><li><a href="/it-outsourcing/web-development/" title="Web Development Outsourcing">Web Development Outsourcing</a></li><li><a href="/it-outsourcing/hosting/" title="Outsourced Hosting">Outsourced Hosting</a></li><li><a href="/it-outsourcing/web-application-development/" title="Web Application Development Outsourcing">Web App Outsourcing</a></li><li><a href="/it-outsourcing/it-support/" title="Outsourced IT Support">Outsourced IT Support</a></li></ul></div>
127        <div class="mega-col"><a class="mega-hub" href="/it-maintenance/" title="IT Maintenance &amp; Support">IT Support</a><ul><li><a href="/it-maintenance/website/" title="Website Maintenance">Website Maintenance</a></li><li><a href="/it-maintenance/small-business/" title="IT Support &amp; Maintenance for Small Business">Small Business IT</a></li><li><a href="/it-maintenance/software/" title="Software Maintenance Services">Software Maintenance</a></li><li><a href="/it-maintenance/server/" title="Server Maintenance Services">Server Maintenance</a></li></ul></div>
128        <div class="mega-col mega-cols-2"><a class="mega-hub" href="/cybersecurity/" title="Cybersecurity">Cybersecurity</a><ul><li><a href="/cybersecurity/small-business/" title="Cybersecurity for Small Business">For Small Business</a></li><li><a href="/cybersecurity/consulting/" title="Cybersecurity Consulting">Cybersecurity Consulting</a></li><li><a href="/cybersecurity/managed-services/" title="Managed Cybersecurity Services">Managed Security (MSSP)</a></li><li><a href="/cybersecurity/audit/" title="Cybersecurity Audit Services">Security Audit</a></li><li><a href="/cybersecurity/risk-assessment/" title="Cybersecurity Risk Assessment">Risk Assessment</a></li><li><a href="/cybersecurity/testing/" title="Cybersecurity Testing Services">Penetration Testing</a></li><li><a href="/cybersecurity/incident-response/" title="Cybersecurity Incident Response">Incident Response</a></li><li><a href="/cybersecurity/monitoring/" title="Cybersecurity Monitoring">Monitoring</a></li><li><a href="/cybersecurity/remediation/" title="Cybersecurity Remediation">Remediation</a></li><li><a href="/cybersecurity/industrial-ot/" title="OT / Industrial Cybersecurity">Industrial OT</a></li><li><a href="/cybersecurity/ai/" title="AI Cybersecurity">AI Cybersecurity</a></li></ul></div>
129        <div class="mega-col mega-cols-3"><a class="mega-hub" href="/compliance/" title="Compliance">Compliance</a><ul><li><a href="/compliance/consulting/" title="Compliance Consulting">Compliance Consulting</a></li><li><a href="/compliance/hipaa/" title="HIPAA Compliance">HIPAA</a></li><li><a href="/compliance/gdpr/" title="GDPR Compliance">GDPR</a></li><li><a href="/compliance/pci/" title="PCI Compliance">PCI DSS</a></li><li><a href="/compliance/cmmc/" title="CMMC Compliance">CMMC</a></li><li><a href="/compliance/iso-27001/" title="ISO 27001 Compliance">ISO 27001</a></li><li><a href="/compliance/data-management/" title="Data Management Compliance">Data Management</a></li><li><a href="/compliance/data-privacy/" title="Data Privacy Compliance">Data Privacy</a></li><li><a href="/compliance/cloud/" title="Cloud Compliance">Cloud Compliance</a></li><li><a href="/compliance/automation/" title="Compliance Automation">Compliance Automation</a></li><li><a href="/compliance/software-development/" title="Compliance Software Development">Compliance Software</a></li><li><a href="/compliance/healthcare/" title="Healthcare Compliance">Healthcare</a></li><li><a href="/compliance/financial/" title="Financial Compliance">Financial</a></li><li><a href="/compliance/hr/" title="HR Compliance">HR</a></li><li><a href="/compliance/tax/" title="Tax Compliance">Tax</a></li><li>
129<a href="/compliance/environmental/" title="Environmental Compliance">Environmental</a></li><li><a href="/compliance/aml/" title="AML Compliance">AML</a></li><li><a href="/compliance/ada-website/" title="ADA Website Compliance">ADA Website</a></li></ul></div>
130        <div class="mega-col"><a class="mega-hub" href="/cloud-services/" title="Cloud Services">Cloud</a><ul><li><a href="/cloud-services/managed-services/" title="Cloud Maintenance &amp; Managed Services">Managed Cloud</a></li><li><a href="/cloud-services/migration/" title="Cloud Migration">Cloud Migration</a></li><li><a href="/cloud-services/disaster-recovery/" title="Cloud Disaster Recovery">Disaster Recovery</a></li><li><a href="/cloud-services/security/" title="Cloud Security">Cloud Security</a></li><li><a href="/cloud-services/backup/" title="Cloud Backup">Cloud Backup</a></li></ul><a class="mega-hub" href="/custom-software-development/" title="Custom Software Development">Custom Software</a><a class="mega-hub" href="/staff-augmentation/" title="Staff Augmentation">Staff Augmentation</a></div>
131      </div>
132      <div class="mega-foot"><a href="/#services" title="The services on the home page">All services</a><a href="/contact/" title="Contact form">Not sure? Describe your task</a></div>
133    </div>
134
135    <!-- the phone's menu: panels the size of the screen, one over another - the links, Services, a
136         direction - each scrolling on its own, Back to the one under it (app.ts menu) -->
137    <div class="menu" id="menu" aria-hidden="true">
138      <div class="menu-panel menu-main" data-panel="main" data-lenis-prevent>
139        <div class="menu-in">
140      <a class="menu-link" href="/about/" data-nav="about" title="Team and offices">About</a>
141      <button type="button" class="menu-link menu-more" data-open="services" aria-controls="menu-services" aria-expanded="false">Services<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button>
142      <a class="menu-link" href="/portfolio/" data-nav="portfolio" title="Case studies">Portfolio</a>
143      <a class="menu-link" href="/pricing/" data-nav="pricing" title="What it costs">Pricing</a>
144      <a class="menu-link" href="/reviews/" data-nav="reviews" title="What our clients say">Reviews</a>
145      <a class="menu-link" href="/#partners" data-nav="partners" title="Work with us as a partner">Partners</a>
146      <a class="menu-link" href="/blog/" data-nav="blog" title="Articles">Blog</a>
147      <a class="menu-link is-active" href="/contact/" data-nav="contact" title="Start a project">Contact</a>
148            <div class="audio menu-audio" data-audio>
149        <button type="button" class="audio-btn" data-mute aria-pressed="false" aria-label="Mute the sound"><span class="audio-ico" aria-hidden="true"><svg viewBox="0 0 24 24"><path class="spk" d="M4 9.5h3.2L12 5.6v12.8l-4.8-3.9H4z"/></svg><svg class="w1" viewBox="0 0 24 24"><path d="M15.4 9.3a3.9 3.9 0 0 1 0 5.4"/></svg><svg class="w2" viewBox="0 0 24 24"><path d="M18.2 6.7a7.6 7.6 0 0 1 0 10.6"/></svg><svg class="w3" viewBox="0 0 24 24"><path d="M20.7 4.2a11.2 11.2 0 0 1 0 15.6"/></svg><svg viewBox="0 0 24 24"><path class="x" d="M15.8 9.6l4.8 4.8M20.6 9.6l-4.8 4.8"/></svg></span><span class="audio-t">Sound</span></button>
150        <div class="audio-level">
151          <input type="range" min="0" max="100" step="1" value="20" name="volume" data-vol aria-label="Volume" />
152          <output data-vol-out>20</output>
153          <button type="button" class="audio-music" data-music aria-pressed="true" aria-label="Background music" title="Background music is on"><svg viewBox="0 0 24 24" aria-hidden="true"><circle class="am-head" cx="6.9" cy="17.6" r="2.35"/><circle class="am-head" cx="16.9" cy="15.6" r="2.35"/><path d="M9.25 17.6V6.3l10-2v11.3"/><path class="am-slash" d="M4.2 3.6l15.6 17.2"/></svg><span class="audio-t">Music</span></button>
154        </div>
155      </div>
156      <div class="menu-talk">
157        <p class="menu-eyebrow">Talk to us</p>
158        <a class="talk-row" data-phone href="tel:+17867779396" title="Call"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8 9.8a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2z"/></svg><span><b>+1 (786) 777-9396</b><small>Call us</small></span></a>
159        <a class="talk-row" data-mail href="mailto:[email protected]" title="Email"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 6L2 7"/></svg><span><b>[email protected]</b><small>Write to us</small></span></a>
160        <a class="btn btn-primary talk-book" href="https://fantastical.app/datysho/face-to-face" data-book target="_blank" rel="noopener" title="Book a call in our 
160calendar"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Book a call</a>
161      </div>
162        </div>
163      </div>
164      <section class="menu-panel menu-sub" id="menu-services" data-panel="services" data-lenis-prevent hidden aria-label="Services">
165        <div class="menu-in">
166          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Back</span></button>
167          <p class="menu-title">Services</p>
168          <ul class="menu-list"><li><button type="button" class="menu-item" data-open="web-development" aria-controls="menu-web-development" aria-expanded="false">Web Development<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="mobile-app-development" aria-controls="menu-mobile-app-development" aria-expanded="false">Mobile Apps<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="web-application-development" aria-controls="menu-web-application-development" aria-expanded="false">Web Apps<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="ai-development" aria-controls="menu-ai-development" aria-expanded="false">AI Development<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="it-outsourcing" aria-controls="menu-it-outsourcing" aria-expanded="false">IT Outsourcing<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="it-maintenance" aria-controls="menu-it-maintenance" aria-expanded="false">IT Support<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="cybersecurity" aria-controls="menu-cybersecurity" aria-expanded="false">Cybersecurity<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="compliance" aria-controls="menu-compliance" aria-expanded="false">Compliance<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><button type="button" class="menu-item" data-open="cloud-services" aria-controls="menu-cloud-services" aria-expanded="false">Cloud<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button></li><li><a class="menu-item" href="/custom-software-development/" title="Custom Software Development">Custom Software</a></li><li><a class="menu-item" href="/staff-augmentation/" title="Staff Augmentation">Staff Augmentation</a></li><li><a class="menu-item menu-all" href="/#services" title="The services on the home page">All services</a></li></ul>
169        </div>
170      </section>
171      <section class="menu-panel menu-sub" id="menu-web-development" data-panel="web-development" data-lenis-prevent hidden aria-label="Web Development">
172        <div class="menu-in">
173          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
174          <a class="menu-title" href="/web-development/" title="Web Development">Web Development<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
175          <ul class="menu-list"><li><a class="menu-item" href="/web-development/affordable/" title="Affordable Web Development">Affordable Website Development</a></li><li><a class="menu-item" href="/web-development/small-business/" title="Web Development for Small Business">Small Business Websites</a></li><li><a class="menu-item" href="/web-development/custom/" title="Custom Web Development">
175Custom Web Development</a></li><li><a class="menu-item" href="/web-development/consulting/" title="Web Development Consulting">Web Consulting</a></li><li><a class="menu-item" href="/#industries" title="Websites by Industry">By Industry</a></li></ul>
176        </div>
177      </section>
178      <section class="menu-panel menu-sub" id="menu-mobile-app-development" data-panel="mobile-app-development" data-lenis-prevent hidden aria-label="Mobile Apps">
179        <div class="menu-in">
180          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
181          <a class="menu-title" href="/mobile-app-development/" title="Mobile App Development">Mobile Apps<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
182          <ul class="menu-list"><li><a class="menu-item" href="/mobile-app-development/android/" title="Android App Development">Android Apps</a></li><li><a class="menu-item" href="/mobile-app-development/ios/" title="iOS App Development">iOS Apps</a></li><li><a class="menu-item" href="/mobile-app-development/hybrid/" title="Hybrid App Development">Hybrid Apps</a></li><li><a class="menu-item" href="/mobile-app-development/native/" title="Native App Development">Native Apps</a></li></ul>
183        </div>
184      </section>
185      <section class="menu-panel menu-sub" id="menu-web-application-development" data-panel="web-application-development" data-lenis-prevent hidden aria-label="Web Apps">
186        <div class="menu-in">
187          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
188          <a class="menu-title" href="/web-application-development/" title="Web Application Development">Web Apps<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
189          <ul class="menu-list"><li><a class="menu-item" href="/web-application-development/progressive/" title="Progressive Web App Development">Progressive Web Apps</a></li><li><a class="menu-item" href="/web-application-development/custom/" title="Custom Web Application Development">Custom Web Apps</a></li><li><a class="menu-item" href="/web-application-development/enterprise/" title="Enterprise Web Application Development">Enterprise Web Apps</a></li><li><a class="menu-item" href="/web-application-development/startups/" title="Web App Development for Startups">Startup Web Apps</a></li></ul>
190        </div>
191      </section>
192      <section class="menu-panel menu-sub" id="menu-ai-development" data-panel="ai-development" data-lenis-prevent hidden aria-label="AI Development">
193        <div class="menu-in">
194          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
195          <a class="menu-title" href="/ai-development/" title="AI Development">AI Development<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
196          <ul class="menu-list"><li><a class="menu-item" href="/ai-development/chatbot-development/" title="AI Chatbot Development">AI Chatbot Development</a></li><li><a class="menu-item" href="/ai-development/ai-integration/" title="AI Integration">AI Integration</a></li><li><a class="menu-item" href="/ai-development/consulting/" title="AI Consulting">AI Consulting</a></li><li><a class="menu-item" href="/ai-development/ai-automation/" title="AI Automation">AI Automation</a></li></ul>
197        </div>
198      </section>
199      <section class="menu-panel menu-sub" id="menu-it-outsourcing" data-panel="it-outsourcing" data-lenis-prevent hidden aria-label="IT Outsourcing">
200        <div class="menu-in">
201          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
202          <a class="menu-title" href="/it-outsourcing/" title="IT Outsourcing">IT Outsourcing<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
203          <ul class="menu-list"><li><a class="menu-item" href="/it-outsourcing/web-design/" title="Web Design Outsourcing">Web Design Outsourcing</a></li><li><a class="menu-item" href="/it-outsourcing/software-development/" title="Software Development Outs
203ourcing">Software Outsourcing</a></li><li><a class="menu-item" href="/it-outsourcing/web-development/" title="Web Development Outsourcing">Web Development Outsourcing</a></li><li><a class="menu-item" href="/it-outsourcing/hosting/" title="Outsourced Hosting">Outsourced Hosting</a></li><li><a class="menu-item" href="/it-outsourcing/web-application-development/" title="Web Application Development Outsourcing">Web App Outsourcing</a></li><li><a class="menu-item" href="/it-outsourcing/it-support/" title="Outsourced IT Support">Outsourced IT Support</a></li></ul>
204        </div>
205      </section>
206      <section class="menu-panel menu-sub" id="menu-it-maintenance" data-panel="it-maintenance" data-lenis-prevent hidden aria-label="IT Support">
207        <div class="menu-in">
208          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
209          <a class="menu-title" href="/it-maintenance/" title="IT Maintenance &amp; Support">IT Support<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
210          <ul class="menu-list"><li><a class="menu-item" href="/it-maintenance/website/" title="Website Maintenance">Website Maintenance</a></li><li><a class="menu-item" href="/it-maintenance/small-business/" title="IT Support &amp; Maintenance for Small Business">Small Business IT</a></li><li><a class="menu-item" href="/it-maintenance/software/" title="Software Maintenance Services">Software Maintenance</a></li><li><a class="menu-item" href="/it-maintenance/server/" title="Server Maintenance Services">Server Maintenance</a></li></ul>
211        </div>
212      </section>
213      <section class="menu-panel menu-sub" id="menu-cybersecurity" data-panel="cybersecurity" data-lenis-prevent hidden aria-label="Cybersecurity">
214        <div class="menu-in">
215          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
216          <a class="menu-title" href="/cybersecurity/" title="Cybersecurity">Cybersecurity<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
217          <ul class="menu-list"><li><a class="menu-item" href="/cybersecurity/small-business/" title="Cybersecurity for Small Business">For Small Business</a></li><li><a class="menu-item" href="/cybersecurity/consulting/" title="Cybersecurity Consulting">Cybersecurity Consulting</a></li><li><a class="menu-item" href="/cybersecurity/managed-services/" title="Managed Cybersecurity Services">Managed Security (MSSP)</a></li><li><a class="menu-item" href="/cybersecurity/audit/" title="Cybersecurity Audit Services">Security Audit</a></li><li><a class="menu-item" href="/cybersecurity/risk-assessment/" title="Cybersecurity Risk Assessment">Risk Assessment</a></li><li><a class="menu-item" href="/cybersecurity/testing/" title="Cybersecurity Testing Services">Penetration Testing</a></li><li><a class="menu-item" href="/cybersecurity/incident-response/" title="Cybersecurity Incident Response">Incident Response</a></li><li><a class="menu-item" href="/cybersecurity/monitoring/" title="Cybersecurity Monitoring">Monitoring</a></li><li><a class="menu-item" href="/cybersecurity/remediation/" title="Cybersecurity Remediation">Remediation</a></li><li><a class="menu-item" href="/cybersecurity/industrial-ot/" title="OT / Industrial Cybersecurity">Industrial OT</a></li><li><a class="menu-item" href="/cybersecurity/ai/" title="AI Cybersecurity">AI Cybersecurity</a></li></ul>
218        </div>
219      </section>
220      <section class="menu-panel menu-sub" id="menu-compliance" data-panel="compliance" data-lenis-prevent hidden aria-label="Compliance">
221        <div class="menu-in">
222          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
223          <a class="menu-title" href="/compliance/" title="Compliance">
223Compliance<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
224          <ul class="menu-list"><li><a class="menu-item" href="/compliance/consulting/" title="Compliance Consulting">Compliance Consulting</a></li><li><a class="menu-item" href="/compliance/hipaa/" title="HIPAA Compliance">HIPAA</a></li><li><a class="menu-item" href="/compliance/gdpr/" title="GDPR Compliance">GDPR</a></li><li><a class="menu-item" href="/compliance/pci/" title="PCI Compliance">PCI DSS</a></li><li><a class="menu-item" href="/compliance/cmmc/" title="CMMC Compliance">CMMC</a></li><li><a class="menu-item" href="/compliance/iso-27001/" title="ISO 27001 Compliance">ISO 27001</a></li><li><a class="menu-item" href="/compliance/data-management/" title="Data Management Compliance">Data Management</a></li><li><a class="menu-item" href="/compliance/data-privacy/" title="Data Privacy Compliance">Data Privacy</a></li><li><a class="menu-item" href="/compliance/cloud/" title="Cloud Compliance">Cloud Compliance</a></li><li><a class="menu-item" href="/compliance/automation/" title="Compliance Automation">Compliance Automation</a></li><li><a class="menu-item" href="/compliance/software-development/" title="Compliance Software Development">Compliance Software</a></li><li><a class="menu-item" href="/compliance/healthcare/" title="Healthcare Compliance">Healthcare</a></li><li><a class="menu-item" href="/compliance/financial/" title="Financial Compliance">Financial</a></li><li><a class="menu-item" href="/compliance/hr/" title="HR Compliance">HR</a></li><li><a class="menu-item" href="/compliance/tax/" title="Tax Compliance">Tax</a></li><li><a class="menu-item" href="/compliance/environmental/" title="Environmental Compliance">Environmental</a></li><li><a class="menu-item" href="/compliance/aml/" title="AML Compliance">AML</a></li><li><a class="menu-item" href="/compliance/ada-website/" title="ADA Website Compliance">ADA Website</a></li></ul>
225        </div>
226      </section>
227      <section class="menu-panel menu-sub" id="menu-cloud-services" data-panel="cloud-services" data-lenis-prevent hidden aria-label="Cloud">
228        <div class="menu-in">
229          <button type="button" class="menu-back" data-back><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 12H5"/><path d="m11 18-6-6 6-6"/></svg><span>Services</span></button>
230          <a class="menu-title" href="/cloud-services/" title="Cloud Services">Cloud<svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></a>
231          <ul class="menu-list"><li><a class="menu-item" href="/cloud-services/managed-services/" title="Cloud Maintenance &amp; Managed Services">Managed Cloud</a></li><li><a class="menu-item" href="/cloud-services/migration/" title="Cloud Migration">Cloud Migration</a></li><li><a class="menu-item" href="/cloud-services/disaster-recovery/" title="Cloud Disaster Recovery">Disaster Recovery</a></li><li><a class="menu-item" href="/cloud-services/security/" title="Cloud Security">Cloud Security</a></li><li><a class="menu-item" href="/cloud-services/backup/" title="Cloud Backup">Cloud Backup</a></li></ul>
232        </div>
233      </section>
234      
235    </div>
236
237    <!-- the printed page's head: hidden on the screen (styles/print.css) -->
238    <header class="print-head" aria-hidden="true"><span class="ph-mark">
239<svg class="logo-mark " viewBox="0 0 102 48" aria-hidden="true">
240  <path class="lm-brace" d="M0 24L0 20.8653C1.3601 20.8653 2.5664 20.7265 3.6189 20.449C4.6713 20.1551 5.4728 19.6571 6.0233 18.9551C6.5739 18.2531 6.7844 17.2816 6.6548 16.0408L5.9262 9.0857C5.7481 7.4041 5.829 5.9837 6.1691 4.8245C6.5253 3.6653 7.1649 2.7347 8.0878 2.0326C9.0269 1.3143 10.2737 0.8 11.8281 0.4898C13.3987 0.1633 15.3013 0 17.5357 0L17.5357 5.3878C16.548 5.3878 15.698 5.4775 14.9855 5.6571C14.2893 5.8204 13.763 6.1306 13.4068 6.5878C13.0668 7.0286 12.9373 7.6653 13.0182 8.498L13.7711 15.7224C13.9654 17.551 13.763 19.0286 13.1639 20.1551C12.581 21.2816 11.6824 22.1469 10.468 22.751C9.2698 23.3388 7.853 23.7551 6.2176 24C7.9502 24.2612 9.4155 24.6857 10.6137 25.2735C11.8119 25.8612 12.6863 26.7102 13.2368 27.8204
240C13.7873 28.9306 13.9654 30.4163 13.7711 32.2776L13.0182 39.502C12.9373 40.3184 13.0668 40.9551 13.4068 41.4122C13.763 41.8694 14.2974 42.1796 15.0098 42.3429C15.7222 42.5224 16.5642 42.6122 17.5357 42.6122L17.5357 48C15.3013 48 13.4068 47.8367 11.8524 47.5102C10.298 47.1837 9.0512 46.6612 8.1121 45.9429C7.1892 45.2408 6.5496 44.3102 6.1934 43.151C5.8533 42.0082 5.7643 40.6122 5.9262 38.9633L6.6548 31.9592C6.7844 30.7184 6.5739 29.7469 6.0233 29.0449C5.489 28.3429 4.6956 27.8531 3.6432 27.5755C2.5907 27.2816 1.3763 27.1347 0 27.1347L0 24Z"/>
241  <path class="lm-digit" d="M36.2754 6.3438C38.8337 6.3438 40.9711 6.7927 42.6874 7.6907C44.4199 8.5886 45.7153 9.7805 46.5734 11.2662C47.4478 12.7356 47.885 14.3356 47.885 16.0662C47.885 17.4376 47.6502 18.7846 47.1806 20.107C46.7272 21.4131 45.9743 22.8009 44.9219 24.2703C43.8694 25.7233 42.4688 27.3397 40.7201 29.1193C38.9876 30.8989 36.8422 32.9397 34.2838 35.2417L48.6622 35.2417L47.8364 41.1438L25.4674 41.1438L25.4674 35.658C27.6857 33.5029 29.6125 31.5927 31.2479 29.9274C32.8833 28.2621 34.2596 26.7846 35.3768 25.4948C36.5102 24.205 37.417 23.054 38.097 22.0417C38.7933 21.0295 39.2952 20.0989 39.6029 19.2499C39.9105 18.3846 40.0643 17.5519 40.0643 16.7519C40.0643 15.3805 39.6676 14.2948 38.8742 13.4948C38.097 12.6948 36.9879 12.2948 35.5468 12.2948C34.2677 12.2948 33.1585 12.5642 32.2194 13.1029C31.2803 13.6417 30.3735 14.5152 29.4992 15.7233L24.7874 12.1478C26.0503 10.3846 27.6047 8.9805 29.4506 7.9356C31.2965 6.8744 33.5714 6.3438 36.2754 6.3438Z"/>
242  <path class="lm-digit" fill-rule="evenodd" d="M66.7532 6.3438C68.2428 6.3438 69.5948 6.5397 70.8092 6.9315C72.0398 7.3233 73.1246 7.854 74.0638 8.5233L71.1492 13.2254C70.5016 12.7519 69.8053 12.4091 69.0605 12.1968C68.3319 11.9682 67.6113 11.854 66.8989 11.854C65.6035 11.854 64.4458 12.2703 63.4257 13.1029C62.4219 13.9356 61.6204 15.1519 61.0213 16.7519C60.5384 18.0775 60.2443 19.6497 60.1393 21.4684C61.0498 20.5188 62.0643 19.7956 63.1829 19.2989C64.543 18.6948 65.8869 18.3927 67.2146 18.3927C68.9633 18.3927 70.5501 18.8336 71.975 19.7152C73.3999 20.5805 74.5333 21.854 75.3753 23.5356C76.2173 25.2009 76.6383 27.2335 76.6383 29.6336C76.6383 31.9029 76.1525 33.9764 75.181 35.854C74.2095 37.7152 72.8251 39.2009 71.0278 40.3111C69.2467 41.4213 67.1337 41.9764 64.6887 41.9764C62.4542 41.9764 60.5436 41.5519 58.9568 40.7029C57.37 39.8376 56.0747 38.6621 55.0708 37.1764C54.0669 35.6744 53.3302 33.9519 52.8606 32.0091C52.391 30.0499 52.1562 27.9764 52.1562 25.7887C52.1562 21.9682 52.7392 18.5968 53.905 15.6744C55.087 12.7519 56.7628 10.4662 58.9325 8.8172C61.1184 7.1682 63.7253 6.3438 66.7532 6.3438ZM65.223 23.7315C64.203 23.7315 63.1991 24.0172 62.2114 24.5886C61.4546 25.0265 60.7692 25.6032 60.155 26.319C60.2096 29.5025 60.5227 31.9298 61.0941 33.6009C61.7418 35.4948 62.9724 36.4417 64.7859 36.4417C66.2269 36.4417 67.2794 35.8213 67.9433 34.5805C68.6233 33.3397 68.9633 31.8376 68.9633 30.0744C68.9633 28.5233 68.8095 27.2907 68.5019 26.3764C68.2104 25.4458 67.7894 24.7764 67.2389 24.3682C66.6884 23.9438 66.0164 23.7315 65.223 23.7315Z"/>
243  <path class="lm-brace" d="M101.741 24L101.741 20.8653C100.365 20.8653 99.1504 20.7265 98.0979 20.449C97.0616 20.1551 96.2682 19.6571 95.7177 18.9551C95.1672 18.2531 94.9567 17.2816 95.0862 16.0408L95.8148 9.0367C95.993 7.3877 95.9039 5.9918 95.5477 4.849C95.1915 3.6898 94.5438 2.7592 93.6047 2.0571C92.6817 1.3388 91.4431 0.8163 89.8886 0.4898C88.3342 0.1633 86.4398 0 84.2053 0L84.2053 5.3878C85.193 5.3878 86.035 5.4775 86.7312 5.6571C87.4437 5.8204 87.9699 6.1306 88.3099 6.5878C88.6662 7.0286 88.8038 7.6653 88.7228 8.498L87.9699 15.7224C87.7756 17.5673 87.9537 19.0531 88.5043 20.1796C89.0548 21.2898 89.9291 22.1388 91.1273 22.7265C92.3417 23.3143 93.8152 23.7388 95.5477 24C93.9123 24.2449 92.4874 24.6694 91.273 25.2735C90.0587 25.8612 89.1519 26.7184 88.5528 27.8449C87.9699 28.9551 87.7756 30.4327 87.9699 32.2776L88.7228 39.502C88.8038 40.3184 88.6662 40.9551 88.3099 41.4122C87.9699 41.8694 87.4437 42.1796 86.7312 42.3429C86.035 42.5224 85.193 42.6122 84.2053 42.6122L84.2053 48C86.4398 48 88.3342 47.8367 89.8886 47.5102C91.4592 47.2 92.706 46.6857 93.629 45.9674C94.5681 45.2653 95.2077 44.3347 95.5477 43.1755C95.9039 42.0163 95.993 40.5959 95.8148 38.9143L95.0862 31.9592C94.9567 30.7184 95.1672 29.7469 95.7177 29.0449C96.2682 28.3429 97.0697 27.8531 98.1222 27.5755C99.1747 27.2816 100.381 27.1347 101.741 27.1347L101.741 24Z"/>
244</svg><b>Lines of Code</b></span><span class="ph-to"><span><b data-print-site></b><span>+1 (786) 777-9396</span><span>[email protected]</span></span><span>
244Book a call: fantastical.app/datysho/face-to-face</span></span></header>
245    <main id="view" tabindex="-1" data-page="contact" data-params="[]">
246<section class="contact" aria-labelledby="contact-title">
247  <p class="eyebrow" data-reveal="scramble">Contact</p>
248  <h1 class="display" id="contact-title" data-reveal="split" style="font-size:clamp(40px,5vw,88px)">Tell us what you are building.</h1>
249  <p class="lead" data-reveal data-delay="0.2" style="margin-top:22px">We reply within 30 minutes on weekdays, 9 am to 6 pm Miami time (ET), and by 10 am the next business day otherwise. The first call and the rough estimate are free.</p>
250  <!-- (sent by a script - ui/leadform.ts; the method and the address only keep the words out of the address bar should a browser send it by itself) -->
251  <form class="form contact-form" method="post" action="/contact/" novalidate data-reveal data-delay="0.15" aria-label="Project inquiry">
252    <div class="form-row">
253      <div class="field"><label for="f-name">Your name <em>*</em></label><input class="input" id="f-name" name="name" autocomplete="name" placeholder="First and last name"><span class="err" aria-live="polite"></span></div>
254      <div class="field"><label for="f-email">Email <em>*</em></label><input class="input" id="f-email" name="email" type="email" autocomplete="email" placeholder="[email protected]"><span class="err" aria-live="polite"></span></div>
255    </div>
256    <div class="form-row">
257      <div class="field"><label for="f-phone">Phone <em>*</em></label><input class="input" id="f-phone" name="phone" type="tel" autocomplete="tel" placeholder="Country code and number"><span class="err" aria-live="polite"></span></div>
258
259<div class="field">
260  <span class="label" id="budget-label">Estimated budget <em>*</em></span>
261  <div class="select" data-ui>
262    <button type="button" class="select-btn" aria-haspopup="listbox" aria-expanded="false" aria-labelledby="budget-label">Select your budget <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></button>
263    <ul class="select-list" role="listbox" tabindex="-1" aria-labelledby="budget-label">
264      <li role="option" aria-selected="false" data-value="Less than $5,000">Less than $5,000</li><li role="option" aria-selected="false" data-value="$5,000 - $25,000">$5,000 - $25,000</li><li role="option" aria-selected="false" data-value="$25,000 - $50,000">$25,000 - $50,000</li><li role="option" aria-selected="false" data-value="$50,000 - $100,000">$50,000 - $100,000</li><li role="option" aria-selected="false" data-value="$100,000 - $300,000">$100,000 - $300,000</li><li role="option" aria-selected="false" data-value="More than $300,000">More than $300,000</li>
265    </ul>
266    <input type="hidden" name="budget">
267  </div>
268  <span class="err" aria-live="polite"></span>
269</div>
270    </div>
271    <div class="field"><label for="f-desc">What are you building?</label><textarea class="input" id="f-desc" name="description" placeholder="A few lines about the product, users and deadline"></textarea><span class="est-note" hidden><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg> What you chose on the pricing page is already in the message - add anything we should know.</span></div>
272    <label class="check"><input type="checkbox" name="nda"><span class="box"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg></span>I would like to sign an NDA before sharing details</label>
273    <!-- (no box to tick: sending is the agreement - a box that sent as well unticked asked for nothing) -->
274    <p class="form-note">By sending this form, you agree that we use these details to contact you (<a href='/privacy-policy/'>privacy policy</a>).</p>
275    <button class="btn btn-primary" type="submit">Send <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></button>
276  </form>
277  <noscript><p class="nojs-note">The form sends with JavaScript on. Without it, write to <a href='mailto:[email protected]'>[email protected]</a> or call <a href='tel:+17867779396'>+1 (786) 777-9396</a>.</p></noscript>
278</section>
279<section class="contact-more">
280  <div>
281    <p class="eyebrow" data-reveal="scramble">What happens next</p>
282    <ol class="next-steps" data-reveal="stagger">
283      <li><span>01</span>We read your message and reply with questions or a time for a call.</li>
284      <li><span>02</span>On the call we learn your goals, users and deadline.</li>
285      <li><span>03</span>You get a proposal with scope, team and a rough budget.</li>
286    </ol>
287    <div class="direct" data-reveal>
288      <p class="muted" style="margin:0 0 4px;font-size:15px">To keep it simple, call Michael, the owner, directly:</p>
289      <a href="tel:+17867779396" title="Call"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8 9.8a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2z"/></svg>+1 (786) 777-9396</a>
290      <a href="mailto:[email protected]" title="Email"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 6L2 7"/></svg>[email protected]</a>
291      <a href="https://fantastical.app/datysho/face-to-face" target="_blank" rel="noopener" title="Book a call"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg>Book a call in the calendar</a>
292    </div>
293  </div>
294  <div class="faq" data-reveal style="margin-top:0">
295    <p class="eyebrow" data-reveal="scramble">Questions</p>
296    <details><summary>Do you work with startups or larger companies?</summary><p>Both. We partner with fast-growing startups and with established companies, and adapt the team and process to each.</p></details>
296<details><summary>How do I know what is happening on my project?</summary><p>Two-week sprints with a demo, regular updates and direct access to the developers. You always know who works on what.</p></details><details><summary>What does it cost to start?</summary><p>The first call and the rough estimate are free. On outsourced development and staff augmentation there is no upfront payment, and if the first week does not work for you, you do not pay for it; a website from $499 is paid upfront.</p></details><details><summary>What if my budget is small?</summary><p>Start where it fits: a website from $499 with support at $29 a month (billed annually), a mobile or web app from $5,000, developers for your team from $35 an hour. Everything else gets an individual estimate, free. We suggest what fits and change it as you grow.</p></details><details><summary>How do you use AI to build?</summary><p>Websites and MVPs are built with AI tools on a pipeline: documentation first, then planned tasks, each built and checked, then a code review by an engineer and a final check by our tester. On larger projects AI takes the routine and people keep the decisions.</p></details><details><summary>Can you sign an NDA before I share details?</summary><p>Yes. Mark it in the form or say it on the call, and we sign before you share anything sensitive.</p></details>
297  </div>
298</section>
299
300<footer class="foot" data-foot>
301  <div class="foot-cta">
302    <p class="eyebrow" data-reveal="scramble">EOF - end of file</p>
303    <h2 class="foot-title" data-reveal>You reached the last line.<span>Let's write the next one together.</span></h2>
304    <div class="actions" data-reveal data-delay="0.1">
305      <a class="btn btn-primary" href="https://fantastical.app/datysho/face-to-face" data-book target="_blank" rel="noopener" title="Book a call">Book a call</a>
306      <a class="btn btn-ghost" href="/pricing/" title="Prices and a free estimate">Estimate your project</a>
307    </div>
308  </div>
309  <div class="harp" data-harp>
310    <p class="harp-hint"><span></span><em class="h-mouse">Run the cursor across the 26 lines, or play the keys shown under the strings; &larr; &rarr; walk along them.</em><em class="h-touch">Swipe across the 26 lines. They play.</em></p>
311    <div class="harp-n" aria-hidden="true"><i>Z</i><i>X</i><i>C</i><i>V</i><i>B</i><i>N</i><i>M</i><i>A</i><i>S</i><i>D</i><i>F</i><i>G</i><i>H</i><i>J</i><i>K</i><i>L</i><i>;</i><i>&#39;</i><i>T</i><i>Y</i><i>U</i><i>I</i><i>O</i><i>P</i><i>[</i><i>]</i></div>
312    <div class="harp-bar">
313      <button class="harp-play" type="button" data-harp-play data-ui title="Play the piece on the 26 lines">
314        <span class="hp-ico" aria-hidden="true"><svg viewBox="0 0 24 24"><path class="hp-tri" d="M9 6.6v10.8l8.6-5.4z"/><path class="hp-bars" d="M8 6.5h2.9v11H8zm5.1 0H16v11h-2.9z"/></svg></span>
315        <span class="sr-only" data-harp-verb>Play </span><span class="hp-txt"><b>Mike Andi - Piano Solo</b><em data-harp-time>3:43</em></span><span class="sr-only"> on the 26 lines</span>
316      </button>
317      <div class="harp-wave" data-wave data-ui role="slider" tabindex="-1" aria-label="Where the piece is" aria-valuemin="0" aria-valuemax="223" aria-valuenow="0">
318        <canvas aria-hidden="true"></canvas><canvas class="hw-lit" aria-hidden="true"></canvas>
319        <i class="hw-head" aria-hidden="true"></i><em class="hw-tip" data-wave-tip aria-hidden="true"></em>
320      </div>
321    </div>
322  </div>
323  <div class="foot-grid" id="site-links">
324    <section class="term" data-term aria-label="Terminal">
325      <div class="term-bar"><i></i><i></i><i></i><span>guest@26loc: ~</span></div>
326      <div class="term-out" data-term-out data-vscroll data-lenis-prevent aria-live="polite">
327        <p class="t-dim">Last login: today on ttys026</p>
328        <p>Type <b>help</b> and press Enter. Or try <b>portfolio</b>, <b>call</b>, <b>sound 80</b>.</p>
329      </div>
330      <label class="term-in"><span class="t-prompt">guest@26loc:~$</span><input name="command" data-term-in autocomplete="off" autocapitalize="off" spellcheck="false" enterkeyhint="send" aria-label="Terminal command" /></label>
331    </section>
332    <section class="clocks" data-clocks aria-label="Our offices right now">
333      <h3>Right now</h3>
334      <div class="clock" data-tz="America/New_York"><b>Miami</b><time>--:--</time><span class="cl-st"><i></i><em>...</em></span></div><div class="clock" data-tz="Europe/Tallinn"><b>Tallinn</b><time>--:--</time><span class="cl-st"><i></i><em>...</em></span></div><div class="clock" data-tz="Europe/Kyiv"><b>Kyiv</b><time>--:--</time><span class="cl-st"><i></i><em>...</em></span></div>
335      <p class="clock-note">A team is awake somewhere most of the day.</p>
336    </section>
337    <nav class="foot-links foot-services" aria-label="Services">
338      <h3>Services</h3>
339      <!-- a phone's: the directions are a ribbon that turns sideways under a finger -->
340      <i class="foot-swipe" aria-hidden="true"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg></i>
341      <ul>
342        <li><a href="/web-development/" title="Web Development">Web Development</a></li><li><a href="/mobile-app-development/" title="Mobile App Development">Mobile Apps</a></li><li><a href="/web-application-development/" title="Web Application Development">Web Apps</a></li><li><a href="/ai-development/" title="AI Development">AI Development</a></li><li><a href="/it-outsourcing/" title="IT Outsourcing">IT Outsourcing</a></li><li><a href="/it-maintenance/" title="IT Maintenance &amp; Support">IT Support</a></li><li><a href="/cybersecurity/" title="Cybersecurity">Cybersecurity</a></li><li><a href="/compliance/" title="Compliance">Compliance</a></li><li><a href="/cloud-services/" title="Cloud Services">Cloud</a></li><li><a href="/custom-software-development/" title="Custom Software Development">Custom Software</a></li><li><a href="/staff-augmentation/" title="Staff Augmentation">Staff Augmentation</a></li>
343        <li><a href="/#industries" title="Websites by Industry">By Industry</a></li>
344      </ul>
345    </nav>
346    <nav class="foot-links" aria-label="Site">
347      <h3>Site</h3>
348      <ul>
349        <li><a href="/about/" title="Team and offices">About</a></li>
350        <li><a href="/#services" title="What we build">Services</a></li>
351        <li><a href="/portfolio/" title="Case studies">Portfolio</a></li>
352        <li><a href="/pricing/" title="What it costs">Pricing</a></li>
353        <li><a href="/reviews/" title="What our clients say">Reviews</a></li>
354        <li><a href="/#partners" title="Work with us as a partner">Partners</a></li>
355        <li><a href="/blog/" title="Articles">Blog</a></li>
356        <li><a href="/contact/" title="Start a project">Contact</a></li>
357        
358      </ul>
359    </nav>
360    <div class="foot-contact">
361      <h3>Talk to us</h3>
362      <ul>
363        <!-- (each with its sign, which only a phone's tiles show) -->
364        <li><a href="tel:+17867779396" title="Call"><i class="fc-ico" aria-hidden="true"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8 9.8a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2z"/></svg></i><span>+1 (786) 777-9396</span></a></li>
365        <li><a href="mailto:[email protected]" title="Email"><i class="fc-ico" aria-hidden="true"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 6L2 7"/></svg></i><span>[email protected]</span></a></li>
366        <li class="fc-addr"><a href="https://www.google.com/maps/search/?api=1&amp;query=18117+Biscayne+Blvd%2C+Miami%2C+FL+33160" target="_blank" rel="noopener" title="Our office on the map"><i class="fc-ico" aria-hidden="true"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z"/><circle cx="12" cy="10" r="3"/></svg></i><span>18117 Biscayne Blvd, Miami, FL 33160</span></a></li>
367        <li><a href="https://fantastical.app/datysho/face-to-face" data-book target="_blank" rel="noopener" title="Book a call"><i class="fc-ico" aria-hidden="true"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg></i><span>
367Book a call</span></a></li>
368        <li><a href="/jobs/" title="Open roles"><i class="fc-ico" aria-hidden="true"><svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/></svg></i><span>Careers</span></a></li>
369      </ul>
370      <!-- the company's profiles: a list of their own under a head of their own, apart from the ways to
371           reach us (the owner's remark 06.10.2026: they ran into Careers and the address), so a phone's
372           tags never share a row with a tile -->
373      <h3 class="fc-profiles-head">Find us on</h3>
374      <ul class="fc-profiles">
375        <li><a href="https://www.linkedin.com/company/26loc/" target="_blank" rel="noopener me" title="26 Lines of Code on LinkedIn">LinkedIn <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"/><path d="M8 7h9v9"/></svg></a></li>
376        <li><a href="https://www.facebook.com/26loc" target="_blank" rel="noopener me" title="26 Lines of Code on Facebook">Facebook <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"/><path d="M8 7h9v9"/></svg></a></li>
377        <li><a href="https://www.instagram.com/26linesofcode/" target="_blank" rel="noopener me" title="26 Lines of Code on Instagram">Instagram <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"/><path d="M8 7h9v9"/></svg></a></li>
378        <li><a href="https://x.com/26linesofcode" target="_blank" rel="noopener me" title="26 Lines of Code on X">X <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"/><path d="M8 7h9v9"/></svg></a></li>
379        <li><a href="https://www.upwork.com/agencies/1037055542159896576/" target="_blank" rel="noopener me" title="26 Lines of Code on Upwork">Upwork <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"/><path d="M8 7h9v9"/></svg></a></li>
380        <li><a href="https://clutch.co/profile/26-lines-code" target="_blank" rel="noopener me" title="26 Lines of Code on Clutch">Clutch <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"/><path d="M8 7h9v9"/></svg></a></li>
381        <li><a href="https://www.google.com/search?kgmid=/g/11p1md5x2_" target="_blank" rel="noopener me" title="26 Lines of Code on Google">Google <svg class="i " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7"/><path d="M8 7h9v9"/></svg></a></li>
382        
383      </ul>
384    </div>
385  </div>
386  <div class="foot-bottom">
387    <div class="fb-id">
388      <a class="brand" href="/" title="26 Lines of Code - home">
389<svg class="logo-mark " viewBox="0 0 102 48" aria-hidden="true">
390  <path class="lm-brace" d="M0 24L0 20.8653C1.3601 20.8653 2.5664 20.7265 3.6189 20.449C4.6713 20.1551 5.4728 19.6571 6.0233 18.9551C6.5739 18.2531 6.7844 17.2816 6.6548 16.0408L5.9262 9.0857C5.7481 7.4041 5.829 5.9837 6.1691 4.8245C6.5253 3.6653 7.1649 2.7347 8.0878 2.0326C9.0269 1.3143 10.2737 0.8 11.8281 0.4898C13.3987 0.1633 15.3013 0 17.5357 0L17.5357 5.3878C16.548 5.3878 15.698 5.4775 14.9855 5.6571C14.2893 5.8204 13.763 6.1306 13.4068 6.5878C13.0668 7.0286 12.9373 7.6653 13.0182 8.498L13.7711 15.7224C13.9654 17.551 13.763 19.0286 13.1639 20.1551C12.581 21.2816 11.6824 22.1469 10.468 22.751C9.2698 23.3388 7.853 23.7551 6.2176 24C7.9502 24.2612 9.4155 24.6857 10.6137 25.2735C11.8119 25.8612 12.6863 26.7102 13.2368 27.8204
390C13.7873 28.9306 13.9654 30.4163 13.7711 32.2776L13.0182 39.502C12.9373 40.3184 13.0668 40.9551 13.4068 41.4122C13.763 41.8694 14.2974 42.1796 15.0098 42.3429C15.7222 42.5224 16.5642 42.6122 17.5357 42.6122L17.5357 48C15.3013 48 13.4068 47.8367 11.8524 47.5102C10.298 47.1837 9.0512 46.6612 8.1121 45.9429C7.1892 45.2408 6.5496 44.3102 6.1934 43.151C5.8533 42.0082 5.7643 40.6122 5.9262 38.9633L6.6548 31.9592C6.7844 30.7184 6.5739 29.7469 6.0233 29.0449C5.489 28.3429 4.6956 27.8531 3.6432 27.5755C2.5907 27.2816 1.3763 27.1347 0 27.1347L0 24Z"/>
391  <path class="lm-digit" d="M36.2754 6.3438C38.8337 6.3438 40.9711 6.7927 42.6874 7.6907C44.4199 8.5886 45.7153 9.7805 46.5734 11.2662C47.4478 12.7356 47.885 14.3356 47.885 16.0662C47.885 17.4376 47.6502 18.7846 47.1806 20.107C46.7272 21.4131 45.9743 22.8009 44.9219 24.2703C43.8694 25.7233 42.4688 27.3397 40.7201 29.1193C38.9876 30.8989 36.8422 32.9397 34.2838 35.2417L48.6622 35.2417L47.8364 41.1438L25.4674 41.1438L25.4674 35.658C27.6857 33.5029 29.6125 31.5927 31.2479 29.9274C32.8833 28.2621 34.2596 26.7846 35.3768 25.4948C36.5102 24.205 37.417 23.054 38.097 22.0417C38.7933 21.0295 39.2952 20.0989 39.6029 19.2499C39.9105 18.3846 40.0643 17.5519 40.0643 16.7519C40.0643 15.3805 39.6676 14.2948 38.8742 13.4948C38.097 12.6948 36.9879 12.2948 35.5468 12.2948C34.2677 12.2948 33.1585 12.5642 32.2194 13.1029C31.2803 13.6417 30.3735 14.5152 29.4992 15.7233L24.7874 12.1478C26.0503 10.3846 27.6047 8.9805 29.4506 7.9356C31.2965 6.8744 33.5714 6.3438 36.2754 6.3438Z"/>
392  <path class="lm-digit" fill-rule="evenodd" d="M66.7532 6.3438C68.2428 6.3438 69.5948 6.5397 70.8092 6.9315C72.0398 7.3233 73.1246 7.854 74.0638 8.5233L71.1492 13.2254C70.5016 12.7519 69.8053 12.4091 69.0605 12.1968C68.3319 11.9682 67.6113 11.854 66.8989 11.854C65.6035 11.854 64.4458 12.2703 63.4257 13.1029C62.4219 13.9356 61.6204 15.1519 61.0213 16.7519C60.5384 18.0775 60.2443 19.6497 60.1393 21.4684C61.0498 20.5188 62.0643 19.7956 63.1829 19.2989C64.543 18.6948 65.8869 18.3927 67.2146 18.3927C68.9633 18.3927 70.5501 18.8336 71.975 19.7152C73.3999 20.5805 74.5333 21.854 75.3753 23.5356C76.2173 25.2009 76.6383 27.2335 76.6383 29.6336C76.6383 31.9029 76.1525 33.9764 75.181 35.854C74.2095 37.7152 72.8251 39.2009 71.0278 40.3111C69.2467 41.4213 67.1337 41.9764 64.6887 41.9764C62.4542 41.9764 60.5436 41.5519 58.9568 40.7029C57.37 39.8376 56.0747 38.6621 55.0708 37.1764C54.0669 35.6744 53.3302 33.9519 52.8606 32.0091C52.391 30.0499 52.1562 27.9764 52.1562 25.7887C52.1562 21.9682 52.7392 18.5968 53.905 15.6744C55.087 12.7519 56.7628 10.4662 58.9325 8.8172C61.1184 7.1682 63.7253 6.3438 66.7532 6.3438ZM65.223 23.7315C64.203 23.7315 63.1991 24.0172 62.2114 24.5886C61.4546 25.0265 60.7692 25.6032 60.155 26.319C60.2096 29.5025 60.5227 31.9298 61.0941 33.6009C61.7418 35.4948 62.9724 36.4417 64.7859 36.4417C66.2269 36.4417 67.2794 35.8213 67.9433 34.5805C68.6233 33.3397 68.9633 31.8376 68.9633 30.0744C68.9633 28.5233 68.8095 27.2907 68.5019 26.3764C68.2104 25.4458 67.7894 24.7764 67.2389 24.3682C66.6884 23.9438 66.0164 23.7315 65.223 23.7315Z"/>
393  <path class="lm-brace" d="M101.741 24L101.741 20.8653C100.365 20.8653 99.1504 20.7265 98.0979 20.449C97.0616 20.1551 96.2682 19.6571 95.7177 18.9551C95.1672 18.2531 94.9567 17.2816 95.0862 16.0408L95.8148 9.0367C95.993 7.3877 95.9039 5.9918 95.5477 4.849C95.1915 3.6898 94.5438 2.7592 93.6047 2.0571C92.6817 1.3388 91.4431 0.8163 89.8886 0.4898C88.3342 0.1633 86.4398 0 84.2053 0L84.2053 5.3878C85.193 5.3878 86.035 5.4775 86.7312 5.6571C87.4437 5.8204 87.9699 6.1306 88.3099 6.5878C88.6662 7.0286 88.8038 7.6653 88.7228 8.498L87.9699 15.7224C87.7756 17.5673 87.9537 19.0531 88.5043 20.1796C89.0548 21.2898 89.9291 22.1388 91.1273 22.7265C92.3417 23.3143 93.8152 23.7388 95.5477 24C93.9123 24.2449 92.4874 24.6694 91.273 25.2735C90.0587 25.8612 89.1519 26.7184 88.5528 27.8449C87.9699 28.9551 87.7756 30.4327 87.9699 32.2776L88.7228 39.502C88.8038 40.3184 88.6662 40.9551 88.3099 41.4122C87.9699 41.8694 87.4437 42.1796 86.7312 42.3429C86.035 42.5224 85.193 42.6122 84.2053 42.6122L84.2053 48C86.4398 48 88.3342 47.8367 89.8886 47.5102C91.4592 47.2 92.706 46.6857 93.629 45.9674C94.5681 45.2653 95.2077 44.3347 95.5477 43.1755C95.9039 42.0163 95.993 40.5959 95.8148 38.9143L95.0862 31.9592C94.9567 30.7184 95.1672 29.7469 95.7177 29.0449C96.2682 28.3429 97.0697 27.8531 98.1222 27.5755C99.1747 27.2816 100.381 27.1347 101.741 27.1347L101.741 24Z"/>
394</svg><span class="brand-text">Lines<br>
394of Code</span></a>
395      <span class="fb-copy">&copy; 26 Lines of Code LLC, 2026</span>
396      <span class="fb-legal"><a class="foot-btn" href="/privacy-policy/">Privacy Policy</a><a class="foot-btn" href="/terms-and-conditions/">Terms and Conditions</a><button type="button" class="foot-btn" data-cookies>Cookies</button><button type="button" class="foot-btn" data-3d hidden>3D</button></span>
397    </div>
398    <p class="loc"><i class="loc-dot" aria-hidden="true"></i><span>This site is <b data-loc="67623" style="min-width:6ch">67,623</b> lines of code. <button type="button" class="loc-glow" data-glow title="Light them up">26 of them glow.</button></span></p>
399  </div>
400</footer>
401</main>
402
403    <nav class="gutter" id="gutter" aria-label="Sections of this page"></nav>
404
405    <div id="cursor" aria-hidden="true"><div><span>View</span></div></div>
406    <div id="toasts"></div>
407
408    
408<script id="site-data" type="application/json">{"company": {"name": "26 Lines of Code", "legalName": "26 Lines of Code LLC", "founded": 2017}, "contact": {"phone": "+1 (786) 777-9396", "phoneHref": "tel:+17867779396", "email": "[email protected]", "booking": "https://fantastical.app/datysho/face-to-face"}, "clutch": {"rating": "5.0", "reviews": 26, "url": "https://clutch.co/profile/26-lines-code", "mentions": ["Timely", "Communicative", "High-quality work", "Proactive", "Transparent"]}, "offices": [{"city": "Miami", "country": "USA", "role": "Headquarters and US contracting", "lat": 25.9442, "lon": -80.1478, "timezone": "America/New_York", "clock": "Miami"}, {"city": "Tallinn", "country": "Estonia", "role": "EU entity", "lat": 59.44, "lon": 24.75, "timezone": "Europe/Tallinn", "clock": "Tallinn"}, {"city": "Kyiv region", "country": "Ukraine", "role": "Delivery center", "lat": 50.35, "lon": 30.95, "timezone": "Europe/Kyiv", "clock": "Kyiv"}], "projects": [{"slug": "somatic-reset", "name": "Somatic Reset", "title": "A booking site that takes the payment before the slot", "summary": "A calm, expressive site for a somatic practitioner in Miami with its own booking engine: live availability, Stripe prepayment and Google Calendar sync.", "outcome": "From an approved plan to the production domain in 8 days - with booking, payments and a CMS the owner edits herself.", "country": "USA", "industry": "Wellness", "kinds": ["web", "design"], "tags": ["Booking website", "Stripe payments", "Google Calendar", "CMS"], "url": "https://somaticresetsystem.com/", "source": null, "featured": true, "cover": "/uploads/web/cases/somatic-reset/cover.webp/1280x800-745d32bc.webp", "coverSmall": "/uploads/web/cases/somatic-reset/cover.webp/360x225-745d32bc.webp", "page": "/uploads/web/cases/somatic-reset/page.webp/800x3513-2ce7556b.webp", "pageH": 3513, "mobilePage": "/uploads/web/cases/somatic-reset/m-page.webp/420x4600-c73ff188.webp"}, {"slug": "muzychko", "name": "Muzychko Vocal School", "title": "An opera stage in the browser and a voice test in the microphone", "summary": "The site of Honoured Artist of Ukraine Viktor Muzychko: a velvet-curtain WebGL stage, online lessons, reviews with moderation and a pitch test that finds your voice type.", "outcome": "Live on day one. Today: 144 automated tests, two languages and an admin where the artist edits every word.", "country": "Ukraine", "industry": "Music education", "kinds": ["web", "design"], "tags": ["WebGL", "Voice test", "Online lessons", "Two languages"], "url": "https://muzychko.com.ua/", "source": null, "featured": true, "cover": "/uploads/web/cases/muzychko/cover.webp/1280x800-28646063.webp", "coverSmall": "/uploads/web/cases/muzychko/cover.webp/360x225-28646063.webp", "page": "/uploads/web/cases/muzychko/page.webp/800x3500-af5a5b16.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/muzychko/m-page.webp/420x4545-8aaa5ed5.webp"}, {"slug": "bwi", "name": "Build Wise Investments", "title": "A contractor site with 63 pages and a perfect mobile Lighthouse score", "summary": "A cinematic site for a South Florida general contractor: full-screen sections, a \"watch it rise\" timelapse, 38 city pages for local search and an admin the owner edits.", "outcome": "Lighthouse 100 in all four categories on mobile, up from 77 and 74. On desktop: 100 in accessibility, best practices and SEO, and 97 to 100 in performance from run to run.", "country": "USA", "industry": "Construction", "kinds": ["web", "design"], "tags": ["Contractor website", "Local SEO", "Lighthouse 100", "CMS"], "url": "https://bwi.clemond.app/", "source": null, "featured": true, "cover": "/uploads/web/cases/bwi/cover.webp/1280x800-b2c35285.webp", "coverSmall": "/uploads/web/cases/bwi/cover.webp/360x225-b2c35285.webp", "page": "/uploads/web/cases/bwi/page.webp/800x3500-68aa464d.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/bwi/m-page.webp/420x4545-0f02df9a.webp"}, {"slug": "rim", "name": "RIM International", "title": "A private matchmaking house, told as a film", "summary": "A scroll film for a discreet matchmaking house: a wax-seal prologue, halls instead of pages, and six cities with live local clocks.", "outcome": "13 design versions in one night, then a mobile pass where every scene fits the screen.", "country": "Europe", "industry": "Matchmaking", "kinds": ["web", "design"], "tags": ["Scroll film", "Canvas", "Motion design"], "url": "https://rim.dating/", "source": null, "featured": true, "cover": "/uploads/web/cases/rim/cover.webp/1280x800-81eb29c1.webp", "coverSmall": "/uploads/web/cases/rim/cover.webp/360x225-81eb29c1.webp", "page": "/uploads/web/cases/rim/page.webp/800x3500-f4dd3b7f.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/rim/m-page-2.webp/420x4545-d3b9f09c.webp"}, {"slug": "hirepilot", "name": "HirePilot", "title": "AI job search copilot - our own product", "summary": "Auto-fill applications in seconds, track every role in one dashboard and reach recruiters with personalized outreach.", "outcome": "A product we co-founded and built end to end, from design to launch.", "country": "USA", "industry": "Job search", "kinds": ["web", "ai", "design"], "tags": ["AI", "Browser extension", "SaaS", "Own product"], "url": "https://hirepilot.co/", "source": null, "featured": true, "cover": "/uploads/web/cases/hirepilot/cover.webp/1280x800-611ca7a7.webp", "coverSmall": "/uploads/web/cases/hirepilot/cover.webp/360x225-611ca7a7.webp", "page": "/uploads/web/cases/hirepilot/page.webp/800x3500-3d909199.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/hirepilot/m-page.webp/420x4545-420879f1.webp"}, {"slug": "clemond", "name": "Clemond", "title": "The site of a personal digital twin - our own product", "summary": "The public site of Clemond, a personal digital twin: a seam between the owner's day and the twin's night that you can drag, a WebGL field and a hand-built replica of the desktop app.", "outcome": "One headline crosses the seam as a single line of text - one tab stop, one screen-reader line, full contrast on both sides.", "country": "USA", "industry": "AI product", "kinds": ["web", "ai", "design"], "tags": ["Product website", "WebGL", "Own product"], "url": "https://clemond.com/", "source": null, "featured": true, "cover": "/uploads/web/cases/clemond/cover.webp/1280x800-7a7e09c4.webp", "coverSmall": "/uploads/web/cases/clemond/cover.webp/360x225-7a7e09c4.webp", "page": "/uploads/web/cases/clemond/page.webp/800x3500-74c74de1.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/clemond/m-page.webp/420x4545-782d0df3.webp"}, {"slug": "bnd", "name": "Buhgalteria na doloni", "title": "An accounting firm site that answers tax questions itself", "summary": "Accounting and legal support for Ukrainian sole proprietors and companies: a deadline calendar you can subscribe to, three tax calculators and 19 service pages in three languages.", "outcome": "From the first commit to the live domain in about two days, with 108 indexable pages.", "country": "Ukraine", "industry": "Accounting", "kinds": ["web", "design"], "tags": ["Firm website", "Tax calculators", "Multilingual SEO", "CMS"], "url": "https://bnd.in.ua/", "source": null, "featured": false, "cover": "/uploads/web/cases/bnd/cover.webp/1280x800-bdf75805.webp", "coverSmall": "/uploads/web/cases/bnd/cover.webp/360x225-bdf75805.webp", "page": "/uploads/web/cases/bnd/page.webp/800x3500-79b1b3d0.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/bnd/m-page.webp/420x4545-d855ee07.webp"}, {"slug": "colchis", "name": "Colchis", "title": "A concept: private travel in Georgia, built in one night", "summary": "Our own concept for a fictional Georgian travel house - a tamada instead of a guide, a printed commission, a draggable 3D qvevri and a WebGL hero - in 
408English and Russian.", "outcome": "Brand, copy, design, build and deploy in one overnight session: 17 pages at 60 fps on every performance tier.", "country": "Georgia", "industry": "Travel (concept)", "kinds": ["web", "design"], "tags": ["Concept", "Travel website", "WebGL", "Two languages"], "url": "https://colchis.clemond.app/", "source": null, "featured": false, "cover": "/uploads/web/cases/colchis/cover.webp/1280x800-02b43c2a.webp", "coverSmall": "/uploads/web/cases/colchis/cover.webp/360x225-02b43c2a.webp", "page": "/uploads/web/cases/colchis/page.webp/800x3500-3592dcb4.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/colchis/m-page.webp/420x4545-b64c8612.webp"}, {"slug": "kinderstar", "name": "Kinderstar", "title": "A personal site that behaves like a magazine cover", "summary": "A personal site for an executive assistant and traveller: three registers that re-skin the whole page, a poster that opens into the hero, and four languages.", "outcome": "Designed, built and on air in about 34 hours - 12 scenes, 3 registers, 4 languages.", "country": "USA", "industry": "Personal brand", "kinds": ["web", "design"], "tags": ["Personal website", "Motion design", "Four languages"], "url": "https://kinderstar.clemond.app/", "source": null, "featured": false, "cover": "/uploads/web/cases/kinderstar/cover.webp/1280x800-e3a12dc4.webp", "coverSmall": "/uploads/web/cases/kinderstar/cover.webp/360x225-e3a12dc4.webp", "page": "/uploads/web/cases/kinderstar/page.webp/800x3500-13a5920d.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/kinderstar/m-page.webp/420x4545-a89a302e.webp"}, {"slug": "sanebox", "name": "SaneBox", "title": "The Android app of an AI email assistant", "summary": "SaneBox sorts email with AI: unimportant messages leave the inbox, reminders bring back what matters, and BlackHole makes unwanted senders disappear. We designed and built its app for Android.", "outcome": "The SaneBox digest, folders and training, one tap away on Android. The app is live on Google Play.", "country": "USA", "industry": "Email productivity", "kinds": ["mobile", "design"], "tags": ["Android app", "Kotlin", "AI email", "UI/UX"], "url": "https://www.sanebox.com/", "source": null, "featured": false, "cover": "/uploads/web/cases/sanebox/cover.webp/1280x800-9ab4fce2.webp", "coverSmall": "/uploads/web/cases/sanebox/cover.webp/360x225-9ab4fce2.webp", "page": "/uploads/web/cases/sanebox/page.webp/800x3500-2ab9e975.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/sanebox/m-page.webp/420x4545-d17afa11.webp"}, {"slug": "rx-photo", "name": "RxPhoto", "title": "HIPAA-compliant before-and-after photos for clinics", "summary": "RxPhoto lets clinics capture, store and share patient photos under HIPAA: guided capture on a phone or a tablet, side-by-side comparisons, and forms and notes tied to each record. We worked on the backend, the web front end and the API behind the mobile app.", "outcome": "Photos, forms and notes of every patient in one HIPAA-compliant record - for dermatology, aesthetics, plastic surgery, vein treatment and wound care.", "country": "USA", "industry": "Healthcare", "kinds": ["web", "mobile"], "tags": ["HIPAA", "Web portal", "Mobile API", "Patient reports"], "url": "https://rxphoto.com/", "source": null, "featured": false, "cover": "/uploads/web/cases/rx-photo/cover.webp/1280x800-e418a189.webp", "coverSmall": "/uploads/web/cases/rx-photo/cover.webp/360x225-e418a189.webp", "page": "/uploads/web/cases/rx-photo/page.webp/800x3500-3ac564c5.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/rx-photo/m-page.webp/420x4545-10e422cd.webp"}, {"slug": "mutualz", "name": "Mutualz", "title": "Order at the table, collect points, share the meal", "summary": "Mutualz is a city app for restaurants and cafes: diners order and pay from the phone, collect points and vouchers, and share their visits with friends. Restaurants manage menus, orders and offers in an admin panel.", "outcome": "Live on the App Store and Google Play in German and English: food ordering, a loyalty program, a social feed and an admin panel for restaurants.", "country": "Germany", "industry": "Restaurants", "kinds": ["mobile"], "tags": ["Flutter app", "Ordering", "Loyalty program", "Admin panel"], "url": "https://mutualz-app.de/", "source": null, "featured": false, "cover": "/uploads/web/cases/mutualz/cover.webp/1280x800-3ca14c5d.webp", "coverSmall": "/uploads/web/cases/mutualz/cover.webp/360x225-3ca14
408c5d.webp", "page": "/uploads/web/cases/mutualz/page.webp/800x3500-30671a70.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/mutualz/m-page.webp/420x4545-e8da1eec.webp"}, {"slug": "pbm-source", "name": "PBM Source", "title": "Compliance software for pharmacy benefit managers", "summary": "PBM Source tracks new laws and regulations for the pharmacy benefit industry: each one lands on a dashboard as a task with a summary, a jurisdiction and a date, and the team works it through together.", "outcome": "One source for PBM compliance: new requirements arrive as tasks, and the team sorts, assigns and documents them in one dashboard.", "country": "USA", "industry": "Compliance", "kinds": ["web", "design"], "tags": ["SaaS", "Dashboard", "Regulatory alerts", "Pharmacy benefits"], "url": "https://www.pbmsource.com/home", "source": null, "featured": false, "cover": "/uploads/web/cases/pbm-source/cover.webp/1280x800-12b0bbb1.webp", "coverSmall": "/uploads/web/cases/pbm-source/cover.webp/360x225-12b0bbb1.webp", "page": "/uploads/web/cases/pbm-source/page.webp/800x1836-bb1f9485.webp", "pageH": 1836, "mobilePage": "/uploads/web/cases/pbm-source/m-page.webp/420x2084-ba82c092.webp"}, {"slug": "raina-music", "name": "Raina Music", "title": "Background music for hotels and restaurants, mixed like a live DJ", "summary": "Raina streams music curated by DJs to hospitality venues: a compact player on site, every zone managed from the phone, and songs that blend into each other the way a DJ mixes them.", "outcome": "We reworked the streaming backend for many venues at once, built the smart mix and connected the players to the backend in real time.", "country": "USA", "industry": "Hospitality", "kinds": ["web", "mobile"], "tags": ["Music streaming", "WebSockets", "Real time", "iOS"], "url": "https://rainamusic.com/", "source": null, "featured": false, "cover": "/uploads/web/cases/raina-music/cover.webp/1280x800-08eab0ed.webp", "coverSmall": "/uploads/web/cases/raina-music/cover.webp/360x225-08eab0ed.webp", "page": "/uploads/web/cases/raina-music/page.webp/800x3500-0290ffd8.webp", "pageH": 3500, "mobilePage": "/uploads/web/cases/raina-music/m-page.webp/420x4545-b74297cc.webp"}, {"slug": "aae-plugin", "name": "AAE Plugin", "title": "Generative AI inside Adobe After Effects", "summary": "An AI plugin for Adobe After Effects: artists and video creators generate and edit images and short video fragments without leaving their project.", "outcome": "From a technical demo to a product: in-painting with masks, GPU workers with no idle hardware costs, licensing by subscription tier and an admin that sees every task.", "country": "USA", "industry": "Creative tech", "kinds": ["ai"], "tags": ["Generative AI", "After Effects", "GPU workers", "Licensing"], "url": null, "source": "The plugin is private, so this is a presentation we laid out from the project; its admin is rebuilt from our own screenshot.", "featured": false, "cover": "/uploads/web/cases/aae-plugin/cover.webp/1280x800-928739f3.webp", "coverSmall": "/uploads/web/cases/aae-plugin/cover.webp/360x225-928739f3.webp", "page": "/uploads/web/cases/aae-plugin/page.webp/800x1685-090e2a16.webp", "pageH": 1685, "mobilePage": "/uploads/web/cases/aae-plugin/m-page.webp/420x4423-6711b17c.webp"}, {"slug": "ai-call-center", "name": "AI Call Center", "title": "A voice AI call center that keeps every call inside the UAE", "summary": "A self-contained call center where AI takes inbound calls and makes outbound ones, on local infrastructure with locally hosted models - built for UAE data localization rules.", "outcome": "A 24/7 voice agent for routine calls, with all AI processing inside the UAE, delivered as a lean MVP ready to grow into a production system.", "country": "UAE", "industry": "Call center", "kinds": ["ai"], "tags": ["Voice AI", "Local AI models", "Data localization", "MVP"], "url": null, "source": "The product is private, so this is a presentation we laid out from the project, with no invented screens.", "featured": false, "cover": "/uploads/web/cases/ai-call-center/cover.webp/1280x800-13187740.webp", "coverSmall": "/uploads/web/cases/ai-call-center/cover.webp/360x225-13187740.webp", "page": "/uploads/web/cases/ai-call-center/page.webp/800x1384-4901e09f.webp", "pageH": 1384, "mobilePage": "/uploads/web/cases/ai-call-center/m-page.webp/420x3408-a038bcb1.webp"}, {"slug": "second-chance", "name": "Second Chance", "title": "A crypto trading platform with automated strategies", "summary": "Second Chance provides infrastru
408cture for traders as an official Binance Broker: a personal account with bonuses from trading volume, automated trading, education, mentorship and trader competitions.", "outcome": "A live platform with fully automated cryptocurrency trading, analytics in the dashboard and an interface for beginners and professionals alike.", "country": "USA", "industry": "Fintech", "kinds": ["web"], "tags": ["Crypto trading", "Automated trading", "Dashboard", "Community"], "url": "https://scprop.trade/", "source": null, "featured": false, "cover": "/uploads/web/cases/second-chance/cover.webp/1280x800-855344e2.webp", "coverSmall": "/uploads/web/cases/second-chance/cover.webp/360x225-855344e2.webp", "page": "/uploads/web/cases/second-chance/page.webp/800x2999-28ead666.webp", "pageH": 2999, "mobilePage": "/uploads/web/cases/second-chance/m-page.webp/420x4545-09845dd1.webp"}, {"slug": "tarot-fans", "name": "Tarot Fans", "title": "A marketplace app for tarot readings: live, by call and by chat", "summary": "Tarot Fans connects people with tarot experts: live sessions, paid audio and video consultations, chat and a shop of readings. Experts run their schedule, prices, wallet and statistics from the same app.", "outcome": "One app for clients and experts: live video, calls billed by the minute, chat, a shop and a wallet. Live on Google Play.", "country": "France", "industry": "Lifestyle", "kinds": ["mobile"], "tags": ["Marketplace app", "Flutter", "Live video", "Payments"], "url": null, "source": "The app has no live site, so these are its own Google Play screens, laid out by us.", "featured": false, "cover": "/uploads/web/cases/tarot-fans/cover.webp/1280x800-7dfb3c3c.webp", "coverSmall": "/uploads/web/cases/tarot-fans/cover.webp/360x225-7dfb3c3c.webp", "page": "/uploads/web/cases/tarot-fans/page.webp/800x1695-553c8602.webp", "pageH": 1695, "mobilePage": "/uploads/web/cases/tarot-fans/m-page.webp/420x3358-929b648d.webp"}, {"slug": "golfbevy", "name": "GolfBevy", "title": "A golf app for finding a game with your friends", "summary": "GolfBevy helps golfers set up a round on public or private courses: friends mark when they can play, a directory holds the courses and clubs, and the game is agreed in the chat inside the app.", "outcome": "A mobile app with a course directory, friends' availability, games you set up or are invited to, chat and a library of golf reading, followed by the product's website.", "country": "USA", "industry": "Sports", "kinds": ["mobile", "web"], "tags": ["Mobile app", "Course directory", "Availability", "In-app chat"], "url": null, "source": "GolfBevy is no longer online, so these screens are our rebuild of the app: the directory, the players and the welcome screen from its own screenshots, the rest from what the app does.", "featured": false, "cover": "/uploads/web/cases/golfbevy/cover.webp/1280x800-a59594e4.webp", "coverSmall": "/uploads/web/cases/golfbevy/cover.webp/360x225-a59594e4.webp", "page": "/uploads/web/cases/golfbevy/page.webp/800x3088-7e56913e.webp", "pageH": 3088, "mobilePage": "/uploads/web/cases/golfbevy/m-page.webp/420x4545-294e22af.webp"}, {"slug": "obtaincare", "name": "ObtainCare", "title": "Booking a service near you, from healthcare to car care", "summary": "ObtainCare finds and books service providers in your area, from healthcare to car care and everything in between, in person or by video where the service allows. Providers join as individuals or companies and keep their rates, insurance, awards and contacts in one profile.", "outcome": "One platform for customers and providers: search by area, booking in person or by telehealth, favourites, invitations and reviews, and a toolbar for each provider. After the launch we ran it and added new modules.", "country": "USA", "industry": "Services marketplace", "kinds": ["web"], "tags": ["Booking platform", "Telehealth", "Provider profiles", "Reviews"], "url": null, "source": "ObtainCare is no longer online, so these screens are our rebuild of the platform: the patient's appointments from its own screenshot, the rest from what the platform does.", "featured": false, "cover": "/uploads/web/cases/obtaincare/cover.webp/1280x800-0d823763.webp", "coverSmall": "/uploads/web/cases/obtaincare/cover.webp/360x225-0d823763.webp", "page": "/uploads/web/cases/obtaincare/page.webp/800x3396-b0f29d54.webp", "pageH": 3396, "mobilePage": "/uploads/web/cases/obtaincare/m-page.webp/420x4545-e25204c1.webp"}, {"slug": "legalbevy", "name": "LegalBevy", "title": "A crowd-sourced wiki of the rules of US courts", "summary": "LegalBevy gathers the rules of civil procedure, local rules and judges' c
408ourtroom preferences for US courts, sorted by state, county and court. Attorneys and their staff add what they know, comment, mark what helped and find process servers, videographers and skip tracers their peers have rated.", "outcome": "A free reference legal professionals build together: rules, judges' preferences and comments for each court, one search across all of them and a directory of providers rated by peers.", "country": "USA", "industry": "Legal tech", "kinds": ["web"], "tags": ["Crowd-sourced wiki", "Elasticsearch", "Comments and votes", "Provider directory"], "url": null, "source": "LegalBevy is no longer online, so these screens are our rebuild of it: the account page from its own screenshot, the rest from what the product does.", "featured": false, "cover": "/uploads/web/cases/legalbevy/cover.webp/1280x800-28b812f6.webp", "coverSmall": "/uploads/web/cases/legalbevy/cover.webp/360x225-28b812f6.webp", "page": "/uploads/web/cases/legalbevy/page.webp/800x3181-8ba2b2f7.webp", "pageH": 3181, "mobilePage": "/uploads/web/cases/legalbevy/m-page.webp/420x4545-c85158bf.webp"}, {"slug": "peakmailer", "name": "PeakMailer", "title": "An email marketing tool: lists, templates, sequences and stats", "summary": "PeakMailer runs a business's email marketing in one place: mailing lists with groups and a block list, templates in the company's own brand, campaigns built as sequences of emails that start on a trigger, and the numbers of every campaign.", "outcome": "An all-in-one email marketing tool on React and Django, running on AWS. Function came first for the client, so the interface used a standard admin template; these screens give it a design.", "country": "USA", "industry": "Email marketing", "kinds": ["web"], "tags": ["Marketing automation", "Email campaigns", "Templates", "Analytics"], "url": null, "source": "These screens are our rebuild of the tool: the campaign's stats from its own screenshot, in a design it did not get at the time, and the other parts from what it does.", "featured": false, "cover": "/uploads/web/cases/peakmailer/cover.webp/1280x800-2cd315cd.webp", "coverSmall": "/uploads/web/cases/peakmailer/cover.webp/360x225-2cd315cd.webp", "page": "/uploads/web/cases/peakmailer/page.webp/800x3064-ac07fbf6.webp", "pageH": 3064, "mobilePage": "/uploads/web/cases/peakmailer/m-page.webp/420x4545-08902619.webp"}, {"slug": "healthjobs", "name": "HealthJobs.one", "title": "A job and career hub for India's healthcare professionals", "summary": "HealthJobs.one, started by Medvarsity, connects nurses, doctors, administrators and researchers with healthcare employers across India: job search for the field, skill tests, profiles with resumes, career guidance and community forums.", "outcome": "A platform for both sides of healthcare hiring - search by role, location and experience, skill tests, real-time alerts, an employer dashboard and a community - built full stack by our team.", "country": "India", "industry": "Healthcare recruiting", "kinds": ["web"], "tags": ["Job platform", "Elasticsearch", "Skill assessments", "Community"], "url": "https://healthjobs.one/", "source": "HealthJobs.one has changed since our work, so these screens are our rebuild of it: the job search from its own screenshot, the rest from what the platform does.", "featured": false, "cover": "/uploads/web/cases/healthjobs/cover.webp/1280x800-5833c7e0.webp", "coverSmall": "/uploads/web/cases/healthjobs/cover.webp/360x225-5833c7e0.webp", "page": "/uploads/web/cases/healthjobs/page.webp/800x3298-4fc60317.webp", "pageH": 3298, "mobilePage": "/uploads/web/cases/healthjobs/m-page.webp/420x4545-5a5c1811.webp"}, {"slug": "building-energy", "name": "BuildingEnergy", "title": "An energy use calculator for buildings, with benchmarks and forecasts", "summary": "For BuildingEnergy, a renewable energy producer, we built a tool that finds a building by its address, takes its electricity and gas meter reads and shows its energy use over time, next to similar buildings and as a forecast, with projects and notes kept for each building.", "outcome": "A working calculator on AngularJS, Elasticsearch, a geocoder and Django REST Framework. After it the client kept us on for new front-end design and features, back-end work and the site's administration.", "country": "USA", "industry": "Renewable energy", "kinds": ["web"], "tags": ["Energy anal
408ytics", "Geocoding", "Elasticsearch", "Charts"], "url": null, "source": "These screens are our rebuild of the tool: the energy use view from its own screenshot, the other tabs from what the tool does.", "featured": false, "cover": "/uploads/web/cases/building-energy/cover.webp/1280x800-25bf0600.webp", "coverSmall": "/uploads/web/cases/building-energy/cover.webp/360x225-25bf0600.webp", "page": "/uploads/web/cases/building-energy/page.webp/800x3050-593f4fa6.webp", "pageH": 3050, "mobilePage": "/uploads/web/cases/building-energy/m-page.webp/420x4545-c28b76b7.webp"}, {"slug": "intuceo", "name": "Intuceo", "title": "A new front end and API for an augmented analytics platform", "summary": "Intuceo is a cloud augmented analytics platform: analysts load a dataset, it profiles and cleans the data, finds what drives a target metric and builds classification, regression and time-series models. Our team rebuilt its front end as an Angular single-page app and wrote its REST API from scratch.", "outcome": "The product moved from server-rendered pages with no API to an Angular app over a Django REST API, with each step of an analysis shown as a chart.", "country": "USA", "industry": "Data analytics", "kinds": ["web", "ai"], "tags": ["Angular SPA", "REST API", "Data visualization", "Machine learning"], "url": "https://intuceo.com/", "source": "Intuceo has changed since our work, so these screens are our rebuild of it: the analyses from its own screenshots, the upload and the model results from what the platform does.", "featured": false, "cover": "/uploads/web/cases/intuceo/cover.webp/1280x800-5a9415c4.webp", "coverSmall": "/uploads/web/cases/intuceo/cover.webp/360x225-5a9415c4.webp", "page": "/uploads/web/cases/intuceo/page.webp/800x3276-1d6b1b9e.webp", "pageH": 3276, "mobilePage": "/uploads/web/cases/intuceo/m-page.webp/420x4545-6716ed48.webp"}], "services": [{"id": "web-development", "href": "/web-development/", "formation": "site", "title": "Web Development", "label": "Web Development", "price": "from $499", "priceNote": "support $29 a month, billed annually", "lead": "Websites for your business, designed and developed by one team: from a $499 website to custom web development.", "points": []}, {"id": "mobile-app-development", "href": "/mobile-app-development/", "formation": "phone", "title": "Mobile App Development", "label": "Mobile Apps", "price": "from $5,000", "priceNote": "a first version", "lead": "iOS, Android and cross-platform apps with the backend and admin they need, released to the stores and supported.", "points": []}, {"id": "web-application-development", "href": "/web-application-development/", "formation": "browser", "title": "Web Application Development", "label": "Web Apps", "price": "from $5,000", "priceNote": "a first version", "lead": "Portals, SaaS products, marketplaces and internal tools, from discovery to support.", "points": []}, {"id": "ai-development", "href": "/ai-development/", "formation": "assistant", "title": "AI Development", "label": "AI Development", "price": "Individual estimate", "priceNote": null, "lead": "AI chatbots, AI automation and AI inside your software, from the first consultation to launch.", "points": []}, {"id": "it-outsourcing", "href": "/it-outsourcing/", "formation": "board", "title": "IT Outsourcing", "label": "IT Outsourcing", "price": "Individual estimate", "priceNote": null, "lead": "Outsource software and web development, design, hosting and IT support to one team with a US contract.", "points": []}, {"id": "it-maintenance", "href": "/it-maintenance/", "formation": "uptime", "title": "IT Maintenance \u0026 Support", "label": "IT Support", "price": "from $29 a month", "priceNote": "billed annually, for the sites we build", "lead": "Website maintenance from $29 a month, and managed IT support for apps, software and servers.", "points": []}, {"id": "cybersecurity", "href": "/cybersecurity/", "formation": "shield", "title": "Cybersecurity", "label": "Cybersecurity", "price": "Individual estimate", "priceNote": null, "lead": "Security for your company end to end: assessments, testing, monitoring, incident response and fixes.", "points": []}, {"id": "compliance", "href": "/compliance/", "formation": "audit", "title": "Compliance", "label": "Compliance", "price": "Individual estimate", "priceNote": null, "lead": "Regulatory compliance for your business: HIPAA, GDPR, PCI DSS, SOC 2, CMMC and more, set up, kept and proven.", "points": []}, {"id": "cloud-services", "href": "/cloud-services/", "formation": "cloud", "title": "Cloud Services", "label": "Cloud", "price": "Individual estimate", "priceNote": null, "lead": "Managed AWS and Azure, cloud migration, security, backup and disaster recovery.", "points": []}, {"id": "custom-software-development", "href": "/custom-software-development/", "formation": "code", "title": "Custom Software Development", "label": "Custom Software", "price": "Individual estimate", "priceNote": null, "lead": "Web platforms, mobile apps and internal tools, built end to end by one team: discovery, design, development, QA, DevOps and support.", "points": ["Portals, marketplaces, SaaS and internal tools", "iOS and Android, native or cross-platform", "A fixed scope or time and materials"]}, {"id": "staff-augmentation", "href": "/staff-augmentation/", "formation": "team", "title": "Staff Augmentation", "label": "Staff Augmentation", "price": "from $35 an hour", "priceNote": "depending on the role", "lead": "A CTO, developers, project managers, QA and designers from our delivery center in Ukraine join your team and your process, on a contract with our US company.", "points": ["From a CTO to a QA engineer - one or a whole squad", "They report to your lead, in your tools", "Not a fit in the first week - free replacement"]}], "texts": {}}</script>
408
409    
410  </body>
411</html>

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.