:root{--vmo-green-950:#064e2f;--vmo-green-800:#087f3f;--vmo-green-600:#0bbf62;--vmo-green-100:#eaf7ef;--vmo-bg:#f6faf7;--vmo-card:#ffffffe0;--vmo-border:#e2e8f0e6;--vmo-text:#111827;--vmo-muted:#6b7280;--vmo-shadow:0 18px 46px #087f3f1f;--vmo-radius:24px;color:var(--vmo-text);background:var(--vmo-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,Arial,system-ui,sans-serif}html,body,#root{background:radial-gradient(circle at 0 0,#0bbf6229,#0000 34%),linear-gradient(135deg,#f6faf7 0%,#eefaf2 48%,#f8fbf9 100%);width:100%;min-width:100%;min-height:100%;margin:0;overflow-x:hidden}#root{min-height:100vh}*{box-sizing:border-box}button,input,textarea,select{font-family:inherit}button,a{-webkit-tap-highlight-color:transparent}button{transition:transform .16s,box-shadow .16s,opacity .16s}button:hover{transform:translateY(-1px)}button:disabled{opacity:.62;cursor:not-allowed;transform:none}a{transition:transform .16s,box-shadow .16s,opacity .16s}a:hover{transform:translateY(-1px)}img{max-width:100%}.leaflet-container{font-family:Inter,Arial,system-ui,sans-serif}.leaflet-popup-content-wrapper{border-radius:18px;box-shadow:0 18px 45px #0000002e}.leaflet-popup-content{margin:12px}::selection{background:#0bbf6238}@media (width<=900px){html,body,#root{width:100%;max-width:100%;overflow-x:hidden!important}body{touch-action:pan-y}input,textarea,select,button{max-width:100%;font-size:16px}.leaflet-container{min-height:260px}}@keyframes vmo-spin{to{transform:rotate(360deg)}}@media (width<=900px){nav[style]{display:grid!important}body{padding-bottom:86px}.vmo-mobile-map-list{scroll-snap-type:x mandatory;gap:10px;padding-bottom:10px;overflow-x:auto;display:flex!important}.vmo-mobile-map-list>*{scroll-snap-align:start;min-width:285px}.vmo-mobile-map-list::-webkit-scrollbar{height:0}}.vmo-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffe6;border:1px solid #e2e8f0f2;border-radius:24px;box-shadow:0 18px 46px #087f3f1f}.vmo-button{color:#111827;cursor:pointer;background:#fff;border:1px solid #dfe5e8;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:12px 16px;font-weight:950;text-decoration:none;display:inline-flex}.vmo-button-primary{color:#fff;background:linear-gradient(135deg,#087f3f,#0bbf62);border:none;box-shadow:0 12px 26px #087f3f38}.vmo-badge{color:#087f3f;background:#eefaf2;border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:950;display:inline-flex}.vmo-input{color:#111827;background:#ffffffeb;border:1px solid #dfe5e8;border-radius:14px;outline:none;width:100%;padding:13px 14px;font-weight:800}.vmo-input:focus{border-color:#0bbf62;box-shadow:0 0 0 4px #0bbf621f}.vmo-page-title{color:#064e2f;letter-spacing:-.03em;font-weight:950}.vmo-muted{color:#6b7280;font-weight:800}.vmo-page-title{color:var(--vmo-green-950);letter-spacing:-.04em;margin:0;font-size:clamp(28px,4vw,42px);font-weight:950;line-height:1.05}.vmo-page-subtitle{color:var(--vmo-muted);margin-top:8px;font-size:15px;font-weight:800}.vmo-card:hover{box-shadow:0 22px 58px #087f3f29}.vmo-panel{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:radial-gradient(circle at 0 0,#0bbf621a,#0000 32%),#ffffffe6;border:1px solid #e2e8f0f2;border-radius:28px;box-shadow:0 18px 46px #087f3f1a}.vmo-danger{color:#be123c;background:#fff1f2;border-color:#fecdd3}.vmo-success{color:#087f3f;background:#eefaf2;border-color:#bbf7d0}.vmo-warning{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.vmo-grid{gap:16px;display:grid}.vmo-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.vmo-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.vmo-table{border-collapse:separate;border-spacing:0;border:1px solid var(--vmo-border);background:#fff;border-radius:20px;width:100%;overflow:hidden}.vmo-table th{color:var(--vmo-green-950);text-align:left;background:#eefaf2;padding:12px;font-size:13px;font-weight:950}.vmo-table td{color:#111827;border-top:1px solid #eef2f7;padding:12px;font-weight:750}.vmo-chip-row{flex-wrap:wrap;gap:8px;display:flex}.vmo-chip{color:var(--vmo-green-950);background:#ffffffd6;border:1px solid #087f3f24;border-radius:999px;padding:8px 11px;font-weight:900}.leaflet-control-layers,.leaflet-bar{overflow:hidden;border:1px solid #e2e8f0f2!important;border-radius:16px!important;box-shadow:0 12px 30px #087f3f29!important}.leaflet-control-layers-expanded{border-radius:18px!important;padding:10px 12px!important}.leaflet-control-layers label{color:#111827;margin:6px 0;font-weight:850}.leaflet-bar a{font-weight:950;color:var(--vmo-green-950)!important}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#eaf7efbf}::-webkit-scrollbar-thumb{background:#087f3f61;border:2px solid #eaf7efbf;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#087f3f94}@media (width<=900px){.vmo-grid-2,.vmo-grid-3{grid-template-columns:1fr}.vmo-card,.vmo-panel{border-radius:20px}.vmo-button,.vmo-input{min-height:44px}}html,body,#root{height:auto;min-height:100%;overflow-y:auto}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);-webkit-tap-highlight-color:transparent}input,textarea,select,button{font-size:16px}@keyframes vmo-pulse-logo{0%,to{transform:scale(1);box-shadow:0 18px 46px #087f3f2e}50%{transform:scale(1.04);box-shadow:0 24px 60px #087f3f47}}.vmo-splash-logo{animation:1.6s ease-in-out infinite vmo-pulse-logo}@media (width<=900px){main,section,.vmo-mobile-safe{scroll-margin-bottom:110px}body{padding-bottom:calc(96px + env(safe-area-inset-bottom))}}@keyframes vmo-badge-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@media (width<=900px){body{padding-bottom:calc(104px + env(safe-area-inset-bottom))!important}h1{font-size:clamp(30px,9vw,44px)!important;line-height:1.05!important}h2{font-size:clamp(24px,7vw,34px)!important;line-height:1.1!important}header{max-width:100vw!important}button,a{max-width:100%}[style*="padding: 24px"]{padding-left:16px!important;padding-right:16px!important}[style*="gap: 16px"]{gap:10px!important}[style*="font-size: 38px"],[style*="font-size: 42px"],[style*="font-size: 46px"]{font-size:clamp(32px,9vw,42px)!important;line-height:1.08!important}[style*="grid-template-columns: repeat(2"]{justify-content:center!important}[style*="grid-template-columns: repeat(2, minmax(0, 1fr))"]{width:100%!important}[style*="border-radius: 28px"]{border-radius:24px!important}[style*="padding: 18px"]{padding:15px!important}[style*="padding: 24px"]{padding:16px!important}[style*=minmax\(340px],[style*=minmax\(320px],[style*=minmax\(280px]{grid-template-columns:1fr!important}[style*="width: 285px"],[style*=width\:285px]{width:100%!important}input,textarea,select{width:100%!important;min-width:0!important}.leaflet-container{border-radius:24px!important;min-height:420px!important}}@media (width<=520px){[style*="grid-template-columns: repeat(2, minmax(0, 1fr))"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}[style*="padding: 12px 16px"],[style*="padding: 12px 14px"]{padding:10px 11px!important}}@media (width<=900px){[style*="display: grid"][style*=repeat\(3]{grid-template-columns:repeat(2,minmax(0,1fr))!important}[style*="grid-column: 1 / -1"]{grid-column:1/-1!important}[style*="justify-content: space-between"]{justify-content:center!important}[style*="text-align: right"]{text-align:center!important}[style*="font-size: 30px"]{font-size:24px!important}[style*="min-height: 54px"]{min-height:48px!important}[style*="gap: 12px"]{gap:8px!important}[style*="padding: 18px"]{padding:14px!important}}@media (width<=420px){[style*="display: grid"][style*=repeat\(3],[style*="display: grid"][style*=repeat\(2]{grid-template-columns:repeat(2,minmax(0,1fr))!important}}html,body,#root{height:auto!important;min-height:100%!important;overflow:hidden auto!important}body{-webkit-overflow-scrolling:touch;touch-action:pan-y!important;position:static!important}.vmo-modern-map-page{background:#dbeafe;width:100vw;height:100dvh;font-family:Inter,Arial,sans-serif;position:relative;overflow:hidden}.vmo-modern-map-canvas{z-index:1;position:absolute;inset:0}.vmo-map-marker{cursor:pointer;background:linear-gradient(135deg,#087f3f,#0bbf62);border:3px solid #fff;border-radius:999px;place-items:center;width:38px;height:38px;font-size:18px;transition:transform .18s,box-shadow .18s;display:grid;transform:translateY(0);box-shadow:0 12px 28px #0f172a42}.vmo-map-marker.active{transform:translateY(-4px)scale(1.08);box-shadow:0 18px 40px #087f3f5c}.vmo-map-top{top:max(14px, env(safe-area-inset-top));z-index:20;pointer-events:none;gap:10px;display:grid;position:absolute;left:14px;right:14px}.vmo-map-search{pointer-events:auto;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff0;border:1px solid #e2e8f0f2;border-radius:26px;align-items:center;gap:10px;min-height:58px;padding:10px 14px;display:flex;box-shadow:0 18px 48px #0f172a29}.vmo-map-search-icon{font-size:20px}.vmo-map-search input{color:#111827;background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:15px;font-weight:800}.vmo-map-count{color:#087f3f;background:#ecfdf5;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:950}.vmo-map-chips{pointer-events:auto;scrollbar-width:none;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.vmo-map-chips::-webkit-scrollbar{display:none}.vmo-map-chip{color:#334155;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);white-space:nowrap;background:#fffffff0;border:1px solid #e2e8f0f2;border-radius:999px;flex:none;padding:10px 14px;font-size:13px;font-weight:950;box-shadow:0 8px 24px #0f172a1a}.vmo-map-chip.active{color:#fff;background:linear-gradient(135deg,#087f3f,#0bbf62);border-color:#0000}.vmo-map-side-actions{z-index:19;gap:10px;display:grid;position:absolute;top:168px;right:14px}.vmo-map-round-btn{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff0;border:1px solid #e2e8f0f2;border-radius:999px;place-items:center;width:46px;height:46px;font-size:20px;display:grid;box-shadow:0 12px 30px #0f172a24}.vmo-map-place-card{pointer-events:auto;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffffff5;border:1px solid #e2e8f0f2;border-radius:30px;overflow:hidden;box-shadow:0 -12px 48px #0f172a24,0 20px 60px #0f172a1a}.vmo-map-place-drag{background:#cbd5e1;border-radius:999px;width:48px;height:5px;margin:10px auto 8px}.vmo-map-place-image{object-fit:cover;background:linear-gradient(135deg,#dcfce7,#dbeafe);width:100%;height:170px;display:block}.vmo-map-place-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.vmo-map-place-title{color:#064e2f;font-size:22px;font-weight:950;line-height:1.1}.vmo-map-place-rating{color:#c2410c;background:#fff7ed;border-radius:999px;flex:none;padding:7px 10px;font-size:13px;font-weight:950}.vmo-map-place-desc{color:#64748b;margin-top:8px;font-size:14px;font-weight:750;line-height:1.45}.vmo-map-place-actions{grid-template-columns:1fr 52px 52px;gap:10px;margin-top:16px;display:grid}.vmo-map-primary-btn,.vmo-map-icon-btn{cursor:pointer;border:none;border-radius:18px;min-height:50px;font-weight:950}.vmo-map-primary-btn{color:#fff;background:linear-gradient(135deg,#087f3f,#0bbf62)}.vmo-map-icon-btn{color:#087f3f;background:#eefaf2;font-size:18px}.vmo-map-empty-card{pointer-events:auto;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:#475569;background:#fffffff0;border-radius:26px;padding:16px;font-weight:850;box-shadow:0 18px 48px #0f172a1f}.vmo-map-provider{left:12px;bottom:calc(92px + env(safe-area-inset-bottom));z-index:10;color:#475569;background:#ffffffe6;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:900;position:absolute;box-shadow:0 8px 22px #0f172a1a}@media (width>=768px){.vmo-map-top{width:430px;right:auto}.vmo-map-bottom-sheet{width:420px;padding:0;bottom:16px;left:16px;right:auto}.vmo-map-provider{bottom:16px;left:456px}}.vmo-map-desktop-sidebar{display:none}.vmo-map-mobile-only{display:block}.vmo-map-desktop-card-list{gap:12px;margin-top:14px;display:grid}.vmo-map-desktop-place-card{cursor:pointer;text-align:left;background:#fff;border:1px solid #e5e7eb;border-radius:22px;grid-template-columns:86px 1fr;gap:12px;padding:12px;display:grid;box-shadow:0 12px 34px #0f172a12}.vmo-map-desktop-place-card.active{border-color:#087f3f;box-shadow:0 16px 42px #087f3f29}.vmo-map-desktop-place-card img{object-fit:cover;border-radius:16px;width:86px;height:76px}.vmo-map-desktop-place-title{color:#064e2f;font-size:16px;font-weight:950;line-height:1.15}.vmo-map-desktop-place-desc{color:#64748b;margin-top:5px;font-size:12px;font-weight:750;line-height:1.35}.vmo-map-sidebar-logo{width:168px;max-width:80%;margin-bottom:12px;display:block}.vmo-map-sidebar-user{color:#64748b;margin-bottom:14px;font-size:13px;font-weight:900}.vmo-map-sidebar-section{background:#ffffffeb;border:1px solid #e5e7eb;border-radius:24px;margin-top:14px;padding:14px;box-shadow:0 14px 40px #0f172a0f}.vmo-map-sidebar-title{color:#064e2f;margin-bottom:10px;font-weight:950}.vmo-map-sidebar-grid{grid-template-columns:repeat(2,1fr);gap:9px;display:grid}.vmo-map-sidebar-btn{color:#111827;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:16px;min-height:46px;font-weight:950}.vmo-map-sidebar-btn.active{color:#fff;background:linear-gradient(135deg,#087f3f,#0bbf62);border-color:#0000}.vmo-map-sidebar-search{box-sizing:border-box;border:1px solid #dfe5e8;border-radius:17px;width:100%;min-height:48px;padding:0 14px;font-weight:850}@media (width>=900px){.vmo-modern-map-page{background:#ecfdf5;grid-template-columns:390px 1fr;display:grid}.vmo-modern-map-canvas{grid-column:2;width:100%;height:100dvh;position:relative;inset:auto}.vmo-map-desktop-sidebar{z-index:10;background:linear-gradient(#ecfdf5,#f8fafc);border-right:1px solid #dbe4dc;grid-column:1;height:100dvh;padding:18px;display:block;overflow-y:auto}.vmo-map-mobile-only,.vmo-map-top,.vmo-map-bottom-sheet{display:none!important}.vmo-map-side-actions{top:18px}.vmo-map-provider{bottom:16px;left:410px}}.vmo-map-shell{background:#dbeafe;width:100%;height:100dvh;position:relative;overflow:hidden}.vmo-map-floating-search{top:max(16px, env(safe-area-inset-top));z-index:20;position:absolute;left:14px;right:14px}.vmo-map-search-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff0;border-radius:24px;align-items:center;gap:10px;padding:14px 16px;display:flex;box-shadow:0 18px 48px #00000024}.vmo-map-search-input{background:0 0;border:none;outline:none;flex:1;font-size:15px;font-weight:700}.vmo-map-chips{top:calc(max(16px, env(safe-area-inset-top)) + 78px);z-index:20;gap:8px;padding-bottom:4px;display:flex;position:absolute;left:14px;right:14px;overflow-x:auto}.vmo-map-chip{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff0;border-radius:999px;flex:none;padding:10px 14px;font-size:13px;font-weight:900;box-shadow:0 8px 24px #0000001f}.vmo-map-bottom-sheet{z-index:25;padding:14px 14px calc(110px + env(safe-area-inset-bottom)) 14px;pointer-events:none;position:absolute;bottom:0;left:0;right:0}.vmo-map-place-card{pointer-events:auto;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff5;border-radius:28px;overflow:hidden;box-shadow:0 -12px 48px #0000001f,0 18px 48px #00000014}.vmo-map-place-image{object-fit:cover;width:100%;height:180px}.vmo-map-place-body{padding:16px}.vmo-map-place-title{margin-bottom:8px;font-size:22px;font-weight:950}.vmo-map-place-desc{color:#64748b;font-size:14px;line-height:1.5}.vmo-map-place-actions{gap:10px;margin-top:16px;display:flex}.vmo-map-primary-btn{color:#fff;background:linear-gradient(135deg,#087f3f,#0bbf62);border:none;border-radius:18px;flex:1;min-height:50px;font-size:14px;font-weight:950}.vmo-map-secondary-btn{background:#eefaf2;border:none;border-radius:18px;min-width:52px;font-size:18px;font-weight:900}.vietmap-stable{background:#dfe7e2;width:100%;height:100%;min-height:520px}.maplibregl-map{background:#dfe7e2!important}.maplibregl-canvas-container,.maplibregl-canvas{width:100%!important;height:100%!important}.maplibregl-canvas{touch-action:pan-x pan-y!important}.maplibregl-control-container{z-index:50}.viet-marker{color:#fff;cursor:pointer;background:linear-gradient(135deg,#0b8f49,#11c96a);border:3px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;font-size:24px;transition:transform .18s,box-shadow .18s,background .18s;display:flex;box-shadow:0 10px 24px #0000003d,0 0 0 4px #11c96a26}.viet-marker:hover{transform:translateY(-4px)scale(1.08);box-shadow:0 18px 36px #0000004d,0 0 0 6px #11c96a38}.viet-marker.active{background:linear-gradient(135deg,#ff7a18,#ffb347);transform:translateY(-6px)scale(1.12)}.viet-marker-edit{background:linear-gradient(135deg,#ff5a1f,#ffcf33)}.viet-popup{background:#fff;border-radius:24px;width:280px;overflow:hidden;box-shadow:0 20px 60px #00000040}.viet-popup-image{object-fit:cover;width:100%;height:170px}.viet-popup-body{padding:16px}.viet-popup-title{color:#083b22;margin-bottom:10px;font-size:22px;font-weight:900}.viet-popup-description{color:#425466;font-size:14px;line-height:1.5}.viet-popup-meta{color:#92400e;margin-top:10px;font-size:13px;font-weight:900}.viet-popup-actions{gap:10px;margin-top:18px;display:flex}.viet-popup-btn{color:#fff;cursor:pointer;background:#0b8f49;border:none;border-radius:16px;flex:1;place-items:center;min-height:42px;padding:10px 14px;font-size:14px;font-weight:900;text-decoration:none;display:grid}@media (width<=768px){.viet-marker{width:44px;height:44px;font-size:20px}.viet-popup{width:240px}.viet-popup-image{height:140px}}.maplibregl-ctrl-geolocate{border-radius:12px!important}.maplibregl-ctrl-group{overflow:hidden;border-radius:14px!important;box-shadow:0 10px 28px #0f172a29!important}.vietmap-stable{background:#eef5ef}.maplibregl-ctrl-attrib,.maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib-inner{display:none!important}.viet-popup-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid!important}.viet-popup-btn{text-align:center}.viet-popup-route{background:linear-gradient(135deg,#0ea5e9,#2563eb)!important}.vmo-glass{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffd1;border:1px solid #e2e8f0e6;box-shadow:0 18px 46px #087f3f1f}.vmo-gradient-button{color:#fff;background:linear-gradient(135deg,#087f3f,#0bbf62);border:none}.vmo-soft-bg{background:radial-gradient(circle at 0 0,#0bbf6229,#0000 34%),linear-gradient(135deg,#f6faf7 0%,#eefaf2 48%,#f8fbf9 100%)}
