/* NollProCon 3D 1.0.6 – mobile long touch rotates instead of selecting text. */
.cube-page:not(.cube-active) .npc-cube-stage{position:relative}
.cube-page:not(.cube-active) .npc-cube-face{padding:12px 0 25px}
.cube-page:not(.cube-active) .npc-face-topline,.cube-page:not(.cube-active) .npc-cube-grip,.cube-page:not(.cube-active) .npc-cube-help,.cube-page:not(.cube-active) .npc-cube-top-ui,.cube-page:not(.cube-active) .npc-face-end{display:none}
.cube-page:not(.cube-active) .npc-face-content{min-height:60vh}
.cube-page .npc-cube-sr-status{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.cube-page.cube-active{height:100vh;height:100dvh;overflow:hidden;overscroll-behavior:none}
.cube-page.cube-active .site-header{z-index:200;position:relative;min-height:var(--cube-header-height,74px);box-shadow:0 15px 55px #020a18bb}
.cube-page.cube-active .site-footer{display:none}
.cube-page.cube-active .npc-cube-world{isolation:isolate;position:relative;overflow:hidden;height:calc(100dvh - var(--cube-header-height,74px));min-height:0;width:100%;background:#041021}
.cube-page.cube-active .npc-cube-ambient{position:absolute;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 48% 45%,#1466b344 0%,transparent 60%),linear-gradient(130deg,#06192e 10%,#031122 65%,#04172c)}
.cube-page.cube-active .npc-cube-glow{position:absolute;top:13%;left:16%;width:68%;height:80%;border-radius:50%;filter:blur(70px);background:linear-gradient(45deg,#0e6c9155,#156ae333);animation:npcCubeGlow 15s ease-in-out infinite alternate}
.cube-page.cube-active .npc-cube-grid{position:absolute;inset:0;background:linear-gradient(#70d9ff0b 1px,transparent 1px),linear-gradient(90deg,#70d9ff0b 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,#0009,transparent 85%)}
@keyframes npcCubeGlow{to{transform:translate(6%, -8%) scale(1.08)}}
.cube-page.cube-active .npc-cube-stage{position:absolute;inset:0;perspective:1900px;perspective-origin:50% 50%;overflow:hidden;z-index:1}
.cube-page.cube-active .npc-cube{position:absolute;inset:0;transform-style:preserve-3d;transform:translateZ(calc(-1 * var(--cube-depth,350px))) rotateX(var(--cube-rx,0deg)) rotateY(var(--cube-ry,0deg));transition:transform 980ms cubic-bezier(.22,.78,.15,1);will-change:transform}
.cube-page.cube-active .npc-cube.is-dragging{transition:none;cursor:grabbing}
.cube-page.cube-active .npc-cube-face{position:absolute;inset:0;height:100%;width:100%;overflow:hidden;background:linear-gradient(150deg,rgba(6,25,49,.97),rgba(3,14,30,.985));border:1px solid #7bd6ff3c;box-shadow:inset 0 0 95px #1467ae1f,0 0 65px #0a9ce125;backface-visibility:visible;transition:opacity .65s ease,background .65s ease,border-color .65s ease;opacity:1;pointer-events:none;transform-style:flat}
.cube-page.cube-active .npc-face-start{transform:rotateY(0deg) translateZ(var(--cube-depth,350px))}
.cube-page.cube-active .npc-face-services{transform:rotateY(90deg) translateZ(var(--cube-depth,350px))}
.cube-page.cube-active .npc-face-ai{transform:rotateY(180deg) translateZ(var(--cube-depth,350px))}
.cube-page.cube-active .npc-face-references{transform:rotateY(-90deg) translateZ(var(--cube-depth,350px))}
.cube-page.cube-active .npc-face-process{transform:rotateX(90deg) translateZ(var(--cube-depth,350px))}
.cube-page.cube-active .npc-face-contact{transform:rotateX(-90deg) translateZ(var(--cube-depth,350px))}
/* A resting face must not be covered by the other five projected panels. */
.cube-page.cube-active .npc-cube:not(.is-rotating):not(.is-dragging) .npc-cube-face:not(.is-active){opacity:0;visibility:hidden;transition:none}
.cube-page.cube-active .npc-cube:not(.is-rotating):not(.is-dragging) .npc-cube-face.is-active{opacity:1;visibility:visible;transition:none}
.cube-page.cube-active .npc-cube.is-rotating .npc-cube-face,.cube-page.cube-active .npc-cube.is-dragging .npc-cube-face{background:linear-gradient(145deg,rgba(7,35,64,.24),rgba(1,12,29,.28));border-color:#72d9ff99;opacity:.6}
.cube-page.cube-active .npc-cube.is-rotating .npc-face-scroll,.cube-page.cube-active .npc-cube.is-dragging .npc-face-scroll{scrollbar-color:transparent transparent}
.cube-page.cube-active .npc-cube-face.is-active{pointer-events:auto}
.cube-page.cube-active .npc-face-scroll{height:100%;width:100%;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;scrollbar-color:#347eae #061d34;scrollbar-width:thin;position:relative;padding-bottom:45px}
.cube-page.cube-active .npc-face-scroll::-webkit-scrollbar{width:8px}
.cube-page.cube-active .npc-face-scroll::-webkit-scrollbar-track{background:#061d34}
.cube-page.cube-active .npc-face-scroll::-webkit-scrollbar-thumb{background:#2d7099;border-radius:10px}
.cube-page.cube-active .npc-face-content{padding-bottom:48px;min-height:100%}
.cube-page.cube-active .npc-face-topline{height:38px;width:min(1180px,calc(100% - 46px));margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.64rem;font-weight:800;letter-spacing:.19em;color:#75badc8c;border-bottom:1px solid #5dbbe32b}
.cube-page.cube-active .npc-face-end{display:flex;justify-content:space-between;align-items:center;gap:16px;width:min(1180px,calc(100% - 44px));margin:0 auto;padding:16px 0 170px;color:#7fa8c4;font-size:.78rem;letter-spacing:.13em;font-weight:800;border-top:1px solid #4b9dd333}
.cube-page.cube-active .npc-face-end b{color:#38bdf8}
.cube-page.cube-active .npc-face-end button{color:#d5f2ff;border:1px solid #3d7896;background:#0c2d4c;border-radius:12px;padding:11px 15px;cursor:pointer;letter-spacing:0;font-weight:700}
.cube-page.cube-active .npc-face-end button:hover{border-color:#66d4ff;background:#14476d}
.cube-page.cube-active .hero{min-height:max(500px,calc(100dvh - var(--cube-header-height,74px) - 140px));padding-block:30px 56px}
.cube-page.cube-active .section-block{padding-top:60px;padding-bottom:80px}
.cube-page.cube-active .ai-section{padding-block:75px 115px}
.cube-page.cube-active .process-section{padding-block:75px 90px}
.cube-page.cube-active .appointment-home-cta{margin-top:28px}
.cube-page.cube-active .cta-section{margin-top:25px;margin-bottom:30px}
.cube-page.cube-active .scroll-reveal{opacity:1!important;transform:none!important;visibility:visible!important}
.cube-page.cube-active .contact-page{width:min(1180px,calc(100% - 40px));margin-inline:auto;padding:34px 0 50px}
.cube-page.cube-active .contact-page .page-heading{padding-top:14px}
.cube-page.cube-active .contact-page .contact-layout{margin-bottom:20px}
.cube-page.cube-active .npc-cube-legal{width:min(1180px,calc(100% - 40px));margin:0 auto 45px;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.cube-page.cube-active .npc-cube-legal a,.cube-page.cube-active .npc-cube-legal button{border:1px solid #285b82;background:#0b2e4f;border-radius:11px;padding:10px 14px;font-size:.88rem;color:#d5f2ff;cursor:pointer}
.cube-page.cube-active .npc-cube-legal a:hover,.cube-page.cube-active .npc-cube-legal button:hover{background:#14537c}
.cube-page.cube-active .npc-cube-grip{position:absolute;right:21px;bottom:21px;z-index:22;touch-action:none;user-select:none;flex-shrink:0;cursor:grab;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:65px;height:57px;border:1px solid #5ebbea77;border-radius:14px;background:linear-gradient(145deg,#236b9c,#13517c);color:#f2fcff;box-shadow:inset 0 1px #d4f6ff40}
.cube-page.cube-active .npc-cube-grip:active{cursor:grabbing}
.cube-page.cube-active .npc-cube-grip>span{font-size:1.45rem;line-height:1}
.cube-page.cube-active .npc-cube-grip small{font-size:.53rem;letter-spacing:.14em;font-weight:900}
.cube-page.cube-active .npc-cube-top-ui{position:absolute;z-index:15;left:0;right:0;top:49px;display:flex;justify-content:space-between;max-width:1300px;width:calc(100% - 56px);margin:auto;pointer-events:none;color:#83bdd49c;font-size:.65rem;font-weight:900;letter-spacing:.19em;text-shadow:0 2px 12px #000b20}
.cube-page.cube-active .npc-cube-help{position:absolute;z-index:10;bottom:111px;left:0;right:0;text-align:center;pointer-events:none;font-size:.72rem;letter-spacing:.03em;color:#a7cee8aa;text-shadow:0 1px 6px #000}
.cube-page.cube-active .npc-cookie-consent{z-index:1000!important}
.cube-page.cube-active .flash-wrap{z-index:1001}
.cube-page.cube-active .npc-face-scroll [id]{scroll-margin-top:32px}
.cube-page.cube-active .npc-cube-face:focus-within{outline:none}
@media (max-width:760px){
 .cube-page.cube-active .npc-cube-grip{bottom:max(10px,env(safe-area-inset-bottom));right:max(10px,env(safe-area-inset-right));min-width:58px;width:58px;height:54px;border-radius:12px}
 .cube-page.cube-active .npc-cube-grip>span{font-size:1.25rem}
 .cube-page.cube-active .npc-cube-grip small{font-size:.47rem}
 .cube-page.cube-active .npc-cube-top-ui{top:12px;width:calc(100% - 27px);font-size:.54rem;letter-spacing:.13em}
 .cube-page.cube-active .npc-cube-help{bottom:83px;font-size:.62rem;max-width:calc(100% - 14px);margin:auto}
 .cube-page.cube-active .npc-face-topline{height:32px;font-size:.54rem;letter-spacing:.08em;width:calc(100% - 30px)}
 .cube-page.cube-active .hero{min-height:0;padding-top:52px;padding-bottom:50px}
 .cube-page.cube-active .section-block{padding-top:52px;padding-bottom:58px}
 .cube-page.cube-active .ai-section,.cube-page.cube-active .process-section{padding-block:50px 72px}
 .cube-page.cube-active .npc-face-end{padding-bottom:130px;flex-wrap:wrap}
 .cube-page.cube-active .contact-page{width:calc(100% - 30px);padding-top:20px}
}
@media (prefers-reduced-motion:reduce){
 .cube-page.cube-active .npc-cube{transition:none!important}
 .cube-page.cube-active .npc-cube-glow{animation:none}
}

/* Clear tactile feedback when a held touch is ready for two-axis cube rotation. */
.cube-page.cube-active .npc-cube-world.is-touch-armed .npc-cube-grip{border-color:#8ae3ff;box-shadow:0 0 16px #52c6fd88,inset 0 1px #d4f6ff40}

/* A flat interactive front-layer avoids browser hit-testing failures on 90deg faces.
   The real face moves back into the 3D cube for every rotation. */
.cube-page.cube-active .npc-cube-flat{position:absolute;inset:0;z-index:4;pointer-events:none}
.cube-page.cube-active .npc-cube-flat .npc-cube-face{transform:none!important;position:absolute;inset:0;width:100%;height:100%;pointer-events:auto;opacity:1;visibility:visible}

/* Always-accessible vertical controls, particularly useful when native touch scrolling is active. */
.cube-page.cube-active .npc-cube-vertical{position:absolute;top:46%;right:clamp(8px,2vw,24px);z-index:23;transform:translateY(-50%);display:flex;flex-direction:column;gap:5px;padding:5px;border:1px solid #69bbeb7d;border-radius:18px;background:rgba(5,30,54,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 6px 22px #00122388}
.cube-page.cube-active .npc-cube-vertical button{display:grid;place-items:center;width:42px;height:46px;border:1px solid #6ebdec44;border-radius:12px;background:#13517ca8;color:#e2f8ff;font-size:1.4rem;font-weight:700;cursor:pointer;touch-action:manipulation}
.cube-page.cube-active .npc-cube-vertical button:hover,.cube-page.cube-active .npc-cube-vertical button:focus-visible{background:#247db4;border-color:#7edcff;outline:2px solid #7edcff;outline-offset:2px}
@media(max-width:760px){.cube-page.cube-active .npc-cube-vertical{top:44%;right:7px;padding:4px;gap:4px;border-radius:13px}.cube-page.cube-active .npc-cube-vertical button{width:33px;height:37px;font-size:1.13rem;border-radius:9px}}

/* Mobile long press activates the 3D gesture instead of native text
   selection/copy callouts. Form fields must retain normal editing. */
@media (pointer:coarse){
 .cube-page.cube-active .npc-cube-face,
 .cube-page.cube-active .npc-cube-face :not(input):not(textarea):not(select):not(option):not([contenteditable]):not([contenteditable] *){
   -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
 }
 .cube-page.cube-active .npc-cube-face :is(input,textarea,select,[contenteditable]),
 .cube-page.cube-active .npc-cube-face [contenteditable] *{
   -webkit-user-select:text;user-select:text;-webkit-touch-callout:default;
 }
}
