
:root{--ink:#141615;--paper:#f3f2ec;--muted:#666960;--line:#d4d5cd;--red:#bc3d2d}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:5px}button{cursor:pointer}header{height:88px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;background:var(--paper);position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px}.mark{font-family:Georgia,serif;font-style:italic;font-size:32px;width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--ink);border-radius:50%}.wordmark{font-size:21px;letter-spacing:-1px;font-weight:700}.wordmark small{display:block;font-size:9px;letter-spacing:4.8px;margin-top:5px}nav{display:flex;gap:32px;align-items:center;font-size:13px}.navcta{border-bottom:1px solid var(--ink);padding-bottom:6px}.menu{display:none;background:none;border:0;font-size:23px}.hero{padding:72px 5% 0}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.2px;text-transform:uppercase;display:flex;align-items:center;gap:10px}.eyebrow:before{content:'';width:6px;height:6px;background:var(--red)}.herohead{display:flex;justify-content:space-between;align-items:end;gap:40px;margin:26px 0 42px}h1{font-weight:500;letter-spacing:-5px;line-height:.99;font-size:clamp(58px,6.8vw,106px);margin:0}h1 em,h2 em{font-family:Georgia,serif;font-weight:400}h1 em{color:var(--red)}.intro{max-width:340px;padding-bottom:7px}.intro p{color:var(--muted);font-size:15px;line-height:1.75;margin:0 0 25px}.btn{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;border:0;padding:17px 22px;background:var(--ink);color:white;font-size:12px;font-weight:600}.btn:hover{background:var(--red)}.heroimg{height:clamp(330px,40vw,560px);position:relative;overflow:hidden;background:#343c3c}.heroimg img{width:100%;height:100%;object-fit:cover;object-position:center 61%}.heroimg:after{content:'';position:absolute;inset:55% 0 0;background:linear-gradient(transparent,#0009)}.imagecaption{position:absolute;bottom:27px;left:30px;right:30px;z-index:1;display:flex;justify-content:space-between;color:white;font-size:10px;letter-spacing:2px}.strip{display:flex;justify-content:space-between;padding:23px 0;border-bottom:1px solid var(--line);font-size:10px;letter-spacing:1.5px;color:var(--muted)}section{padding:92px 5%}.sectionhead{display:flex;justify-content:space-between;align-items:end;margin:27px 0 44px;gap:35px}h2{font-size:clamp(36px,4vw,62px);font-weight:500;line-height:1.08;letter-spacing:-2px;margin:0}.sectionhead p{max-width:360px;color:var(--muted);line-height:1.7;font-size:14px;margin:0}.services{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.service{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:30px;min-height:270px;display:flex;flex-direction:column;transition:background .2s}.service:hover{background:#e9e9e0}.servicenum{color:var(--red);font-size:11px;letter-spacing:1px;margin-bottom:35px}.service h3{font-size:21px;font-weight:500;letter-spacing:-.6px;margin:0 0 12px}.service p{font-size:13px;line-height:1.7;color:var(--muted);max-width:300px;margin:0 0 28px}.service .service-link{padding:0;border:0;background:transparent;text-align:left;margin-top:auto;font-size:11px;font-weight:bold;display:flex;justify-content:space-between}.service .service-link span{font-size:18px}.approach{background:var(--ink);color:var(--paper);display:grid;grid-template-columns:1fr 1fr;gap:9%;padding-top:85px;padding-bottom:85px}.approach h2{margin:30px 0}.approach p{font-size:14px;color:#afb3aa;line-height:1.8;max-width:400px}.process{padding-top:16px}.step{display:grid;grid-template-columns:45px 1fr;gap:15px;padding:27px 0;border-bottom:1px solid #3a3c37}.step:first-child{border-top:1px solid #3a3c37}.step>span{font-size:11px;color:#c97565}.step h3{font-size:20px;font-weight:400;margin:0 0 12px}.step p{margin:0;font-size:13px}.faqwrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:9%}.faqwrap h2{margin-top:25px}details{border-bottom:1px solid var(--line);padding:24px 0}details:first-child{border-top:1px solid var(--line)}summary{font-size:16px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px}summary:after{content:'+';color:var(--red);font-size:21px}details[open] summary:after{content:'−'}details p{font-size:14px;line-height:1.8;color:var(--muted);padding-right:35px;margin-bottom:0}.enquiry{background:#e7e8df;display:grid;grid-template-columns:1fr 1fr;gap:9%}.enquiry h2{margin:28px 0}.enquiry p{max-width:360px;line-height:1.8;font-size:14px;color:var(--muted)}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px}label{display:block;font-size:11px;font-weight:bold;letter-spacing:.4px}input,select,textarea{width:100%;border:0;border-bottom:1px solid #aeb1a5;background:transparent;padding:13px 0;color:var(--ink);border-radius:0;margin-bottom:8px;font-size:14px}textarea{resize:vertical;min-height:80px}.full{grid-column:1/-1}.formnote{font-size:11px!important;line-height:1.6!important;margin:0 0 17px;max-width:none!important}.result{margin-top:20px;background:var(--paper);padding:20px}.result pre{white-space:pre-wrap;font:13px/1.7 Arial}.result button{margin-right:8px;margin-top:8px}footer{padding:40px 5%;display:flex;justify-content:space-between;gap:30px;align-items:center}footer p{font-size:10px;line-height:1.8;color:var(--muted);text-align:right}.footlinks{font-size:11px;margin-top:12px}dialog{border:0;padding:42px;max-width:560px;width:calc(100% - 32px);background:var(--paper);color:var(--ink)}dialog::backdrop{background:#0009}dialog h2{font-size:36px;margin:25px 0}dialog p{font-size:14px;line-height:1.8;color:var(--muted)}.close{position:absolute;right:18px;top:12px;background:none;border:0;font-size:28px}.dialogcta{margin-top:20px} @media(min-width:1600px){body{max-width:1800px;margin:auto}}@media(max-width:800px){header{height:76px}.hero{padding-top:45px}.herohead{display:block}h1{letter-spacing:-3px}.intro{max-width:440px;margin-top:28px}.heroimg{height:360px}.strip{gap:15px;line-height:1.6;font-size:8px}.services{grid-template-columns:repeat(2,1fr)}section{padding:65px 5%}.sectionhead{display:block}.sectionhead p{margin-top:22px}.approach,.faqwrap,.enquiry{grid-template-columns:1fr;gap:32px}.imagecaption{font-size:8px;left:18px;right:18px}.imagecaption span:last-child{display:none}nav{display:none;position:absolute;top:76px;left:0;right:0;background:var(--paper);padding:25px 5%;border-bottom:1px solid var(--line)}nav.open{display:flex;flex-wrap:wrap}.menu{display:block}footer{align-items:start}footer p{max-width:240px}}@media(max-width:480px){.services{grid-template-columns:1fr}.service{min-height:240px}.heroimg{height:310px}.heroimg img{object-position:59% center}.formgrid{grid-template-columns:1fr}.full{grid-column:auto}footer{display:block}footer p{text-align:left;margin-top:25px}h1{font-size:57px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Original DaVinci Coding brand artwork. */
.brand-logo{display:block;width:152px;height:152px;object-fit:contain}
header{height:168px;background:#050606;color:#f3f2ec;border-bottom-color:#252828}
header .navcta{border-bottom-color:#f3f2ec}
header .menu{color:inherit}
html{scroll-padding-top:180px}
footer{background:#000;color:#f3f2ec}footer p{color:#b9bcb7}footer .brand-logo{width:150px;height:150px}
@media(max-width:800px){header{height:128px}.brand-logo{width:112px;height:112px}nav{top:128px;background:#050606;border-bottom-color:#252828}html{scroll-padding-top:140px}}

.service-intro{max-width:850px;padding-top:55px;padding-bottom:60px}.breadcrumb{display:inline-block;color:var(--muted);font-size:12px;margin-bottom:35px}.service-intro h1{font-size:clamp(44px,6vw,82px);letter-spacing:-2.5px;margin:24px 0}.service-intro .lead{font-size:18px;line-height:1.8;color:var(--muted);max-width:700px}.service-body{padding-top:0;display:grid;grid-template-columns:1.4fr 1fr;gap:50px}.service-body h2{font-size:32px;letter-spacing:-1px}.service-body p{font-size:15px;line-height:1.8;color:var(--muted)}.service-content{border-top:1px solid var(--line);padding-top:30px}.service-enquiry{background:#e7e8df;padding:30px}.service-enquiry .btn{margin-top:12px}.service-nav{border-top:1px solid var(--line);padding-top:40px;padding-bottom:50px}.service-nav h2{font-size:28px;letter-spacing:-1px;margin-bottom:25px}.service-nav-links{display:flex;flex-wrap:wrap;gap:14px 30px;font-size:14px}.service-nav-links a{border-bottom:1px solid var(--line);padding-bottom:6px}.service-nav-links a:hover{color:var(--red)}@media(max-width:800px){.service-body{grid-template-columns:1fr;gap:25px}.service-intro{padding-top:35px}.service-intro .lead{font-size:16px}}

.service-body{align-items:start;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.service-content h3{font-size:22px;font-weight:500;letter-spacing:-.5px;margin:36px 0 16px}.service-content ul,.service-content ol{margin:20px 0;padding-left:24px;color:var(--muted);font-size:15px;line-height:1.8}.service-content li{padding-left:5px;margin-bottom:12px}.offering-list li::marker{color:var(--red)}.content-note{background:#e7e8df;padding:24px;margin:30px 0;border-left:3px solid var(--red)}.content-note p:last-child{margin-bottom:0}.text-link{font-size:14px;border-bottom:1px solid currentColor}.content-kicker{font-weight:700;letter-spacing:1px;text-transform:uppercase}.compatibility{width:100%;border-collapse:collapse;font-size:14px;text-align:left}.compatibility th,.compatibility td{padding:12px 14px;border-bottom:1px solid var(--line)}.compatibility thead{background:#e7e8df}.compatibility tbody th{font-weight:400}.region-list details p{padding-right:0}@media(max-width:800px){.service-body{grid-template-columns:minmax(0,1fr)}}

/* Service price list */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.price-panel{background:#141615;color:#f3f2ec;padding:36px 40px}.price-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.price-heading h2{font-size:clamp(28px,3vw,42px);letter-spacing:-1px;margin-top:12px}.price-currency{font-size:11px;letter-spacing:2px;color:#b8bdb5}.price-table{width:100%;border-collapse:collapse;text-align:left}.price-table thead th{font-size:10px;letter-spacing:1.6px;text-transform:uppercase;color:#b8bdb5;padding:0 0 14px}.price-table td,.price-table tbody th{padding:17px 0;border-top:1px solid #3a3c37}.price-table tbody th{font-size:16px;font-weight:400;padding-right:24px}.price-table td{font-size:20px;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}.price-table thead th:last-child{text-align:right}.price-table a{display:block;line-height:1.5}.price-table a span{color:#a9ada6;margin-left:8px}.price-table a:hover{color:#e7b7ac}.price-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid #3a3c37;padding-top:20px;margin-top:4px}.price-bottom p{margin:0;font-size:12px;line-height:1.7;color:#b8bdb5}.price-bottom>a{font-size:12px;white-space:nowrap;border-bottom:1px solid #888e84;padding-bottom:4px}.pricing-page{padding-top:45px}.pricing-page h1{font-size:clamp(42px,6vw,80px);letter-spacing:-3px;margin-top:22px}.pricing-intro{color:var(--muted);font-size:16px;line-height:1.7;margin:24px 0 36px}header nav{gap:24px}@media(max-width:1000px) and (min-width:801px){header nav{gap:15px;font-size:12px}}@media(max-width:600px){.price-panel{padding:25px 20px}.price-table tbody th{font-size:14px;padding-right:14px}.price-table td{font-size:16px}.price-bottom{align-items:flex-start;flex-direction:column;gap:14px}.price-currency{display:none}.price-heading{margin-bottom:24px}.price-table td,.price-table tbody th{padding-top:16px;padding-bottom:16px}.pricing-page h1{letter-spacing:-2px}}

/* Product cards, ready for supplied service photography. */
.price-panel{background:transparent;color:var(--ink);padding:0}.price-heading{margin-bottom:28px}.price-heading h2{font-size:clamp(26px,3vw,38px)}.price-currency{color:var(--muted)}.price-bottom{border-color:var(--line)}.price-bottom p{color:var(--muted)}.price-bottom>a{border-color:var(--muted)}.product-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin:0;padding:0;list-style:none}.product-card{padding:18px;background:#fff;border:1px solid #e0e1db;box-shadow:0 3px 12px #14161508;display:flex;flex-direction:column;min-width:0;transition:box-shadow .2s,transform .2s}.product-card:hover{box-shadow:0 7px 22px #14161512;transform:translateY(-3px)}.product-image{display:block;aspect-ratio:1;overflow:hidden;background:#eceeea}.product-image img{display:block;width:100%;height:100%;object-fit:cover}.photo-placeholder{display:flex;height:100%;width:100%;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:#727b77;background:linear-gradient(145deg,#f3f4f1,#e1e6e3)}.photo-placeholder span{font-size:11px;letter-spacing:.6px}.product-info{display:flex;flex-direction:column;flex:1;padding-top:20px}.product-price{color:#0074db;font-size:clamp(20px,2vw,27px);font-weight:500;line-height:1.3;margin:0 0 9px;font-variant-numeric:tabular-nums}.product-card h3{font-size:17px;line-height:1.45;font-weight:500;margin:0 0 5px;letter-spacing:-.2px}.product-brand{font-size:12px;color:var(--muted);margin:0 0 24px}.product-button{margin-top:auto;display:flex;justify-content:center;gap:12px;align-items:center;background:#0074db;color:#fff;padding:13px 10px;text-transform:uppercase;font-size:11px;font-weight:700;letter-spacing:.3px}.product-button:hover{background:#005bab}.product-card h3 a:hover{color:#0074db}@media(max-width:1000px){.product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.product-price{font-size:25px}}@media(max-width:480px){.product-grid{grid-template-columns:1fr;gap:20px}.product-card{padding:20px}.product-price{font-size:27px}.price-panel{padding:0}.price-heading h2{font-size:27px}.product-card h3{font-size:19px}}

.service-photo{display:block;width:100%;max-height:520px;object-fit:cover;object-position:center 40%;margin:0 0 30px}

.herohead .coding-heading{font-size:clamp(42px,5.6vw,88px);letter-spacing:-2.5px}@media(max-width:480px){.herohead .coding-heading{font-size:40px;letter-spacing:-1.5px}}

.service-enquiry .service-page-price{font-size:30px;font-weight:600;color:#0074db;margin:20px 0}

.service-content .remote-checks{list-style:none;padding-left:0}.remote-checks li{position:relative;padding-left:25px}.remote-checks li::before{content:"✓";position:absolute;left:0;color:#0074db;font-weight:bold}.purchase-steps>li{padding-bottom:12px}.purchase-steps strong{color:var(--ink)}.purchase-steps p{margin:8px 0}

/* Persistent contact link on every page. */
.whatsapp-float{position:fixed;right:max(24px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom));z-index:1000;display:inline-flex;align-items:center;gap:10px;padding:15px 20px;border-radius:999px;background:#25d366;color:#062c18;font:600 14px/1.2 Arial,sans-serif;text-decoration:none;box-shadow:0 4px 20px #0003;transition:background .2s,box-shadow .2s}
.whatsapp-float svg{width:26px;height:26px;flex-shrink:0}.whatsapp-float:hover{background:#20c25e;box-shadow:0 6px 24px #0004}.whatsapp-float:focus-visible{outline:3px solid #111;outline-offset:4px}
@media(max-width:600px){.whatsapp-float{right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));width:56px;height:56px;justify-content:center;padding:0}.whatsapp-float span{display:none}footer{padding-bottom:92px}}

.social-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}.social-links a{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:10px 12px;border:1px solid #383838;border-radius:6px;color:#f3f2ec;font-size:12px;transition:background .2s,border-color .2s}.social-links a:hover{background:#1c1c1c;border-color:#888}.social-links a:focus-visible{outline:2px solid #fff;outline-offset:4px}.social-links svg{width:22px;height:22px;flex-shrink:0}.social-links small{display:block;color:#b9bcb7;font-size:11px;margin-top:4px}.social-links a>span:last-child{margin-left:6px}

.google-reviews{display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:9%;border-top:1px solid var(--line)}.google-reviews h2{margin-top:28px}.google-review-card{padding:32px;border:1px solid var(--line);background:#fff}.google-review-label{display:flex;align-items:center;flex-wrap:wrap;gap:12px;font-size:15px}.google-review-label>span:last-child{font-size:12px;color:var(--muted)}.google-review-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#f3f5f8;color:#4285f4;font-size:26px;font-weight:700}.google-review-card p{font-size:14px;line-height:1.8;color:var(--muted);margin:22px 0}.google-review-card .review-invite{font-size:12px;margin-bottom:0}.footlinks{line-height:2}@media(max-width:800px){.google-reviews{grid-template-columns:1fr;gap:30px}.google-review-card{padding:24px}}

/* Customer review cards */
.featured-reviews{display:block;background:#eeeee7}.review-section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:32px}.featured-reviews h2{font-size:clamp(30px,3.4vw,46px);letter-spacing:-1.5px;line-height:1.15;margin:16px 0 12px}.review-subtitle{font-size:14px;line-height:1.7;color:var(--muted);margin:0}.review-all{display:inline-flex;align-items:center;gap:16px;font-size:12px;font-weight:600;padding:12px 0;border-bottom:1px solid #aaa;white-space:nowrap}.review-all:hover{color:var(--red);border-color:var(--red)}.customer-review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}.customer-review{padding:26px;background:#fff;border:1px solid #dedfd7;border-radius:12px;box-shadow:0 3px 12px #14161504}.review-person{display:flex;align-items:center;gap:11px;min-height:42px}.review-avatar{width:40px;height:40px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;background:#eeeee8;color:#4f554b;font-size:12px;font-weight:600}.review-person h3{font-size:13px;line-height:1.4;font-weight:600;margin:0 0 3px}.review-source{font-size:11px;color:#73776e}.review-google{margin-left:auto;color:#4285f4;font-size:20px;font-weight:700}.review-card-top{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:22px 0 16px}.review-stars{font-size:16px;letter-spacing:2px;color:#a66b00}.review-service{font-size:10px;color:#686d63;border-left:1px solid #dedfd7;padding-left:10px}.review-details,.review-details:first-child{border:0;padding:0}.review-details summary{display:block;list-style:none;font-size:14px}.review-details summary::-webkit-details-marker{display:none}.review-details summary:after{display:none}.review-preview{display:block;min-height:150px;font-size:14px;line-height:1.8;color:#40463d}.review-toggle{display:flex;justify-content:space-between;gap:12px;padding-top:18px;margin-top:20px;border-top:1px solid #ecece6;font-size:11px;font-weight:600;color:#60675c}.review-details summary:hover .review-toggle{color:var(--red)}.review-less{display:none}.review-details[open] .review-less{display:inline}.review-details[open] .review-more,.review-details[open] .review-preview{display:none}.review-details[open] .review-toggle{margin:0;padding:0;border:0}.review-details blockquote{margin:18px 0 0}.review-details blockquote p{padding:0;margin:0 0 14px;font-size:14px;line-height:1.8;color:#40463d;white-space:pre-line}.review-details blockquote p:last-child{margin-bottom:0}@media(max-width:1050px){.customer-review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.review-section-heading{display:block}.review-all{margin-top:18px}.customer-review-grid{grid-template-columns:1fr}.customer-review{padding:24px}.review-preview{min-height:0}.review-toggle{margin-top:20px}}

/* Wide logo: crop the supplied artwork's blank margins in the display box. */
header .brand-logo,footer .brand-logo{width:300px;height:100px;object-fit:cover;object-position:center 48%;background:#fff;border-radius:4px}
@media(max-width:800px){header .brand-logo{width:240px;height:80px}footer .brand-logo{width:270px;height:90px}}
@media(max-width:380px){header .brand-logo{width:210px;height:70px}footer .brand-logo{width:240px;height:80px}}
