html,body{margin:0;padding:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}html.vnsdimap-devtools-khoa .user-map-auth,html.vnsdimap-devtools-khoa .user-map-auth-menu,html.bando-devtools-khoa .user-map-auth,html.bando-devtools-khoa .user-map-auth-menu,html.vnsdimap-devtools-khoa body.map-shell,html.bando-devtools-khoa body.map-shell,html.vnsdimap-devtools-khoa .map-place-search,html.vnsdimap-devtools-khoa .maplibre-map-toolbar,html.vnsdimap-devtools-khoa .maplibregl-ctrl,html.vnsdimap-devtools-khoa .maplibre-basemap-picker,html.bando-devtools-khoa .map-place-search,html.bando-devtools-khoa .maplibre-map-toolbar,html.bando-devtools-khoa .maplibregl-ctrl,html.bando-devtools-khoa .maplibre-basemap-picker{pointer-events:none!important}html.vnsdimap-devtools-khoa #map.map-khoa .maplibregl-canvas,html.bando-devtools-khoa #map.map-khoa .maplibregl-canvas{visibility:hidden}#vnsdimap-devtools-blocker{position:fixed;inset:0;z-index:2147483000;pointer-events:auto;cursor:not-allowed;background:#0f172a0a}#vnsdimap-devtools-blocker[hidden]{display:none!important}.login-page{min-height:100vh;margin:0;position:relative;overflow:hidden;background-color:#d8e4ef;background-image:url(/images/login-vietnam-map.webp);background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}.login-page__main{position:fixed;inset:0;z-index:1;pointer-events:none}.login-panel{position:absolute;pointer-events:auto;width:min(320px,88vw);padding:0 24px 24px;border:1px solid rgba(255,255,255,.92);background:linear-gradient(180deg,#fffffff7,#f8fafcf5 55%,#f1f5f9f2);box-shadow:inset 0 1px #fffffff2,0 10px 28px #0f172a2e,0 24px 56px #0f172a24;border-radius:12px;touch-action:none}.login-panel[hidden],.login-google-btn[hidden]{display:none!important}.login-panel--dragging{box-shadow:inset 0 1px #fffffff2,0 16px 36px #0f172a38,0 32px 64px #0f172a29}.login-panel__drag-handle{cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;padding:28px 0 0;margin:0 0 1rem}.login-panel__drag-handle:active{cursor:grabbing}.login-panel__logo{display:block;width:72px;height:auto;margin:0 auto .35rem;pointer-events:none}.login-panel .login-title{margin:0;font-size:1.35rem;text-align:center;color:#111827}.login-panel__oauth-actions{display:flex;flex-direction:column;gap:12px}.login-google-btn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;box-sizing:border-box;border-radius:9999px;padding:11px 24px;border:1px solid #cbd5e1;background:linear-gradient(180deg,#fff,#f1f5f9);color:#111827;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;box-shadow:inset 0 1px #fffffff2,0 2px 6px #0f172a14;transition:transform .14s ease,box-shadow .14s ease}.login-google-btn:hover:not(.is-busy):not(:disabled){border-color:#94a3b8;transform:translateY(-1px);box-shadow:inset 0 1px #fff,0 4px 10px #0f172a1f}.login-google-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;pointer-events:none}.login-google-btn.is-busy{opacity:.88;cursor:wait;pointer-events:none;transform:none}.login-page--busy,.login-page--busy .login-panel__drag-handle{cursor:wait}.login-error{color:#c62828;font-size:.88rem;margin:0 0 .75rem}.login-info{margin:0;text-align:center;color:#4b5563;font-size:.88rem}.login-location-notice{margin:0;text-align:center;color:#64748b;font-size:.82rem;line-height:1.45}.login-location-notice--blocked{color:#dc2626;font-weight:600}.map-boot-splash{position:fixed;inset:0;z-index:2147482000;display:flex;align-items:center;justify-content:center;background-color:#d8e4ef;background-image:url(/images/login-vietnam-map.webp);background-position:center;background-size:cover;background-repeat:no-repeat;transition:opacity .28s ease}.map-boot-splash[hidden]{display:none!important}.map-boot-splash--hiding{opacity:0;pointer-events:none}.map-boot-splash__panel{width:min(360px,88vw);padding:20px 24px 22px;border:1px solid rgba(255,255,255,.92);background:linear-gradient(180deg,#fffffff7,#f8fafcf5 55%,#f1f5f9f2);box-shadow:inset 0 1px #fffffff2,0 10px 28px #0f172a2e,0 24px 56px #0f172a24;border-radius:12px;text-align:center}.map-boot-splash__label{margin:0 0 14px;font-size:.95rem;color:#334155;font-weight:500}.map-boot-splash__track{height:6px;border-radius:999px;background:#0f172a14;overflow:hidden}.map-boot-splash__bar{height:100%;width:42%;border-radius:999px;background:linear-gradient(90deg,#2563eb,#3b82f6);animation:map-boot-splash-pulse 1.4s ease-in-out infinite;transition:width .35s ease}.map-boot-splash__bar.map-boot-splash__bar--determinate{animation:none;width:8%;transform:none}@keyframes map-boot-splash-pulse{0%{transform:translate(-100%)}50%{transform:translate(180%)}to{transform:translate(-100%)}}body.map-boot-active:not(.map-boot-basemap-visible) .maplibre-map-split-host,body.map-boot-active:not(.map-boot-basemap-visible) .user-map-auth{visibility:hidden}body.map-boot-basemap-visible .map-boot-splash{pointer-events:none}body.map-boot-basemap-visible .map-boot-splash.map-boot-splash--hiding{background-image:none;background-color:transparent}html,body.map-shell{width:100%;height:100%;overflow:hidden}.maplibre-map-split-host,.maplibre-map-split-pane{position:relative;width:100%;height:100%}#map{position:absolute;inset:0}
