:root{
  --navy:#052f59;--navy2:#0a467d;--blue:#0b6fff;--cyan:#00c9c3;--coral:#ff5d6c;
  --yellow:#ffbe3b;--violet:#7450ef;--green:#20c978;--ink:#0b315e;--muted:#66809d;--white:#fff;
  --panel:rgba(255,255,255,.955);--line:#dce9f5;--shadow:0 18px 48px rgba(5,47,89,.22);
}
*{box-sizing:border-box}html,body,#cesiumContainer{width:100%;height:100%;margin:0;overflow:hidden}body{font-family:Nunito,system-ui,sans-serif;color:var(--ink);background:#c8f2f4}button,input{font:inherit}button{cursor:pointer}
#cesiumContainer{position:fixed;inset:0}.mapTint{position:fixed;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,185,208,.08),transparent 24%,transparent 75%,rgba(3,50,90,.12));mix-blend-mode:soft-light}
.cardShell{background:var(--panel);border:1px solid rgba(145,190,224,.46);box-shadow:var(--shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.topbar{position:fixed;z-index:20;left:24px;right:24px;top:20px;display:grid;grid-template-columns:320px minmax(320px,720px) 190px;gap:20px;align-items:center;pointer-events:none}.topbar>*{pointer-events:auto}
.brand{text-decoration:none;color:white;display:flex;align-items:center;gap:12px;text-shadow:0 2px 12px rgba(0,0,0,.34)}.brandPin{width:62px;height:72px;border-radius:34px 34px 42px 42px;background:linear-gradient(160deg,#04d0c5,#0868dc);border:5px solid white;display:grid;place-items:center;box-shadow:0 10px 28px rgba(0,0,0,.23);transform:rotate(45deg)}.brandPin span{transform:rotate(-45deg);font-family:Montserrat;font-weight:800;font-size:12px}.brandText b{font:800 30px Montserrat,sans-serif;letter-spacing:-1.5px}.brandText b span{color:#17e2dd}.brandText small{display:block;font-size:13px;margin-top:2px;letter-spacing:.3px}
.searchBar{height:56px;background:white;border-radius:30px;display:flex;align-items:center;box-shadow:0 12px 34px rgba(4,53,97,.23);padding:5px 6px 5px 18px;border:1px solid #d8e9f7}.searchIcon{font-size:22px;color:#295e96}.searchBar input{border:0;outline:0;flex:1;padding:0 12px;font-size:15px;color:#17426c;background:transparent}.searchBar input::placeholder{color:#7b94ad}.searchBar button{width:46px;height:46px;border:0;border-radius:50%;background:linear-gradient(145deg,#0d78ff,#005fe7);color:white;font-size:21px;box-shadow:0 7px 18px rgba(11,111,255,.3)}
.viewSwitch{justify-self:end;background:white;border-radius:28px;padding:5px;box-shadow:var(--shadow);display:flex;gap:3px}.viewSwitch button{border:0;border-radius:21px;padding:10px 17px;background:transparent;color:#315c89;font-weight:800}.viewSwitch button.active{background:linear-gradient(135deg,#0f76ff,#0a62ee);color:white;box-shadow:0 6px 14px rgba(14,108,243,.24)}
.mainMenu{position:fixed;z-index:15;left:24px;top:120px;width:205px;border-radius:19px;padding:7px}.menuItem{width:100%;height:50px;border:0;background:transparent;border-radius:13px;display:flex;align-items:center;gap:12px;padding:0 13px;color:#123d6a;font-weight:800;position:relative}.menuItem:hover,.menuItem.active{background:linear-gradient(135deg,#126eff,#06a8ff);color:white;box-shadow:0 8px 18px rgba(10,111,240,.2)}.menuIcon{font-size:21px;width:24px;text-align:center}.menuItem em{margin-left:auto;font-size:9px;font-style:normal;background:#eef5fc;color:#6c83a0;padding:3px 6px;border-radius:8px}.menuItem.active em{background:rgba(255,255,255,.22);color:white}
.discoverPanel{position:fixed;z-index:15;right:24px;top:120px;width:315px;border-radius:21px;padding:16px 16px 14px}.panelHeading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.panelHeading.compact{align-items:center}.eyebrow{font:800 10px Montserrat,sans-serif;color:var(--cyan);letter-spacing:1.5px}.panelHeading h2,.panelHeading h3{margin:2px 0 0;font-family:Montserrat,sans-serif;color:#0b3c70}.panelHeading h2{font-size:18px;line-height:1.25}.panelHeading h3{font-size:16px}.ghostRound{border:0;width:30px;height:30px;border-radius:50%;background:#eff6fb;color:#3d648c;font-size:18px}
.categoryList{display:grid;gap:5px}.categoryList button{height:39px;border:0;border-radius:11px;background:#f7fbff;color:#234f7b;display:grid;grid-template-columns:28px 1fr 20px;align-items:center;text-align:left;padding:0 10px;font-weight:700;transition:.16s}.categoryList button:hover,.categoryList button.active{background:linear-gradient(90deg,#eef8ff,#f7fbff);color:#075fd4;transform:translateX(2px)}.categoryList i{font-style:normal;font-size:16px}.categoryList b{text-align:right;color:#7b9ab8}.filterRow{display:flex;justify-content:space-between;font-size:12px;margin:13px 2px 6px;color:#68829b}.filterRow strong{color:#174f87}input[type=range]{width:100%;accent-color:var(--blue)}.ctaButton{width:100%;height:42px;border:0;border-radius:13px;background:linear-gradient(135deg,#10c9bc,#0ab6d4);color:white;font-weight:800;margin-top:9px;box-shadow:0 9px 20px rgba(11,190,194,.25)}
.resultsPanel{position:fixed;z-index:14;right:24px;top:554px;width:315px;max-height:calc(100vh - 690px);min-height:155px;border-radius:21px;padding:14px;display:flex;flex-direction:column}.countBadge{min-width:30px;height:30px;padding:0 8px;border-radius:15px;background:#ecf5ff;color:#0c6ce8;display:grid;place-items:center;font-weight:800}.resultsList{overflow:auto;padding-right:3px}.placeCard{border:1px solid #e4eef7;background:white;border-radius:15px;padding:11px 10px;margin-bottom:8px;display:grid;grid-template-columns:1fr auto;gap:8px;cursor:pointer;transition:.18s}.placeCard:hover{transform:translateY(-2px);box-shadow:0 9px 18px rgba(7,79,143,.12);border-color:#cfe4f7}.placeCard strong{font-size:13px;color:#123f6f}.placeCard span{display:block;font-size:11px;color:#7b8fa5;line-height:1.3;margin-top:3px}.placeMeta{color:#f49a00!important;font-weight:800}.favMini{align-self:center;border:0;background:#f3f8fc;color:#ff5366;width:31px;height:31px;border-radius:50%;font-size:17px}.empty{font-size:12px;color:#7d93a9;padding:8px 2px;line-height:1.45}.favoritesPanel{position:fixed;z-index:30;left:245px;top:120px;width:340px;max-height:520px;border-radius:20px;padding:15px}.hidden{display:none!important}
.floatingTools{position:fixed;z-index:15;right:360px;top:126px;display:grid;gap:12px}.floatingTools button{width:50px;height:50px;border:0;border-radius:50%;background:white;color:#174b7d;box-shadow:var(--shadow);font-size:20px;font-weight:800;transition:.16s}.floatingTools button:hover{transform:translateY(-2px)}.floatingTools button:first-child{color:#ffb000}
.travelModes{position:fixed;z-index:14;left:50%;bottom:96px;transform:translateX(-50%);border-radius:18px;padding:5px;display:flex}.travelModes button{border:0;background:transparent;padding:9px 18px;border-radius:14px;color:#345d86;font-size:12px;font-weight:800}.travelModes button span{display:block;font-size:18px;margin-bottom:2px}.travelModes button.active{background:linear-gradient(135deg,#edf7ff,#f9fcff);color:#0d6df7;box-shadow:inset 0 0 0 1px #dbeafb}
.topSearches{position:fixed;z-index:14;left:245px;right:360px;bottom:22px;border-radius:18px;padding:11px 13px}.miniTitle{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;font-weight:800}.miniTitle small{font-weight:600;color:#7d91a7}.top10{display:flex;gap:7px;overflow:auto}.topItem{white-space:nowrap;background:#f0f7fd;border:1px solid #dcebf6;border-radius:999px;padding:7px 10px;font-size:11px;color:#365f87}.topItem b{color:#0c78ee;margin-right:4px}
.locationCard{position:fixed;z-index:28;left:50%;top:50%;transform:translate(-50%,-50%);width:min(390px,calc(100vw - 32px));border-radius:20px;padding:17px 46px 17px 70px}.locationCard .ghostRound{position:absolute;right:12px;top:12px}.locationPin{position:absolute;left:17px;top:20px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:white;font-size:22px}.locationCard small,.locationCard strong,.locationCard span{display:block}.locationCard small{color:#7a92a9;font-size:11px}.locationCard strong{font-size:14px;margin:3px 0;color:#113f6d}.locationCard span{font-size:11px;color:#7890a8}
.selectedPlaceCard{position:fixed;z-index:24;left:50%;top:145px;transform:translateX(-50%);width:min(500px,calc(100vw - 760px));min-width:410px;border-radius:20px;padding:10px 54px 10px 10px;display:grid;grid-template-columns:70px 1fr;gap:12px;align-items:center;animation:popIn .18s ease-out}.selectedPlaceCard .ghostRound{position:absolute;right:10px;top:10px}.placeVisual{width:70px;height:64px;border-radius:14px;background:linear-gradient(145deg,#0bc8c0,#0d6df7);display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.24)}.placeVisual span{font-size:30px;filter:drop-shadow(0 3px 5px rgba(0,0,0,.17))}.selectedPlaceInfo{min-width:0}.selectedPlaceInfo strong,.selectedPlaceInfo small{display:block}.selectedPlaceInfo strong{font:800 14px Montserrat;color:#0b3b6c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.selectedPlaceInfo small{color:#718ba3;font-size:11px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.selectedPlaceMeta{display:flex;gap:12px;margin-top:5px;font-size:11px;color:#f09a00}.selectedPlaceMeta span:last-child{color:#3e6b95}.heartButton{position:absolute;right:13px;bottom:12px;border:0;width:32px;height:32px;border-radius:50%;background:#fff0f2;color:#ff5265;font-size:20px}.cityBadge{position:fixed;z-index:13;left:24px;bottom:22px;border-radius:17px;padding:10px 14px;display:flex;align-items:center;gap:10px}.cityBadgeDot{width:11px;height:11px;border-radius:50%;background:#17d4c6;box-shadow:0 0 0 6px rgba(23,212,198,.15)}.cityBadge b,.cityBadge small{display:block}.cityBadge b{font:800 12px Montserrat;color:#0c3c6b}.cityBadge small{font-size:10px;color:#6e89a3;margin-top:2px}
.toast{position:fixed;z-index:40;left:50%;top:86px;transform:translate(-50%,-8px);opacity:0;pointer-events:none;background:#063963;color:white;padding:10px 15px;border-radius:20px;box-shadow:var(--shadow);font-size:12px;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.setupWarning{position:fixed;z-index:50;left:50%;bottom:30px;transform:translateX(-50%);background:#fff4f4;border:1px solid #ffc7cb;color:#8e2430;border-radius:14px;padding:12px 16px;display:flex;gap:10px;box-shadow:var(--shadow);font-size:12px}.dbWarning{bottom:82px}.setupWarning code{font-weight:800;color:#183e67}
.cesium-viewer-toolbar{display:none!important}.cesium-viewer-bottom{display:none!important}.cesium-infoBox{display:none!important}.cesium-selection-wrapper-svg{fill:#12cfc5!important}.cesium-widget-credits{opacity:.65!important}.cesium-credit-logoContainer{display:none!important}
@keyframes popIn{from{opacity:0;transform:translateX(-50%) translateY(-6px) scale(.98)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
@media(max-width:1100px){.topbar{grid-template-columns:230px 1fr 140px}.brandText b{font-size:23px}.brandText small{display:none}.brandPin{width:50px;height:58px}.mainMenu{width:170px}.discoverPanel,.resultsPanel{width:290px}.floatingTools{right:314px}.topSearches{left:210px;right:314px}.selectedPlaceCard{width:410px;min-width:410px}}
@media(max-width:820px){.topbar{left:10px;right:10px;top:10px;grid-template-columns:1fr auto;gap:10px}.brand{display:none}.searchBar{grid-column:1}.viewSwitch{grid-column:2}.mainMenu{left:10px;top:auto;bottom:10px;width:calc(100% - 20px);display:grid;grid-template-columns:repeat(5,1fr);padding:5px}.menuItem{height:52px;display:flex;flex-direction:column;gap:1px;justify-content:center;padding:3px;font-size:9px}.menuIcon{font-size:18px}.menuItem em{display:none}.discoverPanel{left:10px;right:10px;top:80px;width:auto;max-height:300px;overflow:auto}.categoryList{grid-template-columns:1fr 1fr}.resultsPanel{display:none}.floatingTools{right:12px;top:auto;bottom:76px;display:flex}.floatingTools button{width:42px;height:42px}.travelModes,.topSearches,.cityBadge{display:none}.favoritesPanel{left:10px;right:10px;top:80px;width:auto}.selectedPlaceCard{left:10px;right:10px;top:auto;bottom:76px;transform:none;width:auto;min-width:0}.selectedPlaceCard.hidden{display:none!important}}

/* ===== V1.2 WOW ===== */
:root{--wowGlow:0 0 42px rgba(0,206,210,.28);--glass:rgba(255,255,255,.88)}
body:before{content:"";position:fixed;z-index:2;inset:-25%;pointer-events:none;background:radial-gradient(circle at 72% 24%,rgba(0,226,215,.15),transparent 28%),radial-gradient(circle at 35% 82%,rgba(28,116,255,.13),transparent 30%);animation:aurora 10s ease-in-out infinite alternate}
@keyframes aurora{to{transform:translate3d(2.5%,-1.5%,0) scale(1.03)}}
.cinematicVignette{position:fixed;z-index:3;inset:0;pointer-events:none;box-shadow:inset 0 0 145px rgba(0,35,69,.26);background:linear-gradient(180deg,rgba(0,35,69,.15),transparent 16%,transparent 72%,rgba(0,35,69,.13))}
.introSplash{position:fixed;z-index:100;inset:0;display:flex;align-items:center;justify-content:center;gap:22px;background:radial-gradient(circle at 50% 45%,rgba(7,87,138,.86),rgba(3,28,55,.96));color:#fff;transition:opacity .9s ease,visibility .9s ease;pointer-events:none}.introSplash.hide{opacity:0;visibility:hidden}.introOrb{width:104px;height:104px;border-radius:35% 35% 50% 50%;background:linear-gradient(145deg,#02dfcc,#0c72ff);display:grid;place-items:center;box-shadow:0 0 0 9px rgba(255,255,255,.1),0 0 65px rgba(0,223,204,.42);transform:rotate(45deg);animation:introFloat 1.8s ease-in-out infinite alternate}.introOrb span{font:800 19px Montserrat;transform:rotate(-45deg)}.introCopy{display:flex;flex-direction:column}.introCopy small{font:800 11px Montserrat;letter-spacing:.38em;color:#91f4ee}.introCopy strong{font:800 48px Montserrat;letter-spacing:-2.5px;line-height:1}.introCopy strong span{color:#13e4d7}.introCopy em{font-style:normal;margin-top:10px;color:#d9ecf7;font-weight:700}@keyframes introFloat{to{transform:rotate(45deg) translate(-5px,-5px) scale(1.035)}}
.topbar{animation:uiEnter .75s .2s both cubic-bezier(.2,.8,.2,1)}.mainMenu{animation:uiEnter .75s .28s both cubic-bezier(.2,.8,.2,1)}.discoverPanel{animation:uiEnter .75s .36s both cubic-bezier(.2,.8,.2,1)}.resultsPanel{animation:uiEnter .75s .43s both cubic-bezier(.2,.8,.2,1)}@keyframes uiEnter{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
.cardShell{box-shadow:0 16px 42px rgba(5,47,89,.19),0 2px 0 rgba(255,255,255,.65) inset}
.searchBar:focus-within{box-shadow:0 18px 42px rgba(5,86,174,.28),0 0 0 4px rgba(0,201,195,.14);transform:translateY(-1px)}.searchBar{transition:.25s ease}
.brandPin{animation:brandPulse 3.2s ease-in-out infinite}@keyframes brandPulse{50%{box-shadow:0 10px 30px rgba(0,0,0,.23),0 0 34px rgba(20,226,221,.38)}}
.cityPulse{position:fixed;z-index:14;top:91px;right:27px;border-radius:999px;padding:8px 13px;display:flex;align-items:center;gap:7px;color:#123d6a;font-size:11px}.cityPulse small{color:#708aa3}.liveDot{width:8px;height:8px;border-radius:50%;background:#22d38a;box-shadow:0 0 0 0 rgba(34,211,138,.55);animation:livePulse 1.8s infinite}@keyframes livePulse{70%{box-shadow:0 0 0 9px rgba(34,211,138,0)}}
.compassWidget{position:fixed;z-index:14;right:27px;top:145px;width:54px;height:54px;border-radius:50%;display:grid;place-items:center}.compassWidget:before{content:"";position:absolute;inset:7px;border:1px solid #c9deef;border-radius:50%}.north{position:absolute;top:4px;font:800 9px Montserrat;color:#f05262}.needle{font-size:18px;color:#0c73f8;text-shadow:0 2px 8px rgba(12,115,248,.28);transform:rotate(45deg)}
.categoryList button,.placeCard,.menuItem,.floatingTools button,.travelModes button{transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.categoryList button:hover,.placeCard:hover{transform:translateX(3px)}.placeCard:hover{box-shadow:0 10px 24px rgba(5,47,89,.10)}
.selectedPlaceCard{overflow:visible;border-color:rgba(0,194,190,.35);box-shadow:0 24px 68px rgba(3,49,88,.28),0 0 0 1px rgba(255,255,255,.5) inset,var(--wowGlow);animation:placePop .38s cubic-bezier(.2,.9,.3,1.2)}@keyframes placePop{from{opacity:0;transform:translate(-50%,18px) scale(.94)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
.placeVisual{position:relative;overflow:visible}.placeGlow{position:absolute;inset:-12px;border-radius:50%;background:radial-gradient(circle,rgba(0,209,200,.25),transparent 66%);animation:glowBeat 1.8s ease-in-out infinite}@keyframes glowBeat{50%{transform:scale(1.18);opacity:.42}}
.selectedActions{display:flex;align-items:center;gap:8px}.focusButton{border:0;border-radius:18px;background:#edf6ff;color:#0a65d9;font-weight:800;font-size:12px;padding:9px 12px}.focusButton:hover{background:#0b6fff;color:#fff}
.floatingTools button:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 13px 28px rgba(5,47,89,.22)}
.cesium-viewer-bottom,.cesium-viewer-toolbar{display:none!important}
#cesiumContainer canvas{filter:saturate(1.06) contrast(1.02)}
@media(max-width:900px){.cityPulse,.compassWidget{display:none}.introCopy strong{font-size:34px}.introOrb{width:76px;height:76px}.introSplash{gap:14px;padding:20px}.introCopy em{font-size:12px}.selectedActions{flex-direction:column}.focusButton{padding:7px 10px}}


/* ===== V1.3 ROUTE + AUTOCOMPLETE ===== */
.searchBar{position:relative}.autocomplete{position:absolute;top:64px;left:0;right:0;background:rgba(255,255,255,.98);border:1px solid #d9e9f6;border-radius:18px;padding:7px;box-shadow:0 22px 55px rgba(5,47,89,.24);overflow:hidden;z-index:80}.autocomplete button{width:100%;border:0;background:transparent;border-radius:12px;display:grid;grid-template-columns:30px 1fr;gap:8px;text-align:left;padding:9px 10px;color:#16436f}.autocomplete button:hover{background:#eef7ff}.autocomplete strong,.autocomplete small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.autocomplete strong{font-size:12px}.autocomplete small{font-size:10px;color:#7a91a8;margin-top:2px}.autoPin{width:27px;height:27px;border-radius:50%;background:#e7f3ff;color:#0b6fff;display:grid;place-items:center;font-weight:800}
.routePanel{position:fixed;z-index:31;left:245px;top:120px;width:380px;border-radius:22px;padding:15px}.routeSummary{display:grid;grid-template-columns:1fr 30px 1fr;gap:7px;align-items:center;background:#f4f9fd;border:1px solid #deebf5;border-radius:15px;padding:11px}.routeSummary small,.routeSummary strong{display:block}.routeSummary small{font-size:9px;color:#7690a8;text-transform:uppercase;font-weight:800;letter-spacing:.7px}.routeSummary strong{font-size:11px;color:#16446f;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.routeArrow{text-align:center;color:#0c73f8;font-size:18px}.routeModes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.routeModes button{border:1px solid #dfebf5;background:#f9fcff;border-radius:13px;padding:8px 5px;color:#446b90;font-size:10px;font-weight:800}.routeModes button span{display:block;font-size:18px;margin-bottom:2px}.routeModes button.active{background:linear-gradient(135deg,#0d78ff,#06b7d4);color:white;border-color:transparent;box-shadow:0 8px 18px rgba(11,111,255,.2)}.routeInfo{margin-top:10px;border-top:1px solid #e4eef6;padding-top:10px;display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center}.routeInfo div{background:#f5faff;border-radius:12px;padding:8px 10px}.routeInfo small,.routeInfo strong{display:block}.routeInfo small{font-size:9px;color:#7890a7}.routeInfo strong{font:800 14px Montserrat;color:#0b62c7;margin-top:2px}.routeClear{border:0;background:#fff0f2;color:#e14c5e;border-radius:12px;padding:10px;font-size:10px;font-weight:800}
.placeCard{grid-template-columns:30px 1fr auto}.placeRank{width:26px;height:26px;border-radius:9px;background:linear-gradient(145deg,#eef7ff,#e6f3fd);color:#0c70e7!important;display:grid!important;place-items:center;font:800 10px Montserrat;margin-top:1px}.placeQuick{margin-top:6px}.placeQuick button{border:0;background:#edf6ff;color:#0b69dc;border-radius:12px;padding:5px 8px;font-size:9px;font-weight:800}.placeQuick button:hover{background:#0b6fff;color:white}.favoriteCard .placeRank{background:#fff0f2;color:#ff5366!important}.routeAction{background:#eafbf9!important;color:#079c92!important}.routeAction:hover{background:#08bfb1!important;color:#fff!important}.selectedPlaceCard{padding-right:52px}.selectedActions{grid-column:1/-1;justify-content:flex-end;margin-top:-4px;padding-right:2px}
.topItem{border:1px solid #dcebf6;cursor:pointer}.topItem:hover{background:#e4f3ff;transform:translateY(-1px)}
@media(max-width:1100px){.routePanel{left:190px;width:360px}}@media(max-width:820px){.autocomplete{top:60px}.routePanel{left:10px;right:10px;top:80px;width:auto}.routeSummary{grid-template-columns:1fr 24px 1fr}.selectedActions{justify-content:flex-start}.routeAction{display:inline-block}}

/* ========================= NANTES360 V2 ========================= */
.tripPanel{position:fixed;z-index:32;left:245px;top:120px;width:430px;max-height:calc(100vh - 150px);overflow:auto;border-radius:24px;padding:16px}.tripIntro{font-size:11px;line-height:1.45;color:#6f879f;background:linear-gradient(135deg,#f3faff,#eefcfb);border:1px solid #dcecf4;border-radius:14px;padding:10px 12px;margin-bottom:10px}.tripStops{display:grid;gap:8px}.tripStopRow{display:grid;grid-template-columns:30px 1fr 30px;gap:8px;align-items:center;position:relative}.tripStep{width:28px;height:28px;border-radius:10px;background:linear-gradient(145deg,#0d78ff,#07b6d2);color:#fff;display:grid;place-items:center;font:800 10px Montserrat;box-shadow:0 6px 15px rgba(10,111,240,.22)}.tripStopInputWrap{position:relative}.tripStopRow input{width:100%;height:40px;border:1px solid #dceaf5;border-radius:12px;background:#f9fcff;color:#17466f;outline:0;padding:0 11px;font-size:11px;font-weight:700}.tripStopRow input:focus{border-color:#81bdf9;box-shadow:0 0 0 3px rgba(11,111,255,.08)}.tripStopRow input[readonly]{background:#eef8ff;color:#0c68d7}.tripRemove{border:0;width:28px;height:28px;border-radius:50%;background:#fff0f2;color:#de5664;font-size:17px}.tripSuggestions{position:absolute;z-index:60;left:0;right:0;top:44px;background:#fff;border:1px solid #dceaf5;border-radius:14px;box-shadow:0 16px 34px rgba(5,47,89,.2);padding:5px;max-height:230px;overflow:auto}.tripSuggestions button{width:100%;border:0;background:transparent;border-radius:10px;text-align:left;padding:8px 9px;color:#17466f}.tripSuggestions button:hover{background:#edf7ff}.tripSuggestions strong,.tripSuggestions small{display:block}.tripSuggestions strong{font-size:11px}.tripSuggestions small{font-size:9px;color:#7b91a7;margin-top:2px}.tripAddStop{width:100%;height:36px;margin-top:8px;border:1px dashed #a9cdeb;border-radius:12px;background:#f7fbff;color:#0c6fdf;font-size:10px;font-weight:800}.tripModes{margin-top:10px}.tripButtons{display:grid;grid-template-columns:1fr 120px;gap:8px}.tripButtons .ctaButton{margin-top:10px}.secondaryButton{height:42px;border:1px solid #cfe5f6;border-radius:13px;background:#f5faff;color:#0b67cf;font-weight:800;font-size:10px;margin-top:10px}.secondaryButton:hover{background:#eaf5ff}.tripSummary{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:10px}.tripSummary>div{background:linear-gradient(145deg,#f3f9ff,#f6fdfc);border:1px solid #dcebf4;border-radius:13px;padding:9px}.tripSummary small,.tripSummary strong{display:block}.tripSummary small{font-size:8px;text-transform:uppercase;letter-spacing:.5px;color:#7891a8}.tripSummary strong{font:800 13px Montserrat;color:#0b68d0;margin-top:3px}.saveTripBox{display:grid;grid-template-columns:1fr 108px;gap:8px;margin-top:10px}.saveTripBox input{height:40px;border:1px solid #dceaf5;border-radius:12px;padding:0 11px;outline:0;font-size:10px;color:#17466f}.saveTripBox .secondaryButton{margin:0;height:40px}.savedTripsHead{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #e1edf6;margin-top:12px;padding-top:11px;font-size:11px;color:#17466f}.savedTripsHead button{border:0;background:#eef7ff;color:#0b6fff;border-radius:10px;width:28px;height:28px}.savedTrips{margin-top:8px;display:grid;gap:7px}.savedTripCard{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;border:1px solid #e0edf6;border-radius:13px;background:#fff;padding:9px 10px}.savedTripCard strong,.savedTripCard span{display:block}.savedTripCard strong{font-size:11px;color:#123f6d}.savedTripCard span{font-size:9px;color:#7a91a8;margin-top:3px}.savedTripActions{display:flex;gap:5px}.savedTripActions button{border:0;border-radius:9px;padding:6px 8px;font-size:9px;font-weight:800}.loadTrip{background:#eaf5ff;color:#0b6ede}.deleteTrip{background:#fff0f2;color:#dc5362}.tripAction{background:#f0edff!important;color:#6d4fea!important}.tripAction:hover{background:#7255ed!important;color:#fff!important}

.statsPanel{position:fixed;z-index:32;left:245px;top:120px;width:410px;border-radius:24px;padding:16px}.statsGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.statsGrid>div{border:1px solid #dfeaf4;border-radius:15px;padding:12px;background:linear-gradient(145deg,#f8fcff,#f1fbfb)}.statsGrid small,.statsGrid strong,.statsGrid span{display:block}.statsGrid small{font-size:9px;text-transform:uppercase;letter-spacing:.6px;color:#7890a8}.statsGrid strong{font:800 25px Montserrat;color:#0c6ee6;margin:3px 0}.statsGrid span{font-size:9px;color:#7890a8}.topCategoryBox{margin-top:9px;border-radius:15px;background:linear-gradient(135deg,#073e72,#0b73e7);padding:12px;color:white}.topCategoryBox small,.topCategoryBox strong{display:block}.topCategoryBox small{font-size:9px;opacity:.75}.topCategoryBox strong{font:800 16px Montserrat;margin-top:4px}.weekChart{margin-top:10px;border-top:1px solid #e1edf6;padding-top:10px}.weekChartTitle{font-size:10px;font-weight:800;color:#315f89;margin-bottom:7px}.weekBars{height:130px;display:grid;grid-template-columns:repeat(7,1fr);gap:7px;align-items:end}.dayBar{height:100%;display:grid;grid-template-rows:18px 1fr 18px;text-align:center}.barValue{font-size:8px;color:#7690a8}.barTrack{height:88px;border-radius:8px;background:#edf5fb;display:flex;align-items:flex-end;overflow:hidden}.barTrack i{display:block;width:100%;min-height:7px;border-radius:8px 8px 0 0;background:linear-gradient(180deg,#08c8be,#0b6fff);box-shadow:0 -4px 12px rgba(11,111,255,.2)}.dayBar span{font-size:8px;color:#7690a8;margin-top:4px;text-transform:capitalize}

@media(max-width:1100px){.tripPanel,.statsPanel{left:190px}.tripPanel{width:420px}}
@media(max-width:820px){.mainMenu{grid-template-columns:repeat(6,1fr)}.tripPanel,.statsPanel{left:10px;right:10px;top:80px;width:auto;max-height:calc(100vh - 155px)}.tripButtons{grid-template-columns:1fr 105px}.tripSummary{grid-template-columns:1fr 1fr 1fr}.saveTripBox{grid-template-columns:1fr 100px}.selectedActions{flex-wrap:wrap}.tripAction{display:inline-block!important}}
\n\n/* ===== Nantes360 V2.1 — Carte améliorée / Game Look ===== */\nbody{transition:background .45s ease}\n#cesiumContainer canvas{transition:filter .55s ease;filter:saturate(1.13) contrast(1.055) brightness(1.01)}\n.mapStyleSwitch{position:fixed;z-index:16;top:18px;right:135px;display:flex;gap:3px;padding:4px;border-radius:22px;background:rgba(255,255,255,.88)}\n.mapStyleSwitch button{border:0;background:transparent;border-radius:17px;padding:8px 11px;font:800 10px Montserrat;color:#55728d;transition:.22s ease}\n.mapStyleSwitch button:hover{transform:translateY(-1px);color:#073b68}.mapStyleSwitch button.active{background:linear-gradient(135deg,#0a75ff,#00bfb4);color:white;box-shadow:0 5px 12px rgba(0,93,190,.22)}\nbody[data-map-style="aqua"] .mapTint{background:linear-gradient(180deg,rgba(0,218,221,.12),transparent 25%,transparent 70%,rgba(0,91,133,.12));mix-blend-mode:soft-light}\nbody[data-map-style="aqua"] .cinematicVignette{box-shadow:inset 0 0 160px rgba(0,42,73,.24);background:radial-gradient(circle at 52% 42%,transparent 35%,rgba(2,50,82,.09) 76%,rgba(1,28,51,.18) 100%)}\nbody[data-map-style="sunset"] #cesiumContainer canvas{filter:saturate(1.12) contrast(1.07) sepia(.07) brightness(.99)}\nbody[data-map-style="sunset"] .mapTint{background:linear-gradient(180deg,rgba(255,131,74,.16),rgba(255,192,104,.05) 35%,transparent 61%,rgba(70,36,93,.14));mix-blend-mode:soft-light}\nbody[data-map-style="sunset"] .cinematicVignette{box-shadow:inset 0 0 175px rgba(59,22,67,.28);background:radial-gradient(circle at 52% 38%,transparent 28%,rgba(81,32,70,.08) 68%,rgba(23,20,47,.20) 100%)}\nbody[data-map-style="sunset"] .mapStyleSwitch button.active{background:linear-gradient(135deg,#ff7e50,#ffb23e)}\nbody[data-map-style="night"] #cesiumContainer canvas{filter:saturate(1.16) contrast(1.15) brightness(.86) hue-rotate(3deg)}\nbody[data-map-style="night"] .mapTint{background:linear-gradient(180deg,rgba(0,24,61,.24),rgba(0,104,148,.07) 45%,rgba(14,6,51,.28));mix-blend-mode:multiply}\nbody[data-map-style="night"] .cinematicVignette{box-shadow:inset 0 0 220px rgba(0,7,24,.55);background:radial-gradient(circle at 50% 44%,transparent 20%,rgba(0,16,44,.18) 66%,rgba(0,6,22,.48) 100%)}\nbody[data-map-style="night"] .mapStyleSwitch{background:rgba(9,28,50,.84);border-color:rgba(78,186,255,.25)}\nbody[data-map-style="night"] .mapStyleSwitch button{color:#a7c6df}.mapStyleSwitch button[data-style="night"].active{background:linear-gradient(135deg,#5b63ff,#00cabd);color:#fff}\nbody[data-map-style="night"] .cardShell{background:rgba(10,31,54,.88);border-color:rgba(91,174,230,.22);color:#e9f7ff;box-shadow:0 18px 46px rgba(0,8,28,.34),0 1px 0 rgba(255,255,255,.08) inset}\nbody[data-map-style="night"] .searchBar{background:rgba(8,28,50,.92)}body[data-map-style="night"] .searchBar input{color:#eefaff}body[data-map-style="night"] .searchBar input::placeholder{color:#89a9c0}\nbody[data-map-style="night"] .menuItem,body[data-map-style="night"] .categoryList button{color:#cce8fb}body[data-map-style="night"] .menuItem.active,body[data-map-style="night"] .categoryList button.active{color:#fff}\nbody[data-map-style="night"] .eyebrow,body[data-map-style="night"] small{color:#8fb4cd}\nbody[data-map-style="night"] h2,body[data-map-style="night"] h3,body[data-map-style="night"] strong,body[data-map-style="night"] b{color:#f4fbff}\nbody[data-map-style="night"] .cityPulse .liveDot{background:#21f0c2}\n.cityPulse{transition:background .45s ease,color .45s ease}\n@media(max-width:1180px){.mapStyleSwitch{top:74px;right:18px}}\n@media(max-width:820px){.mapStyleSwitch{top:76px;right:10px;z-index:18}.mapStyleSwitch button{padding:7px 9px;font-size:9px}}\n
/* ===== Nantes360 V3 — CITY GAME ===== */
.gameTexture,.gameScanlines{position:fixed;inset:0;pointer-events:none;z-index:5;opacity:0;transition:opacity .35s ease}
body.fxTexture .gameTexture{opacity:.18;background:
  radial-gradient(circle at 20% 30%,rgba(255,255,255,.24) 0 1px,transparent 1.5px) 0 0/9px 9px,
  radial-gradient(circle at 70% 65%,rgba(3,69,110,.14) 0 1px,transparent 1.8px) 0 0/13px 13px,
  repeating-linear-gradient(118deg,rgba(255,255,255,.025) 0 2px,rgba(0,46,83,.025) 2px 4px);
  mix-blend-mode:soft-light;filter:contrast(1.2)}
body.fxTexture .gameScanlines{opacity:.08;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.12) 0 1px,transparent 1px 4px);mix-blend-mode:overlay}
body.fxMist .mapTint:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 52% 38%,rgba(255,255,255,.16),rgba(219,245,255,.07) 35%,transparent 68%);backdrop-filter:blur(.25px)}
.gameFxSwitch{position:fixed;z-index:16;top:60px;right:135px;display:flex;gap:3px;padding:4px;border-radius:22px;background:rgba(255,255,255,.86)}
.gameFxSwitch button{border:0;background:transparent;border-radius:17px;padding:7px 10px;font:800 9px Montserrat;color:#5f7890;transition:.22s ease}
.gameFxSwitch button:hover{transform:translateY(-1px);color:#073b68}.gameFxSwitch button.active{color:#fff;background:linear-gradient(135deg,#02b8b4,#0a74ff);box-shadow:0 5px 12px rgba(0,94,190,.18)}
body[data-map-style="sunset"] .gameFxSwitch button.active{background:linear-gradient(135deg,#ff8a50,#ffb233)}
body[data-map-style="night"] .gameFxSwitch{background:rgba(9,28,50,.84);border-color:rgba(78,186,255,.25)}
body[data-map-style="night"] .gameFxSwitch button{color:#a8c6dc}.gameFxSwitch button[data-fx="orbit"].active{background:linear-gradient(135deg,#795cff,#00cdb8);color:#fff}

/* more game-like depth without breaking map usability */
body.fxTexture #cesiumContainer canvas{filter:saturate(1.16) contrast(1.085) brightness(1.01)}
body[data-map-style="sunset"].fxTexture #cesiumContainer canvas{filter:saturate(1.18) contrast(1.10) sepia(.08) brightness(.99)}
body[data-map-style="night"].fxTexture #cesiumContainer canvas{filter:saturate(1.22) contrast(1.20) brightness(.84) hue-rotate(3deg)}
body.fxMist .cinematicVignette{box-shadow:inset 0 0 190px rgba(0,34,62,.27)}
.cityPulse:before{content:"";width:16px;height:16px;border-radius:50%;background:radial-gradient(circle,#7bf7e7 0 18%,#18d5bd 20% 38%,rgba(24,213,189,.15) 40% 100%);box-shadow:0 0 18px rgba(23,215,191,.42)}
.cityPulse .liveDot{display:none}
.mainMenu,.discoverPanel,.resultsPanel,.routePanel,.favoritesPanel,.tripPanel,.statsPanel,.selectedPlaceCard{backdrop-filter:blur(16px) saturate(1.12)}
.selectedPlaceCard{overflow:hidden}.selectedPlaceCard:before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,#00d7c0,#0a75ff,transparent);opacity:.8}

@media(max-width:1180px){.gameFxSwitch{top:114px;right:18px}}
@media(max-width:820px){.gameFxSwitch{top:116px;right:10px;z-index:18}.gameFxSwitch button{padding:6px 8px;font-size:8px}}


/* ===== Nantes360 V3.1 — SHARP CARTOON ===== */
#cesiumContainer canvas{
  image-rendering:auto;
  filter:saturate(1.18) contrast(1.13) brightness(1.015) !important;
}
/* No full-screen blur: V3.1 prioritises map detail. */
body.fxMist .mapTint:after{backdrop-filter:none !important;background:radial-gradient(circle at 52% 38%,rgba(255,255,255,.09),rgba(219,245,255,.025) 38%,transparent 66%) !important}
body.fxTexture .gameTexture{
  opacity:.10 !important;
  background:
    radial-gradient(circle at 18% 28%,rgba(255,255,255,.30) 0 1px,transparent 1.3px) 0 0/14px 14px,
    radial-gradient(circle at 72% 62%,rgba(0,50,92,.11) 0 1px,transparent 1.5px) 0 0/18px 18px,
    repeating-linear-gradient(125deg,rgba(255,255,255,.018) 0 2px,rgba(0,39,76,.018) 2px 5px);
  mix-blend-mode:soft-light;
  filter:none !important;
}
body.fxTexture .gameScanlines{opacity:0 !important}
body.fxTexture #cesiumContainer canvas{filter:saturate(1.28) contrast(1.18) brightness(1.02) !important}
body[data-map-style="sunset"] #cesiumContainer canvas{filter:saturate(1.20) contrast(1.18) brightness(1.01) sepia(.035) !important}
body[data-map-style="sunset"].fxTexture #cesiumContainer canvas{filter:saturate(1.28) contrast(1.22) brightness(1.01) sepia(.035) !important}
body[data-map-style="night"] #cesiumContainer canvas{filter:saturate(1.20) contrast(1.24) brightness(.91) !important}
body[data-map-style="night"].fxTexture #cesiumContainer canvas{filter:saturate(1.30) contrast(1.29) brightness(.90) !important}
body[data-map-style="aqua"] .mapTint{background:linear-gradient(180deg,rgba(0,218,221,.075),transparent 24%,transparent 72%,rgba(0,91,133,.06)) !important}
body[data-map-style="aqua"] .cinematicVignette{box-shadow:inset 0 0 95px rgba(0,42,73,.13) !important;background:radial-gradient(circle at 52% 42%,transparent 48%,rgba(1,28,51,.08) 100%) !important}
body[data-map-style="sunset"] .cinematicVignette{box-shadow:inset 0 0 110px rgba(59,22,67,.14) !important}
body[data-map-style="night"] .cinematicVignette{box-shadow:inset 0 0 140px rgba(0,7,24,.33) !important}
.gameFxSwitch button[data-fx="texture"].active{background:linear-gradient(135deg,#00c7b6,#1677ff) !important}
.gameFxSwitch button[data-fx="texture"]:before{content:'✦';margin-right:4px}
.cityPulse{border:1px solid rgba(9,91,158,.18)}

/* ===== Nantes360 V4 — Vector Game Map ===== */
html,body,#map{width:100%;height:100%;margin:0;overflow:hidden}
#map{position:fixed;inset:0;background:#dff6eb}
#cesiumContainer{display:none!important}
.maplibregl-map{font-family:Nunito,system-ui,sans-serif}
.maplibregl-ctrl-bottom-right{right:18px;bottom:110px}.maplibregl-ctrl-bottom-left{left:18px;bottom:8px}
.maplibregl-ctrl-group{border-radius:16px!important;overflow:hidden;box-shadow:0 10px 30px rgba(0,37,74,.18)!important}.maplibregl-ctrl button{width:38px;height:38px}
.maplibregl-ctrl-attrib{font-size:9px!important;border-radius:10px!important;background:rgba(255,255,255,.76)!important}
.mapTint{background:linear-gradient(180deg,rgba(0,202,168,.035),transparent 40%,rgba(3,58,88,.055));mix-blend-mode:normal!important}
.cinematicVignette{box-shadow:inset 0 0 90px rgba(3,54,84,.10)!important;background:none!important}
.gameTexture,.gameScanlines{display:none!important}
#map canvas{filter:none!important;image-rendering:auto}
.cityBadge b:after{content:' V4';font-size:9px;margin-left:5px;color:#00a99d}
.v4Marker{width:48px;height:62px;filter:drop-shadow(0 7px 6px rgba(5,42,75,.26));transform-origin:50% 100%;transition:transform .18s ease}.v4Marker:hover,.v4Marker.selected{transform:scale(1.16) translateY(-2px)}
.v4Pin{position:relative;width:46px;height:46px;border-radius:50% 50% 50% 12px;transform:rotate(-45deg);background:var(--pin);border:4px solid #fff;box-shadow:inset 0 -4px 0 rgba(0,0,0,.08)}.v4Pin span{position:absolute;inset:0;display:grid;place-items:center;transform:rotate(45deg);color:#fff;font:900 15px Montserrat;text-shadow:0 1px 0 rgba(0,0,0,.13)}
.youMarker{width:54px;height:54px;border-radius:50%;background:rgba(10,115,255,.15);display:grid;place-items:center;animation:youPulse 1.7s infinite}.youMarker span{width:19px;height:19px;background:#0877ff;border:4px solid #fff;border-radius:50%;box-shadow:0 4px 12px rgba(0,77,180,.35)}@keyframes youPulse{50%{box-shadow:0 0 0 16px rgba(8,119,255,.04)}}
body[data-map-style="night"] #map{background:#14243a}.mapStyleSwitch,.gameFxSwitch{backdrop-filter:blur(14px)}
.gameFxSwitch button[data-fx="outline"].active{background:linear-gradient(135deg,#ff8a22,#ffbf3f)!important}.gameFxSwitch button[data-fx="labels"].active{background:linear-gradient(135deg,#00bfae,#0a75ff)!important}
@media(max-width:820px){.maplibregl-ctrl-bottom-right{bottom:160px}.v4Marker{transform:scale(.92)}}

/* ===== Nantes360 V4.1 — FULL CUSTOM STYLE ===== */
body:before{content:"NANTES360 · CUSTOM VECTOR";position:fixed;right:24px;bottom:24px;z-index:6;font:800 9px Montserrat;letter-spacing:.14em;color:rgba(7,54,88,.36);pointer-events:none}
body[data-map-style="night"]:before{color:rgba(179,231,255,.28)}
#map canvas{filter:none!important}
.mapTint{opacity:.45;pointer-events:none}
.cinematicVignette{pointer-events:none;box-shadow:inset 0 0 65px rgba(3,54,84,.07)!important}
body[data-map-style="night"] .cinematicVignette{box-shadow:inset 0 0 95px rgba(0,7,24,.18)!important}
.mapStyleSwitch button.active{box-shadow:0 6px 18px rgba(0,104,190,.22)}


/* ===== Nantes360 V4.2 — CARTOON ASSETS ===== */
body:before{content:"NANTES360 · CARTOON ASSETS"!important}
.gameFxSwitch button[data-fx="assets"]{min-width:86px}
.gameFxSwitch button[data-fx="assets"].active{background:linear-gradient(135deg,#ff965f,#ffce63)!important;color:#173a5a!important}
.cartoonTree{width:32px;height:32px;background:url(../sprites/tree.svg) center/contain no-repeat;filter:drop-shadow(0 6px 8px rgba(16,66,44,.18));opacity:.96;pointer-events:none}
.cartoonLamp{width:18px;height:18px;background:url(../sprites/lamp.svg) center/contain no-repeat;opacity:.92;pointer-events:none}
.v4Marker{filter:drop-shadow(0 7px 8px rgba(5,42,75,.24))}
.v4Pin{background:linear-gradient(180deg,var(--pin),color-mix(in srgb,var(--pin) 70%, #ffffff 30%));border-width:5px}
.v4Pin:after{content:"";position:absolute;inset:7px;border-radius:50%;border:2px dashed rgba(255,255,255,.44)}
.placeVisual{background:radial-gradient(circle at 50% 40%, rgba(255,212,110,.98), rgba(255,145,77,.72) 58%, rgba(255,143,45,.08) 70%)}
.placeGlow{background:radial-gradient(circle, rgba(255,202,95,.78), rgba(255,168,81,.06) 62%, transparent 72%)}
body[data-map-style="night"] .placeVisual{background:radial-gradient(circle at 50% 40%, rgba(115,205,255,.95), rgba(25,137,255,.55) 58%, rgba(23,52,92,.08) 70%)}
body[data-map-style="night"] .placeGlow{background:radial-gradient(circle, rgba(115,205,255,.45), rgba(38,82,164,.04) 62%, transparent 72%)}


/* ===== Nantes360 V5 — CARTOON WORLD ===== */
body:before{content:"NANTES360 · V5 CARTOON WORLD"!important}
.worldClouds{position:fixed;inset:0;z-index:3;pointer-events:none;overflow:hidden;opacity:.36;mix-blend-mode:screen}
.worldClouds i{position:absolute;display:block;width:150px;height:42px;border-radius:999px;background:rgba(255,255,255,.65);filter:blur(.2px);box-shadow:38px 7px 0 8px rgba(255,255,255,.46),-34px 9px 0 3px rgba(255,255,255,.38);animation:cloudDrift 45s linear infinite}
.worldClouds i:nth-child(1){top:17%;left:-180px;animation-duration:52s;transform:scale(.75)}
.worldClouds i:nth-child(2){top:31%;left:-260px;animation-delay:-18s;animation-duration:68s;transform:scale(1.05)}
.worldClouds i:nth-child(3){top:9%;left:-220px;animation-delay:-35s;animation-duration:82s;transform:scale(.55)}
@keyframes cloudDrift{to{left:112%}}
body[data-map-style="night"] .worldClouds{opacity:.12;mix-blend-mode:screen}
.worldAsset{pointer-events:none;transform-origin:50% 100%;transition:opacity .2s ease,filter .2s ease;filter:drop-shadow(0 5px 7px rgba(20,56,75,.18))}
.asset-tree-round{width:42px;height:42px;background:url(../sprites/tree-round.svg) center/contain no-repeat}
.asset-tree-tall{width:36px;height:50px;background:url(../sprites/tree-tall.svg) center/contain no-repeat}
.asset-bench{width:34px;height:26px;background:url(../sprites/bench.svg) center/contain no-repeat}
.asset-kiosk{width:42px;height:42px;background:url(../sprites/kiosk.svg) center/contain no-repeat}
.asset-boat{width:48px;height:32px;background:url(../sprites/boat.svg) center/contain no-repeat}
.asset-bike{width:34px;height:26px;background:url(../sprites/bike.svg) center/contain no-repeat}
.asset-umbrella{width:38px;height:38px;background:url(../sprites/umbrella.svg) center/contain no-repeat}
.asset-fountain{width:38px;height:38px;background:url(../sprites/fountain.svg) center/contain no-repeat}
.asset-flower{width:25px;height:25px;background:url(../sprites/flower.svg) center/contain no-repeat}
.asset-tram{width:48px;height:38px;background:url(../sprites/tram.svg) center/contain no-repeat}
.asset-lamp{width:20px;height:20px;background:url(../sprites/lamp.svg) center/contain no-repeat}
body[data-map-style="night"] .worldAsset{filter:drop-shadow(0 0 8px rgba(99,211,255,.18)) brightness(.78) saturate(.9)}
.gameFxSwitch button[data-fx="assets"]{min-width:84px}
.gameFxSwitch button[data-fx="assets"]:before{content:'▦';margin-right:4px}
.gameFxSwitch button[data-fx="assets"].active{background:linear-gradient(135deg,#ff8c5c,#ffd35d)!important;color:#173a5a!important;box-shadow:0 7px 18px rgba(255,145,69,.28)}
.cityBadge b:after{content:' V5';font-size:9px;margin-left:5px;color:#ff8c5c}
.maplibregl-canvas{outline:none}
@media(max-width:820px){.worldClouds{opacity:.22}.worldAsset{transform-origin:center bottom}}


/* ===== Nantes360 V5.1 — RUE 3D CARTOON ===== */
.viewSwitch{display:flex;gap:8px;align-items:center}
.viewSwitch .streetBtn{min-width:88px}
.viewSwitch button.activeStreet, .streetBtn.active{background:linear-gradient(135deg,#ff965f,#ffd26d)!important;color:#123553!important;box-shadow:0 10px 24px rgba(255,162,74,.35)}
body.street-mode #map{filter:saturate(1.06) contrast(1.03)}
body.street-mode .cityBadge{box-shadow:0 18px 45px rgba(10,33,56,.22)}
body.street-mode .cityBadge small{color:#ff8c43}
.streetHud{position:fixed;right:34px;bottom:120px;z-index:36;width:300px;padding:16px 16px 14px;border-radius:24px;background:rgba(255,255,255,.94);box-shadow:0 24px 60px rgba(6,34,60,.24);backdrop-filter:blur(14px)}
.streetHud.hidden{display:none}
.streetHudHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.streetHudHead span{font-size:12px;font-weight:800;letter-spacing:.14em;color:#ff8c43}
.streetHudBody strong{display:block;font-size:18px;color:#103b61;margin-bottom:4px}
.streetHudBody small{display:block;line-height:1.45;color:#55748f;margin-bottom:12px}
.streetControls{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.streetControls button{border:none;border-radius:14px;padding:12px 10px;font-weight:800;background:linear-gradient(180deg,#f7fbff,#e9f3ff);color:#123d63;box-shadow:inset 0 0 0 1px rgba(20,62,99,.08)}
.streetControls button:hover{transform:translateY(-1px)}
body[data-map-style="night"] .streetHud{background:rgba(13,30,51,.92);box-shadow:0 24px 60px rgba(0,0,0,.35)}
body[data-map-style="night"] .streetHudBody strong{color:#eef7ff}
body[data-map-style="night"] .streetHudBody small{color:#a3bfd9}
body[data-map-style="night"] .streetControls button{background:linear-gradient(180deg,#19324f,#14273f);color:#e9f7ff;box-shadow:inset 0 0 0 1px rgba(121,225,255,.14)}
@media (max-width: 980px){.streetHud{right:16px;left:16px;bottom:88px;width:auto}}


/* ===== Nantes360 V5.2 — RUE 3D PLUS ===== */
body:before{content:"NANTES360 · V5.2 RUE 3D PLUS"!important}
body.street-mode .v4Marker{transform:scale(1.18);z-index:3}
body.street-mode .v4Pin{box-shadow:0 16px 28px rgba(7,45,83,.28)}
.streetExtras{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.streetExtras button{border:none;border-radius:14px;padding:11px 10px;font-weight:800;background:linear-gradient(180deg,#fff4db,#ffe1a8);color:#844d12;box-shadow:inset 0 0 0 1px rgba(178,112,27,.12)}
body[data-map-style="night"] .streetExtras button{background:linear-gradient(180deg,#274563,#1a314a);color:#f5f4cf;box-shadow:inset 0 0 0 1px rgba(121,225,255,.14)}
.streetHudBody small b{color:#0b3b62}


/* ===== Nantes360 V5.3 — RUE 3D ULTRA ===== */
body:before{content:"NANTES360 · V5.3 RUE 3D ULTRA"!important}
.streetModeBar{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 10px}
.streetModeBar button{border:none;border-radius:14px;padding:10px 12px;font-weight:800;background:linear-gradient(180deg,#eff7ff,#e0ecf9);color:#18466f;box-shadow:inset 0 0 0 1px rgba(24,70,111,.08)}
.streetModeBar button.active{background:linear-gradient(135deg,#ff965f,#ffd26d);color:#123553;box-shadow:0 12px 22px rgba(255,162,74,.28)}
.streetMiniWrap{margin-top:10px;padding:10px;border-radius:18px;background:linear-gradient(180deg,rgba(244,250,255,.96),rgba(230,242,252,.94));box-shadow:inset 0 0 0 1px rgba(20,62,99,.06)}
.streetMiniHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.streetMiniHead span{font-size:12px;font-weight:800;letter-spacing:.08em;color:#58748b;text-transform:uppercase}
.streetMiniHead b{font-size:12px;color:#0c426e}
.streetMiniMap{height:140px;border-radius:16px;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(20,62,99,.09)}
.streetPoiOverlay{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px;min-height:34px}
.streetPoiChip{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0 8px 18px rgba(16,52,83,.12);font-size:12px;font-weight:700;color:#18476e}
.streetPoiChip b{font-size:11px;color:#ff8c43;font-weight:800}
body[data-map-style="night"] .streetModeBar button{background:linear-gradient(180deg,#19324f,#14273f);color:#e9f7ff;box-shadow:inset 0 0 0 1px rgba(121,225,255,.14)}
body[data-map-style="night"] .streetModeBar button.active{background:linear-gradient(135deg,#ff965f,#ffd26d);color:#132d46}
body[data-map-style="night"] .streetMiniWrap{background:linear-gradient(180deg,rgba(16,33,54,.94),rgba(11,26,44,.92));box-shadow:inset 0 0 0 1px rgba(123,213,255,.12)}
body[data-map-style="night"] .streetMiniHead span{color:#8db7d8}
body[data-map-style="night"] .streetMiniHead b{color:#fff1a5}
body[data-map-style="night"] .streetPoiChip{background:rgba(20,38,61,.94);color:#eef8ff;box-shadow:0 8px 18px rgba(0,0,0,.22)}
.streetMiniMap .maplibregl-control-container{display:none}


/* ===== Nantes360 V5.4 — TEXTURE PACK ===== */
body:before{content:"NANTES360 · V5.4 TEXTURE PACK"!important}
.streetHudHead span{color:#ff9251!important}
.streetMiniWrap{background:linear-gradient(180deg,rgba(250,244,235,.96),rgba(244,234,219,.94));box-shadow:inset 0 0 0 1px rgba(141,88,28,.08)}
.streetPoiChip{background:rgba(255,250,242,.96)}
body[data-map-style="night"] .streetMiniWrap{background:linear-gradient(180deg,rgba(20,29,45,.96),rgba(14,23,38,.94))}
