
:root{--bg:#061018;--panel:rgba(5,17,26,.88);--line:rgba(120,190,220,.16);--text:#edf7fb;--muted:#8ba4b4;--cyan:#78d9fb;--green:#92e5c2;--amber:#f2ca7a}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}.app{position:relative;width:100vw;height:100vh;background:radial-gradient(circle at 50% 48%,#102c3b 0,#091820 38%,#050d13 76%,#03070a 100%)}.viewport{position:absolute;inset:0;overflow:hidden}.field{position:absolute;inset:0;background-image:linear-gradient(rgba(120,180,210,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(120,180,210,.035) 1px,transparent 1px);background-size:86px 86px;mask-image:radial-gradient(circle at center,#000 18%,transparent 76%)}.topbar{position:absolute;z-index:30;left:32px;right:32px;top:28px;display:flex;justify-content:space-between;align-items:center}.brand{display:flex;gap:12px;align-items:center;color:var(--text);text-decoration:none}.brand>span{width:49px;height:49px;display:grid;place-items:center;border:1px solid rgba(120,217,251,.3);font-size:12px;letter-spacing:.12em}.brand b,.brand small{display:block}.brand b{font-size:15px}.brand small{color:var(--muted);font-size:10px;margin-top:3px}.controls{display:flex;gap:10px;align-items:center}.controls button{color:var(--text);background:rgba(5,17,26,.72);border:1px solid rgba(130,190,220,.22);padding:10px 16px;cursor:pointer}.controls .primary{border-color:rgba(120,217,251,.48);background:rgba(30,103,135,.2)}.mode{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px;margin-right:6px}.mode i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green)}.links{position:absolute;left:50%;top:50%;width:1600px;height:900px;transform:translate(-50%,-50%);pointer-events:none;overflow:visible}.links path{fill:none;stroke:rgba(120,217,251,.08);stroke-width:1;stroke-dasharray:3 9;transition:stroke .7s,opacity .7s,filter .7s}.links path.active{stroke:rgba(120,217,251,.72);opacity:1;filter:drop-shadow(0 0 8px rgba(120,217,251,.5))}.links path.next{stroke:rgba(120,217,251,.22)}.module{position:absolute;z-index:10;border:0;background:transparent;color:var(--text);text-align:left;padding:12px 14px 12px 25px;min-width:210px;cursor:pointer;border-left:1px solid rgba(120,217,251,.28);opacity:.2;transition:opacity .6s,transform .7s,filter .6s,background .2s}.module:before{content:"";position:absolute;left:-5px;top:19px;width:9px;height:9px;border-radius:50%;background:#7393a3;transition:.5s}.module b{display:block;font-size:20px;font-weight:560}.module small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.module.active{opacity:1;transform:scale(1.07);filter:drop-shadow(0 0 12px rgba(120,217,251,.18))}.module.active:before{background:var(--cyan);box-shadow:0 0 16px var(--cyan)}.module.next{opacity:.45}.module.next:before{background:#84b9ce}.module:hover{background:rgba(80,150,180,.08)}.m-platform{left:50%;top:95px;transform:translateX(-50%)}.m-platform.active{transform:translateX(-50%) scale(1.07)}.m-giw{left:10%;top:180px}.m-gdpi{right:9%;top:180px}.m-ride{left:9%;bottom:155px}.m-webgis{right:8%;bottom:155px}.m-products{left:50%;bottom:75px;transform:translateX(-50%)}.m-products.active{transform:translateX(-50%) scale(1.07)}.globe-stage{position:absolute;left:50%;top:49%;width:430px;height:480px;transform:translate(-50%,-50%) scale(.92);transition:transform 1.25s cubic-bezier(.2,.78,.2,1),left 1.25s,top 1.25s}.glow{position:absolute;left:50%;top:44%;width:350px;height:350px;border-radius:50%;transform:translate(-50%,-50%);background:rgba(73,177,224,.18);filter:blur(55px)}.globe{--d:340px;position:absolute;left:50%;top:44%;width:var(--d);height:var(--d);transform:translate(-50%,-50%) scale(1);border-radius:50%;overflow:hidden;background:#0a3852;border:1px solid rgba(157,224,247,.28);box-shadow:0 0 55px rgba(76,183,229,.24),inset -70px -40px 90px rgba(0,0,0,.44);transition:width 1.1s,height 1.1s,transform 1.1s}.map-strip{position:absolute;left:0;top:0;height:100%;display:flex;will-change:transform;transition:transform 1.55s cubic-bezier(.2,.75,.2,1)}.map-strip img{width:calc(var(--d) * 2);height:var(--d);max-width:none;flex:none;object-fit:fill;opacity:.82;filter:invert(74%) sepia(18%) saturate(550%) hue-rotate(74deg) brightness(82%) contrast(92%)}.ocean-tint{position:absolute;inset:0;background:radial-gradient(circle at 35% 30%,rgba(80,175,215,.22),rgba(4,45,68,.2) 55%,rgba(1,20,32,.32) 100%);mix-blend-mode:screen;pointer-events:none}.graticule{position:absolute;inset:-2%;border-radius:50%;background:repeating-radial-gradient(ellipse at center,transparent 0 27px,rgba(190,235,255,.09) 28px 29px),repeating-linear-gradient(90deg,transparent 0 52px,rgba(190,235,255,.07) 53px 54px);mix-blend-mode:screen;pointer-events:none}.terminator{position:absolute;inset:0;border-radius:50%;background:linear-gradient(90deg,rgba(0,0,0,.48) 0,transparent 36%,transparent 70%,rgba(0,0,0,.18) 100%);pointer-events:none}.atmosphere{position:absolute;inset:0;border-radius:50%;box-shadow:inset 16px 12px 28px rgba(255,255,255,.10),inset -44px -30px 65px rgba(0,0,0,.48);pointer-events:none}.location-marker{position:absolute;left:50%;top:50%;opacity:0;transform:translate(-50%,-50%);transition:top .8s,opacity .6s}.location-marker span{display:block;width:11px;height:11px;border-radius:50%;background:#fff;border:3px solid var(--cyan);box-shadow:0 0 0 10px rgba(120,217,251,.12),0 0 20px var(--cyan)}.location-marker b{position:absolute;left:19px;top:-4px;font-size:11px;white-space:nowrap;text-shadow:0 2px 8px #000}.surface-layer{position:absolute;inset:0;opacity:0;transition:.6s}.surface-layer span{position:absolute;border:1px solid rgba(146,229,194,.72);box-shadow:0 0 12px rgba(146,229,194,.22)}.surface-layer span:nth-child(1){left:38%;top:34%;width:28%;height:17%;border-radius:48%}.surface-layer span:nth-child(2){left:31%;top:43%;width:39%;height:21%;border-radius:42%}.surface-layer span:nth-child(3){left:49%;top:29%;height:43%;width:1px;background:rgba(146,229,194,.45);border:0}.surface-layer span:nth-child(4){left:29%;top:51%;width:45%;height:1px;background:rgba(146,229,194,.45);border:0}.ride-network{position:absolute;inset:0;opacity:0}.ride-network i{position:absolute;height:1px;background:linear-gradient(90deg,transparent,var(--amber),transparent);box-shadow:0 0 9px rgba(242,202,122,.7);animation:pulse 1.5s infinite}.ride-network i:nth-child(1){width:36%;left:24%;top:38%;transform:rotate(25deg)}.ride-network i:nth-child(2){width:32%;left:45%;top:47%;transform:rotate(58deg)}.ride-network i:nth-child(3){width:30%;left:30%;top:62%;transform:rotate(-30deg)}.ride-network i:nth-child(4){width:26%;left:56%;top:32%;transform:rotate(105deg)}@keyframes pulse{0%,100%{opacity:.25}50%{opacity:1}}.earth-caption{position:absolute;left:50%;top:375px;transform:translateX(-50%);text-align:center;white-space:nowrap}.earth-caption b{display:block;font-size:12px;letter-spacing:.27em}.earth-caption span,.earth-caption small{display:block;color:var(--muted);font-size:11px;margin-top:7px}.earth-caption small{font-size:9px;color:#658190}.focus-card{position:absolute;z-index:9;left:2.8%;top:30%;width:410px;padding:23px 25px;background:var(--panel);border:1px solid rgba(130,190,220,.16);backdrop-filter:blur(15px);transition:opacity .6s,transform .8s}.focus-kicker{font-size:9px;letter-spacing:.24em;color:var(--cyan);margin-bottom:11px}.focus-card h1{font-size:32px;line-height:1.05;letter-spacing:-.035em;font-weight:520;margin:0 0 13px}.focus-card p{font-size:13px;line-height:1.6;color:var(--muted);margin:0}.result,.next{margin-top:16px;padding-top:13px;border-top:1px solid rgba(130,190,220,.12)}.result span,.next span{display:block;font-size:8px;letter-spacing:.22em;color:#648190}.result b,.next b{display:block;font-size:12px;margin-top:6px}.next b{color:#a4c9d9}.transition{position:absolute;left:50%;top:22%;transform:translateX(-50%);font-size:10px;letter-spacing:.25em;color:var(--cyan);opacity:0;transition:.4s;pointer-events:none}.transition.show{opacity:1}.chain{position:absolute;left:50%;bottom:122px;transform:translateX(-50%);display:flex;align-items:center;gap:9px;color:#65808f;font-size:10px;opacity:.62}.chain i{font-style:normal;color:#3f5967}.chain span.active{color:#f0fbff;text-shadow:0 0 10px rgba(120,217,251,.55)}.storybar{position:absolute;z-index:30;left:50%;bottom:24px;transform:translateX(-50%);display:flex;max-width:92vw;overflow:auto;background:rgba(4,14,22,.86);border:1px solid rgba(130,190,220,.14)}.storybar button{border:0;border-right:1px solid rgba(130,190,220,.09);background:transparent;color:#617d8d;padding:9px 10px;font-size:9px;letter-spacing:.08em;white-space:nowrap;cursor:pointer}.storybar button.active{color:#f0faff;background:rgba(120,217,251,.08)}.hint{position:absolute;z-index:20;right:31px;bottom:72px;color:#536d7b;font-size:9px}.app:not([data-scene="overview"]) .globe-stage{transform:translate(-12%,-50%) scale(1.28)}.app:not([data-scene="overview"]) .location-marker{opacity:1}.app[data-scene="giw"] .surface-layer,.app[data-scene="geoworkbench"] .surface-layer,.app[data-scene="geointellect"] .surface-layer,.app[data-scene="geodecision"] .surface-layer,.app[data-scene="geoplanning"] .surface-layer,.app[data-scene="webgis"] .surface-layer,.app[data-scene="products"] .surface-layer,.app[data-scene="action"] .surface-layer{opacity:1}.app[data-scene="ride"] .ride-network{opacity:1}.app[data-scene="action"] .module{opacity:.7}.app[data-scene="action"] .chain{opacity:1}@media(max-width:1100px){.focus-card{left:2%;width:350px}.focus-card h1{font-size:27px}.module{min-width:165px}.module b{font-size:16px}.app:not([data-scene="overview"]) .globe-stage{transform:translate(0,-50%) scale(1.05)}}
/* Stage 5C — Geographic Surface Scenes */
.geo-surface{position:absolute;inset:0;border-radius:50%;overflow:hidden;opacity:0;pointer-events:none;transition:opacity .75s ease,filter .75s ease;z-index:5}.geo-surface svg{width:100%;height:100%;display:block}.geo-surface .surface-legend{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);display:flex;gap:7px;white-space:nowrap;opacity:.86}.geo-surface .surface-legend span{font-size:7px;letter-spacing:.11em;color:#a7c8d6;background:rgba(4,15,23,.66);border:1px solid rgba(140,210,230,.18);padding:4px 6px;backdrop-filter:blur(6px)}
.dubai-surface .coast{fill:none;stroke:rgba(160,228,248,.88);stroke-width:2.2;filter:drop-shadow(0 0 4px rgba(100,210,245,.36))}.dubai-surface .urban{fill:rgba(146,229,194,.10);stroke:rgba(146,229,194,.64);stroke-width:1.2;stroke-dasharray:4 4}.dubai-surface .road{fill:none;stroke-linecap:round}.dubai-surface .road.primary{stroke:rgba(242,202,122,.92);stroke-width:2.4;filter:drop-shadow(0 0 4px rgba(242,202,122,.45))}.dubai-surface .road.secondary{stroke:rgba(184,220,233,.48);stroke-width:1}.dubai-surface .poi{fill:#fff;stroke:var(--cyan);stroke-width:2;filter:drop-shadow(0 0 5px var(--cyan))}.geo-label{fill:#eaf8fc;font-size:10px;font-weight:600;letter-spacing:.04em}.geo-label.small{font-size:7px;font-weight:500;fill:#a8c7d5}.geo-label.water{fill:#7ba0b3;font-size:8px;font-weight:500;letter-spacing:.12em}
.nevada-surface .state{fill:rgba(133,170,197,.07);stroke:rgba(176,216,233,.65);stroke-width:1.5}.nevada-surface .terrain{fill:none;stroke:rgba(180,200,166,.46);stroke-width:1.2;stroke-dasharray:2 4}.nevada-surface .geology{fill:none;stroke-width:2}.nevada-surface .g1{stroke:rgba(242,202,122,.72)}.nevada-surface .g2{stroke:rgba(197,140,212,.72)}.nevada-surface .prospect{fill:rgba(242,202,122,.16);stroke:rgba(242,202,122,.92);stroke-width:2;filter:drop-shadow(0 0 6px rgba(242,202,122,.52))}
.app[data-geo="dubai"] .dubai-surface{opacity:1}.app[data-geo="nevada"] .nevada-surface{opacity:1}.app[data-geo="dubai"] .surface-layer{opacity:.18!important}.app[data-geo="nevada"] .surface-layer{opacity:.10!important}.app[data-scene="platform"] .dubai-surface{opacity:.38}.app[data-scene="giw"] .dubai-surface{opacity:.62}.app[data-scene="geoworkbench"] .dubai-surface,.app[data-scene="geointellect"] .dubai-surface{opacity:.76}.app[data-scene="geodecision"] .dubai-surface,.app[data-scene="geoplanning"] .dubai-surface{opacity:.92}.app[data-scene="webgis"] .dubai-surface,.app[data-scene="ride"] .dubai-surface{opacity:1}.app[data-scene="products"] .nevada-surface{opacity:1}.app[data-scene="ride"] .dubai-surface{filter:saturate(.8) brightness(.88)}


/* Stage 5D — contextual semantic reveal */
.semantic-scenes{position:absolute;inset:0;pointer-events:none;z-index:6}.semantic-scene{position:absolute;inset:0;opacity:0;transform:scale(.96);transition:opacity .55s ease,transform .75s cubic-bezier(.2,.75,.2,1)}
.app[data-scene="platform"] .sem-platform,.app[data-scene="giw"] .sem-giw,.app[data-scene="geoworkbench"] .sem-work,.app[data-scene="geointellect"] .sem-intellect,.app[data-scene="geodecision"] .sem-decision,.app[data-scene="geoplanning"] .sem-planning,.app[data-scene="webgis"] .sem-webgis,.app[data-scene="ride"] .sem-ride{opacity:1;transform:scale(1)}
.sem-tag,.condition,.phase,.event{position:absolute;font-size:6px;letter-spacing:.13em;color:#dff6ff;background:rgba(3,18,27,.72);border:1px solid rgba(120,217,251,.35);padding:4px 6px;white-space:nowrap;backdrop-filter:blur(3px)}
.context-ring{position:absolute;left:50%;top:50%;width:116px;height:116px;border:1px solid rgba(120,217,251,.58);border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 24px rgba(120,217,251,.12),inset 0 0 20px rgba(120,217,251,.07)}.context-ring:after{content:"";position:absolute;inset:13px;border:1px dashed rgba(146,229,194,.46);border-radius:50%;animation:semspin 18s linear infinite}.sem-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:7px;line-height:1.35;text-align:center;letter-spacing:.15em;color:#fff}.sem-platform .t1{left:25%;top:32%}.sem-platform .t2{right:22%;top:38%}.sem-platform .t3{left:28%;bottom:28%}
.condition{border-color:rgba(146,229,194,.42);color:#c6f4df}.condition:before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;margin-right:5px;background:var(--green);box-shadow:0 0 7px var(--green)}.c1{left:20%;top:28%}.c2{right:16%;top:38%}.c3{left:19%;bottom:27%}.c4{right:14%;bottom:24%}.knowledge-link{position:absolute;height:1px;transform-origin:left;background:linear-gradient(90deg,rgba(146,229,194,.8),transparent)}.k1{width:92px;left:31%;top:39%;transform:rotate(20deg)}.k2{width:84px;left:39%;top:61%;transform:rotate(-31deg)}.k3{width:76px;left:48%;top:45%;transform:rotate(54deg)}
.data-stack{position:absolute;width:72px;height:30px;border:1px solid rgba(120,217,251,.36);background:rgba(4,26,38,.73);padding:5px 7px;box-shadow:6px 6px 0 rgba(120,217,251,.045)}.data-stack b{font-size:7px;color:var(--cyan);margin-right:5px}.data-stack span{font-size:6px;letter-spacing:.1em;color:#d9edf5}.ds1{left:22%;top:27%}.ds2{left:38%;top:42%}.ds3{left:54%;top:57%}.evidence-node{position:absolute;right:19%;top:29%;font-size:6px;letter-spacing:.13em;padding:7px;border-radius:50%;border:1px solid rgba(146,229,194,.7);color:#dfffee;box-shadow:0 0 16px rgba(146,229,194,.2)}
.sem-intellect svg,.sem-planning svg,.sem-ride svg{position:absolute;inset:0;width:100%;height:100%}.sem-intellect svg path{fill:none;stroke:rgba(120,217,251,.66);stroke-width:1.3;stroke-dasharray:3 4}.pattern{position:absolute;width:10px;height:10px;border:2px solid var(--cyan);border-radius:50%;box-shadow:0 0 12px rgba(120,217,251,.7)}.p1{left:31%;top:31%}.p2{left:56%;top:38%}.p3{left:43%;top:57%}.p4{left:67%;top:63%}.sem-caption{position:absolute;left:50%;bottom:19%;transform:translateX(-50%);font-size:6px;letter-spacing:.14em;color:#b9dce8;white-space:nowrap}
.constraint-zone{position:absolute;left:27%;top:29%;width:44%;height:43%;border:1px dashed rgba(242,202,122,.62);border-radius:44% 56% 49% 51%;background:repeating-linear-gradient(45deg,rgba(242,202,122,.03) 0 4px,rgba(242,202,122,.10) 4px 5px)}.alternative{position:absolute;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:7px;border:1px solid rgba(220,240,248,.38);background:rgba(4,18,27,.82)}.a1{left:31%;top:43%}.a2{left:51%;top:35%}.a3{left:57%;top:58%}.alternative.preferred{border-color:var(--green);color:#fff;box-shadow:0 0 0 8px rgba(146,229,194,.08),0 0 18px rgba(146,229,194,.45)}.criteria-ring{position:absolute;left:51%;top:35%;width:66px;height:66px;border-radius:50%;border:1px solid rgba(146,229,194,.35);transform:translate(-21px,-21px)}
.sem-planning .allocation{stroke-width:1.3}.al1{fill:rgba(120,217,251,.10);stroke:rgba(120,217,251,.68)}.al2{fill:rgba(146,229,194,.10);stroke:rgba(146,229,194,.7)}.al3{fill:rgba(242,202,122,.09);stroke:rgba(242,202,122,.7)}.phase-arrow{fill:none;stroke:#e6f6fb;stroke-width:1.2;stroke-dasharray:4 4}.ph1{left:30%;top:33%}.ph2{right:23%;top:48%}.ph3{left:31%;bottom:23%}
.map-crosshair{position:absolute;left:50%;top:50%;width:150px;height:150px;border:1px solid rgba(120,217,251,.34);border-radius:4px;transform:translate(-50%,-50%)}.map-crosshair:before,.map-crosshair:after{content:"";position:absolute;background:rgba(120,217,251,.34)}.map-crosshair:before{left:50%;top:-22px;width:1px;height:194px}.map-crosshair:after{top:50%;left:-22px;height:1px;width:194px}.ov-webgis .asset{position:absolute;width:8px;height:8px;background:#fff;border:2px solid var(--cyan);transform:rotate(45deg);box-shadow:0 0 9px var(--cyan)}.as1{left:37%;top:38%}.as2{left:59%;top:48%}.as3{left:45%;top:63%}.layer-pills{position:absolute;right:15%;top:21%;display:flex;flex-direction:column;gap:4px;align-items:flex-end}.layer-pills b,.layer-pills span{font-size:6px;letter-spacing:.1em;background:rgba(3,18,27,.8);border:1px solid rgba(120,217,251,.25);padding:4px 6px}.layer-pills b{color:#fff;border-color:rgba(146,229,194,.5)}
.sem-ride svg path{fill:none;stroke:rgba(242,202,122,.78);stroke-width:1.3;stroke-dasharray:2 4;filter:drop-shadow(0 0 3px rgba(242,202,122,.45));animation:flowdash 3s linear infinite}.event{border-color:rgba(242,202,122,.42);color:#ffe7b5}.ev1{left:22%;top:24%}.ev2{left:36%;top:37%}.ev3{left:51%;top:48%}.ev4{right:18%;bottom:27%}.ev5{right:8%;bottom:14%}
.zoom-depth{position:absolute;left:50%;top:18px;transform:translateX(-50%);z-index:12;font-size:7px;letter-spacing:.2em;color:#8eb2c1;background:rgba(4,17,25,.58);border:1px solid rgba(120,217,251,.16);padding:5px 8px;white-space:nowrap;transition:.4s}.app:not([data-scene="overview"]) .zoom-depth{color:#d9f3fc;border-color:rgba(120,217,251,.30)}
@keyframes semspin{to{transform:rotate(360deg)}}@keyframes flowdash{to{stroke-dashoffset:-18}}


/* Stage 5E — geographic camera & surface transition */
.camera-journey{position:absolute;z-index:18;left:50%;top:92px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:6px 10px;background:rgba(3,14,21,.55);border:1px solid rgba(120,217,251,.12);backdrop-filter:blur(8px);transition:opacity .45s,transform .7s;white-space:nowrap}
.camera-journey span{font-size:7px;letter-spacing:.15em;color:#5f7c8a;transition:color .35s,text-shadow .35s}.camera-journey span.active{color:#e8f8fd;text-shadow:0 0 9px rgba(120,217,251,.45)}.camera-journey i{font-style:normal;color:#395563;font-size:9px}
.surface-frame{position:absolute;z-index:7;left:50%;top:49%;width:510px;height:510px;transform:translate(-1%,-50%) scale(.88);opacity:0;pointer-events:none;transition:opacity .65s,transform 1.15s cubic-bezier(.2,.78,.2,1)}
.surface-frame span{position:absolute;width:31px;height:31px;border-color:rgba(120,217,251,.43)}.sf-tl{left:0;top:0;border-left:1px solid;border-top:1px solid}.sf-tr{right:0;top:0;border-right:1px solid;border-top:1px solid}.sf-bl{left:0;bottom:0;border-left:1px solid;border-bottom:1px solid}.sf-br{right:0;bottom:0;border-right:1px solid;border-bottom:1px solid}.surface-frame b{position:absolute;right:0;bottom:-18px;font-size:6px;letter-spacing:.14em;color:#547888;font-weight:500}
.app[data-camera-level="z3"] .surface-frame{opacity:.72;transform:translate(-1%,-50%) scale(1)}
.app[data-camera-level="z2"] .surface-frame{opacity:.28;transform:translate(-1%,-50%) scale(.94)}
.app[data-camera-level="z3"] .module:not(.active):not(.next){opacity:.07}.app[data-camera-level="z2"] .module:not(.active):not(.next){opacity:.12}
.app[data-motion="rotate"] .globe-stage{transform:translate(-4%,-50%) scale(.96)!important}.app[data-motion="rotate"] .semantic-scenes,.app[data-motion="rotate"] .geo-surface{opacity:.08!important}.app[data-motion="rotate"] .surface-frame{opacity:0}.app[data-motion="rotate"] .camera-journey{opacity:.58;transform:translateX(-50%) translateY(-2px)}
.app[data-motion="dive"] .globe-stage{filter:drop-shadow(0 0 34px rgba(70,180,220,.18))}
/* scene-specific camera positions; longitude rotation remains inside the globe */
.app[data-scene="overview"] .globe-stage{transform:translate(-50%,-50%) scale(.92)}
.app[data-scene="platform"] .globe-stage{transform:translate(-8%,-50%) scale(1.12)}
.app[data-scene="giw"] .globe-stage{transform:translate(-3%,-50%) scale(1.20)}
.app[data-scene="geoworkbench"] .globe-stage,.app[data-scene="geointellect"] .globe-stage{transform:translate(1%,-50%) scale(1.24)}
.app[data-scene="geodecision"] .globe-stage,.app[data-scene="geoplanning"] .globe-stage{transform:translate(4%,-50%) scale(1.30)}
.app[data-scene="webgis"] .globe-stage{transform:translate(7%,-50%) scale(1.35)}
.app[data-scene="products"] .globe-stage{transform:translate(-1%,-50%) scale(1.18)}
.app[data-scene="ride"] .globe-stage{transform:translate(5%,-50%) scale(1.31)}
.app[data-scene="action"] .globe-stage{transform:translate(-50%,-50%) scale(.96)}
@media(max-width:1100px){.camera-journey{top:86px}.surface-frame{width:430px;height:430px}.app:not([data-scene="overview"]) .globe-stage{transform:translate(0,-50%) scale(1.05)!important}}

/* Stage 5F — LocationBase-style physical globe */
.earth-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:1;opacity:0;transition:opacity .65s ease;filter:saturate(.92) contrast(1.08) brightness(.93);pointer-events:none}
.earth-ready .earth-canvas{opacity:1}.earth-ready .map-strip{opacity:0!important;visibility:hidden}.earth-fallback .earth-canvas{display:none}
.globe{isolation:isolate;background:radial-gradient(circle at 38% 30%,#174e69 0,#082f45 46%,#041722 78%,#020a0f 100%);box-shadow:0 0 0 1px rgba(184,229,244,.22),0 0 32px rgba(61,170,215,.18),0 0 82px rgba(36,121,161,.12),inset -52px -28px 82px rgba(0,0,0,.34)}
.globe:after{content:"";position:absolute;inset:0;border-radius:50%;z-index:11;pointer-events:none;box-shadow:inset 12px 9px 20px rgba(210,243,255,.08),inset -48px -30px 66px rgba(0,5,10,.45),inset 0 0 0 1px rgba(189,230,244,.12)}
.earth-ready .ocean-tint{z-index:2;background:radial-gradient(circle at 32% 25%,rgba(65,165,205,.07),rgba(7,55,76,.02) 54%,rgba(1,12,18,.18) 100%);mix-blend-mode:screen}
.earth-ready .graticule{z-index:3;opacity:.07;background:repeating-radial-gradient(ellipse at center,transparent 0 39px,rgba(210,240,250,.16) 40px 41px),repeating-linear-gradient(90deg,transparent 0 67px,rgba(210,240,250,.10) 68px 69px);transition:opacity .6s ease}
.app[data-camera-level="z2"] .graticule,.app[data-camera-level="z3"] .graticule{opacity:.16}.app[data-scene="overview"] .graticule,.app[data-scene="action"] .graticule{opacity:.035}
.earth-ready .terminator{z-index:4;background:linear-gradient(90deg,rgba(0,4,8,.36) 0,rgba(0,0,0,.07) 30%,transparent 56%,rgba(0,0,0,.10) 78%,rgba(0,3,7,.28) 100%);mix-blend-mode:multiply}
.earth-ready .atmosphere{z-index:10;box-shadow:inset 10px 8px 18px rgba(232,249,255,.08),inset -34px -24px 58px rgba(0,0,0,.36)}
.location-marker{z-index:12}.surface-layer,.geo-surface,.semantic-scenes,.ride-network{z-index:7}.app[data-motion="rotate"] .location-marker{opacity:0!important}.app[data-motion="rotate"] .earth-canvas{filter:saturate(.86) contrast(1.04) brightness(.84)}
.earth-source{display:block;margin-top:7px;color:#4f6a78;font-size:7px;font-style:normal;letter-spacing:.08em;opacity:.72}
.app[data-camera-level="z3"] .earth-canvas{filter:saturate(.86) contrast(1.1) brightness(.79)}


/* Stage 5G — Globe to real local spatial surface */
.local-map-stage{position:absolute;z-index:8;left:50%;top:49%;width:min(690px,56vw);height:min(500px,64vh);opacity:0;pointer-events:none;transform:translate(7%,-50%) scale(.43);clip-path:circle(23% at 50% 50%);filter:blur(1.5px) brightness(.75);transition:opacity .7s ease,transform 1.15s cubic-bezier(.2,.8,.2,1),clip-path 1.15s cubic-bezier(.2,.8,.2,1),filter .9s}.local-map-shell{position:absolute;inset:0;overflow:hidden;border:1px solid rgba(128,205,232,.23);border-radius:18px;background:#06141d;box-shadow:0 28px 90px rgba(0,0,0,.38),0 0 45px rgba(63,169,210,.10)}.local-map-base{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.86;filter:saturate(.78) contrast(1.06) brightness(.86)}.local-map-vignette{position:absolute;inset:0;background:radial-gradient(circle at 55% 48%,transparent 20%,rgba(2,13,20,.12) 58%,rgba(1,8,13,.60) 100%),linear-gradient(180deg,rgba(5,24,34,.08),rgba(2,10,15,.30));pointer-events:none}.local-map-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(130,210,235,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(130,210,235,.035) 1px,transparent 1px);background-size:52px 52px;mix-blend-mode:screen}.local-map-head{position:absolute;left:18px;top:16px;padding:9px 11px;background:rgba(4,16,24,.74);border:1px solid rgba(130,205,230,.16);backdrop-filter:blur(8px)}.local-map-head b,.local-map-head span{display:block}.local-map-head b{font-size:9px;letter-spacing:.18em}.local-map-head span{font-size:7px;letter-spacing:.14em;color:var(--cyan);margin-top:5px}.local-map-coord{position:absolute;right:16px;top:17px;font-size:8px;letter-spacing:.12em;color:#9bb9c5;background:rgba(4,16,24,.7);padding:8px 9px;border:1px solid rgba(130,205,230,.13)}.local-map-coord i{font-style:normal;color:#5f8493;margin-left:8px}.local-crosshair{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%);border:1px solid rgba(120,217,251,.38);border-radius:50%;box-shadow:0 0 18px rgba(120,217,251,.16)}.local-crosshair i:first-child{position:absolute;left:50%;top:-16px;width:1px;height:66px;background:linear-gradient(transparent,rgba(120,217,251,.42),transparent)}.local-crosshair i:last-child{position:absolute;left:-16px;top:50%;width:66px;height:1px;background:linear-gradient(90deg,transparent,rgba(120,217,251,.42),transparent)}.local-map-source{position:absolute;right:10px;bottom:-18px;font-size:6px;letter-spacing:.08em;color:#587786}.map-overlay{position:absolute;inset:0;opacity:0;transition:opacity .55s;pointer-events:none}.domain{position:absolute;font-size:8px;letter-spacing:.13em;padding:6px 8px;background:rgba(6,25,35,.76);border:1px solid rgba(146,229,194,.38);color:#c7eee0}.domain.d1{left:26%;top:36%}.domain.d2{left:55%;top:54%}.domain.d3{left:65%;top:29%}.domain.d4{left:34%;top:65%}.layer-stack{position:absolute;right:19px;bottom:22px;width:142px;padding:10px;background:rgba(4,16,24,.79);border:1px solid rgba(120,217,251,.20)}.layer-stack span,.layer-stack b{display:block;padding:6px 7px;border-bottom:1px solid rgba(120,217,251,.09);font-size:8px;letter-spacing:.12em}.layer-stack b{color:var(--green);border-bottom:0}.pattern-ring{position:absolute;border:1px solid rgba(146,229,194,.65);border-radius:50%;box-shadow:0 0 22px rgba(146,229,194,.10)}.pattern-ring.r1{width:110px;height:110px;left:34%;top:37%}.pattern-ring.r2{width:155px;height:90px;left:48%;top:31%}.pattern-ring.r3{width:92px;height:132px;left:58%;top:52%}.ov-intellect>b{position:absolute;right:20px;bottom:23px;font-size:8px;letter-spacing:.13em;color:var(--green)}.choice{position:absolute;display:grid;place-items:center;width:47px;height:47px;border:1px solid rgba(175,210,224,.32);border-radius:50%;font-size:8px;background:rgba(5,19,28,.72)}.choice.a{left:35%;top:34%}.choice.b{left:53%;top:48%;width:82px;border-color:var(--green);color:var(--green);box-shadow:0 0 24px rgba(146,229,194,.15)}.choice.c{left:64%;top:28%}.constraint{position:absolute;left:29%;top:59%;width:36%;height:17%;display:grid;place-items:center;border:1px dashed rgba(242,202,122,.52);background:rgba(242,202,122,.045);font-size:7px;letter-spacing:.13em;color:var(--amber)}.ov-plan svg,.ov-ride svg{position:absolute;inset:0;width:100%;height:100%}.ov-plan path{fill:rgba(146,229,194,.10);stroke:rgba(146,229,194,.75);stroke-width:.24}.ov-plan span{position:absolute;font-size:8px;color:var(--green)}.ov-plan span:nth-of-type(1){left:42%;top:39%}.ov-plan span:nth-of-type(2){left:65%;top:57%}.ov-plan span:nth-of-type(3){left:36%;top:68%}.ov-webgis .asset{position:absolute;width:10px;height:10px;border-radius:50%;background:#fff;border:2px solid var(--cyan);box-shadow:0 0 12px var(--cyan)}.ov-webgis .asset.p1{left:34%;top:46%}.ov-webgis .asset.p2{left:50%;top:34%}.ov-webgis .asset.p3{left:63%;top:58%}.ov-webgis .asset.p4{left:72%;top:39%}.ops-pills{position:absolute;right:18px;bottom:21px;display:flex;gap:5px}.ops-pills span{font-size:7px;letter-spacing:.09em;padding:5px 6px;background:rgba(3,15,23,.76);border:1px solid rgba(120,217,251,.18)}.ov-ride path{fill:none;stroke:rgba(242,202,122,.70);stroke-width:.25;filter:drop-shadow(0 0 1.2px rgba(242,202,122,.65))}.ov-ride .ev{position:absolute;font-size:7px;letter-spacing:.11em;padding:5px 6px;background:rgba(23,18,9,.78);border:1px solid rgba(242,202,122,.36);color:#f2d995}.ov-ride .e1{left:22%;top:22%}.ov-ride .e2{left:38%;top:38%}.ov-ride .e3{left:53%;top:48%}.ov-ride .e4{left:69%;top:66%}.app[data-surface="approach"] .local-map-stage{opacity:.28;transform:translate(7%,-50%) scale(.66);clip-path:circle(34% at 50% 50%);filter:blur(.6px) brightness(.72)}.app[data-surface="map"] .local-map-stage{opacity:1;transform:translate(7%,-50%) scale(1);clip-path:inset(0 round 18px);filter:none}.app[data-surface="map"] .globe-stage{opacity:.10;filter:blur(2px);transform:translate(-15%,-50%) scale(1.62)!important}.app[data-surface="approach"] .globe-stage{filter:brightness(.82)}.app[data-surface="map"] .surface-frame{opacity:.13}.app[data-surface="map"] .location-marker{opacity:0!important}.app[data-scene="giw"] .ov-giw,.app[data-scene="geoworkbench"] .ov-work,.app[data-scene="geointellect"] .ov-intellect,.app[data-scene="geodecision"] .ov-decision,.app[data-scene="geoplanning"] .ov-plan,.app[data-scene="webgis"] .ov-webgis,.app[data-scene="ride"] .ov-ride{opacity:1}.app[data-surface="map"] .focus-card{background:rgba(5,17,26,.93)}@media(max-width:1100px){.local-map-stage{width:55vw;height:54vh;left:48%}.app[data-surface="map"] .local-map-stage{transform:translate(4%,-50%) scale(.92)}}


/* Stage 5H — real geographic choreography across Dubai */
.map-camera{position:absolute;inset:0;transform-origin:0 0;transform:translate(0%,0%) scale(1);will-change:transform;transition:transform 1.35s cubic-bezier(.2,.82,.2,1);z-index:0}
.map-camera .local-map-base{z-index:0}
.map-journey-trace{position:absolute;inset:0;width:100%;height:100%;z-index:2;overflow:visible;pointer-events:none}
.map-journey-trace path{fill:none;stroke:rgba(120,217,251,.34);stroke-width:.34;stroke-dasharray:1.1 1.8;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 1.4px rgba(120,217,251,.30))}
.map-journey-trace circle{vector-effect:non-scaling-stroke;stroke-width:.42;transition:r .45s,fill .45s,stroke .45s}
.map-journey-trace circle.done{fill:rgba(120,217,251,.44);stroke:rgba(185,235,250,.62)}
.map-journey-trace circle.current{fill:#f4fcff;stroke:var(--cyan);filter:drop-shadow(0 0 2px rgba(120,217,251,.9))}
.local-crosshair{transition:left 1.25s cubic-bezier(.2,.82,.2,1),top 1.25s cubic-bezier(.2,.82,.2,1),opacity .45s;z-index:7}
.active-place{position:absolute;z-index:8;left:50%;top:50%;transform:translate(22px,17px);padding:7px 9px;background:rgba(3,15,23,.87);border:1px solid rgba(120,217,251,.22);backdrop-filter:blur(9px);opacity:0;transition:left 1.25s cubic-bezier(.2,.82,.2,1),top 1.25s cubic-bezier(.2,.82,.2,1),opacity .45s;pointer-events:none;white-space:nowrap;box-shadow:0 8px 24px rgba(0,0,0,.22)}
.active-place b,.active-place span{display:block}.active-place b{font-size:9px;letter-spacing:.10em;font-weight:600;color:#edfaff}.active-place span{font-size:6px;letter-spacing:.12em;color:var(--cyan);margin-top:4px}
.app[data-surface="map"] .active-place,.app[data-surface="approach"] .active-place{opacity:1}
.local-map-head,.local-map-coord{z-index:9}.local-map-vignette,.local-map-grid{z-index:3}.map-overlay{z-index:5}
.local-map-source:before{content:"GEOGRAPHIC JOURNEY TRACE · ";color:#6f9bae}
.app[data-scene="giw"] .local-crosshair,.app[data-scene="geoworkbench"] .local-crosshair,.app[data-scene="geointellect"] .local-crosshair,.app[data-scene="geodecision"] .local-crosshair,.app[data-scene="geoplanning"] .local-crosshair,.app[data-scene="webgis"] .local-crosshair,.app[data-scene="ride"] .local-crosshair{box-shadow:0 0 23px rgba(120,217,251,.18)}
@media(max-width:1100px){.active-place{transform:translate(16px,14px);max-width:185px;white-space:normal}.active-place span{line-height:1.35}}

/* Stage 5I — cinematic handoffs & continuity */
.handoff-stage{position:absolute;z-index:12;left:50%;bottom:18px;width:min(420px,62%);transform:translate(-50%,18px);padding:9px 11px 10px;background:rgba(3,14,21,.90);border:1px solid rgba(120,217,251,.18);backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:opacity .28s ease,transform .42s cubic-bezier(.2,.8,.2,1);box-shadow:0 10px 30px rgba(0,0,0,.24)}
.handoff-stage.run{opacity:1;transform:translate(-50%,0)}
.handoff-kicker{font-size:6px;letter-spacing:.20em;color:#678b9a;margin-bottom:7px}
.handoff-flow{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px}.handoff-flow>span{font-size:7px;letter-spacing:.12em;color:#91afbc;white-space:nowrap}.handoff-flow>span:last-child{color:#dff7ff}
.handoff-track{position:relative;height:20px;border-top:1px solid rgba(120,217,251,.18);margin-top:10px}.handoff-track:before,.handoff-track:after{content:"";position:absolute;top:-3px;width:5px;height:5px;border-radius:50%;background:#5d8392}.handoff-track:before{left:0}.handoff-track:after{right:0;background:var(--cyan);box-shadow:0 0 8px rgba(120,217,251,.7)}
.handoff-track i{position:absolute;left:0;top:-1px;height:1px;width:0;background:linear-gradient(90deg,var(--green),var(--cyan));box-shadow:0 0 10px rgba(120,217,251,.35)}
.handoff-track b{position:absolute;left:0;top:-11px;transform:translateX(-5%);font-size:6px;letter-spacing:.12em;font-weight:600;color:#dff8ff;background:rgba(6,24,33,.94);border:1px solid rgba(146,229,194,.28);padding:4px 6px;white-space:nowrap;box-shadow:0 5px 14px rgba(0,0,0,.20)}
.handoff-stage.run .handoff-track i{animation:handoff-line 1.15s cubic-bezier(.2,.8,.2,1) forwards}.handoff-stage.run .handoff-track b{animation:handoff-token 1.15s cubic-bezier(.2,.8,.2,1) forwards}
.handoff-note{font-size:6px;letter-spacing:.07em;color:#668391;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@keyframes handoff-line{0%{width:0}100%{width:100%}}@keyframes handoff-token{0%{left:0;transform:translateX(-5%);opacity:.25}15%{opacity:1}85%{opacity:1}100%{left:100%;transform:translateX(-95%);opacity:.9}}
.app[data-handoff="active"][data-handoff-from="giw"] .ov-giw{opacity:.18!important}.app[data-handoff="active"][data-handoff-from="geoworkbench"] .ov-work{opacity:.18!important}.app[data-handoff="active"][data-handoff-from="geointellect"] .ov-intellect{opacity:.16!important}.app[data-handoff="active"][data-handoff-from="geodecision"] .ov-decision{opacity:.16!important}.app[data-handoff="active"][data-handoff-from="geoplanning"] .ov-plan{opacity:.16!important}.app[data-handoff="active"][data-handoff-from="webgis"] .ov-webgis{opacity:.16!important}
.app[data-handoff="active"] .local-map-grid{opacity:.75}.app[data-handoff="active"] .active-place{opacity:.72}.app[data-handoff="active"] .local-crosshair{opacity:.72}
@media(max-width:1100px){.handoff-stage{width:min(360px,70%);bottom:14px}.handoff-note{display:none}.handoff-flow{gap:6px}.handoff-flow>span{font-size:6px}}

/* Stage 5J — executive presentation timing & visual hierarchy */
.journey-meter{position:absolute;z-index:31;left:50%;bottom:72px;width:min(440px,48vw);transform:translateX(-50%);display:grid;grid-template-columns:58px 1fr 78px;align-items:center;gap:9px;opacity:.18;transition:opacity .45s ease,transform .45s ease;pointer-events:none}
.journey-meter>span,.journey-meter>em{font-size:7px;letter-spacing:.14em;color:#668493;font-style:normal;white-space:nowrap}.journey-meter>em{text-align:right;color:#789bab}.journey-meter>i{position:relative;display:block;height:1px;background:rgba(120,217,251,.12);overflow:visible}.journey-meter>i b{position:absolute;left:0;top:-1px;height:2px;width:0;background:linear-gradient(90deg,rgba(146,229,194,.72),var(--cyan));box-shadow:0 0 9px rgba(120,217,251,.25);transition:width .7s cubic-bezier(.2,.8,.2,1)}
.app[data-presenter="true"] .journey-meter{opacity:.9;transform:translateX(-50%) translateY(-2px)}
.controls #fullscreenBtn{padding-left:13px;padding-right:13px;color:#a6c4d1}
.focus-card .focus-kicker,.focus-card h1,.focus-card p,.focus-card .result,.focus-card .next{transition:opacity .48s ease,transform .58s cubic-bezier(.2,.8,.2,1)}
.app[data-phase="travel"] .focus-card{opacity:.16;transform:translateY(7px)}
.app[data-phase="travel"] .focus-card .focus-kicker,.app[data-phase="travel"] .focus-card h1,.app[data-phase="travel"] .focus-card p,.app[data-phase="travel"] .focus-card .result,.app[data-phase="travel"] .focus-card .next{opacity:0;transform:translateY(7px)}
.app[data-phase="arrive"] .focus-card{opacity:.94;transform:translateY(0)}
.app[data-phase="arrive"] .focus-card .focus-kicker,.app[data-phase="arrive"] .focus-card h1{opacity:1;transform:translateY(0)}
.app[data-phase="arrive"] .focus-card p,.app[data-phase="arrive"] .focus-card .result,.app[data-phase="arrive"] .focus-card .next{opacity:0;transform:translateY(8px)}
.app[data-phase="explain"] .focus-card,.app[data-phase="outcome"] .focus-card,.app[data-phase="ready"] .focus-card{opacity:1;transform:translateY(0)}
.app[data-phase="explain"] .focus-card .focus-kicker,.app[data-phase="explain"] .focus-card h1,.app[data-phase="explain"] .focus-card p,.app[data-phase="outcome"] .focus-card .focus-kicker,.app[data-phase="outcome"] .focus-card h1,.app[data-phase="outcome"] .focus-card p,.app[data-phase="ready"] .focus-card .focus-kicker,.app[data-phase="ready"] .focus-card h1,.app[data-phase="ready"] .focus-card p{opacity:1;transform:translateY(0)}
.app[data-phase="explain"] .focus-card .result,.app[data-phase="explain"] .focus-card .next{opacity:0;transform:translateY(8px)}
.app[data-phase="outcome"] .focus-card .result,.app[data-phase="ready"] .focus-card .result{opacity:1;transform:translateY(0)}
.app[data-phase="outcome"] .focus-card .next{opacity:0;transform:translateY(8px)}
.app[data-phase="ready"] .focus-card .next{opacity:1;transform:translateY(0)}
.app[data-phase="outcome"] .result b,.app[data-phase="ready"] .result b{color:#dff9ef;text-shadow:0 0 11px rgba(146,229,194,.12)}
.app[data-presenter="true"] .hint{opacity:0;pointer-events:none}
.app[data-presenter="true"] .storybar{opacity:.26;transition:opacity .35s ease}.app[data-presenter="true"] .storybar:hover{opacity:.94}
.app[data-presenter="true"] .storybar button:not(.active){color:#49616e}.app[data-presenter="true"] .storybar button.active{color:#e7f8fd;background:rgba(120,217,251,.11)}
.app[data-presenter="true"] .module:not(.active):not(.next){opacity:.045}.app[data-presenter="true"] .module.next{opacity:.27}
.app[data-presenter="true"] .links path:not(.active):not(.next){opacity:.018}.app[data-presenter="true"] .camera-journey{opacity:.52}.app[data-presenter="true"] .chain{opacity:.42}
.app[data-presenter="true"][data-phase="travel"] .module.next{opacity:.12}.app[data-presenter="true"][data-phase="travel"] .module.active{opacity:.72}
.app[data-presenter="true"][data-phase="arrive"] .module.active,.app[data-presenter="true"][data-phase="explain"] .module.active,.app[data-presenter="true"][data-phase="outcome"] .module.active,.app[data-presenter="true"][data-phase="ready"] .module.active{opacity:1}
.app[data-presenter="true"][data-phase="ready"] .module.next{opacity:.42}
@media(min-width:1500px){.focus-card{width:430px}.focus-card h1{font-size:35px}.focus-card p{font-size:13.5px;line-height:1.65}.journey-meter{width:480px}}
@media(max-width:1100px){.journey-meter{width:46vw;grid-template-columns:46px 1fr 60px;bottom:66px}.journey-meter>span,.journey-meter>em{font-size:6px}.controls #fullscreenBtn{display:none}}


/* Stage 5K — executive final polish & large-screen composition */
:root{--exec-ease:cubic-bezier(.16,.84,.22,1);--exec-ease-soft:cubic-bezier(.22,.72,.24,1)}
.app:before{content:"";position:absolute;inset:0;z-index:40;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(171,224,243,.025),inset 0 0 180px rgba(0,0,0,.20)}
.app:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(1,8,12,.20),transparent 18%,transparent 78%,rgba(1,7,11,.24));opacity:.9}
.viewport,.topbar,.storybar,.hint{z-index:2}.topbar{z-index:35}.storybar{z-index:35}.hint{z-index:25}
.field{opacity:.58;background-size:96px 96px}
.topbar{left:clamp(28px,2.2vw,64px);right:clamp(28px,2.2vw,64px);top:clamp(24px,2.2vh,48px)}
.brand>span{border-radius:2px;background:linear-gradient(145deg,rgba(120,217,251,.055),rgba(120,217,251,.012));box-shadow:0 8px 28px rgba(0,0,0,.18)}
.brand b{letter-spacing:.015em}.brand small{letter-spacing:.04em}
.controls button{border-radius:2px;transition:background .25s,border-color .25s,color .25s,opacity .25s}.controls button:hover{background:rgba(50,127,159,.16);border-color:rgba(120,217,251,.34)}
.controls .primary{box-shadow:0 8px 28px rgba(0,0,0,.12),inset 0 0 24px rgba(120,217,251,.025)}
.module{transition:opacity .65s var(--exec-ease-soft),transform .8s var(--exec-ease),filter .55s,background .25s}.module b{letter-spacing:-.018em}.module small{letter-spacing:.025em}
.module.active{filter:drop-shadow(0 0 18px rgba(120,217,251,.16))}
.globe-stage{transition:transform 1.3s var(--exec-ease),left 1.3s var(--exec-ease),top 1.3s var(--exec-ease),filter .7s,opacity .7s}
.globe{transition:width 1.15s var(--exec-ease),height 1.15s var(--exec-ease),transform 1.15s var(--exec-ease);box-shadow:0 0 0 1px rgba(184,229,244,.20),0 0 44px rgba(61,170,215,.20),0 0 110px rgba(36,121,161,.11),inset -52px -28px 82px rgba(0,0,0,.34)}
.glow{opacity:.72;filter:blur(68px)}
.focus-card{border-radius:3px;background:linear-gradient(145deg,rgba(5,18,27,.93),rgba(4,14,22,.86));box-shadow:0 24px 80px rgba(0,0,0,.22);border-color:rgba(143,207,232,.13);transition:opacity .6s,transform .8s var(--exec-ease)}
.focus-card h1{max-width:13ch;text-wrap:balance}.focus-card p{max-width:48ch}.focus-kicker{font-weight:650}.result b{font-weight:610}.next b{font-weight:500}
.camera-journey{border-radius:2px;background:rgba(3,14,21,.44);box-shadow:0 10px 36px rgba(0,0,0,.12)}
.zoom-depth{border-radius:2px;background:rgba(3,15,23,.50)}
.local-map-shell{border-radius:12px;border-color:rgba(144,213,236,.18);box-shadow:0 35px 110px rgba(0,0,0,.42),0 0 52px rgba(63,169,210,.08)}
.local-map-head,.local-map-coord{border-radius:2px;background:rgba(3,15,23,.79)}
.local-map-grid{opacity:.65}
.active-place{border-radius:2px}
.storybar{border-radius:2px;background:rgba(3,12,18,.74);backdrop-filter:blur(12px);box-shadow:0 14px 46px rgba(0,0,0,.18)}
.storybar button{transition:color .25s,background .25s}.storybar button.active{box-shadow:inset 0 -1px 0 rgba(120,217,251,.48)}
.hint{opacity:.34;transition:opacity .3s}.hint:hover{opacity:.8}
.journey-meter>i b{box-shadow:0 0 14px rgba(120,217,251,.31)}
.transition{font-weight:650;text-shadow:0 0 15px rgba(120,217,251,.24)}
.chain{letter-spacing:.02em}
.closing-lockup{position:absolute;z-index:21;left:50%;top:18%;transform:translate(-50%,12px);text-align:center;opacity:0;pointer-events:none;transition:opacity .8s var(--exec-ease),transform .9s var(--exec-ease);white-space:nowrap}
.closing-lockup b,.closing-lockup span,.closing-lockup i{display:block}
.closing-lockup b{font-size:clamp(26px,2.25vw,46px);font-weight:540;letter-spacing:-.035em;color:#f1fbff;text-shadow:0 12px 42px rgba(0,0,0,.35)}
.closing-lockup span{margin-top:8px;font-size:clamp(9px,.72vw,14px);letter-spacing:.11em;text-transform:uppercase;color:#a9cad8}
.closing-lockup i{margin-top:12px;font-style:normal;font-size:clamp(6px,.48vw,9px);letter-spacing:.18em;color:#587887}
.app[data-scene="action"][data-phase="outcome"] .closing-lockup,.app[data-scene="action"][data-phase="ready"] .closing-lockup{opacity:1;transform:translate(-50%,0)}
.app[data-scene="action"][data-phase="outcome"] .focus-card,.app[data-scene="action"][data-phase="ready"] .focus-card{opacity:.76}
.app[data-scene="action"][data-phase="ready"] .camera-journey,.app[data-scene="action"][data-phase="ready"] .zoom-depth{opacity:.18}
.app[data-scene="action"][data-phase="ready"] .topbar .controls{opacity:.28}
.app[data-scene="action"][data-phase="ready"] .journey-meter{opacity:.46}
.app[data-scene="action"][data-phase="ready"] .module{opacity:.40}.app[data-scene="action"][data-phase="ready"] .module:hover{opacity:.72}
.app[data-scene="overview"][data-phase="arrive"] .globe-stage,.app[data-scene="overview"][data-phase="explain"] .globe-stage,.app[data-scene="overview"][data-phase="outcome"] .globe-stage,.app[data-scene="overview"][data-phase="ready"] .globe-stage{filter:drop-shadow(0 0 34px rgba(90,196,235,.10))}
.app[data-presenter="true"] .topbar{opacity:.82;transition:opacity .45s}.app[data-presenter="true"] .topbar:hover{opacity:1}
.app[data-presenter="true"] .brand small{opacity:.58}
.app[data-presenter="true"] .controls button:not(.primary){background:rgba(4,14,20,.38)}
.app[data-presenter="true"][data-phase="travel"] .camera-journey{opacity:.30}.app[data-presenter="true"][data-phase="travel"] .chain{opacity:.20}
.app[data-presenter="true"][data-phase="ready"] .chain{opacity:.68}

/* 16:9 presentation scaling — retain proportions instead of leaving UI tiny on large displays */
@media(min-width:1800px) and (min-height:900px){
  .topbar{left:46px;right:46px;top:34px}.brand>span{width:56px;height:56px;font-size:13px}.brand b{font-size:17px}.brand small{font-size:11px}.controls{gap:12px}.controls button{padding:11px 18px;font-size:13px}.mode{font-size:12px}
  .module{min-width:230px;padding:14px 16px 14px 28px}.module b{font-size:23px}.module small{font-size:12px}.m-platform{top:108px}.m-giw,.m-gdpi{top:205px}.m-ride,.m-webgis{bottom:175px}.m-products{bottom:88px}
  .globe-stage{width:530px;height:590px}.globe{--d:420px}.glow{width:440px;height:440px}.earth-caption{top:486px}.earth-caption b{font-size:13px}.earth-caption span{font-size:12px}
  .focus-card{left:3.4%;top:29%;width:480px;padding:28px 30px}.focus-card h1{font-size:40px}.focus-card p{font-size:15px;line-height:1.68}.focus-kicker{font-size:10px}.result b,.next b{font-size:13px}
  .local-map-stage{width:min(820px,54vw);height:min(590px,64vh)}.local-map-head b{font-size:10px}.local-map-head span{font-size:8px}.local-map-coord{font-size:9px}.active-place b{font-size:10px}.active-place span{font-size:7px}
  .camera-journey{top:105px;padding:7px 12px}.camera-journey span{font-size:8px}.zoom-depth{font-size:8px;padding:6px 9px}.transition{font-size:11px}
  .chain{bottom:142px;font-size:11px;gap:11px}.storybar{bottom:29px}.storybar button{padding:10px 12px;font-size:10px}.hint{bottom:84px;font-size:10px}.journey-meter{bottom:84px;width:520px;grid-template-columns:68px 1fr 92px}.journey-meter>span,.journey-meter>em{font-size:8px}
}
@media(min-width:2800px) and (min-height:1500px){
  .topbar{left:72px;right:72px;top:54px}.brand>span{width:76px;height:76px;font-size:18px}.brand b{font-size:24px}.brand small{font-size:15px;margin-top:5px}.controls{gap:16px}.controls button{padding:15px 24px;font-size:17px}.mode{font-size:16px}.mode i{width:9px;height:9px}
  .module{min-width:310px;padding:18px 20px 18px 36px;border-left-color:rgba(120,217,251,.23)}.module b{font-size:30px}.module small{font-size:16px;margin-top:7px}.module:before{top:25px;width:11px;height:11px;left:-6px}.m-platform{top:155px}.m-giw,.m-gdpi{top:292px}.m-ride,.m-webgis{bottom:245px}.m-products{bottom:122px}
  .globe-stage{width:700px;height:780px}.globe{--d:560px}.glow{width:590px;height:590px;filter:blur(94px)}.earth-caption{top:646px}.earth-caption b{font-size:18px}.earth-caption span{font-size:16px}.earth-caption small{font-size:12px}.earth-source{font-size:9px!important}
  .focus-card{left:4%;top:29%;width:620px;padding:38px 42px}.focus-card h1{font-size:52px;margin-bottom:19px}.focus-card p{font-size:19px;line-height:1.7}.focus-kicker{font-size:13px;margin-bottom:15px}.result,.next{margin-top:22px;padding-top:18px}.result span,.next span{font-size:11px}.result b,.next b{font-size:17px;margin-top:8px}
  .local-map-stage{width:min(1080px,54vw);height:min(780px,64vh)}.local-map-head{left:27px;top:24px;padding:13px 16px}.local-map-head b{font-size:13px}.local-map-head span{font-size:10px}.local-map-coord{right:24px;top:25px;font-size:12px;padding:11px 13px}.active-place{padding:10px 12px}.active-place b{font-size:13px}.active-place span{font-size:9px}.local-map-source{font-size:8px;bottom:-24px}
  .camera-journey{top:146px;padding:10px 16px;gap:12px}.camera-journey span{font-size:11px}.camera-journey i{font-size:13px}.zoom-depth{top:26px;font-size:10px;padding:8px 12px}.transition{font-size:14px;top:21%}.surface-frame{width:720px;height:720px}.surface-frame b{font-size:9px;bottom:-25px}
  .chain{bottom:194px;font-size:15px;gap:14px}.storybar{bottom:42px}.storybar button{padding:14px 17px;font-size:13px}.hint{right:52px;bottom:116px;font-size:12px}.journey-meter{bottom:118px;width:700px;grid-template-columns:90px 1fr 125px;gap:14px}.journey-meter>span,.journey-meter>em{font-size:11px}.journey-meter>i b{height:3px}
  .handoff-stage{width:min(570px,62%);padding:13px 16px 14px}.handoff-kicker{font-size:9px}.handoff-flow>span{font-size:10px}.handoff-track b{font-size:9px}.handoff-note{font-size:9px}
}
@media(max-aspect-ratio:4/3){.focus-card{top:24%}.module{min-width:170px}.m-giw{left:5%}.m-gdpi{right:4%}.m-ride{left:5%}.m-webgis{right:4%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}


/* Stage 5L — executive delivery hardening */
.presentation-gate{position:absolute;inset:0;z-index:100;display:grid;place-items:center;background:radial-gradient(circle at 50% 44%,rgba(18,55,72,.94),rgba(3,10,15,.985) 58%,#02070a 100%);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .55s ease,visibility .55s}
html[data-present="1"] .presentation-gate,.app[data-delivery="present"][data-launch="gate"] .presentation-gate{opacity:1;visibility:visible;pointer-events:auto}
.app[data-delivery="present"][data-launch="active"] .presentation-gate{opacity:0;visibility:hidden;pointer-events:none}
.presentation-gate-card{width:min(620px,78vw);text-align:center;padding:44px 48px;border:1px solid rgba(120,217,251,.18);background:rgba(4,16,23,.72);backdrop-filter:blur(18px);box-shadow:0 32px 120px rgba(0,0,0,.42)}
.presentation-gate-card>span{font-size:9px;letter-spacing:.28em;color:var(--cyan)}
.presentation-gate-card h1{font-size:clamp(32px,3.25vw,58px);line-height:1.02;letter-spacing:-.045em;font-weight:510;margin:18px 0 17px}
.presentation-gate-card p{font-size:11px;letter-spacing:.08em;color:#86a6b4;margin:0 0 28px}
.presentation-gate-card button{border:1px solid rgba(120,217,251,.52);background:rgba(34,116,150,.22);color:#eefaff;padding:13px 22px;font-size:11px;letter-spacing:.1em;cursor:pointer;transition:background .25s,border-color .25s,transform .25s}
.presentation-gate-card button:hover{background:rgba(42,139,178,.31);border-color:rgba(120,217,251,.78);transform:translateY(-1px)}
.presentation-gate-card button:disabled{opacity:.55;cursor:wait}
.presentation-gate-card small{display:block;margin-top:15px;color:#597987;font-size:8px;letter-spacing:.12em}
.app[data-delivery="present"][data-launch="active"] .controls,.app[data-delivery="present"][data-launch="active"] .hint{opacity:0!important;pointer-events:none!important}
.app[data-delivery="present"][data-launch="active"] .storybar{opacity:.08!important;transition:opacity .3s}.app[data-delivery="present"][data-launch="active"] .storybar:hover{opacity:.84!important}
.app[data-delivery="present"] .brand{pointer-events:none}.app[data-delivery="present"][data-launch="active"] .brand small{opacity:.48}
.local-map-fallback .local-map-base{display:none}.local-map-fallback .local-map-shell{background:radial-gradient(circle at 54% 44%,rgba(24,77,97,.32),rgba(4,18,26,.96) 70%),repeating-linear-gradient(0deg,transparent 0 44px,rgba(120,217,251,.045) 45px 46px),repeating-linear-gradient(90deg,transparent 0 44px,rgba(120,217,251,.045) 45px 46px)}
.local-map-fallback .local-map-shell:before{content:"DUBAI · RESILIENT LOCAL MAP FALLBACK";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;font-size:8px;letter-spacing:.16em;color:#6f99aa;white-space:nowrap}
@media(max-width:900px){.presentation-gate-card{padding:34px 28px;width:min(600px,88vw)}.presentation-gate-card p{line-height:1.6}}


/* Stage 6A — right-side module rail & readability refactor
   Keep: left narrative panel, globe/map choreography, scene semantics.
   Change: consolidate module navigation into one ordered right-side rail. */
.modules{position:absolute;inset:0;z-index:10;pointer-events:none}
.module{pointer-events:auto;left:auto!important;right:3.1vw!important;bottom:auto!important;width:clamp(250px,17vw,350px);min-width:0!important;padding:14px 16px 14px 27px!important;border-left:1px solid rgba(120,217,251,.30);background:linear-gradient(90deg,rgba(8,29,40,.20),rgba(4,15,22,.02));transform:none!important;opacity:.34}
.module b{font-size:25px!important;line-height:1.02;font-weight:590;letter-spacing:-.025em!important}
.module small{font-size:12px!important;line-height:1.25;margin-top:6px!important;letter-spacing:.025em;color:#87a5b4}
.module:before{top:18px!important}
.module.active{opacity:1!important;transform:translateX(-13px) scale(1.035)!important;background:linear-gradient(90deg,rgba(30,103,135,.20),rgba(6,24,34,.035));border-left-color:rgba(120,217,251,.80);filter:drop-shadow(0 0 18px rgba(120,217,251,.18))}
.module.active b{color:#f5fcff;text-shadow:0 0 13px rgba(120,217,251,.20)}
.module.active small{color:#a9cbd8}
.module.next{opacity:.58!important}
.module:hover{opacity:.9;background:linear-gradient(90deg,rgba(34,105,132,.16),rgba(6,24,34,.03))}
.m-platform{top:15.5%!important}.m-giw{top:26.7%!important}.m-gdpi{top:37.9%!important}.m-webgis{top:49.1%!important}.m-products{top:60.3%!important}.m-ride{top:71.5%!important}
.app[data-presenter="true"] .module:not(.active):not(.next){opacity:.24!important}
.app[data-presenter="true"] .module.next{opacity:.52!important}
.app[data-presenter="true"][data-phase="travel"] .module.next{opacity:.32!important}
.app[data-presenter="true"][data-phase="travel"] .module.active{opacity:.82!important}
.app[data-presenter="true"][data-phase="ready"] .module.next{opacity:.58!important}
.app[data-scene="action"][data-phase="ready"] .module{opacity:.38!important}
.app[data-surface="approach"] .local-map-stage{transform:translate(-2%,-50%) scale(.66)}
.app[data-surface="map"] .local-map-stage{transform:translate(-3%,-50%) scale(1)}
.links path{stroke:rgba(120,217,251,.07)}
.links path.active{stroke:rgba(120,217,251,.42)}
.links path.next{stroke:rgba(120,217,251,.16)}
@media(min-width:1800px) and (min-height:900px){
  .module{right:3.0vw!important;width:clamp(300px,17vw,390px);padding:16px 18px 16px 31px!important}
  .module b{font-size:30px!important}.module small{font-size:14px!important;margin-top:7px!important}.module:before{top:21px!important}
  .module.active{transform:translateX(-16px) scale(1.04)!important}
}
@media(min-width:2800px) and (min-height:1500px){
  .module{right:2.7vw!important;width:410px;padding:20px 22px 20px 38px!important}
  .module b{font-size:38px!important}.module small{font-size:18px!important;margin-top:9px!important}.module:before{top:27px!important;width:12px!important;height:12px!important;left:-7px!important}
  .module.active{transform:translateX(-20px) scale(1.045)!important}
  .app[data-surface="approach"] .local-map-stage{transform:translate(-4%,-50%) scale(.66)}
  .app[data-surface="map"] .local-map-stage{transform:translate(-5%,-50%) scale(1)}
}
@media(max-width:1100px){
  .module{right:1.4vw!important;width:205px;padding:10px 11px 10px 22px!important}
  .module b{font-size:19px!important}.module small{font-size:10px!important;margin-top:4px!important}
  .m-platform{top:15%!important}.m-giw{top:26%!important}.m-gdpi{top:37%!important}.m-webgis{top:48%!important}.m-products{top:59%!important}.m-ride{top:70%!important}
  .app[data-surface="map"] .local-map-stage{transform:translate(-8%,-50%) scale(.90)!important}
}


/* Stage 6B — main visual left shift & right-rail clearance
   Goal: preserve the Stage 6A hierarchy while creating a clean visual gutter. */
.globe-stage{left:47.2%}
.local-map-stage{left:47%}
.module{right:2.4vw!important;width:clamp(230px,15vw,310px)}
.module.active{transform:translateX(-8px) scale(1.03)!important}
.app[data-presenter="true"] .module:not(.active):not(.next){opacity:.18!important}
.app[data-presenter="true"] .module.next{opacity:.44!important}
.app[data-presenter="true"][data-phase="travel"] .module.next{opacity:.24!important}
.app[data-surface="approach"] .local-map-stage{transform:translate(-18%,-50%) scale(.66)}
.app[data-surface="map"] .local-map-stage{transform:translate(-20%,-50%) scale(1)}
@media(min-width:1800px) and (min-height:900px){
  .module{right:2.4vw!important;width:clamp(270px,15vw,340px)}
  .module.active{transform:translateX(-10px) scale(1.035)!important}
  .app[data-surface="approach"] .local-map-stage{transform:translate(-18%,-50%) scale(.66)}
  .app[data-surface="map"] .local-map-stage{transform:translate(-20%,-50%) scale(1)}
}
@media(min-width:2800px) and (min-height:1500px){
  .globe-stage{left:47%}
  .local-map-stage{left:47%}
  .module{right:2.2vw!important;width:370px}
  .module.active{transform:translateX(-12px) scale(1.035)!important}
  .app[data-surface="approach"] .local-map-stage{transform:translate(-18%,-50%) scale(.66)}
  .app[data-surface="map"] .local-map-stage{transform:translate(-20%,-50%) scale(1)}
}
@media(max-width:1100px){
  .globe-stage{left:48%}
  .local-map-stage{left:46%}
  .module{right:1.2vw!important;width:190px}
  .app[data-surface="map"] .local-map-stage{transform:translate(-18%,-50%) scale(.88)!important}
}

/* Stage 6C — stable globe anchor
   Keep the Earth on one horizontal anchor; vary only scale/opacity during the journey. */
.app[data-scene="overview"] .globe-stage{transform:translate(-50%,-50%) scale(.92)!important}
.app[data-scene="platform"] .globe-stage{transform:translate(-50%,-50%) scale(1.12)!important}
.app[data-scene="giw"] .globe-stage{transform:translate(-50%,-50%) scale(1.20)!important}
.app[data-scene="geoworkbench"] .globe-stage,.app[data-scene="geointellect"] .globe-stage{transform:translate(-50%,-50%) scale(1.24)!important}
.app[data-scene="geodecision"] .globe-stage,.app[data-scene="geoplanning"] .globe-stage{transform:translate(-50%,-50%) scale(1.30)!important}
.app[data-scene="webgis"] .globe-stage{transform:translate(-50%,-50%) scale(1.35)!important}
.app[data-scene="products"] .globe-stage{transform:translate(-50%,-50%) scale(1.18)!important}
.app[data-scene="ride"] .globe-stage{transform:translate(-50%,-50%) scale(1.31)!important}
.app[data-scene="action"] .globe-stage{transform:translate(-50%,-50%) scale(.96)!important}
.app[data-motion="rotate"] .globe-stage{transform:translate(-50%,-50%) scale(.96)!important}
.app[data-surface="map"] .globe-stage{transform:translate(-50%,-50%) scale(1.62)!important}
@media(max-width:1100px){.app:not([data-scene="overview"]):not([data-surface="map"]) .globe-stage{transform:translate(-50%,-50%) scale(1.05)!important}}
