.service-page{background:#f5f7fa}
.service-page h2{font-size:clamp(30px,3.1vw,44px);line-height:1.15}
.service-page h3{font-size:22px;line-height:1.3}
.service-page p{max-width:65ch}
.service-page .desktop-nav .services-links a[aria-current=page]{color:var(--blue);background:var(--pale)}.service-page #mobile-nav .services-links a[aria-current=page]{color:#fff;background:#153955}
.service-opening{background:#061a30;color:#fff;padding:20px 0 76px;overflow:hidden}
.service-opening .back-link{margin-bottom:35px;min-height:44px}
.service-opening .back-link svg{order:0}
.service-opening-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(35px,5vw,80px);align-items:center;min-height:490px}
.service-opening h1{font-size:clamp(38px,4.3vw,62px);line-height:1.1;letter-spacing:-.04em}
.service-opening h1>span{display:block;font-size:20px;font-weight:500;line-height:1.5;letter-spacing:0;color:#77caff;margin-bottom:24px}
.service-opening-copy>p{font-size:18px;line-height:1.7;color:#c3d5eb;margin-top:26px;max-width:50ch}
.service-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 26px;margin-top:30px}
.service-actions .text-link{color:#d4e7f8}.service-actions .text-link:hover{color:#77caff}

.service-art{min-width:0;position:relative;margin:0;padding:28px 0 35px;isolation:isolate}
.service-art figcaption{color:#abc4dc;font-size:12px;position:relative;margin-top:28px;text-align:center}
.web-art{padding-bottom:0;padding-right:26px}
.site-preview{border:1px solid #5d7d94;border-radius:10px;overflow:hidden;transform:perspective(1100px) rotateY(-8deg) rotateX(3deg);box-shadow:20px 25px 60px #0005;background:#f7f4e7}
.preview-top{display:flex;justify-content:space-between;padding:12px 18px;background:#f2f4f5;color:#455361;font-size:12px;border-bottom:1px solid #d3dce3}
.site-preview img{width:100%;aspect-ratio:1.5;object-fit:cover;object-position:top}
.mobile-preview{position:absolute;right:-2px;bottom:30px;width:24%;height:60%;border:5px solid #122a40;border-radius:20px;background:#fee78c;overflow:hidden;box-shadow:0 15px 40px #0005;transform:rotate(5deg)}
.mobile-preview img{height:100%;width:auto;max-width:none;position:absolute;left:50%;transform:translateX(-50%)}
.security-art{display:flex;flex-direction:column;align-items:center}

.ai-art{max-width:440px;width:100%;justify-self:center}
.flow-node{padding:22px;border:1px solid #315677;border-radius:12px;text-align:center;background:#0a2440;color:#c9deef}
.flow-label{font-size:12px;color:#a9c6df;display:block;margin-bottom:14px}
.source-node>div{display:flex;justify-content:space-between;gap:12px;font-size:14px}
.source-node>div span{border-inline:1px solid #43637f;padding-inline:18px}
.flow-track{width:1px;height:38px;background:#436582;position:relative;margin:auto;overflow:hidden}
.flow-track i{display:block;width:1px;height:14px;background:#b1edff;transform:translateY(6px)}
.agent-node{border-color:#5eaddc;background:#103e65;display:grid;grid-template-columns:32px 1fr;text-align:left;gap:3px 18px;padding:24px 35px}
.agent-node svg{grid-row:span 2;width:32px;height:32px;align-self:center;color:#80dbff}
.agent-node strong{color:#fff;font-size:19px;font-weight:600}.agent-node>span{font-size:13px}
.result-node{border-style:dashed;padding:17px}.result-node>span{font-size:12px;display:block;margin-bottom:3px}.result-node strong{font-size:16px;font-weight:500;color:#e1f1ff}
.software-art{border:1px solid #34485f;border-radius:14px;padding:0;overflow:hidden;background:#0c0b13;box-shadow:12px 25px 60px #0003}
.software-art>img{width:100%;aspect-ratio:1.8;object-fit:cover;object-position:center}
.software-art figcaption{margin:0;padding:0 15px 22px;color:#acaec7}
.service-scope{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(45px,8vw,125px);padding-block:100px}
.scope-intro p{color:#465b72;margin-top:25px;max-width:35ch}
.scope-list article{padding:25px 0;border-top:1px solid #d5dfe9}.scope-list article:first-child{padding-top:0;border-top:0}
.scope-list article:last-child{padding-bottom:0}.scope-list p{color:#465b72;margin-top:10px;line-height:1.7}
.selected-work{padding:0 0 100px}.work-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:38px;gap:30px}.work-heading>p{color:#465b72}
.project-pair{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.project-screen{display:block;overflow:hidden;border-radius:12px;background:#f0e9be;aspect-ratio:1.6;border:1px solid #d5dfe9}
.project-screen img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.project-screen:hover img{transform:scale(1.025)}.lochlanism-screen img{object-position:center}.project-showcase>div{padding-top:25px}.project-showcase p{color:#465b72;margin:12px 0}.project-showcase .text-link{color:#0759f8}
.service-delivery{padding:58px 60px 60px;background:#0b2945;color:#fff;border-radius:16px}
.service-delivery h2{max-width:700px}.service-delivery ol{display:grid;grid-template-columns:repeat(3,1fr);gap:45px;padding:0;margin:38px 0 0;list-style:none}
.service-delivery li{border-top:1px solid #49657e;padding-top:24px}.service-delivery li>span{display:block;font-size:13px;color:#7bceff;margin-bottom:16px}
.service-delivery p{font-size:15px;color:#c6d9ec;margin-top:15px}
.service-faq{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(45px,8vw,125px);padding-block:100px}
.service-faq details p{font-size:16px;line-height:1.7;color:#465b72}.service-faq summary{font-size:16px;line-height:1.5;gap:20px}.service-faq details:first-child summary{padding-top:0;min-height:44px}
.service-close{padding-block:64px;background:#e8f1fa;border-top:1px solid #d5e4f1}.service-close>.wrap{display:flex;align-items:center;justify-content:space-between;gap:40px}
.service-close p{color:#465b72;margin-top:20px}.service-close .button{flex-shrink:0}
.security-journey{background:#e6eef6;padding:60px;border-radius:16px;display:grid;grid-template-columns:.85fr 1.15fr;gap:80px}
.security-journey>div>p{color:#465b72;margin-top:25px}.security-journey ol{padding:0;margin:0;list-style:none}
.security-journey li{display:flex;gap:22px;padding:26px 0;border-top:1px solid #b8cddd}.security-journey li:first-child{padding-top:0;border-top:0}.security-journey li:last-child{padding-bottom:0}
.security-journey li>span{font-size:14px;color:#0759f8;padding-top:5px}.security-journey p{color:#465b72;margin-top:10px}.security-journey small{display:block;font-size:12px;color:#335a7a;margin-top:12px}
.ai-practice{display:grid;grid-template-columns:.85fr 1.15fr;gap:20px 90px;padding:60px;background:#e6eef6;border-radius:16px;margin-bottom:80px}
.practice-copy p{color:#465b72;margin-top:24px}.enquiry-flow{padding:0;margin:0;list-style:none}
.enquiry-flow li{display:flex;gap:22px;padding:25px 0;border-bottom:1px solid #bed1e1}.enquiry-flow li:first-child{padding-top:0}.enquiry-flow li:last-child{border:0;padding-bottom:0}
.enquiry-flow li>span{color:#0759f8;font-size:13px;padding-top:5px}.enquiry-flow p{color:#465b72;margin-top:10px}

.service-art.art-enter{animation:art-arrive .7s cubic-bezier(.16,1,.3,1) both}
@keyframes art-arrive{from{opacity:.5;translate:0 12px}to{opacity:1;translate:0 0}}
.service-art.is-visible .flow-track i{animation:flow-pass 3.8s ease-in-out 2}
@keyframes flow-pass{0%,15%{transform:translateY(-15px)}75%,100%{transform:translateY(40px)}}

@media(max-width:1100px){.service-opening-grid{gap:35px}.service-opening h1{font-size:45px}.service-opening-copy>p{font-size:16px}.service-opening .button{font-size:13px;padding-inline:20px}.service-scope,.service-faq{gap:50px}.service-delivery,.security-journey,.ai-practice{padding:42px}.service-delivery ol{gap:28px}.source-node>div{font-size:12px}.source-node>div span{padding-inline:10px}}
@media(max-width:800px){.service-opening-grid{grid-template-columns:1fr;gap:36px;min-height:0}.service-opening-copy{max-width:640px}.service-opening h1{font-size:clamp(37px,7vw,54px)}.service-opening h1>span{font-size:18px;margin-bottom:18px}.service-opening{padding-bottom:45px}.service-opening .back-link{margin-bottom:22px}.service-art{max-width:520px;width:100%;justify-self:center}.service-scope,.service-faq{grid-template-columns:1fr;gap:35px;padding-block:65px}.scope-intro p{max-width:55ch;margin-top:18px}.scope-list article:first-child{border-top:1px solid #d5dfe9;padding-top:25px}.project-pair{gap:28px}.work-heading{align-items:start;flex-direction:column;gap:14px}.selected-work{padding-bottom:65px}.service-delivery ol{grid-template-columns:1fr;gap:28px}.service-delivery li{display:grid;grid-template-columns:28px 1fr;gap:0 12px}.service-delivery li>span{grid-row:span 2}.service-delivery li p{grid-column:2;margin-top:10px}.service-delivery li h3{font-size:21px}.service-delivery,.security-journey,.ai-practice{padding:34px 28px}.service-close>.wrap{align-items:flex-start;flex-direction:column;gap:26px}.service-close{padding-block:50px}.security-journey,.ai-practice{grid-template-columns:1fr;gap:32px}.security-journey>div>p{margin-top:18px}.ai-practice{margin-bottom:60px}.software-art{max-width:500px}.security-art{padding-block:0}.ai-art{padding-block:0;max-width:440px}.flow-node{padding:18px}.source-node>div{font-size:13px}.source-node>div span{padding-inline:16px}.flow-track{height:28px}.service-art figcaption{margin-top:20px}.software-art figcaption{margin:0}.service-opening .service-actions{gap:12px 25px}}
@media(max-width:520px){.service-opening h1{font-size:38px}.service-opening h1 br{display:none}.service-opening h1>span{font-size:17px}.service-opening-copy>p{font-size:16px;margin-top:22px}.service-actions{margin-top:24px}.project-pair{grid-template-columns:1fr;gap:38px}.project-screen{aspect-ratio:1.45}.service-page h3{font-size:21px}.web-art{padding-top:12px;padding-right:18px}.mobile-preview{bottom:27px}.preview-top{font-size:12px;padding:9px 12px}.service-art figcaption{font-size:12px}.service-delivery,.security-journey,.ai-practice{padding:30px 23px;border-radius:12px}.source-node>div{font-size:12px}.source-node>div span{padding-inline:12px}.agent-node{grid-template-columns:26px 1fr;gap:4px 15px}.agent-node strong{font-size:17px}.agent-node svg{width:26px;height:26px}.service-faq{gap:30px}.service-faq summary{font-size:15px}.service-close .button{max-width:100%}}
@media(prefers-reduced-motion:reduce){.service-art.art-enter,.service-art.is-visible .flow-track i,.service-art.is-visible .project-screen:hover img{transform:none}}

.review-sheet{width:100%;max-width:450px;border:1px solid #376387;border-radius:12px;padding:32px;background:#0c2c4b;transform:perspective(1100px) rotateY(-6deg) rotateZ(2deg);box-shadow:16px 22px 50px #0003}.review-sheet-top{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #355572;padding-bottom:22px}.review-sheet-top img{width:122px}.review-sheet-top>span{font-size:12px;color:#accbe4}.service-page .review-sheet h2{font-size:30px;line-height:1.2;margin:26px 0;color:#fff}.review-sheet+figcaption{margin-top:26px}@media(max-width:520px){.review-sheet{padding:25px;transform:none}.service-page .review-sheet h2{font-size:27px}.review-sheet-top img{width:110px}.review-sheet-top>span{font-size:12px}}

.service-breadcrumb{display:flex;align-items:center;gap:15px;min-height:44px;color:#9fc7e8;font-size:12px;margin-bottom:35px}.service-opening .service-breadcrumb .back-link{margin:0}.service-breadcrumb>span[aria-current]{color:#d4e9fa}@media(max-width:800px){.service-breadcrumb{margin-bottom:26px}}

/* Actual 390px Wanana mobile capture; preserve its viewport proportions. */
.service-web-design .mobile-preview{height:auto;aspect-ratio:390/844;bottom:0}.service-web-design .mobile-preview img{position:static;transform:none;width:100%;height:100%;max-width:100%;object-fit:cover;object-position:top}.service-web-design .web-art{padding-bottom:26px}@media(max-width:520px){.service-web-design .mobile-preview{bottom:0;border-width:4px;border-radius:15px}}

/* Recorded project motion: original layout and still fallback retained. */
.preview-screen{position:relative;aspect-ratio:1.5;overflow:hidden}.preview-screen>img{width:100%;height:100%;object-fit:cover;object-position:top}.project-motion{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top;opacity:0;pointer-events:none}.project-motion.is-playing{opacity:1}.service-web-design .mobile-preview{box-sizing:content-box}.service-web-design .mobile-preview .project-motion{border-radius:12px}@media(prefers-reduced-motion:reduce){.project-motion{display:none}}

/* An illustrative code review: brief scan, then a clear, stable finding. */
.code-review{max-width:490px;padding:28px;background:#0b223b}
.code-review .review-sheet-top{padding-bottom:22px}
.code-review .review-sheet-top>span{font-size:12px;color:#b9d4e9;max-width:none;text-align:left}
.code-file{display:flex;justify-content:space-between;gap:16px;padding-block:25px 20px;font-size:12px;color:#bad1e5}
.scan-state{color:#ffb9bf}.scan-state:before{content:'';display:inline-block;width:6px;height:6px;background:currentColor;border-radius:50%;margin-right:7px;vertical-align:middle}
.code-lines{position:relative;padding:13px 0;background:#061a30;border-radius:6px;overflow:hidden}
.code-line{display:flex;align-items:center;gap:12px;min-height:34px;padding:3px 12px;color:#d6e8f7}
.code-line code{white-space:pre;font-family:Consolas,'Courier New',monospace;font-size:12px;line-height:1.8}
.line-no{flex:0 0 18px;color:#839eb9;font-size:12px;font-variant-numeric:tabular-nums}
.syntax-purple{color:#cdbaff}.syntax-green{color:#b1d6b9}
.vulnerable-line{background:#622b384f}.vulnerable-line code,.vulnerable-line .syntax-green{color:#ffbec4}.vulnerable-line .line-no{color:#e9a2ac}
.code-finding{display:flex;gap:12px;align-items:flex-start;padding:22px 0 20px;border-bottom:1px solid #355572;color:#ffb9bf}
.code-finding svg{width:20px;height:20px;margin-top:2px}.code-finding strong{font-size:16px;font-weight:600}.code-finding p{font-size:13px;color:#d4dfea;margin-top:5px;line-height:1.6}
.code-resolution{padding-top:20px}.code-resolution>span{font-size:12px;color:#a4c5de}.code-resolution p{font-size:14px;color:#d8eafb;margin-top:6px}
.code-sweep{position:absolute;left:0;right:0;top:0;height:34px;border-bottom:1px solid #88cfff;background:#8cceff0a;opacity:0;pointer-events:none}
.code-review.is-scanning .code-sweep{animation:code-scan-pass 5s ease-in-out infinite}

@keyframes code-scan-pass{0%{transform:translateY(0);opacity:0}10%{opacity:1}85%{transform:translateY(170px);opacity:1}100%{transform:translateY(170px);opacity:0}}

@media(max-width:1100px){.code-review{padding:22px}.code-line{gap:8px;padding-inline:8px}.code-line code{font-size:12px}}
@media(max-width:520px){.code-review{padding:20px}.code-review .review-sheet-top img{width:110px}.code-review .review-sheet-top>span{max-width:none;text-align:left}.code-file{gap:8px;font-size:12px}.code-line{gap:7px;padding-inline:7px;min-height:32px}.code-line code{font-size:12px}.line-no{font-size:12px;flex-basis:16px}.code-finding strong{font-size:15px}}
@media(max-width:360px){.code-review{padding:14px}.code-line code{font-size:12px}.code-line{gap:5px;padding-inline:5px}.line-no{flex-basis:14px}}
@media(prefers-reduced-motion:reduce){.code-review.is-scanning .code-sweep,.code-review.is-scanning .vulnerable-line,.code-review.is-scanning .code-finding,.code-review.is-scanning .code-resolution{animation:none}}

/* Keep the security opening within the common service-page hero rhythm. */
.service-web-security .security-art{padding-block:0}.service-web-security .code-review{padding:24px}.service-web-security .code-review .review-sheet-top{padding-bottom:15px}.service-web-security .code-file{padding-block:18px 15px}.service-web-security .code-lines{padding-block:9px}.service-web-security .code-line{min-height:30px}.service-web-security .code-finding{padding-block:17px 15px}.service-web-security .code-resolution{padding-top:15px}@keyframes code-scan-pass{0%{transform:translateY(0);opacity:0}10%{opacity:1}85%{transform:translateY(90px);opacity:1}100%{transform:translateY(90px);opacity:0}}@media(max-width:520px){.service-web-security .code-review{padding:18px}.service-web-security .code-line{padding-inline:6px;gap:6px}.service-web-security .line-no{flex-basis:15px}}@media(max-width:360px){.service-web-security .code-review{padding:14px}.service-web-security .code-line{padding-inline:5px;gap:5px}.service-web-security .line-no{flex-basis:14px}}

/* Review content is immediate; only the scanning line moves. */
.code-review .code-finding,.code-review .code-resolution{opacity:1;transform:none}.code-review .vulnerable-line{background:#622b384f}

/* Real client examples and a compact illustrative request-to-review workflow. */
.code-review .review-sheet-top img.review-project-logo{width:106px;height:auto;padding:9px 11px;background:#fdd94e;border-radius:5px}
.ai-task-art{padding-block:0;max-width:450px}
.ai-task-art .flow-node{padding:19px 22px}
.ai-task-art .flow-label{margin-bottom:10px}
.ai-task-art .agent-request{margin:16px 0 7px;font-size:14px;line-height:1.55;color:#e1edf7;text-align:left}
.ai-task-art .source-node>small{display:block;text-align:left;font-size:12px;color:#a9c6df}
.ai-task-art .flow-track{height:25px}
.ai-task-art .agent-node{padding:19px 26px}
.ai-task-art .agent-node>span{font-size:12px}
.ai-task-art .result-node{padding:19px;border-style:solid}
.prepared-items{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:13px}
.prepared-items>span{display:flex;align-items:center;gap:6px;font-size:12px;color:#b6dbe8}
.prepared-items svg{width:15px;height:15px;color:#8bd6de}
.ai-task-art .result-node strong{font-size:15px;font-weight:600}
.ai-task-art.is-visible .agent-node svg{animation:agent-soft-pulse 4s ease-in-out 2}
@keyframes agent-soft-pulse{0%,100%{opacity:.55}50%{opacity:1}}
.task-time{display:flex;align-items:center;gap:26px;padding:25px 0;margin-top:10px}
.task-time>div{display:flex;flex-direction:column;gap:7px}.task-time strong{font-size:30px;line-height:1.1;font-weight:700;letter-spacing:-.035em;color:#10243c}.task-time>div:last-child strong{color:#0759f8}.task-time div>span{font-size:12px;color:#465b72}.time-arrow{color:#527692;font-size:24px}.practice-copy .task-time+p{margin-top:0}

.software-client-work{padding-bottom:100px}
.software-project-image{border-radius:12px;overflow:hidden;background:#0b0b11;aspect-ratio:2;border:1px solid #d5dfe9}
.software-project-image img{height:100%;width:100%;object-fit:cover;object-position:center}
.sitesift-project-image{background:#fff}.sitesift-project-image img{object-fit:contain}

.software-case p strong{font-weight:600;color:#10243c}
@media(max-width:1100px){.ai-task-art .flow-node{padding:16px 18px}.ai-task-art .agent-request{font-size:13px}.ai-task-art .agent-node{padding:17px 20px}.ai-task-art .agent-node strong{font-size:17px}.prepared-items{gap:10px}}
@media(max-width:800px){.software-client-work{padding-bottom:65px}.software-client-work .project-pair{grid-template-columns:1fr;gap:38px}.task-time{gap:24px}}
@media(max-width:520px){.ai-task-art .flow-node{padding:16px}.ai-task-art .source-node>div{font-size:12px}.ai-task-art .source-node>div span{padding-inline:13px}.ai-task-art .agent-request{margin-top:14px;font-size:13px}.ai-task-art .agent-node{grid-template-columns:24px 1fr;gap:4px 12px}.ai-task-art .agent-node strong{font-size:16px}.ai-task-art .agent-node svg{width:24px;height:24px}.ai-task-art .result-node strong{font-size:14px}.prepared-items{gap:10px;flex-wrap:wrap}.prepared-items>span{font-size:12px}.task-time{gap:20px}.task-time strong{font-size:28px}}
@media(prefers-reduced-motion:reduce){.ai-task-art.is-visible .agent-node svg{animation:none}}

.code-review .review-sheet-top img.review-project-logo{background:transparent;padding:0;border-radius:0;filter:brightness(0) invert(1);width:126px}
.ai-task-art .agent-node>span{max-width:30ch;line-height:1.5}

.software-case-body{display:flex;flex-direction:column;flex:1}
.software-case .project-description{font-size:16px;line-height:1.7;margin:12px 0 20px}
.project-features{padding:0;margin:0 0 20px;list-style:none;display:grid;grid-template-rows:repeat(4,minmax(68px,auto))}
.project-features li{border-top:1px solid #d5dfe9;padding:13px 0;display:grid;grid-template-columns:.85fr 1.15fr;gap:22px;align-items:start;font-size:14px;line-height:1.6}
.project-features strong{font-weight:600;color:#10243c}.project-features li>span{color:#465b72}

@media(min-width:801px){.software-case .project-description{min-height:5.1em}.software-client-work .project-pair{align-items:stretch}.software-case{display:flex;flex-direction:column}.project-features{grid-template-rows:repeat(4,72px)}}
@media(max-width:1100px){.project-features li{gap:15px;font-size:13px}}
@media(max-width:800px){.project-features li{font-size:14px}.software-case .project-description{margin-bottom:20px}}
@media(max-width:520px){.project-features li{grid-template-columns:.85fr 1.15fr;gap:18px;padding-block:14px;font-size:14px}}
@media(max-width:360px){.project-features li{gap:12px}}

/* Custom software: application showcase and shorter case studies */
.software-logo-art{
  position:relative;
  width:100%;
  max-width:540px;
  aspect-ratio:1.32;
  padding:0;
  overflow:hidden;
  border:1px solid #36516d;
  border-radius:16px;
  background:radial-gradient(circle at 50% 48%,rgba(84,186,250,.18),transparent 42%),#081d34;
}
.software-logo-art::before{
  content:"";
  position:absolute;
  inset:20% 8%;
  border:1px solid rgba(130,213,255,.16);
  border-radius:50%;
  transform:perspective(500px) rotateX(66deg);
}
.software-logo-stage{position:absolute;inset:0;display:grid;place-items:center}
.software-logo-item{
  position:absolute;
  display:grid;
  justify-items:center;
  gap:12px;
  width:132px;
  color:#fff;
  opacity:.42;
  transform:translateX(-120%) scale(.72);
  transform-origin:center;
  will-change:transform,opacity;
}
.software-logo-item:nth-child(2){opacity:1;transform:translateX(0) scale(1)}
.software-logo-item:nth-child(3){transform:translateX(120%) scale(.72)}
.software-logo-item img{
  width:112px;
  height:112px;
  object-fit:cover;
  border-radius:25px;
  box-shadow:0 18px 36px rgba(0,0,0,.28);
}
.software-logo-item strong{font-size:16px;font-weight:600;letter-spacing:-.01em}
.software-logo-art figcaption{
  position:absolute;
  right:0;
  bottom:26px;
  left:0;
  color:#a9c9df;
  font-size:12px;
  text-align:center;
}
.software-logo-art.is-rotating .software-logo-item{animation:software-logo-shift 15s cubic-bezier(.77,0,.175,1) infinite}
.software-logo-art.is-rotating .software-logo-item:nth-child(2){animation-delay:-5s}
.software-logo-art.is-rotating .software-logo-item:nth-child(3){animation-delay:-10s}
.software-logo-art.is-rotating:hover .software-logo-item{animation-play-state:paused}
@keyframes software-logo-shift{
  0%,26%{opacity:.42;transform:translateX(-120%) scale(.72)}
  33%,59%{opacity:1;transform:translateX(0) scale(1)}
  66%,92%{opacity:.42;transform:translateX(120%) scale(.72)}
  100%{opacity:.42;transform:translateX(-120%) scale(.72)}
}
.software-client-work{padding-top:92px;padding-bottom:98px}
.software-client-work .work-heading{margin-bottom:32px}
.software-case .project-description{min-height:3.4em;margin:10px 0 17px;font-size:15px;line-height:1.65}
.software-case .project-features{display:grid;grid-template-rows:repeat(3,auto);margin:0 0 16px;padding:0;list-style:none}
.software-case .project-features li{
  display:flex;
  align-items:center;
  min-height:42px;
  padding:9px 0;
  border-top:1px solid #d5dfe9;
  color:#334b62;
  font-size:13px;
  line-height:1.45;
}
.software-case .project-features li::before{content:"";width:5px;height:5px;margin-right:11px;border-radius:50%;background:#0759f8;flex:0 0 auto}

@media (max-width:800px){
  .software-logo-art{max-width:520px;min-height:330px;aspect-ratio:auto}
  .software-logo-item{width:112px}
  .software-logo-item img{width:88px;height:88px;border-radius:21px}
  .software-logo-item{transform:translateX(-98%) scale(.72)}
  .software-logo-item:nth-child(3){transform:translateX(98%) scale(.72)}
  .software-logo-art.is-rotating .software-logo-item{animation-name:software-logo-shift-mobile}
  @keyframes software-logo-shift-mobile{
    0%,26%{opacity:.38;transform:translateX(-98%) scale(.72)}
    33%,59%{opacity:1;transform:translateX(0) scale(1)}
    66%,92%{opacity:.38;transform:translateX(98%) scale(.72)}
    100%{opacity:.38;transform:translateX(-98%) scale(.72)}
  }
  .software-client-work{padding-top:70px;padding-bottom:76px}
  .software-case .project-description{min-height:0}

}
@media (prefers-reduced-motion:reduce){
  .software-logo-art.is-rotating .software-logo-item{animation:none}
}

.software-client-work .software-case{padding-bottom:26px}

@media (max-width:800px){
  .software-client-work{padding-bottom:60px}
  .software-client-work .project-pair{gap:34px}
  .software-client-work .software-case{padding-bottom:0}
}

/* Unified service hero perspective */
@media (min-width:801px){
  .service-web-design .site-preview,
  .service-web-security .review-sheet,
  .service-ai-integration .ai-task-art,
  .service-custom-software .software-logo-art{
    transform:perspective(1100px) rotateY(-6deg) rotateX(2deg);
  }
}
@media (max-width:800px){
  .service-web-design .site-preview,
  .service-web-security .review-sheet,
  .service-ai-integration .ai-task-art,
  .service-custom-software .software-logo-art{
    transform:none;
  }
}
.sitesift-project-image img{object-fit:cover;object-position:center}

/* Software work banner corrections */
.software-case>.software-project-image{padding-top:0}
.sitesift-built-banner{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:16px;
  padding:28px;
  color:#fff;
  text-align:center;
  background:linear-gradient(135deg,#ef3f7c 0%,#d72b6c 54%,#bf1d59 100%);
  isolation:isolate;
}
.sitesift-built-banner::before{
  content:"";
  position:absolute;
  width:48%;
  aspect-ratio:1;
  right:-14%;
  top:-55%;
  border:1px solid rgba(255,255,255,.24);
  border-radius:50%;
  z-index:-1;
}
.sitesift-banner-lockup{display:flex;align-items:center;justify-content:center;gap:15px}
.sitesift-built-banner .sitesift-mark{width:62px;height:62px;object-fit:cover;border-radius:14px;box-shadow:0 12px 28px rgba(91,5,40,.18)}
.sitesift-banner-lockup strong{font-size:52px;line-height:1;font-weight:700;letter-spacing:-.045em;color:#fff}
.sitesift-built-banner p{margin:0;color:#fff;font-size:18px;line-height:1.45}
.sitesift-built-banner p span{display:block;color:#ffe2ec;font-size:14px}
@media(max-width:520px){
  .sitesift-built-banner{gap:11px;padding:20px}
  .sitesift-built-banner .sitesift-mark{width:44px;height:44px;border-radius:11px}
  .sitesift-banner-lockup{gap:10px}
  .sitesift-banner-lockup strong{font-size:36px}
  .sitesift-built-banner p{font-size:14px}
  .sitesift-built-banner p span{font-size:12px}
}

#firstcrm>.software-project-image{padding-top:0}
#sitesift>.sitesift-built-banner{padding:28px}
@media(max-width:520px){#sitesift>.sitesift-built-banner{padding:20px}}

@media(max-width:520px){.code-review .review-sheet-top img.review-project-logo{width:94px}}

.code-review .review-sheet-top img.review-project-logo{width:106px}
@media(max-width:520px){.code-review .review-sheet-top img.review-project-logo{width:94px}}


/* Keep the Web Design device preview fully inside narrow viewports. */
@media(max-width:520px){
 .service-web-design .web-art{padding-right:0;padding-bottom:28px}
 .service-web-design .site-preview{width:calc(100% - 8px);margin-inline:auto}
 .service-web-design .mobile-preview{box-sizing:border-box;right:6px;bottom:0;width:23%;border-width:4px;border-radius:15px;transform:rotate(3deg);transform-origin:center bottom}
}
