/* ==========================================================
   CoregenX: Mobile App Development page (css/mobile-app-redesign.css)
   Loads after css/mobile-app.min.css (used only by this page) and styles the rebuilt sections.
   Owner feedback 17 Oct 2026: theme palette only (teal-green #359fad -> #4cdaa0 leads, pink #f9758f -> #d9265f,
   navy #1c1446, violet #432d92, soft #f8f6ff), no dot grids, one type scale, tighter rhythm.
   1. Tokens, type scale, rhythm
   2. Intro (hero) + platform marquee
   3. Services
   4. Violet band (shared by Why and Enquiry) + Why benefit wheel
   5. Our work (copy + points, 3D carousel)
   6. Process (example-project scenes)
   7. Enquiry
   8. FAQ
   9. Responsive
   10. Motion (only without prefers-reduced-motion)
   ========================================================== */

/* ---------- 1. Tokens, type scale, rhythm ---------- */
:root {
    --mp-ink: #1c1446;
    --mp-body: #555a6b;
    --mp-line: #e9e6f5;
    --mp-soft: #f8f6ff;
    --mp-pink: #f9758f;
    --mp-pink-d: #d9265f;
    --mp-teal: #359fad;
    --mp-mint: #4cdaa0;
    --mp-violet: #432d92;
    --mp-grad-teal: linear-gradient(to left, #4cdaa0, #359fad);
    --mp-grad-pink: linear-gradient(135deg, #f9758f, #d9265f);
    --mp-ease: cubic-bezier(.2, .7, .2, 1);
    --mp-shadow: 0 26px 50px -30px rgba(28, 20, 70, .45);
}

/* H1 32 > H2 28 > H3 22/18/17 > body 15 > small 14/13 (phones: 24 > 22 > 19/16 > 14 > 13) */
.map-page {
    font-size: 15px;
    line-height: 1.6;
    overflow-x: clip;
}

.map-page .map-section-title,
.map-page .map-enquiry__title,
.map-page .mpTitle {
    margin: 0 0 8px;
    font-size: 28px;
    line-height: 1.25;
    color: var(--mp-ink);
}

.map-page .map-section-desc {
    max-width: 720px;
    font-size: 15px;
    line-height: 24px;
    color: var(--mp-body);
}

.map-page .map-eyebrow {
    margin-bottom: 8px;
    font-size: 13px;
    letter-spacing: 2.5px;
    color: var(--mp-pink-d);
}

.map-page .map-eyebrow .map-eyebrow-dot {
    background: var(--mp-pink-d);
    box-shadow: none;
}

.map-page .map-sec {
    padding: 64px 0;
}

/* No dotted texture on the soft sections */
.map-page .map-sec--alt {
    background: var(--mp-soft);
    border-color: var(--mp-line);
}

.map-page .map-sec--alt::before {
    content: none;
}

.mpDeskOnly { display: inline-flex; }
.mpMobOnly { display: none !important; }

/* ---------- 2. Intro ---------- */
.mpIntro {
    position: relative;
    padding: 48px 0 0;
    background: #fff;
    overflow: hidden;
    isolation: isolate;
}

.mpIntro__ring {
    position: absolute;
    z-index: -1;
    border-radius: 50%;
    pointer-events: none;
}

.mpIntro__ring--a {
    width: 620px;
    height: 620px;
    top: -260px;
    right: -180px;
    border: 1px solid rgba(67, 45, 146, .09);
    box-shadow: 0 0 0 70px rgba(67, 45, 146, .025), 0 0 0 140px rgba(67, 45, 146, .018);
}

.mpIntro__ring--b {
    width: 260px;
    height: 260px;
    left: -150px;
    bottom: 120px;
    border: 1px solid rgba(53, 159, 173, .14);
}

.mpIntro__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    gap: 56px;
    align-items: center;
}

.mpIntro__h1 {
    margin: 0;
    font-family: 'Jost', sans-serif;
    font-size: 32px;
    font-weight: 500;
    line-height: 1.2;
    color: var(--mp-ink);
    white-space: nowrap;
}

.mpIntro__sub {
    margin: 6px 0 14px;
    font-family: 'Jost', sans-serif;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.4;
    color: var(--mp-ink);
    font-weight: 400;
}

.mpIntro__lead {
    margin: 0 0 22px;
    font-size: 15.2px;
    font-weight: 400;
    line-height: 25px;
    color: #5e6371;
    text-align: justify;
    hyphens: auto;
}

.mpIntro__lead strong {
    color: var(--mp-ink);
    font-weight: 600;
}

/* Four business solutions: icon + two lines, all matching teal-green */
.mpFeats {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 24px;
    margin: 0 0 26px;
    padding: 0;
    list-style: none;
}

.mpFeats li {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.mpFeats__ico {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: #ebfaf5;
    color: var(--mp-teal);
    box-shadow: inset 0 0 0 1px #d4f2e8;
    transition: transform .35s var(--mp-ease), background-color .35s, color .35s;
}

.mpFeats li:hover .mpFeats__ico {
    transform: translateY(-3px);
    background: var(--mp-teal);
    color: #fff;
}

.mpFeats__ico .map-ico {
    width: 20px;
    height: 20px;
}

.mpFeats b {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.3;
    color: var(--mp-ink);
}

.mpFeats small {
    display: block;
    font-size: 13px;
    line-height: 1.4;
    color: var(--mp-body);
}

.mpIntro__ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.map-page .mpBtnBrand {
    background: linear-gradient(110deg, #0c8a72, #0b6f80);
    color: #fff;
    box-shadow: 0 8px 22px -10px rgba(11, 111, 128, .7);
}

.map-page .mpBtnBrand:hover,
.map-page .mpBtnBrand:focus-visible {
    background: linear-gradient(110deg, #0b6f80, #0c8a72);
    color: #fff;
    transform: translateY(-2px);
}

.mpBtnBrand .map-ico {
    width: 18px;
    height: 18px;
}

/* Proof points: two, aligned on one line */
.mpProof {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 0;
    margin: 24px 0 0;
    padding: 0;
    list-style: none;
}

.mpProof li {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: 'Jost', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: var(--mp-ink);
}

.mpProof li + li {
    margin-left: 20px;
    padding-left: 20px;
    border-left: 1px solid var(--mp-line);
}

.mpProof__ico {
    width: 32px;
    height: 32px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--mp-grad-teal);
    color: #fff;
}

.mpProof__ico .map-ico {
    width: 16px;
    height: 16px;
}

/* Two app screens, gently tilted, on a soft halo */
.mpIntro__visual {
    position: relative;
    isolation: isolate;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    align-items: start;
    max-width: 520px;
    margin-left: auto;
    padding-bottom: 24px;
    perspective: 1200px;
}

.mpIntro__halo {
    position: absolute;
    z-index: -1;
    left: 50%;
    top: 50%;
    width: 470px;
    height: 470px;
    margin: -235px 0 0 -235px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, rgba(76, 218, 160, .22), transparent 55%), radial-gradient(circle at 70% 70%, rgba(67, 45, 146, .2), transparent 60%);
}

.mpIntro__halo::before,
.mpIntro__halo::after {
    content: '';
    position: absolute;
    border-radius: 50%;
    border: 1px solid rgba(67, 45, 146, .14);
}

.mpIntro__halo::before { inset: -26px; }
.mpIntro__halo::after { inset: 46px; border-color: rgba(53, 159, 173, .22); border-top-color: transparent; border-left-color: transparent; }

.mpIntro__pic {
    margin: 0;
    padding: 24px 22px;
    border-radius: 22px;
    overflow: hidden;
    box-shadow: 0 34px 60px -30px rgba(28, 20, 70, .55);
}

.mpIntro__pic--a { background: linear-gradient(160deg, #ece6ff, #f8f6ff 70%); transform: rotateY(10deg) rotateZ(-2deg); }
.mpIntro__pic--b { background: linear-gradient(160deg, #e3f7f0, #f8f6ff 70%); transform: rotateY(-10deg) rotateZ(2deg); margin-top: 64px; }

.mpIntro__pic img {
    display: block;
    width: 100%;
    height: auto;
}

.mpFloat {
    position: absolute;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 13px 8px 8px;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 16px 34px -14px rgba(28, 20, 70, .45);
    font: 500 13.5px/1 'Jost', sans-serif;
    color: var(--mp-ink);
    white-space: nowrap;
}

.mpFloat .map-ico {
    width: 28px;
    height: 28px;
    padding: 6px;
    border-radius: 9px;
    stroke: #fff;
    stroke-width: 2.2;
    background: var(--mp-grad-teal);
}

.mpFloat--1 { top: 14%; left: -34px; }
.mpFloat--1 .map-ico { background: var(--mp-grad-teal); }
.mpFloat--2 { top: 46%; right: -26px; }
.mpFloat--2 .map-ico { background: var(--mp-grad-teal); }
.mpFloat--3 { bottom: 4%; left: 8%; }
.mpFloat--3 .map-ico { background: var(--mp-grad-teal); }

/* Occasional shine on one CTA only */
.mpShine { position: relative; overflow: hidden; }
.mpShine::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: -60%;
    width: 40%;
    background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .55), transparent);
    transform: skewX(-20deg);
    pointer-events: none;
    opacity: 0;
}

/* Platform logo marquee */
.mpPlat {
    margin-top: 44px;
    padding: 20px 0 24px;
    border-top: 1px solid var(--mp-line);
    background: var(--mp-soft);
}

.mpPlat__title {
    margin: 0 0 14px;
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 2px;
    text-transform: uppercase;
    text-align: center;
    color: var(--mp-body);
}

.mpPlat__track {
    display: flex;
    overflow: hidden;
    -webkit-mask: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.mpPlat__row {
    display: flex;
    flex: 0 0 auto;
    gap: 14px;
    margin: 0;
    padding: 0 7px;
    list-style: none;
}

.mpPlat__row li {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 9px 18px;
    border: 1px solid var(--mp-line);
    border-radius: 40px;
    background: #fff;
    font-family: 'Jost', sans-serif;
    font-size: 14.5px;
    font-weight: 500;
    color: var(--mp-ink);
    white-space: nowrap;
}

.mpPlat__row img {
    width: 22px;
    height: 22px;
}

/* ---------- 3. Services ---------- */
.mpSvcGrid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    margin-top: 32px;
}

.mpSvc {
    padding: 14px 14px 20px;
    border: 1px solid var(--mp-line);
    border-radius: 20px;
    background: #fff;
    text-align: center;
    transition: transform .35s var(--mp-ease), box-shadow .35s var(--mp-ease), border-color .35s;
}

.mpSvc:hover {
    transform: translateY(-4px);
    border-color: #dcd4f6;
    box-shadow: 0 24px 44px -28px rgba(28, 20, 70, .35);
}

.mpSvc h3 {
    margin: 16px 4px 6px;
    font-family: 'Jost', sans-serif;
    font-size: 17px;
    font-weight: 500;
    line-height: 1.3;
    color: var(--mp-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mpSvc p {
    margin: 0 4px;
    font-size: 14px;
    line-height: 1.6;
    color: var(--mp-body);
}

/* Small UI illustration at the top of each card */
.mpUi {
    --t: var(--mp-pink-d);
    --bg: #fff1f4;
    position: relative;
    isolation: isolate;
    height: 128px;
    padding: 18px 16px;
    border-radius: 14px;
    background: var(--bg);
    overflow: hidden;
    font-family: 'Jost', sans-serif;
    color: var(--mp-ink);
    text-align: left;
}

.mpUi--teal { --t: var(--mp-teal); --bg: #ebfaf5; }
.mpUi--violet { --t: var(--mp-violet); --bg: var(--mp-soft); }
.mpUi--navy { --t: var(--mp-ink); --bg: #f1eff9; }

/* Circles and a line behind each illustration (no dots) */
.mpUi::before {
    content: '';
    position: absolute;
    z-index: -1;
    width: 120px;
    height: 120px;
    right: -30px;
    top: -40px;
    border-radius: 50%;
    border: 14px solid var(--t);
    opacity: .1;
}

.mpUi::after {
    content: '';
    position: absolute;
    z-index: -1;
    left: -20px;
    bottom: -46px;
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 1.5px solid var(--t);
    opacity: .22;
}

.mpUi__card {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 7px;
    width: 78%;
    padding: 12px;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 10px 24px -14px rgba(28, 20, 70, .35);
}

.mpUi__card b {
    font-size: 13px;
    font-weight: 600;
}

.mpUi__card small {
    display: block;
    font-family: 'Open Sans', sans-serif;
    font-size: 11px;
    color: var(--mp-body);
}

.mpUi__card--row {
    flex-direction: row;
    align-items: center;
    gap: 10px;
}

.mpUi__card--row em {
    margin-left: auto;
    padding: 4px 9px;
    border-radius: 8px;
    background: var(--t);
    color: #fff;
    font-size: 11px;
    font-style: normal;
    font-weight: 600;
}

.mpUi__bar {
    display: block;
    height: 6px;
    border-radius: 4px;
    background: #f0eef7;
}

.mpUi__bar i {
    display: block;
    height: 100%;
    border-radius: 4px;
    background: var(--t);
}

.mpUi__badge {
    position: absolute;
    right: 14px;
    bottom: 14px;
    z-index: 2;
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    background: var(--t);
    color: #fff;
    box-shadow: 0 10px 20px -10px var(--t);
    transition: transform .4s var(--mp-ease);
}

.mpSvc:hover .mpUi__badge {
    transform: translateY(-4px) rotate(-6deg);
}

.mpUi__badge .map-ico {
    width: 22px;
    height: 22px;
}

.mpUi__thumb {
    flex: 0 0 38px;
    height: 38px;
    border-radius: 9px;
    background: var(--mp-grad-pink);
}

.mpUi__pay {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    margin-top: 12px;
    padding: 7px 10px;
    border-radius: 10px;
    background: #fff;
    font-size: 11.5px;
    font-weight: 500;
    box-shadow: 0 8px 18px -12px rgba(28, 20, 70, .35);
}

.mpUi__slots {
    display: flex;
    gap: 5px;
}

.mpUi__slots i {
    padding: 4px 6px;
    border: 1px solid #e4e0f0;
    border-radius: 7px;
    font-size: 10.5px;
    font-style: normal;
}

.mpUi__slots i.on {
    border-color: var(--t);
    background: var(--t);
    color: #fff;
}

.mpUi__chart {
    display: flex;
    align-items: flex-end;
    gap: 6px;
    height: 44px;
}

.mpUi__chart i {
    flex: 1;
    border-radius: 4px 4px 0 0;
    background: linear-gradient(180deg, var(--mp-violet), #b9abef);
}

.mpUi__chart i:nth-child(4) {
    background: var(--mp-grad-teal);
}

.mpUi__check {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 500;
}

.mpUi__check i {
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--t) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4'%3E%3Cpath d='m6 12 4 4 8-8'/%3E%3C/svg%3E") center / 10px no-repeat;
}

.mpUi__ba {
    position: relative;
    z-index: 1;
    display: flex;
    gap: 10px;
    height: 100%;
}

.mpUi__ba span {
    position: relative;
    width: 66px;
    padding: 6px;
    border-radius: 12px;
    font-size: 10.5px;
    font-weight: 600;
    text-align: center;
}

.mpUi__old {
    background: #e7e5ee;
    color: #737789;
}

.mpUi__new {
    background: #fff;
    color: var(--t);
    box-shadow: 0 10px 20px -12px rgba(28, 20, 70, .4);
}

.mpUi__old::after,
.mpUi__new::after {
    content: '';
    position: absolute;
    left: 8px;
    right: 8px;
    top: 26px;
    bottom: 8px;
    border-radius: 8px;
    background: linear-gradient(#cfccd9 0 0) 6px 8px / 60% 6px no-repeat, linear-gradient(#cfccd9 0 0) 6px 22px / 40% 6px no-repeat, #f0eff5;
}

.mpUi__new::after {
    background: linear-gradient(var(--t) 0 0) 6px 8px / 60% 6px no-repeat, linear-gradient(#a8e6d3 0 0) 6px 22px / 40% 6px no-repeat, linear-gradient(var(--t) 0 0) 6px calc(100% - 8px) / calc(100% - 12px) 12px no-repeat, #ebfaf5;
}

.mpUi__lead {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 500;
}

.mpUi__lead i {
    width: 20px;
    height: 20px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--mp-violet);
    color: #fff;
    font-size: 8.5px;
    font-style: normal;
}

.mpUi__lead em {
    margin-left: auto;
    padding: 2px 6px;
    border-radius: 6px;
    background: #fff1f4;
    color: var(--mp-pink-d);
    font-size: 9.5px;
    font-style: normal;
}

.mpUi__lead em.w { background: var(--mp-soft); color: var(--mp-violet); }

.mpUi__os {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* ---------- 4. Violet band (Why + Enquiry share it) ---------- */
.map-page .mpBand,
.map-page .map-enquiry.mpBand {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    background: #432d92 !important;
    color: rgba(255, 255, 255, .84);
    border: 0;
}

.mpBand__circle {
    position: absolute;
    z-index: -1;
    border-radius: 50%;
    pointer-events: none;
}

.mpBand__circle--a {
    width: 440px;
    height: 440px;
    right: -150px;
    top: -170px;
    border: 1px solid rgba(255, 255, 255, .14);
    box-shadow: 0 0 0 60px rgba(255, 255, 255, .03), 0 0 0 120px rgba(255, 255, 255, .02);
}

.mpBand__circle--b {
    width: 300px;
    height: 300px;
    left: -130px;
    bottom: -150px;
    border: 1px solid rgba(255, 255, 255, .12);
    box-shadow: 0 0 0 46px rgba(255, 255, 255, .025);
}

.mpBand__lines {
    position: absolute;
    z-index: -1;
    left: 4%;
    top: 34px;
    width: 150px;
    height: 46px;
    background: repeating-linear-gradient(-45deg, rgba(255, 255, 255, .16) 0 1.5px, transparent 1.5px 12px);
    -webkit-mask: linear-gradient(90deg, #000, transparent);
    mask: linear-gradient(90deg, #000, transparent);
    pointer-events: none;
}

.map-page .mpBand .mpTitle,
.map-page .mpBand .map-section-title,
.map-page .mpBand .map-enquiry__title { color: #fff; }
.map-page .mpBand .map-section-desc,
.map-page .mpBand .map-enquiry__desc { color: rgba(255, 255, 255, .8); }
.map-page .mpBand .map-eyebrow { color: #ffb8c7; }
.map-page .mpBand .map-eyebrow .map-eyebrow-dot { background: var(--mp-pink); }

/* Why choose us: wheel left, list right */
.mpWhy__grid {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: 64px;
    align-items: center;
}

.mpWhy__text .map-section-desc {
    margin: 0;
}

.mpWheel {
    --rot: 45deg;
    --R: 165px;
    position: relative;
    width: min(100%, 440px);
    aspect-ratio: 1;
    margin: 0 auto;
    container-type: inline-size;
}

@supports (width: 1cqi) {
    .mpWheel { --R: 37.5cqi; }
}

.mpWheel__svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.mpWheel__track {
    fill: none;
    stroke: rgba(255, 255, 255, .16);
    stroke-width: 1.5;
}

.mpWheel__inner {
    fill: rgba(255, 255, 255, .05);
    stroke: rgba(255, 255, 255, .16);
    stroke-width: 1.5;
}

.mpWheel__rot {
    transform: rotate(var(--rot));
    transform-origin: 50% 50%;
    transform-box: view-box;
    transition: transform 1s var(--mp-ease);
}

.mpWheel__seg {
    fill: none;
    stroke-width: 52;
    opacity: .35;
    transition: opacity .6s var(--mp-ease), stroke-width .6s var(--mp-ease);
}

.mpWheel[data-on="0"] .mpWheel__seg[data-i="0"],
.mpWheel[data-on="1"] .mpWheel__seg[data-i="1"],
.mpWheel[data-on="2"] .mpWheel__seg[data-i="2"],
.mpWheel[data-on="3"] .mpWheel__seg[data-i="3"] {
    opacity: 1;
    stroke-width: 64;
}

.mpWheel__icons {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.mpWheel__ico {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 0;
    height: 0;
    transform: rotate(var(--a)) translateX(var(--R));
}

.mpWheel__ico i {
    position: absolute;
    left: 0;
    top: 0;
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #fff;
    color: var(--mp-violet);
    box-shadow: 0 10px 24px -10px rgba(10, 6, 40, .6);
    transform: translate(-50%, -50%) rotate(calc(-1 * var(--a) - var(--rot))) scale(.86);
    transition: transform 1s var(--mp-ease), background-color .5s, color .5s;
}

.mpWheel__ico[data-i="0"] i { color: var(--mp-teal); }
.mpWheel__ico[data-i="1"] i { color: var(--mp-pink-d); }

.mpWheel[data-on="0"] .mpWheel__ico[data-i="0"] i,
.mpWheel[data-on="1"] .mpWheel__ico[data-i="1"] i,
.mpWheel[data-on="2"] .mpWheel__ico[data-i="2"] i,
.mpWheel[data-on="3"] .mpWheel__ico[data-i="3"] i {
    transform: translate(-50%, -50%) rotate(calc(-1 * var(--a) - var(--rot))) scale(1.08);
}

.mpWheel__ico .map-ico {
    width: 22px;
    height: 22px;
}

.mpWheel__core {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 40%;
    aspect-ratio: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border-radius: 50%;
    background: #fff;
    transform: translate(-50%, -50%);
    box-shadow: 0 24px 50px -20px rgba(10, 6, 40, .7), 0 0 0 10px rgba(255, 255, 255, .08);
}

.mpWheel__core img {
    width: 36%;
    height: auto;
}

.mpWheel__core b {
    font: 600 14px/1 'Jost', sans-serif;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--mp-violet);
}

/* Pointer: the active segment faces the list */
.mpWheel__pointer {
    position: absolute;
    right: -30px;
    top: 50%;
    width: 30px;
    height: 2px;
    background: linear-gradient(90deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, 0));
}

.mpWheel__pointer::before {
    content: '';
    position: absolute;
    left: -2px;
    top: -6px;
    border: 7px solid transparent;
    border-left-color: #fff;
    border-right: 0;
}

/* 4 Corner UI badges filling empty space around the wheel */
.mpWhyBadge {
    position: absolute;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 7px 13px 7px 9px;
    border-radius: 14px;
    background: rgba(255, 255, 255, .96);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, .4);
    box-shadow: 0 14px 28px -10px rgba(10, 6, 40, .55);
    font-family: 'Jost', sans-serif;
    color: var(--mp-ink);
    cursor: pointer;
    transition: transform .35s var(--mp-ease), box-shadow .35s, background-color .35s;
    white-space: nowrap;
}

.mpWhyBadge:hover {
    transform: translateY(-3px) scale(1.02);
    box-shadow: 0 18px 34px -10px rgba(10, 6, 40, .65);
    background: #fff;
}

.mpWhyBadge__ico {
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    background: var(--mp-grad-teal);
    color: #fff;
}

.mpWhyBadge__ico .map-ico {
    width: 15px;
    height: 15px;
}

.mpWhyBadge b {
    display: block;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.2;
    color: var(--mp-ink);
}

.mpWhyBadge small {
    display: block;
    font-size: 11px;
    line-height: 1.3;
    color: var(--mp-body);
}

.mpWhyBadge--tl { top: -24px; left: -36px; }
.mpWhyBadge--tr { top: -24px; right: -36px; }
.mpWhyBadge--bl { bottom: -24px; left: -36px; }
.mpWhyBadge--br { bottom: -24px; right: -36px; }

.mpWheel__outerPulse {
    animation: mpWheelPulse 4s ease-in-out infinite;
    transform-origin: center;
}

@keyframes mpWheelPulse {
    0%, 100% { opacity: .25; stroke-width: 1.5; }
    50% { opacity: .65; stroke-width: 2.2; }
}

.mpWhyList {
    margin: 20px 0 0;
    padding: 0;
    list-style: none;
}

.mpWhyList li {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr);
    gap: 14px;
    padding: 15px 14px;
    border-top: 1px solid rgba(255, 255, 255, .14);
    border-radius: 14px;
    cursor: pointer;
    transition: background-color .4s var(--mp-ease), transform .4s var(--mp-ease);
}

.mpWhyList li:last-child {
    border-bottom: 1px solid rgba(255, 255, 255, .14);
}

.mpWhyList li.is-on {
    background: rgba(255, 255, 255, .09);
    transform: translateX(8px);
}

.mpWhyList__n {
    font-family: 'Jost', sans-serif;
    font-size: 36px;
    font-weight: 600;
    line-height: 1;
    color: transparent;
    -webkit-text-stroke: 1.3px var(--mp-pink);
    transition: color .4s var(--mp-ease);
}

.mpWhyList li.is-on .mpWhyList__n {
    color: var(--mp-pink);
}

.mpWhyList h3 {
    margin: 0 0 4px;
    font-family: 'Jost', sans-serif;
    font-size: 18px;
    font-weight: 500;
    color: #fff;
}

.mpWhyList p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: rgba(255, 255, 255, .78);
}

/* ---------- 5. Our work ---------- */
.mpWork__grid {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: 40px;
    align-items: center;
}

.mpWork__copy {
    margin: 12px 0 0;
    font-size: 15.2px;
    font-weight: 400;
    line-height: 25px;
    color: #5e6371;
    text-align: justify;
    hyphens: auto;
}

.mpWork__stores {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin: 16px 0 0;
}

.mpStoreBadge {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 7px 15px 7px 12px;
    border-radius: 12px;
    background: #1c1446;
    color: #fff;
    box-shadow: 0 8px 20px -10px rgba(28, 20, 70, .4);
    transition: transform .3s var(--mp-ease), box-shadow .3s;
}

.mpStoreBadge:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 24px -10px rgba(28, 20, 70, .5);
}

.mpStoreBadge__ico {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}

.mpStoreBadge span {
    display: flex;
    flex-direction: column;
    text-align: left;
    line-height: 1.15;
}

.mpStoreBadge small {
    font-size: 9.5px;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: rgba(255, 255, 255, .7);
    font-family: 'Open Sans', sans-serif;
}

.mpStoreBadge b {
    font-family: 'Jost', sans-serif;
    font-size: 13.5px;
    font-weight: 600;
    color: #fff;
}

.mpWork__pts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 18px;
    margin: 20px 0 0;
    padding: 16px 0 0;
    border-top: 1px solid var(--mp-line);
    list-style: none;
}

.mpWork__pts li {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    white-space: nowrap;
    font-family: 'Jost', sans-serif;
    font-size: 14.5px;
    font-weight: 500;
    line-height: 1.3;
    color: var(--mp-ink);
}

.mpWork__pts .map-ico {
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    padding: 8px;
    border-radius: 11px;
    background: #fff;
    color: var(--mp-violet);
    box-shadow: 0 8px 18px -12px rgba(28, 20, 70, .45), inset 0 0 0 1px #ebe6fb;
}

.mpWork__pts li:nth-child(4n+2) .map-ico,
.mpWork__pts li:nth-child(4n+3) .map-ico { color: var(--mp-teal); }

.mpWork__live {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin: 18px 0 0;
    padding: 8px 14px;
    border-radius: 12px;
    background: #fff;
    border: 1px solid #ebe6fb;
    box-shadow: 0 8px 20px -14px rgba(28, 20, 70, .35);
}

.mpWork__live-pill {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-family: 'Jost', sans-serif;
    font-size: 13.5px;
    font-weight: 600;
    color: var(--mp-ink);
}

.mpWork__live-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--mp-mint);
    box-shadow: 0 0 0 3px rgba(76, 218, 160, .35);
}

.mpWork__live-cat {
    font-size: 13px;
    color: var(--mp-body);
}

.map-page .mpWork__nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 26px;
}

.mpWork__nav .map-btn { margin-left: 10px; }

.mpWork__count {
    min-width: 62px;
    font-family: 'Jost', sans-serif;
    font-size: 15px;
    font-weight: 500;
    text-align: center;
    color: var(--mp-body);
}

.mpWork__count b {
    font-size: 22px;
    font-weight: 600;
    color: var(--mp-ink);
}

.mpArrow {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    border: 1px solid #dcd6ef;
    border-radius: 50%;
    background: #fff;
    color: var(--mp-ink);
    cursor: pointer;
    transition: background-color .25s, color .25s, border-color .25s;
}

.mpArrow:hover,
.mpArrow:focus-visible {
    background: var(--mp-violet);
    border-color: var(--mp-violet);
    color: #fff;
}

.mpArrow .map-ico {
    width: 18px;
    height: 18px;
    stroke-width: 2.2;
}

.mpCar {
    position: relative;
    isolation: isolate;
    perspective: 1400px;
    touch-action: pan-y;
}

.mpCar__ring {
    position: absolute;
    z-index: -2;
    left: 50%;
    top: 46%;
    width: 420px;
    height: 420px;
    margin: -210px 0 0 -210px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(67, 45, 146, .18), rgba(76, 218, 160, .1) 55%, transparent 70%);
}

.mpCar__ring::before,
.mpCar__ring::after {
    content: '';
    position: absolute;
    border-radius: 50%;
}

.mpCar__ring::before {
    inset: 26px;
    border: 1.5px solid rgba(67, 45, 146, .16);
    border-right-color: rgba(53, 159, 173, .5);
}

.mpCar__ring::after {
    inset: -30px;
    border: 1px solid rgba(67, 45, 146, .1);
}

.mpCar__ico {
    position: absolute;
    z-index: -1;
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 14px 28px -14px rgba(28, 20, 70, .45);
}

.mpCar__ico .map-ico { width: 22px; height: 22px; }
.mpCar__ico--1 { left: 4%; top: 12%; color: var(--mp-pink-d); }
.mpCar__ico--2 { right: 6%; top: 40%; color: var(--mp-violet); }
.mpCar__ico--3 { left: 8%; bottom: 22%; color: var(--mp-teal); }
.mpCar__ico--4 { right: 14%; bottom: 14%; color: var(--mp-violet); }

.mpCar__stage {
    position: relative;
    height: 500px;
    margin: 0;
    padding: 0;
    list-style: none;
    transform-style: preserve-3d;
    pointer-events: none;
}

.mpCar__item {
    position: absolute;
    left: 50%;
    top: 10px;
    width: 236px;
    margin-left: -118px;
    cursor: pointer;
    pointer-events: auto;
    transition: transform .8s var(--mp-ease), opacity .8s var(--mp-ease);
    will-change: transform;
}

.mpCar__item::before {
    content: '';
    position: absolute;
    z-index: -1;
    left: 8%;
    right: 8%;
    top: 12%;
    bottom: 4%;
    border-radius: 40px;
    background: var(--c, var(--mp-violet));
    opacity: .32;
    filter: blur(28px);
}

.mpCar__item img {
    display: block;
    width: 100%;
    height: 470px;
    object-fit: contain;
    filter: drop-shadow(0 28px 30px rgba(28, 20, 70, .35));
}

.mpCar__item[data-pos="0"] { transform: translateX(0) translateZ(60px); z-index: 5; cursor: default; }
.mpCar__item[data-pos="1"] { transform: translateX(170px) translateZ(-80px) rotateY(-38deg) scale(.82); z-index: 4; opacity: .85; }
.mpCar__item[data-pos="-1"] { transform: translateX(-170px) translateZ(-80px) rotateY(38deg) scale(.82); z-index: 4; opacity: .85; }
.mpCar__item[data-pos="2"] { transform: translateX(290px) translateZ(-200px) rotateY(-50deg) scale(.66); z-index: 3; opacity: .35; }
.mpCar__item[data-pos="-2"] { transform: translateX(-290px) translateZ(-200px) rotateY(50deg) scale(.66); z-index: 3; opacity: .35; }
.mpCar__item[data-pos="off"] { transform: translateZ(-320px) scale(.5); opacity: 0; pointer-events: none; z-index: 1; }

/* Pager as short lines */
.mpCar__pager {
    display: flex;
    justify-content: center;
    gap: 6px;
    margin-top: 16px;
}

.mpCar__pager button {
    width: 16px;
    height: 4px;
    padding: 0;
    border: 0;
    border-radius: 3px;
    background: #d6cff0;
    cursor: pointer;
    transition: width .35s var(--mp-ease), background-color .35s;
}

.mpCar__pager button.is-on {
    width: 34px;
    background: var(--mp-violet);
}

/* ---------- 6. Process: example-project scenes ---------- */
.mpProc { background: #fff; }

.mpProc__box {
    display: grid;
    gap: 22px;
    margin-top: 28px;
}

.mpProc__tabs {
    position: relative;
    display: flex;
    margin: 0;
    padding: 0;
    list-style: none;
}

.mpProc__tabs::before {
    content: '';
    position: absolute;
    left: 8%;
    right: 8%;
    top: 22px;
    height: 2px;
    background: linear-gradient(90deg, #ddd6f3, #cdeee3);
}

.mpProc__tabs li {
    flex: 1 1 0;
    min-width: 0;
}

.mpProc__tabs button {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 0 6px 12px;
    border: 0;
    background: transparent;
    text-align: center;
    cursor: pointer;
}

.mpProc__n {
    position: relative;
    z-index: 1;
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    border: 2px solid #b7e8d8;
    background: #fff;
    font: 600 15px/1 'Jost', sans-serif;
    color: var(--mp-teal);
    transition: background-color .3s, color .3s, border-color .3s, box-shadow .3s;
}

.mpProc__tabs button:hover .mpProc__n { border-color: var(--mp-mint); }

.mpProc__tabs button.is-on .mpProc__n {
    background: var(--mp-grad-teal);
    border-color: var(--mp-teal);
    color: #fff;
    box-shadow: 0 0 0 6px rgba(76, 218, 160, .25);
}

.mpProc__txt b {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: var(--mp-ink);
}

.mpProc__txt small {
    display: block;
    font-size: 13px;
    color: var(--mp-body);
}

.mpProc__bar {
    position: absolute;
    left: 22%;
    right: 22%;
    bottom: 0;
    height: 3px;
    border-radius: 2px;
    background: var(--mp-grad-teal);
    transform: scaleX(0);
    transform-origin: left;
}

.mpProc__tabs button.is-on .mpProc__bar { transform: scaleX(1); }
.mpProc__box.is-auto .mpProc__tabs button.is-on .mpProc__bar { transform: scaleX(0); }

/* All panels share one grid cell, so the stage keeps the tallest panel's height (no layout shift) */
.mpProc__stage {
    display: grid;
    border-radius: 24px;
    border: 1px solid #ebe6fb;
    background: linear-gradient(135deg, #f8f6ff, #fff 55%, #f2fbf8);
    overflow: hidden;
}

.mpPanel {
    grid-area: 1 / 1;
    display: grid;
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    gap: 40px;
    align-items: stretch;
    padding: 34px 40px;
}

.mpPanel[hidden] {
    display: grid !important;
    visibility: hidden;
}

.mpPanel__step {
    display: inline-block;
    padding: 5px 12px;
    border-radius: 20px;
    background: var(--mp-grad-teal);
    font: 600 12.5px/1 'Jost', sans-serif;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: #fff;
}

.mpPanel h3 {
    margin: 14px 0 8px;
    font-family: 'Jost', sans-serif;
    font-size: 22px;
    font-weight: 500;
    color: var(--mp-ink);
}

.mpPanel__text > p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--mp-body);
}

.mpPanel__text > .mpPanel__case {
    margin: 16px 0 0;
    padding: 12px 14px 12px 16px;
    border-left: 3px solid var(--mp-pink);
    border-radius: 0 12px 12px 0;
    background: #fff;
    font-size: 14px;
    line-height: 1.6;
    box-shadow: 0 10px 24px -20px rgba(28, 20, 70, .5);
}

.mpPanel__case b {
    display: block;
    margin-bottom: 2px;
    font: 600 12px/1.4 'Jost', sans-serif;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--mp-pink-d);
}

.mpPanel__gets {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 16px 0 0;
    padding: 0;
    list-style: none;
}

.mpPanel__gets li {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 11px 6px 8px;
    border-radius: 20px;
    background: #fff;
    border: 1px solid #e3ddf6;
    font: 500 13px/1 'Jost', sans-serif;
    color: var(--mp-ink);
}

.mpPanel__gets li::before {
    content: '';
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--mp-teal) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4'%3E%3Cpath d='m6 12 4 4 8-8'/%3E%3C/svg%3E") center / 10px no-repeat;
}

/* ---------- 6. Process: framed composed visual per step ---------- */
.mpProcBox {
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
}

.mpProcCard {
    background: #fff;
    border: 1px solid #ebe6f8;
    border-radius: 20px;
    box-shadow: 0 20px 42px -22px rgba(28, 20, 70, .2);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.mpProcCard__head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 13px 18px;
    background: #faf9fd;
    border-bottom: 1px solid #ebe6f8;
}

.mpProcCard__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--mp-teal);
    box-shadow: 0 0 0 3px rgba(76, 218, 160, .25);
}

.mpProcCard__title {
    font-family: 'Jost', sans-serif;
    font-size: 13.5px;
    font-weight: 600;
    color: var(--mp-ink);
}

.mpProcBadge {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 20px;
    font-family: 'Jost', sans-serif;
    font-size: 11.5px;
    font-weight: 600;
    background: #ebfaf5;
    color: var(--mp-teal);
}

.mpProcBadge .map-ico {
    width: 12px;
    height: 12px;
}

.mpProcCard__body {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    background: #fff;
}

/* Step 1: Scope specification */
.mpProcSpec {
    display: grid;
    gap: 10px;
}

.mpProcSpec__item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 14px;
    border-radius: 12px;
    background: var(--mp-soft);
    border: 1px solid #eeeafd;
}

.mpProcSpec__lbl {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--mp-violet);
}

.mpProcSpec__val {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--mp-ink);
    line-height: 1.35;
}

/* Step 2: UI/UX Phone Frame */
.mpProcPhone {
    display: flex;
    justify-content: center;
    padding: 10px;
    background: linear-gradient(135deg, #f8f6ff, #ebfaf5 60%);
    border-radius: 16px;
    border: 1px solid #ebe6f8;
}

.mpProcPhone img {
    display: block;
    max-width: 200px;
    height: auto;
    border-radius: 14px;
    box-shadow: 0 16px 32px -16px rgba(28, 20, 70, .35);
}

.mpProcPhone--sm img {
    max-width: 130px;
}

/* Step 3: Duo code + phone preview */
.mpProcDuo {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 12px;
    align-items: center;
}

.mpProcCode {
    border-radius: 14px;
    background: #1c1446;
    color: #fff;
    overflow: hidden;
    font-family: monospace;
    font-size: 11px;
    line-height: 1.45;
    box-shadow: 0 14px 28px -14px rgba(28, 20, 70, .4);
}

.mpProcCode__bar {
    padding: 7px 12px;
    background: #140e34;
    border-bottom: 1px solid rgba(255, 255, 255, .1);
    font-size: 10.5px;
    color: rgba(255, 255, 255, .7);
}

.mpProcCode pre {
    margin: 0;
    padding: 10px 12px;
    overflow-x: auto;
}

.mpProcCode code {
    font-family: inherit;
}

.mpProcCode .k { color: #f9758f; }
.mpProcCode .f { color: #4cdaa0; }

/* Step 4: QA Checklist */
.mpProcChecks {
    display: grid;
    gap: 8px;
}

.mpProcCheckItem {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 12px;
    border-radius: 10px;
    background: var(--mp-soft);
    border: 1px solid #ebe6f8;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--mp-ink);
}

.mpProcCheckItem__ico {
    flex: 0 0 20px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--mp-teal);
    color: #fff;
    display: grid;
    place-items: center;
}

.mpProcCheckItem__ico .map-ico {
    width: 11px;
    height: 11px;
}

.mpProcCheckItem em {
    margin-left: auto;
    font-style: normal;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
    background: #ebfaf5;
    color: var(--mp-teal);
}

/* Step 5: Store release cards */
.mpProcStore {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.mpProcStore__item {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    padding: 14px;
    border-radius: 14px;
    background: var(--mp-soft);
    border: 1px solid #ebe6f8;
}

.mpProcStore__item b {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: var(--mp-ink);
}

.mpProcStore__item small {
    display: block;
    font-size: 11.5px;
    color: var(--mp-body);
}

.mpProcLiveTag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    background: #ebfaf5;
    color: var(--mp-teal);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .5px;
    text-transform: uppercase;
}

/* Step 6: Operations Stats */
.mpProcOps {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}

.mpProcOps__stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 14px 8px;
    border-radius: 12px;
    background: var(--mp-soft);
    border: 1px solid #ebe6f8;
    text-align: center;
}

.mpProcOps__stat strong {
    font-family: 'Jost', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: var(--mp-teal);
    line-height: 1.2;
}

.mpProcOps__stat span {
    font-size: 11px;
    color: var(--mp-body);
    margin-top: 4px;
}

/* Shared bottom status row */
.mpProcStatus {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 12px;
    background: #faf9fd;
    border: 1px solid #eeeafd;
}

.mpProcStatus__ico {
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    border-radius: 9px;
    background: var(--mp-grad-teal);
    color: #fff;
    display: grid;
    place-items: center;
}

.mpProcStatus__ico .map-ico {
    width: 16px;
    height: 16px;
}

.mpProcStatus b {
    display: block;
    font-family: 'Jost', sans-serif;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--mp-ink);
}

.mpProcStatus small {
    display: block;
    font-size: 11px;
    color: var(--mp-body);
}

/* Panel transitions: subtle fade and slide */
.mpPanel {
    transition: opacity .4s var(--mp-ease), transform .4s var(--mp-ease);
}

.mpPanel[hidden] {
    opacity: 0;
    transform: translateY(8px);
    pointer-events: none;
}

.mpPanel.is-on {
    opacity: 1;
    transform: translateY(0);
}

.mpCollab {
    left: 0;
    top: 0;
    z-index: 5;
    display: inline-flex;
    align-items: center;
    gap: .7em;
    padding: .35em .95em .35em .4em;
    border-radius: 2em;
    background: #fff;
    border: 1px solid #e3ddf6;
    box-shadow: 0 .6em 1.4em -.6em rgba(28, 20, 70, .25);
    white-space: nowrap;
    font-size: 10px;
}

.mpAvatar {
    width: 2.1em;
    height: 2.1em;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--mp-soft);
    color: var(--mp-violet);
    font-size: 1.05em;
    font-weight: 700;
    overflow: hidden;
}

.mpAvatar--cx {
    background: var(--mp-grad-teal);
    color: #fff;
}

.mpAvatar--lead {
    background: #1c1446;
    color: #4cdaa0;
}

.mpAvatar--ux {
    background: #fff1f4;
    color: var(--mp-pink-d);
}

.mpAvatar--qa {
    background: #ebfaf5;
    color: var(--mp-teal);
}

.mpAvatar--ops {
    background: #f1eff9;
    color: var(--mp-violet);
}

.mpAvatar--sup {
    background: #ebfaf5;
    color: var(--mp-teal);
}

.mpCollab b {
    font-size: 1.15em;
    font-weight: 600;
    color: var(--mp-ink);
}

.mpCollab span {
    font-size: 1.05em;
    color: var(--mp-body);
}

@supports (width: 1cqi) {
    .mpScene > .mpScene__tag,
    .mpScene > .mpCollab { font-size: calc(100cqi / 48 * 1.12); }
}

.mpWin {
    overflow: hidden;
    border-radius: 1.2em;
    border: 1px solid #ece8f8;
    background: #fff;
    box-shadow: 0 1.8em 3.4em -1.8em rgba(28, 20, 70, .4);
}

.mpWin__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1em;
    padding: .9em 1.2em;
    border-bottom: 1px solid #f0edf9;
}

.mpWin__bar b {
    font-size: 1.3em;
    font-weight: 600;
    white-space: nowrap;
}

.mpWin__bar em {
    font-style: normal;
}

.mpLive,
.mpOk {
    display: inline-flex;
    align-items: center;
    gap: .45em;
    padding: .35em .8em;
    border-radius: 2em;
    font-size: 1.1em;
    font-weight: 600;
    white-space: nowrap;
}

.mpLive { background: #fff1f4; color: var(--mp-pink-d); }
.mpLive::before { content: ''; width: .6em; height: .6em; border-radius: 50%; background: var(--mp-pink-d); }
.mpOk { background: #ebfaf5; color: #23808c; }

/* Phone frame for our own app renders */
.mpPh {
    border: .5em solid var(--mp-ink);
    border-radius: 2.2em;
    background: #fff;
    box-shadow: 0 2em 3.4em -1.8em rgba(28, 20, 70, .55);
}

.mpPh > img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 1.7em;
}

.mpPh > em {
    position: absolute;
    left: 50%;
    bottom: -2.9em;
    transform: translateX(-50%);
    font-size: 1.15em;
    font-style: normal;
    font-weight: 500;
    color: var(--mp-body);
    white-space: nowrap;
}

/* Scene 1: consultation */
.mpCall { left: 0; top: 4em; width: 26em; }

.mpCall__tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .8em;
    padding: 1em 1em .8em;
}

.mpCall__tile {
    height: 9.6em;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .7em;
    border-radius: .9em;
    background: linear-gradient(160deg, #efeaff, #e2d9ff);
}

.mpCall__tile--cx { background: linear-gradient(160deg, #e6f8f1, #cff0e5); }

.mpCall__tile small {
    font-size: 1.1em;
    font-weight: 500;
    color: var(--mp-ink);
}

.mpAvatar {
    width: 4.6em;
    height: 4.6em;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--mp-violet);
    color: #fff;
    font-size: 1em;
    font-style: normal;
    font-weight: 600;
    box-shadow: 0 0 0 .35em rgba(255, 255, 255, .7);
}

.mpAvatar { font-size: 1.05em; }
.mpAvatar--cx { background: #fff; }
.mpAvatar--cx img { width: 2.8em; height: auto; }

.mpCall__ctrl {
    display: flex;
    justify-content: center;
    gap: .8em;
    padding: 0 0 1em;
}

.mpCall__ctrl i {
    width: 3em;
    height: 3em;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #f3f1fa;
    color: var(--mp-ink);
}

.mpCall__ctrl i.end { background: var(--mp-grad-pink); color: #fff; }
.mpCall__ctrl i.end .map-ico { transform: rotate(135deg); }
.mpCall__ctrl .map-ico { width: 1.5em; height: 1.5em; }

.mpNotes {
    left: 28em;
    top: 4em;
    width: 20em;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1em;
}

.mpNote {
    min-height: 6.4em;
    padding: .8em .9em;
    border-radius: .4em;
    background: #ffe9ee;
    font-size: 1.2em;
    font-weight: 500;
    line-height: 1.25;
    transform: rotate(var(--r, 0deg));
    box-shadow: 0 1em 1.6em -1em rgba(28, 20, 70, .4);
}

.mpNote--t { background: #dcf6ec; }
.mpNote--v { background: #ece6ff; }
.mpNote--o { background: #fff; border: 1.5px dashed #c9bdf2; box-shadow: none; }
.mpNote small { display: block; margin-top: .3em; font-size: .8em; color: var(--mp-body); }

.mpPlan { left: 11em; top: 24em; width: 37em; }

.mpPlan__rows {
    margin: 0;
    padding: .5em 1.2em .8em;
    list-style: none;
}

.mpPlan__rows li {
    display: flex;
    align-items: center;
    gap: .8em;
    padding: .55em 0;
    font-size: 1.15em;
    color: var(--mp-body);
}

.mpPlan__rows li + li { border-top: 1px solid #f2f0f8; }
.mpPlan__rows b { margin-left: auto; font-weight: 600; color: var(--mp-ink); }
.mpPlan__rows .map-ico { width: 1.4em; height: 1.4em; color: var(--mp-violet); }

/* Scene 2: design canvas */
.mpCanvas {
    left: 0;
    top: 3.6em;
    width: 48em;
    height: 34.4em;
    border-radius: 1.4em;
    border: 1px solid #ece8f8;
    background-color: #fbfaff;
    background-image: linear-gradient(#f0ecfb 1px, transparent 1px), linear-gradient(90deg, #f0ecfb 1px, transparent 1px);
    background-size: 2.4em 2.4em;
}

.mpCanvas > * { position: absolute; }

.mpPh--wire,
.mpPh--mid { top: 4.6em; width: 11em; }
.mpPh--wire { left: 2.6em; border-color: #cfc8e6; }
.mpPh--mid { left: 17.6em; }
.mpPh--final { left: 32.4em; top: 2em; width: 12.8em; }

.mpWireS {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .7em;
    aspect-ratio: 600 / 1298;
    padding: 1.6em .9em;
    border-radius: 1.7em;
    overflow: hidden;
    align-content: start;
}

.mpWireS i { grid-column: span 2; height: 1.1em; border-radius: .4em; background: #e6e2f1; }
.mpWireS i.h { width: 55%; }
.mpWireS i.s { height: 1.8em; border-radius: .9em; }
.mpWireS i.b { height: 5em; border-radius: .7em; background: #dcd6ea; }
.mpWireS i.r { width: 70%; }
.mpWireS i.g { grid-column: span 1; height: 6.4em; border-radius: .6em; background: #ebe8f4; }

.mpWireS--c i { background: #f1eefa; }
.mpWireS--c i.h { background: var(--mp-violet); }
.mpWireS--c i.s { background: #fff; box-shadow: inset 0 0 0 1px #e1dcf2; }
.mpWireS--c i.b { background: var(--mp-grad-teal); }
.mpWireS--c i.r:nth-of-type(4) { background: #ffdbe3; }
.mpWireS--c i.g { background: #fff; box-shadow: inset 0 0 0 1px #e1dcf2, inset 0 -2.2em 0 #f8f6ff; }

.mpCanvas__arrow {
    top: 14.2em;
    width: 2.8em;
    height: 2.8em;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #fff;
    color: var(--mp-violet);
    box-shadow: 0 .8em 1.6em -.8em rgba(28, 20, 70, .45);
}

.mpCanvas__arrow:nth-of-type(1) { left: 14.3em; }
.mpCanvas__arrow:nth-of-type(2) { left: 29.3em; }
.mpCanvas__arrow .map-ico { width: 1.4em; height: 1.4em; }

.mpComment {
    left: 15.5em;
    top: 19.6em;
    z-index: 3;
    width: 17em;
    padding: 1em 1.1em;
    border-radius: 1em;
    background: #fff;
    box-shadow: 0 1.6em 3em -1.4em rgba(28, 20, 70, .5);
}

.mpComment__cur {
    display: inline-flex;
    align-items: center;
    gap: .4em;
}

.mpComment__cur .map-ico { width: 1.6em; height: 1.6em; fill: var(--mp-pink-d); stroke: var(--mp-pink-d); }
.mpComment__cur b { padding: .2em .6em; border-radius: .4em; background: var(--mp-pink-d); color: #fff; font-size: 1.05em; font-weight: 600; }
.mpComment p { margin: .5em 0 .7em; font-size: 1.2em; line-height: 1.35; color: var(--mp-ink); }

.mpComment__re {
    display: inline-flex;
    align-items: center;
    gap: .4em;
    padding: .35em .8em;
    border-radius: 2em;
    background: #ebfaf5;
    color: #23808c;
    font-size: 1.05em;
    font-weight: 600;
}

.mpComment__re .map-ico { width: 1.2em; height: 1.2em; }

/* Scene 3: development */
.mpCode {
    left: 0;
    top: 4.4em;
    width: 28.5em;
    overflow: hidden;
    border-radius: 1.2em;
    background: var(--mp-ink);
    color: #e7e3ff;
    box-shadow: 0 2em 3.4em -1.8em rgba(28, 20, 70, .6);
}

.mpCode__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .9em 1.2em;
    border-bottom: 1px solid rgba(255, 255, 255, .1);
}

.mpCode__bar b { font-size: 1.2em; font-weight: 500; }
.mpCode__bar em { padding: .2em .7em; border-radius: 2em; background: rgba(76, 218, 160, .16); color: var(--mp-mint); font-size: 1em; font-style: normal; }

.mpCode pre {
    margin: 0;
    padding: 1.1em 1.3em 1.5em;
    overflow: hidden;
    background: none;
    border: 0;
    font: 1.1em/1.7 ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', monospace;
    color: inherit;
    white-space: pre;
}

.mpCode .k { color: var(--mp-mint); }
.mpCode .f { color: #ffadbf; }

.mpCode__caret {
    display: inline-block;
    width: .55em;
    height: 1.1em;
    margin-left: .2em;
    vertical-align: -.15em;
    background: var(--mp-mint);
}

.mpPh--dev { left: 31em; top: 3.8em; width: 15.5em; }

.mpToast {
    left: 14.5em;
    top: 22.8em;
    z-index: 4;
    display: flex;
    align-items: center;
    gap: .8em;
    padding: .8em 1.2em .8em .8em;
    border-radius: 1em;
    background: #fff;
    box-shadow: 0 1.6em 3em -1.2em rgba(28, 20, 70, .5);
    white-space: nowrap;
}

.mpToast__ico {
    width: 3em;
    height: 3em;
    display: grid;
    place-items: center;
    border-radius: .8em;
    background: var(--mp-grad-teal);
    color: #fff;
}

.mpToast__ico .map-ico { width: 1.5em; height: 1.5em; }
.mpToast b { display: block; font-size: 1.2em; font-weight: 600; }
.mpToast small { display: block; font-size: 1.05em; color: var(--mp-body); }

.mpMiles {
    left: 0;
    top: 29.8em;
    width: 29.5em;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    margin: 0;
    padding: 1.2em .6em;
    list-style: none;
    border-radius: 1.2em;
    background: #fff;
    border: 1px solid #ece8f8;
    box-shadow: 0 1.4em 2.6em -1.8em rgba(28, 20, 70, .4);
}

.mpMiles li {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5em;
    font-size: 1.1em;
    font-weight: 500;
    color: var(--mp-body);
}

.mpMiles li::before {
    content: '';
    position: absolute;
    top: .75em;
    left: -50%;
    width: 100%;
    height: 2px;
    background: #e6e1f4;
}

.mpMiles li:first-child::before { content: none; }
.mpMiles li.done::before,
.mpMiles li.now::before { background: var(--mp-teal); }

.mpMiles i {
    position: relative;
    z-index: 1;
    width: 1.6em;
    height: 1.6em;
    border-radius: 50%;
    border: 2px solid #d6cff0;
    background: #fff;
}

.mpMiles li.done { color: var(--mp-ink); }
.mpMiles li.done i { border-color: var(--mp-teal); background: var(--mp-teal) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4'%3E%3Cpath d='m6 12 4 4 8-8'/%3E%3C/svg%3E") center / 70% no-repeat; }
.mpMiles li.now { color: var(--mp-pink-d); font-weight: 600; }
.mpMiles li.now i { border-color: var(--mp-pink-d); background: var(--mp-pink-d); box-shadow: 0 0 0 .4em rgba(217, 38, 95, .16); }

/* Scene 4: testing */
.mpTab {
    left: 0;
    top: 5em;
    width: 23em;
    display: flex;
    gap: .3em;
    padding: .4em;
    border: .55em solid var(--mp-ink);
    border-radius: 1.8em;
    background: #fff;
    box-shadow: 0 2em 3.4em -1.8em rgba(28, 20, 70, .55);
}

.mpTab > img {
    display: block;
    width: calc(50% - .15em);
    height: auto;
    border-radius: 1em;
}

.mpPh--t1 { left: 25em; top: 4em; width: 10.6em; }
.mpPh--t2 { left: 37.2em; top: 7em; width: 10.6em; }

.mpScene em.mpDevTag {
    position: absolute;
    left: 50%;
    top: -1.5em;
    bottom: auto;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    gap: .45em;
    padding: .4em .5em .4em .8em;
    border-radius: 2em;
    background: #fff;
    border: 1px solid #ece8f8;
    box-shadow: 0 .8em 1.6em -1em rgba(28, 20, 70, .5);
    font-size: 1.05em;
    font-style: normal;
    font-weight: 600;
    color: var(--mp-ink);
    white-space: nowrap;
}

.mpDevTag img { width: 1.2em; height: 1.2em; }
.mpDevTag b { padding: .2em .6em; border-radius: 2em; background: #ebfaf5; color: #23808c; font-weight: 600; }
.mpDevTag b.w { background: #fff1f4; color: var(--mp-pink-d); }

.mpReport { left: 19.5em; top: 26.4em; z-index: 4; width: 28.5em; }

.mpNet { display: inline-flex; gap: .35em; }
.mpNet i { padding: .2em .55em; border-radius: .4em; background: var(--mp-soft); color: var(--mp-violet); font-size: 1em; font-style: normal; font-weight: 600; }

.mpReport ul,
.mpRelease ul {
    margin: 0;
    padding: .3em 1.2em .6em;
    list-style: none;
}

.mpReport li,
.mpRelease li {
    display: flex;
    align-items: center;
    gap: .7em;
    padding: .5em 0;
    font-size: 1.12em;
    font-weight: 500;
}

.mpReport li + li,
.mpRelease li + li { border-top: 1px solid #f2f0f8; }
.mpReport .map-ico { width: 1.4em; height: 1.4em; color: var(--mp-violet); }
.mpReport b,
.mpRelease b { margin-left: auto; padding: .2em .7em; border-radius: 2em; background: #ebfaf5; color: #23808c; font-size: .92em; font-weight: 600; }
.mpReport b.w { background: #fff1f4; color: var(--mp-pink-d); }

/* Scene 5: launch */
.mpStore { left: 0; top: 4em; width: 29em; }

.mpStore__head {
    display: flex;
    align-items: center;
    gap: 1em;
    padding: 1.2em;
}

.mpStore__icon,
.mpPush__icon {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    background: var(--mp-grad-teal);
    color: #fff;
    font-weight: 700;
}

.mpStore__icon { width: 4.8em; height: 4.8em; border-radius: 1.2em; font-size: 1.15em; }

.mpStore__name b { display: block; font-size: 1.5em; font-weight: 600; }
.mpStore__name small { display: block; font-size: 1.05em; color: var(--mp-body); }
.mpStore__name em { display: inline-block; margin-top: .3em; padding: .15em .6em; border-radius: 2em; background: var(--mp-soft); color: var(--mp-violet); font-size: .95em; font-style: normal; font-weight: 600; }

.mpStore__btn {
    margin-left: auto;
    padding: .65em 1.3em;
    border-radius: 2em;
    background: var(--mp-violet);
    color: #fff;
    font-size: 1.15em;
    font-weight: 600;
}

.mpStore__shots {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .7em;
    padding: 0 1.2em;
}

.mpStore__shots img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: .8em;
    border: 1px solid #ece8f8;
}

.mpStore__new {
    margin: 0;
    padding: 1em 1.2em 1.2em;
    font-size: 1.05em;
    line-height: 1.4;
    color: var(--mp-body);
}

.mpStore__new b { display: block; font-weight: 600; color: var(--mp-ink); }

.mpRelease { left: 31em; top: 4em; width: 17em; }
.mpRelease img { width: 1.6em; height: 1.6em; }

.mpRocket {
    left: 33.5em;
    top: 17.4em;
    width: 12em;
    height: 12em;
    display: grid;
    place-items: center;
}

.mpRocket__ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 1.5px solid rgba(67, 45, 146, .22);
}

.mpRocket__ring--2 { inset: 2em; border-color: rgba(53, 159, 173, .4); }

.mpRocket i {
    position: relative;
    width: 5.2em;
    height: 5.2em;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--mp-grad-pink);
    color: #fff;
    box-shadow: 0 1.4em 2.4em -1em rgba(217, 38, 95, .6);
}

.mpRocket .map-ico { width: 2.4em; height: 2.4em; }

.mpChecks {
    left: 31em;
    top: 30.6em;
    width: 17em;
    display: flex;
    flex-direction: column;
    gap: .5em;
}

.mpChecks span {
    display: flex;
    align-items: center;
    gap: .5em;
    font-size: 1.1em;
    font-weight: 500;
}

.mpChecks .map-ico {
    width: 1.5em;
    height: 1.5em;
    padding: .25em;
    border-radius: 50%;
    background: var(--mp-teal);
    color: #fff;
    stroke-width: 3;
}

/* Scene 6: support */
.mpNotesRel { left: 0; top: 4em; width: 19em; }

.mpNotesRel ol {
    position: relative;
    margin: 0;
    padding: .7em 1.2em 1em 2.6em;
    list-style: none;
}

.mpNotesRel ol::before {
    content: '';
    position: absolute;
    left: 1.5em;
    top: 1.6em;
    bottom: 1.8em;
    width: 2px;
    background: #e6e1f4;
}

.mpNotesRel li {
    position: relative;
    display: flex;
    align-items: center;
    gap: .6em;
    padding: .45em 0;
    font-size: 1.12em;
    font-weight: 500;
}

.mpNotesRel li::before {
    content: '';
    position: absolute;
    left: -1.25em;
    width: .8em;
    height: .8em;
    border-radius: 50%;
    background: #fff;
    border: 2px solid #c9bdf2;
}

.mpNotesRel li.now::before { background: var(--mp-pink-d); border-color: var(--mp-pink-d); }
.mpNotesRel em { padding: .15em .55em; border-radius: .4em; background: var(--mp-soft); color: var(--mp-violet); font-size: .9em; font-style: normal; font-weight: 600; }
.mpNotesRel li.now em { background: #fff1f4; color: var(--mp-pink-d); }

.mpDonut {
    left: 0;
    top: 20.6em;
    width: 27em;
    display: flex;
    align-items: center;
    gap: 1.4em;
    padding: 1.3em;
}

.mpDonut__ring {
    position: relative;
    flex: 0 0 10.5em;
    width: 10.5em;
    height: 10.5em;
}

.mpDonut__ring svg {
    width: 100%;
    height: 100%;
    transform: rotate(-90deg);
}

.mpDonut__ring circle {
    fill: none;
    stroke-width: 14;
}

.mpDonut__bg { stroke: #f1eefb; }
.mpDonut__a { stroke: var(--mp-teal); stroke-dasharray: 68 100; }
.mpDonut__b { stroke: var(--mp-violet); stroke-dasharray: 32 100; stroke-dashoffset: -68; }

.mpDonut__ring img {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 3.4em;
    height: auto;
    transform: translate(-50%, -50%);
}

.mpDonut__legend b { display: block; margin-bottom: .4em; font-size: 1.25em; font-weight: 600; }
.mpDonut__legend span { display: flex; align-items: center; gap: .5em; padding: .15em 0; font-size: 1.12em; font-weight: 500; }
.mpDonut__legend i { width: .9em; height: .9em; border-radius: .25em; }
.mpDonut__legend i.a { background: var(--mp-teal); }
.mpDonut__legend i.b { background: var(--mp-violet); }
.mpDonut__legend small { display: block; margin-top: .4em; font-size: .95em; color: var(--mp-body); }

.mpPh--care { left: 32.6em; top: 3.4em; width: 14.4em; }

.mpPush {
    left: 19.6em;
    top: 7.4em;
    z-index: 4;
    width: 24em;
    display: flex;
    align-items: flex-start;
    gap: .8em;
    padding: .9em 1em;
    border-radius: 1.2em;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 1.8em 3.4em -1.2em rgba(28, 20, 70, .55);
    font-size: 1.1em;
    line-height: 1.35;
}

.mpPush__icon { width: 3em; height: 3em; border-radius: .8em; font-size: .95em; }
.mpPush b { display: block; font-weight: 600; }
.mpPush b small { margin-left: .4em; font-weight: 400; color: var(--mp-body); }

/* ---------- 7. Enquiry ---------- */
.map-page .mpEnquiry .map-enquiry__desc { margin-bottom: 22px; font-size: 15px; }
.map-page .mpEnquiry .map-enquiry__trust li { font-size: 15px; color: #fff; }
.map-page .mpEnquiry .map-enquiry__trust-ico,
.map-page .mpEnquiry .map-enquiry__trust li:nth-child(2n) .map-enquiry__trust-ico {
    background: rgba(255, 255, 255, .14);
    color: #ffb8c7;
}

.map-page .mpEnquiry .map-form-card {
    border: 0;
    box-shadow: 0 40px 70px -36px rgba(10, 6, 40, .6);
}

.map-page .map-form-input::placeholder,
.map-page .map-form-textarea::placeholder {
    font-size: 13.5px;
    color: #94a3b8;
    font-weight: 400;
    opacity: 1;
}

.map-page .mpEnquiry .map-form-input,
.map-page .mpEnquiry .map-form-select,
.map-page .mpEnquiry .map-form-textarea {
    border: 1px solid #dfe1ec;
    border-radius: 12px;
    background-color: #fbfbfe;
}

.map-page .mpEnquiry .map-form-input:focus,
.map-page .mpEnquiry .map-form-select:focus,
.map-page .mpEnquiry .map-form-textarea:focus {
    border-color: var(--mp-violet);
    background-color: #fff;
    box-shadow: 0 0 0 4px rgba(91, 63, 208, .12);
    outline: none;
}

.map-page .mpEnquiry .map-form-submit {
    background: linear-gradient(110deg, #e63d72, #c91e55);
}

/* Keep reCAPTCHA holder accessible; badge tucked off-screen without breaking verification challenge iframes */
.map-page #recaptcha-holder {
    position: relative;
    z-index: 10;
}

.grecaptcha-badge {
    width: 70px !important;
    overflow: hidden !important;
    transition: all 0.3s ease !important;
    left: -70px !important;
}

.mpContact {
    display: grid;
    gap: 12px;
    max-width: 380px;
    margin-top: 26px;
}

.mpContact__item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 13px 16px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 16px;
    background: rgba(255, 255, 255, .07);
    text-decoration: none;
    transition: border-color .3s, transform .3s var(--mp-ease), background-color .3s;
}

.mpContact__item:hover {
    border-color: rgba(255, 255, 255, .4);
    background: rgba(255, 255, 255, .11);
    transform: translateY(-2px);
}

.mpContact__ico {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: var(--mp-grad-pink);
    color: #fff;
}

.mpContact__ico--wa { background: var(--mp-grad-teal); }
.mpContact__ico .map-ico { width: 20px; height: 20px; }
.mpContact__item small { display: block; font-size: 12.5px; color: rgba(255, 255, 255, .72); }
.mpContact__item b { font-family: 'Jost', sans-serif; font-size: 17px; font-weight: 500; color: #fff; }

/* ---------- 8. FAQ: its own panel, tighter top ---------- */
.map-page .map-faq {
    padding: 48px 0 64px;
    background: var(--mp-soft);
}

.map-page .map-faq > .map-wrap {
    padding-top: 40px;
    padding-bottom: 40px;
    border-radius: 26px;
    background: #fff;
    border: 1px solid var(--mp-line);
    box-shadow: 0 30px 60px -48px rgba(28, 20, 70, .4);
}

.map-page .map-faq-grid { margin-top: 28px; }

/* "Still have a question": light box, buttons share one border style */
.map-page .map-faq-cta {
    border: 1px solid var(--mp-line);
    border-radius: 16px;
    background: var(--mp-soft) !important;
}

.map-page .map-faq-cta__text strong { color: var(--mp-ink); }

.map-page .map-faq-cta__btns .map-btn {
    min-height: 46px;
    border: 1.5px solid transparent;
    line-height: 1.2;
}

.map-page .map-faq-cta__btns .map-btn--wa { border-color: transparent; }

.map-page .map-faq-cta__btns .map-btn--outline {
    border-color: var(--mp-ink);
    color: var(--mp-ink) !important;
    background: #fff;
}

.map-page .map-faq-cta__btns .map-btn--outline:hover,
.map-page .map-faq-cta__btns .map-btn--outline:focus-visible {
    background: var(--mp-ink);
    color: #fff !important;
}

.map-page .map-faq-cta__btns .map-btn,
.map-page .map-faq-cta__btns .map-btn:hover { transform: none; }

/* ---------- 9. Responsive ---------- */
@media (min-width: 992px) {
    /* Supporting lines under section titles stay on one line */
    .map-page .map-section-center .map-section-desc,
    .map-page .mpWhy__text .map-section-desc {
        max-width: none;
        white-space: nowrap;
    }
}

@media (max-width: 1199px) {
    .mpSvcGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .mpCar__item[data-pos="2"],
    .mpCar__item[data-pos="-2"] { opacity: 0; }
    .mpFloat--1 { left: -10px; }
    .mpFloat--2 { right: -6px; }
    .mpPanel { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; padding: 28px; }
    .mpProc__txt small { display: none; }
}

@media (max-width: 991px) {
    .mpIntro__grid,
    .mpWhy__grid,
    .mpWork__grid {
        grid-template-columns: 1fr;
        gap: 36px;
    }

    .mpIntro__visual { margin: 0 auto; }
    .mpWhy__grid { gap: 44px; }
    .mpWheel { width: min(100%, 380px); }
    .mpWheel__pointer { right: auto; left: 50%; top: auto; bottom: -30px; width: 2px; height: 30px; background: linear-gradient(180deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, 0)); }
    .mpWheel__pointer::before { left: -6px; top: -2px; border: 7px solid transparent; border-top-color: #fff; border-bottom: 0; }

    .mpProc__tabs { overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; }
    .mpProc__tabs::-webkit-scrollbar { display: none; }
    .mpProc__tabs::before { display: none; }
    .mpProc__tabs li { flex: 0 0 auto; }
    .mpProc__tabs button { flex-direction: row; gap: 10px; padding: 6px 12px 10px 6px; text-align: left; }
    .mpProc__n { width: 38px; height: 38px; font-size: 13.5px; }
    .mpProc__bar { left: 10px; right: 10px; }
    .mpPanel { grid-template-columns: 1fr; gap: 24px; }
    .mpScene { max-width: 520px; }
}

@media (max-width: 767px) {
    .map-page .map-sec { padding: 48px 0; }
    .map-page .map-section-title,
    .map-page .map-enquiry__title,
    .map-page .mpTitle { font-size: 22px; }
    .map-page .map-section-desc,
    .map-page .mpEnquiry .map-enquiry__desc { font-size: 14px; line-height: 22px; }
    .map-page .map-eyebrow { font-size: 12px; letter-spacing: 2px; }
    .mpDeskOnly { display: none !important; }
    .mpMobOnly { display: inline-flex !important; }

    .mpIntro { padding-top: 28px; }
    .mpIntro__h1 { font-size: clamp(21px, 6.2vw, 24px); white-space: normal; }
    .mpIntro__sub { font-size: 13.5px; line-height: 1.4; margin-bottom: 12px; }
    .mpIntro__lead { font-size: 14px; line-height: 1.65; text-align: justify; hyphens: auto; }
    .mpFeats { gap: 12px 14px; margin-bottom: 22px; }
    .mpFeats li { align-items: center; gap: 10px; }
    .mpFeats__ico { flex-basis: 34px; width: 34px; height: 34px; border-radius: 10px; }
    .mpFeats__ico .map-ico { width: 17px; height: 17px; }
    .mpFeats b { font-size: 13.5px; line-height: 1.25; }
    .mpFeats small { display: none !important; }
    .mpIntro__ctas { gap: 10px; }
    .mpIntro__ctas .map-btn { flex: 1 1 calc(50% - 5px); width: auto; padding: 13px 10px; font-size: 14.5px; }
    .mpIntro__ctas .mpBtnBrand { order: 3; flex-basis: 100%; }
    .mpProof { display: none !important; }
    .mpIntro__visual { gap: 12px; max-width: 360px; }
    .mpIntro__halo { width: 340px; height: 340px; margin: -170px 0 0 -170px; }
    .mpIntro__pic { padding: 16px 14px; border-radius: 18px; }
    .mpIntro__pic--a,
    .mpIntro__pic--b { transform: none; }
    .mpIntro__pic--b { margin-top: 40px; }
    .mpFloat { font-size: 12px; padding: 7px 10px 7px 7px; }
    .mpFloat .map-ico { width: 24px; height: 24px; padding: 5px; }
    .mpFloat--1 { left: -6px; top: 6%; }
    .mpFloat--2 { right: -6px; }
    .mpFloat--3 { left: 2%; bottom: 0; }
    .mpPlat { margin-top: 32px; }
    .mpPlat__title { font-size: 11.5px; letter-spacing: 1.4px; padding: 0 8px; }
    .mpPlat__row li { padding: 8px 14px; font-size: 13.5px; }

    .mpSvcGrid { grid-template-columns: 1fr; gap: 12px; margin-top: 24px; }
    .mpSvc { display: grid; grid-template-columns: 118px minmax(0, 1fr); column-gap: 14px; padding: 12px; align-items: center; text-align: left; }
    .mpSvc .mpUi { grid-row: span 2; height: 100%; min-height: 108px; padding: 10px; }
    .mpSvc h3 { margin: 0 0 4px; font-size: 16px; align-self: end; white-space: normal; }
    .mpSvc p { margin: 0; font-size: 13px; align-self: start; }
    .mpUi__card { width: calc(100% - 4px); padding: 8px; gap: 5px; }
    .mpUi__card b { font-size: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .mpUi__bar:nth-of-type(3) { display: none; }
    .mpUi__check { white-space: nowrap; overflow: hidden; font-size: 9.5px; }
    .mpUi__check i { flex: 0 0 12px; width: 12px; height: 12px; }
    .mpUi__badge { width: 34px; height: 34px; right: 8px; bottom: 8px; border-radius: 10px; }
    .mpUi__badge .map-ico { width: 17px; height: 17px; }
    .mpUi__ba ~ .mpUi__badge { display: none; }
    .mpUi__slots i:nth-child(n+3), .mpUi__lead:nth-child(3), .mpUi__check:nth-child(3), .mpUi__card--row em, .mpUi__pay span, .mpUi__thumb, .mpUi__card small, .mpUi__lead em { display: none; }
    .mpUi__pay { padding: 6px; gap: 5px; margin-top: 8px; }
    .mpUi__slots i { font-size: 9.5px; padding: 3px 4px; }
    .mpUi__lead { font-size: 10px; }
    .mpUi__chart { height: 30px; }
    .mpUi__ba span { width: 42px; font-size: 9px; }
    .mpUi__ba span::after { top: 22px; }

    .mpWheel { width: min(100%, 320px); margin: 38px auto 42px; position: relative; }
    .mpWheel__ico i { width: 40px; height: 40px; }
    .mpWheel__ico .map-ico { width: 18px; height: 18px; }
    .mpWheel__core b { font-size: 11.5px; letter-spacing: 1px; }

    .mpWhyBadge {
        padding: 5px 10px 5px 7px;
        border-radius: 10px;
        gap: 6px;
    }
    .mpWhyBadge__ico { width: 22px; height: 22px; border-radius: 6px; }
    .mpWhyBadge__ico .map-ico { width: 12px; height: 12px; }
    .mpWhyBadge b { font-size: 11px; }
    .mpWhyBadge small { display: none; }
    .mpWhyBadge--tl { top: -32px; left: 0; }
    .mpWhyBadge--tr { top: -32px; right: 0; }
    .mpWhyBadge--bl { bottom: -32px; left: 0; }
    .mpWhyBadge--br { bottom: -32px; right: 0; }

    .mpWhyList li { grid-template-columns: 44px minmax(0, 1fr); gap: 10px; padding: 13px 10px; }
    .mpWhyList li.is-on { transform: none; }
    .mpWhyList__n { font-size: 28px; }
    .mpWhyList h3 { font-size: 16px; }
    .mpWhyList p { font-size: 13.5px; }

    .mpWork__copy { font-size: 14px; line-height: 1.65; text-align: justify; hyphens: auto; }
    .mpWork__stores { margin-top: 12px; gap: 8px; }
    .mpStoreBadge { padding: 6px 12px 6px 10px; border-radius: 10px; gap: 8px; }
    .mpStoreBadge__ico { width: 18px; height: 18px; }
    .mpStoreBadge b { font-size: 12.5px; }
    .mpStoreBadge small { font-size: 8.5px; }
    .mpWork__live { margin-top: 14px; padding: 7px 12px; gap: 6px 10px; font-size: 12.5px; }
    .mpWork__live-pill { font-size: 12.5px; }
    .mpWork__live-cat { font-size: 12px; }
    .mpWork__pts { grid-template-columns: 1fr 1fr; gap: 10px 10px; }
    .mpWork__pts li { font-size: 13px; gap: 8px; align-items: center; }
    .mpWork__pts .map-ico { flex-basis: 30px; width: 30px; height: 30px; padding: 7px; border-radius: 9px; }
    .map-page .mpWork__nav { justify-content: center; }
    .mpWork__nav .map-btn { margin: 6px 0 0; flex-basis: 100%; justify-content: center; }
    .mpCar__stage { height: 420px; }
    .mpCar__item { width: 196px; margin-left: -98px; }
    .mpCar__item img { height: 400px; }
    .mpCar__item[data-pos="1"] { transform: translateX(104px) translateZ(-120px) rotateY(-40deg) scale(.78); }
    .mpCar__item[data-pos="-1"] { transform: translateX(-104px) translateZ(-120px) rotateY(40deg) scale(.78); }
    .mpCar__ring { width: 300px; height: 300px; margin: -150px 0 0 -150px; }
    .mpCar__ico { width: 38px; height: 38px; border-radius: 11px; }
    .mpCar__ico--1, .mpCar__ico--3 { left: 0; }
    .mpCar__ico--2, .mpCar__ico--4 { right: 0; }

    .mpProc__box { margin-top: 22px; gap: 14px; }
    .mpProc__tabs { margin: 0 -16px; padding: 2px 16px 6px; }
    .mpProc__txt b { font-size: 14.5px; }
    .mpProc__stage { margin: 0 -4px; border-radius: 20px; }
    .mpPanel { padding: 20px 14px 22px; gap: 20px; }
    .mpPanel h3 { margin-top: 12px; font-size: 19px; }
    .mpPanel__text > p { font-size: 14px; line-height: 1.65; }
    .mpPanel__text > .mpPanel__case { font-size: 13px; }
    .mpPanel__gets li { font-size: 12px; }
    .mpProcBox { max-width: 100%; margin: 6px 0 0; }
    .mpProcCard { border-radius: 16px; }
    .mpProcCard__head { padding: 10px 14px; }
    .mpProcCard__title { font-size: 12px; }
    .mpProcBadge { font-size: 10.5px; padding: 2px 8px; }
    .mpProcCard__body { padding: 14px; gap: 12px; }
    .mpProcSpec__item { padding: 8px 12px; }
    .mpProcSpec__val { font-size: 12.5px; }
    .mpProcPhone { padding: 8px; }
    .mpProcPhone img { max-width: 160px; }
    .mpProcDuo { grid-template-columns: 1fr; gap: 10px; }
    .mpProcPhone--sm img { max-width: 140px; }
    .mpProcStore { grid-template-columns: 1fr; gap: 8px; }
    .mpProcStore__item { padding: 10px 12px; }
    .mpProcOps__stat strong { font-size: 16px; }
    .mpProcStatus { padding: 8px 12px; gap: 8px; }
    .mpProcStatus__ico { flex-basis: 26px; width: 26px; height: 26px; }
    .mpProcStatus b { font-size: 11.5px; }
    .mpProcStatus small { font-size: 10px; }

    .mpContact { max-width: none; }

    .map-page .map-faq { padding: 36px 0 48px; }
    .map-page .map-faq > .map-wrap { width: auto; max-width: none; margin: 0 12px; padding: 28px 14px; border-radius: 20px; }
    .map-page .map-faq-grid { margin-top: 22px; }
}

@media (max-width: 480px) {
    .mpWork { overflow: hidden; }
    .mpCar { overflow: hidden; }
    .mpCar__stage { height: 380px; }
    .mpCar__item { width: 174px; margin-left: -87px; }
    .mpCar__item img { height: 360px; }
    .mpCar__item[data-pos="1"] { transform: translateX(82px) translateZ(-100px) rotateY(-36deg) scale(.76); }
    .mpCar__item[data-pos="-1"] { transform: translateX(-82px) translateZ(-100px) rotateY(36deg) scale(.76); }
    .mpCar__ring { width: 260px; height: 260px; margin: -130px 0 0 -130px; }
    .mpCar__ico { display: none; }
    .mpScene { overflow: hidden; border-radius: 16px; }
}

@media (max-width: 390px) {
    .mpIntro__h1 { font-size: 22px; }
    .mpSvc { grid-template-columns: 96px minmax(0, 1fr); column-gap: 12px; padding: 10px; }
    .mpSvc .mpUi { min-height: 96px; padding: 8px; }
    .mpWheel { width: min(100%, 280px); }
    .mpWhyBadge { padding: 4px 8px 4px 5px; }
    .mpWhyBadge b { font-size: 10px; }
    .mpWhyBadge--tl { top: -30px; left: 0; }
    .mpWhyBadge--tr { top: -30px; right: 0; }
    .mpWhyBadge--bl { bottom: -30px; left: 0; }
    .mpWhyBadge--br { bottom: -30px; right: 0; }
    .mpWhyList li { grid-template-columns: 36px minmax(0, 1fr); gap: 8px; padding: 10px 8px; }
    .mpWhyList__n { font-size: 24px; }
    .mpWork__pts { grid-template-columns: 1fr; gap: 8px; }
}

@media (max-width: 360px) {
    .mpIntro__h1 { font-size: 20px; }
    .mpWheel { width: min(100%, 260px); }
    .mpStoreBadge { padding: 5px 10px 5px 8px; }
    .mpStoreBadge b { font-size: 11.5px; }
    /* QA 20 Oct: bottom badges overlapped and "100% Code Ownership" was cut */
    .mpWhyBadge--tl, .mpWhyBadge--bl { left: -16px; }
    .mpWhyBadge--tr, .mpWhyBadge--br { right: -16px; }
}

/* QA 20 Oct: hero "Get a Free Consultation" text ran past its button edges */
@media (max-width: 420px) {
    .mpIntro__ctas .map-btn--pink { flex: 0 0 auto; }
    .mpIntro__ctas .map-btn--outline { flex: 1 1 0; min-width: 0; }
}

/* ---------- 10. Motion (only without reduced motion) ---------- */
@media (prefers-reduced-motion: no-preference) {
    .mpPlat__track.is-running .mpPlat__row { animation: mpMarquee 38s linear infinite; }
    .mpPlat__track:hover .mpPlat__row { animation-play-state: paused; }
    @keyframes mpMarquee { to { transform: translateX(-100%); } }

    .mpShine::after { animation: mpShine 7s ease-in-out 2s infinite; }
    @keyframes mpShine {
        0%, 86% { left: -60%; opacity: 0; }
        88% { opacity: 1; }
        100% { left: 130%; opacity: 0; }
    }

    .mpIntro__pic--a { animation: mpRise .9s var(--mp-ease) both, mpTiltA 8s ease-in-out 1s infinite; }
    .mpIntro__pic--b { animation: mpRise .9s var(--mp-ease) .15s both, mpTiltB 8s ease-in-out 1.5s infinite; }
    .mpIntro__pic img { animation: mpFloatY 6s ease-in-out 1s infinite; }
    .mpIntro__pic--b img { animation-delay: 2.5s; }
    @keyframes mpRise { from { opacity: 0; transform: translateY(40px) rotateX(10deg); } }
    @keyframes mpFloatY { 50% { transform: translateY(-8px); } }
    @keyframes mpTiltA { 0%, 100% { transform: rotateY(10deg) rotateZ(-2deg); } 50% { transform: rotateY(-4deg) translateY(-6px); } }
    @keyframes mpTiltB { 0%, 100% { transform: rotateY(-10deg) rotateZ(2deg); } 50% { transform: rotateY(4deg) translateY(-6px); } }
    .mpIntro__halo::after { animation: mpSpin 24s linear infinite; }
    .mpFloat { animation: mpBob 5s ease-in-out infinite; }
    .mpFloat--2 { animation-delay: 1.4s; }
    .mpFloat--3 { animation-delay: 2.6s; }
    @keyframes mpBob { 50% { transform: translateY(-10px); } }
    @keyframes mpSpin { to { transform: rotate(360deg); } }

    .mpWhy__text .mpWhyList li { will-change: transform; }

    .mpCar__ico { animation: mpBob 6s ease-in-out infinite; }
    .mpCar__ico--2 { animation-delay: 1.2s; }
    .mpCar__ico--3 { animation-delay: 2.4s; }
    .mpCar__ico--4 { animation-delay: 3.6s; }
    .mpCar__ring::before { animation: mpSpin 30s linear infinite; }

    /* Process: progress bar drives auto-advance with a subtle effect */
    .mpProc__tabs button.is-on .mpProc__bar { animation: mpBar 4.2s linear forwards; }
    .mpProc__box:hover .mpProc__bar,
    .mpProc__box:focus-within .mpProc__bar { animation-play-state: paused !important; }
    @keyframes mpBar { from { transform: scaleX(0); } to { transform: scaleX(1); } }

    .mpPanel.is-on .mpPanel__text { animation: mpFade .45s var(--mp-ease) both; }
    @keyframes mpFade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

    .mpPanel.is-on .mpProcCard { animation: mpPop .5s var(--mp-ease) both; }
    @keyframes mpPop { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
}

@media (prefers-reduced-motion: no-preference) and (max-width: 767px) {
    .mpIntro__pic--a,
    .mpIntro__pic--b { animation: mpRise .9s var(--mp-ease) both; }
}

@media (prefers-reduced-motion: reduce) {
    .mpWheel__rot,
    .mpWheel__ico i,
    .mpWheel__seg,
    .mpCar__item { transition: none; }
    .wdd-reveal,
    .map-page .wdd-reveal {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        transition: none !important;
    }
}

/* Process steps (owner, 2026-10-20, batch 3): only the active panel takes space and every box fits its content.
   The text keeps its natural spacing (no stretched gaps) and sits centred beside the card; the card takes the
   row height and its picture (phone screen, code + test build) is cropped to fit, so no step grows taller. */
.mpPanel[hidden] {
    display: none !important;
}

.mpProc__stage { display: block; }
.mpPanel { min-height: 0; align-items: stretch; }
.mpPanel__text,
.mpProcBox { min-width: 0; }
.mpPanel__text { align-self: center; }
.mpProcBox { display: flex; flex-direction: column; width: 100%; }
.mpProcCard { flex: 1 1 auto; }
.mpProcCard__body { flex: 1 1 auto; }
.mpProcCard__body > :first-child { flex: 1 1 auto; }
.mpProcSpec__item,
.mpProcStore__item,
.mpProcOps__stat { justify-content: center; }

.mpProcPhone {
    position: relative;
    display: block;
    min-height: 168px;
    padding: 0;
    overflow: hidden;
}

.mpProcPhone img {
    position: absolute;
    top: 14px;
    left: 0;
    right: 0;
    width: 196px;
    max-width: none;
    margin: 0 auto;
}

.mpProcDuo { align-items: stretch; }
.mpProcDuo .mpProcPhone { min-height: 0; }
.mpProcPhone--sm img { top: 10px; width: 128px; }

@media (max-width: 991px) {
    .mpProcPhone { min-height: 210px; }
}

@media (max-width: 767px) {
    .mpProcPhone { min-height: 190px; }
    .mpProcPhone img { top: 12px; width: 170px; }
    .mpProcDuo .mpProcPhone { min-height: 150px; }
    .mpProcPhone--sm img { width: 132px; }
}

/* Our work points: all icons in theme green (owner, 2026-10-20) */
.map-page .mpWork__pts li .map-ico,
.map-page .mpWork__pts li:nth-child(n) .map-ico {
    color: #15a37a !important;
    stroke: currentColor;
}
