/* Service pages: readable work packages and interactive illustrative scenes. */
.service-hero-layout { display:grid; grid-template-columns:1fr 1.05fr; align-items:center; gap:38px; }
.service-hero-layout .detail-hero-copy { padding-top:12px; }
.service-hero-layout h1 { font-size:clamp(31px,3.5vw,47px); line-height:1.1; }
.service-hero-layout .detail-lead { font-size:15px; line-height:1.7; }
.service-demo { position:relative; min-width:0; border-radius:22px; color:#effbff; background:radial-gradient(ellipse at 70% 0,#284d72,#101f3a 65%); box-shadow:0 24px 45px -25px #0a2b56aa; border:1px solid #38607c; overflow:hidden; }
.demo-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:18px 20px 0; font-size:12px; font-weight:750; }
.motion-toggle { font:inherit; font-size:10px; cursor:pointer; background:#ffffff09; color:#b2e8e6; border:1px solid #56838c; border-radius:20px; padding:7px 10px; }
.motion-toggle:disabled { opacity:.6; cursor:default; }
.service-model { position:relative; perspective:1000px; padding:0; transform:rotateX(var(--model-x,0deg)) rotateY(var(--model-y,0deg)); transform-origin:50% 65%; transition:transform .2s ease-out; }
.service-model svg { display:block; width:100%; height:auto; }
.service-model svg [data-node].model-replaced > .scene-float > g[filter="url(#shadow)"] { opacity:0; }
.scene-object-viewer { position:absolute; z-index:3; overflow:hidden; border:1px solid #52748b; border-radius:8px; background:#10243b; box-shadow:0 8px 20px #03132666; }
.scene-object-viewer img { display:block; width:100%; height:100%; object-fit:cover; }
.scene-object-failed { display:none; }
.scene-object-motion { position:absolute; z-index:1; inset:0; display:block; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity .25s ease; }
.scene-object-viewer.is-playing .scene-object-motion { opacity:1; }
.scene-object-viewer.is-playing img { opacity:0; }
.scene-photo-slot-1 { left:27%; top:16%; width:25%; height:20%; animation:scene-photo-float 6s ease-in-out infinite; }
.scene-photo-slot-2 { left:43%; top:45%; width:36%; height:22%; animation:scene-photo-float 6s ease-in-out -2s infinite; }
.scene-photo-slot-3 { left:68%; top:20%; width:29%; height:19%; animation:scene-photo-float 6s ease-in-out -4s infinite; }
.service-demo.is-paused .scene-object-viewer { animation-play-state:paused; }
@keyframes scene-photo-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-4px); } }
.scene-model-credits { display:flex; flex-wrap:wrap; gap:4px 12px; margin:0 18px 10px; color:#a8c3d5; font-size:9px; line-height:1.45; }
.scene-model-credits a { color:#cde4f2; text-decoration:underline; text-decoration-color:#66869b; text-underline-offset:2px; }
.scene-node { opacity:.7; transition:opacity .3s; }
.scene-node.is-active { opacity:1; }
.service-demo.is-enhanced .scene-flow { animation:service-signal 2.8s linear infinite; }
.service-demo.is-enhanced .scene-float { animation:service-float 6s ease-in-out infinite; }
.scene-node-1 .scene-float { animation-delay:-1.5s !important; }
.scene-node-2 .scene-float { animation-delay:-3s !important; }
.scene-node-3 .scene-float { animation-delay:-4.5s !important; }
.service-demo.is-paused .scene-flow,.service-demo.is-paused .scene-float { animation-play-state:paused; }
.demo-hint { margin:-5px 20px 10px; color:#b5cfe0; font-size:11px; }
.demo-controls { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; padding:0 16px; }
.demo-controls button { display:flex; align-items:flex-start; flex-direction:column; gap:6px; padding:10px 8px; border:1px solid #4c6580; border-radius:10px; background:#ffffff06; color:#d5e9f7; text-align:left; font:inherit; font-size:11px; line-height:1.3; cursor:pointer; overflow-wrap:anywhere; }
.demo-controls button[aria-pressed="true"] { border-color:#8ae1d3; background:#8ae1d319; color:#dcfff5; }
.demo-controls button[aria-pressed="true"] span { color:#a7ffe1; }
.demo-descriptions { padding:12px 20px 18px; min-height:88px; }
.demo-descriptions p { margin:0 0 5px; color:#c1d8e6; font-size:12px; line-height:1.65; }
.demo-descriptions strong { color:#e9fff9; font-weight:650; }
.service-route-nav { margin-top:25px; }
.service-route-nav details { border-bottom:1px solid #d5e2eb; padding-bottom:16px; }
.service-route-nav summary { display:flex; justify-content:space-between; cursor:pointer; font-size:13px; font-weight:750; list-style:none; }
.service-route-nav summary span { color:#397192; }
.service-route-nav nav { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.service-route-nav nav a { font-size:12px; border:1px solid #d5e2eb; padding:9px 13px; border-radius:8px; }
.service-route-nav a[aria-current="page"] { background:#163955; color:#fff; border-color:#163955; }
.service-explorer { padding-top:28px; padding-bottom:30px; }
.service-tabs { display:flex; gap:6px; padding:6px; border:1px solid #d8e4ed; background:#edf4f8; border-radius:14px; }
.service-tabs a { flex:1; padding:15px 16px; border-radius:9px; font-size:14px; font-weight:750; color:#44637a; text-align:center; }
.service-tabs a[aria-selected="true"] { background:#fff; color:#133e60; box-shadow:0 3px 8px #132f4610; }
.service-panel { padding:34px 0 10px; scroll-margin-top:150px; }
.service-panel[hidden],.demo-descriptions [hidden],.motion-toggle[hidden] { display:none; }
.service-panel h2 { font-size:clamp(24px,2.6vw,32px); letter-spacing:-.035em; line-height:1.18; margin:10px 0 18px; }
.work-intro { display:grid; grid-template-columns:.8fr 1.2fr; gap:45px; align-items:start; margin-bottom:25px; }
.work-intro p { margin:0; color:#526e80; font-size:15px; line-height:1.8; }
.work-packages { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.work-package { display:flex; align-items:flex-start; gap:0; padding:25px; border:1px solid #d7e3ed; border-radius:15px; background:linear-gradient(120deg,#fff,#f8fbfd); transition:box-shadow .25s,transform .25s; }
.work-package:hover { transform:translateY(-3px); box-shadow:0 12px 28px #1539590b; }
.work-package h3 { margin:0 0 10px; font-size:17px; line-height:1.35; }
.work-package p { margin:0; font-size:14px; line-height:1.8; color:#526b7c; }
.example-layout { display:grid; grid-template-columns:1.1fr 1fr; gap:50px; align-items:start; }
.example-label { display:inline-block; font-size:11px; line-height:1.6; color:#37766f; background:#e6f4ee; border-radius:6px; padding:7px 10px; }
.example-story p { font-size:16px; color:#526b7c; line-height:1.9; margin:0 0 24px; }
.example-timeline { margin:4px 0 0; list-style:none; padding:0; }
.example-timeline li { position:relative; padding:0 0 28px 22px; }
.example-timeline li:not(:last-child):before { position:absolute; content:""; top:8px; bottom:0; left:5px; width:1px; background:#bed8df; }
.example-timeline li:after { position:absolute; content:""; top:6px; left:1px; width:9px; height:9px; border:2px solid #fff; border-radius:50%; background:#45a28f; box-shadow:0 0 0 1px #b5d8d8; }
.example-timeline h3 { font-size:16px; margin:4px 0 7px; }
.example-timeline p { font-size:14px; line-height:1.7; color:#526b7c; margin:0; }
.handover-grid { display:grid; grid-template-columns:1.15fr .85fr; gap:45px; }
.handover-list { list-style:none; padding:0; margin:20px 0 28px; }
.handover-list li { display:flex; gap:15px; padding:14px 0; border-bottom:1px solid #e1e9ee; font-size:16px; line-height:1.65; }
.handover-list li>span { color:#258775; font-size:20px; }
.enquiry-checklist { padding:28px; border:1px solid #c6dee5; background:linear-gradient(140deg,#edf8f7,#f3f7fc); border-radius:17px; }
.enquiry-checklist h3 { margin:0 0 18px; font-size:21px; }
.enquiry-checklist ol { padding-left:0; margin:0 0 25px; list-style:none; }
.enquiry-checklist li { position:relative; padding-left:16px; margin-bottom:13px; color:#526b7c; font-size:14px; line-height:1.7; }
.enquiry-checklist li::before { position:absolute; top:.68em; left:2px; width:5px; height:5px; border-radius:50%; background:#45a28f; content:""; }
.service-scope-note { font-size:12px; line-height:1.75; color:#627c8e; border-top:1px solid #dce7ed; margin:25px 0 0; padding-top:20px; max-width:850px; }
.service-card-media { position:relative; display:grid; width:calc(100% + 38px); height:160px; align-self:center; place-items:center; margin:-19px -19px 12px; overflow:hidden; border-radius:9px 9px 0 0; background:#e6edf1; perspective:850px; transform-style:preserve-3d; isolation:isolate; }
.service-card-media::before { position:absolute; content:""; width:42%; height:34%; left:29%; bottom:8%; border:1px solid rgba(122,240,225,.16); border-radius:50%; transform:rotateX(68deg); box-shadow:0 0 28px rgba(81,217,210,.12),inset 0 0 20px rgba(81,217,210,.08); animation:service-halo 5s ease-in-out infinite; }
.service-card-media::after { position:absolute; inset:0; content:""; pointer-events:none; background:linear-gradient(118deg,transparent 28%,rgba(165,241,244,.075) 48%,transparent 66%); transform:translateX(-110%); animation:service-shimmer 8s ease-in-out infinite; }
.service-card-art { position:relative; z-index:1; display:block; width:100%; height:100%; margin:0; border:0; object-fit:cover; background:#e6edf1; }
.service-card:nth-child(4n+1) .service-card-media::before { animation-delay:-1.6s; }
.service-card:hover .service-card-media::before,.service-card:focus-visible .service-card-media::before { opacity:.9; transform:rotateX(68deg) scale(1.16); }
.service-card-credit { display:block; margin-top:-7px; margin-bottom:5px; color:#7b8d9d; font-size:9px; line-height:1.35; letter-spacing:.02em; overflow-wrap:anywhere; }
.service-card .service-icon { display:none; }
.service-card .service-card-title { margin-top:0; }
.service-card { min-width:0; overflow:hidden; }
.service-card-title,.service-card-summary { max-width:100%; overflow-wrap:anywhere; }
.service-demo button:focus-visible,.service-tabs a:focus-visible,.service-route-nav a:focus-visible { outline:3px solid #eab955; outline-offset:3px; }
@keyframes service-signal { to { stroke-dashoffset:-104; } }
@keyframes service-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-7px); } }
@keyframes service-thumb-float { 0%,100% { transform:translate3d(0,2px,0) rotateX(0deg) rotateY(-2deg); } 50% { transform:translate3d(0,-4px,12px) rotateX(3deg) rotateY(2deg); } }
@keyframes service-halo { 0%,100% { opacity:.42; scale:.92; } 50% { opacity:.9; scale:1.12; } }
@keyframes service-shimmer { 0%,64%,100% { transform:translateX(-110%); } 83% { transform:translateX(110%); } }
@media(max-width:1000px) {
 .service-hero-layout { gap:24px; }
 .service-hero-layout h1 { font-size:33px; }
 .demo-heading { padding:14px 14px 0; }
 .demo-heading>span { font-size:10px; }
 .demo-controls { gap:4px; padding-inline:10px; }
 .demo-controls button { font-size:10px; }
 .work-package { padding:20px; gap:12px; }
}
@media(max-width:760px) {
 .service-hero-layout { grid-template-columns:1fr; gap:28px; }
 .service-hero-layout .detail-hero-copy { max-width:none; }
 .service-demo { max-width:580px; width:100%; justify-self:center; }
 .service-hero-layout h1 { font-size:clamp(30px,7vw,42px); }
 .demo-heading>span { font-size:12px; }
 .demo-controls button { font-size:11px; }
 .service-tabs { gap:3px; padding:4px; }
 .service-tabs a { display:flex; align-items:center; justify-content:center; min-height:48px; font-size:12px; padding:10px 8px; line-height:1.4; }
 .work-intro,.work-packages,.example-layout,.handover-grid { grid-template-columns:1fr; gap:20px; }
 .work-intro h2 { margin-bottom:0; }
 .work-package { padding:22px 18px; }
 .work-package p { font-size:14px; }
 .service-panel { padding-top:25px; }
 .service-card-media { width:calc(100% + 26px); margin:-13px -13px 12px; height:125px; }
 .example-layout { gap:35px; }
 .service-scope-note { margin-top:20px; }
}
@media(prefers-reduced-motion:reduce) {
 .service-demo .scene-flow,.service-demo .scene-float,.service-demo .scene-object-viewer { animation:none !important; }
 .service-model,.work-package,.service-card-media::before,.service-card-media::after { animation:none !important; transform:none !important; transition:none; }
}
