@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-600-normal-5IO4e7bK.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-600-normal-DkpCIyan.woff)format("woff")}@property --a{syntax:"<angle>";inherits:false;initial-value:0deg}:root{--be:#fbf7f2;--be-2:#f9f2ea;--ink:#14182e;--ink-soft:#14182ea3;--pink:#ea3897;--pink-2:#ed5ea2;--pink-soft:#ffb6e7;--pink-pale:#ffe6f7;--orange:#ec613f;--yellow:#ffc431;--yellow-soft:#ffd364;--blue:#2252ef;--blue-soft:#7c91ff;--green:#83db49;--green-soft:#cefab1;--ok:#1b8a4b;--danger:#c62828;--font:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-1:32px;--fs-2:16px;--fs-3:12px;--radius:28px;--radius-sm:18px;--tabbar-h:67px;--ease:cubic-bezier(.22, 1, .36, 1);--spring:cubic-bezier(.34, 1.56, .64, 1);font-family:var(--font);color:var(--ink)}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--be);font-size:var(--fs-2);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}#root{z-index:1;position:relative}h1,h2,h3{margin:0 0 8px;font-weight:500;line-height:1.1}h1{font-size:var(--fs-1);text-transform:uppercase}h2{font-size:var(--fs-2);font-weight:600;line-height:1.3}h3{font-size:var(--fs-2);margin-top:8px;font-weight:600}p{margin:0 0 8px}a{color:var(--pink);text-underline-offset:3px;font-weight:600}.muted{color:var(--ink-soft)}.small{font-size:var(--fs-3)}.eyebrow{font-size:var(--fs-3);text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);margin:0 0 8px;font-weight:500}.error{color:var(--danger);margin:0;font-weight:600}.ok{color:var(--ok);font-weight:600}.note{border-radius:var(--radius-sm);background:#ffffffb3;border:1px solid #ffffffe6;padding:10px 14px}.splash{min-height:40vh;color:var(--ink-soft);place-items:center;animation:.6s both fade;display:grid}.links{font-size:var(--fs-3);margin-top:10px}.bg{z-index:0;background:linear-gradient(180deg, #fff1f9 0%, var(--be) 40%, #ffe9df 100%);position:fixed;inset:0;overflow:hidden}.bg__glow{will-change:transform;border-radius:50%;width:90vmax;height:90vmax;position:absolute}.bg__glow--pink{background:radial-gradient(circle,#ea38978c,#ed5ea23d 36%,#0000 66%);animation:24s ease-in-out infinite alternate drift-a;top:-38vmax;right:-38vmax}.bg__glow--blue{background:radial-gradient(circle,#2252ef66,#7c91ff2e 40%,#0000 66%);animation:28s ease-in-out infinite alternate drift-b;top:22%;left:-50vmax}.bg__glow--orange{background:radial-gradient(circle,#ec613f85,#ec613f29 42%,#0000 68%);animation:30s ease-in-out infinite alternate-reverse drift-a;bottom:-50vmax;right:-24vmax}.bg__glow--yellow{background:radial-gradient(circle,#ffc43175,#0000 66%);width:62vmax;height:62vmax;animation:26s ease-in-out infinite alternate-reverse drift-b;bottom:8%;left:-34vmax}.bg__swoosh{width:150%;height:62%;animation:20s ease-in-out infinite alternate sway;position:absolute;top:-4%;right:-22%;-webkit-mask-image:linear-gradient(#000 52%,#0000 96%);mask-image:linear-gradient(#000 52%,#0000 96%)}.bg__shape{will-change:transform;position:absolute}.bg__shape--ring{border:min(8vmin, 56px) solid var(--yellow);opacity:.9;border-bottom:0;border-radius:999px 999px 0 0;width:min(52vmin,360px);height:min(26vmin,180px);animation:9s ease-in-out infinite alternate float;bottom:16vh;left:-6vmin}.bg__shape--arch{background:linear-gradient(180deg, var(--pink-soft), #ffb6e726);border-radius:999px 999px 0 0;width:min(34vmin,240px);height:min(44vmin,300px);animation:11s ease-in-out infinite alternate-reverse float;top:24vh;right:5vmin}.bg__shape--sun{background:radial-gradient(circle at 35% 30%, #ffa58a, var(--orange) 62%);border-radius:50%;width:min(24vmin,170px);height:min(24vmin,170px);animation:8s ease-in-out infinite alternate float;bottom:28vh;right:-7vmin}.bg__shape--orb{background:radial-gradient(circle at 32% 26%,#fffffff5,#fff6 20%,#7c91ff99 58%,#2252efb3);border-radius:50%;width:min(28vmin,200px);height:min(28vmin,200px);animation:10s ease-in-out infinite alternate float;top:10vh;left:12vmin;box-shadow:inset -12px -16px 34px #2252ef61}.glass{border-radius:var(--radius);-webkit-backdrop-filter:blur(11px)saturate(1.6);backdrop-filter:blur(11px)saturate(1.6);background:linear-gradient(145deg,#ffffff54,#ffffff1a);border:1px solid #fff9;padding:16px;position:relative;overflow:hidden;box-shadow:0 16px 36px -12px #2252ef33,0 6px 14px -8px #ea38972e,inset 0 1.5px #fffffff2,inset 0 -1px #14182e0d}.glass[data-pressable=true]:active{box-shadow:inset 0 1px 6px #14182e24,0 6px 14px -8px #14182e33}.glass:before{content:"";pointer-events:none;border-radius:inherit;opacity:.6;background:radial-gradient(120% 70% at 0 0,#fffc,#0000 46%),radial-gradient(90% 60% at 100% 100%,#ffffff4d,#0000 50%);position:absolute;inset:0}.dock__glass:after{content:"";pointer-events:none;border-radius:inherit;mix-blend-mode:soft-light;background:linear-gradient(115deg,#0000 38%,#ffffff8c 50%,#0000 62%) 160% 0/260% 100%;animation:9s ease-in-out infinite sheen;position:absolute;inset:0}.glass>*{z-index:1;position:relative}.surface-layer{isolation:isolate;position:relative}.surface-layer .glass{-webkit-backdrop-filter:blur(11px)saturate(1.6);backdrop-filter:blur(11px)saturate(1.6);background:linear-gradient(145deg,#ffffff54,#ffffff1a)}.surface-layer .glass:before{opacity:.3}.surface-scene{isolation:isolate;animation:.5s both fade;position:relative}.surface-scene>*{animation:none!important}.bg--scene{z-index:-1;position:absolute;inset:0;overflow:hidden}.bg--scene *,.bg--scene:before{animation:none!important}.bg--scene .bg__glow,.bg--scene .bg__shape{will-change:auto}.bg--fixed{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}body:has(.auth-page.surface-scene) .bg--global{display:none}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.glass{background:#ffffffe6}}@media (prefers-reduced-transparency:reduce){.glass{-webkit-backdrop-filter:none;backdrop-filter:none;background:#fffffff2}}.form{gap:12px;display:grid}label{font-weight:500;font-size:var(--fs-2);gap:6px;display:grid}.form small{color:var(--ink-soft);font-size:var(--fs-3);margin-top:-6px}input,select,textarea{font:inherit;color:var(--ink);border-radius:var(--radius-sm);width:100%;transition:box-shadow .25s var(--ease), border-color .25s var(--ease), background .25s var(--ease);background:#ffffffc7;border:1px solid #14182e24;padding:12px 14px}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--pink);background:#fff;outline:none;box-shadow:0 0 0 4px #ea389738}input[type=checkbox]{width:22px;height:22px;accent-color:var(--pink)}.btn{font:inherit;cursor:pointer;color:var(--ink);transition:transform .25s var(--spring), box-shadow .25s var(--ease), filter .25s;background:#fffc;border:1px solid #fffffff2;border-radius:999px;padding:12px 20px;font-weight:600;box-shadow:0 8px 18px -10px #14182e66,inset 0 1px #fff}.btn:active:not(:disabled){transform:scale(.96)}.btn:focus-visible,a:focus-visible{outline-offset:2px;outline:3px solid #ea389780}.tab:focus-visible{outline-offset:-5px;border-radius:999px;outline:3px solid #ea38978c}.btn--primary{color:#fff;background:linear-gradient(120deg, var(--pink), var(--orange));background-size:160% 100%;border-color:#0000;animation:6s ease-in-out infinite alternate shimmer;box-shadow:0 14px 26px -10px #ea3897b3,inset 0 1px #ffffff80}.btn--danger{background:var(--danger);color:#fff;border-color:#0000}.btn--ghost{box-shadow:none;background:0 0;border-color:#14182e2e}.btn:disabled{opacity:.45;cursor:not-allowed;animation:none}.turnstile{min-height:65px}.auth-page{align-content:center;gap:24px;min-height:100%;padding:28px max(20px,50% - 240px) 40px;display:grid}.hero{animation:rise .7s var(--ease) both}.hero__title{align-items:center;gap:14px;display:flex}.hero h1{margin:0;font-size:48px;line-height:1.05}.hero__tag{margin:10px 0 0}.seal{background:conic-gradient(var(--pink), var(--orange), var(--yellow), var(--pink));border-radius:50%;flex:none;place-items:center;width:56px;height:56px;animation:14s linear infinite spin;display:grid;box-shadow:0 10px 22px -8px #ea3897b3}.seal i{background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:44px;height:44px;font-size:22px;font-style:normal;animation:14s linear infinite reverse spin;display:grid}.auth-card{animation:rise .7s var(--ease) .12s both}.auth-card h2{font-size:var(--fs-2);text-transform:uppercase;letter-spacing:.08em}.brand{align-items:center;gap:12px;display:flex}.brand h1{font-size:var(--fs-1);margin:0}.brand__stamp{background:linear-gradient(135deg, var(--pink), var(--orange));color:#fff;border-radius:50%;place-items:center;width:48px;height:48px;font-size:24px;display:grid}.shell{height:100dvh;position:relative;overflow:hidden}.shell__scene{animation:none;position:absolute;inset:0}.pager{z-index:1;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:absolute;inset:0;overflow:hidden}.pg{overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:none;will-change:transform;position:absolute;inset:0;overflow:hidden auto}.pg::-webkit-scrollbar{display:none}.pg--off{visibility:hidden;pointer-events:none}.pg:has(>.map-page){touch-action:none;overflow:hidden}.pg .page>*,.pg .surface-scene{animation:none}.dock{height:calc(var(--tabbar-h) + 80px + env(safe-area-inset-bottom));pointer-events:none;z-index:20;position:fixed;bottom:0;left:0;right:0}.dock__glass{left:0;right:0;bottom:calc(22px + env(safe-area-inset-bottom));height:var(--tabbar-h);width:min(85%,442px);transition:transform .5s var(--spring);border-radius:999px;margin:0 auto;padding:0;position:absolute}.tabbar{left:0;right:0;bottom:calc(22px + env(safe-area-inset-bottom));height:var(--tabbar-h);z-index:21;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:999px;grid-template-columns:repeat(4,1fr);width:min(85%,442px);margin:0 auto;padding:6px;display:grid;position:fixed}.tab{z-index:1;color:var(--ink-soft);-webkit-tap-highlight-color:transparent;transition:color .3s var(--ease);align-content:center;place-items:center;gap:2px;font-size:11px;font-weight:500;text-decoration:none;display:grid;position:relative}button.tab{font-family:inherit;font-size:11px;font-weight:500;line-height:inherit;cursor:pointer;appearance:none;background:0 0;border:none;width:100%;margin:0;padding:0}.tab.active{color:var(--ink);font-weight:600}.tab.active svg{color:var(--pink);transform:translateY(-1px)scale(1.15)}.tabbar[data-modal-active] a.tab.active{color:var(--ink-soft)!important;font-weight:500!important}.tabbar[data-modal-active] a.tab.active svg{color:inherit!important;transform:none!important}.tab svg{transition:transform .45s var(--spring), color .3s var(--ease)}.tab:active svg{transition-duration:.1s;transform:scale(.84)}.tabbar__lens{z-index:0;pointer-events:none;will-change:transform;width:calc(25% - 3px);transform:translate3d(calc(var(--x,0) * 100%), 0, 0);transition:opacity .3s var(--ease);position:absolute;top:6px;bottom:6px;left:6px}.tabbar__lens i{transition:transform .5s var(--spring);background:linear-gradient(145deg,#b2b8c475 0%,#9ea5b24d 100%);border:1px solid #ffffff73;border-radius:999px;position:absolute;inset:0;box-shadow:0 4px 12px -2px #14182e14,inset 0 1px 1px #ffffffa6,inset 0 -1px 1px #14182e0f}.tabbar[data-idle] .tabbar__lens{opacity:0}.tabbar[data-near="0"]>.tab:first-child,.tabbar[data-near="1"]>.tab:nth-child(2),.tabbar[data-near="2"]>.tab:nth-child(3),.tabbar[data-near="3"]>.tab:nth-child(4){color:var(--ink);font-weight:600}.tabbar[data-near="0"]>.tab:first-child svg,.tabbar[data-near="1"]>.tab:nth-child(2) svg,.tabbar[data-near="2"]>.tab:nth-child(3) svg,.tabbar[data-near="3"]>.tab:nth-child(4) svg{color:var(--pink);transform:translateY(-1px)scale(1.15)}.tabbar[data-idle]>.tab svg{color:inherit;transform:none}.tabbar[data-press] .tabbar__lens i{transition-duration:.18s;transform:scale(1.1,1.16)}.tabbar[data-drag] .tabbar__lens i{transform:scale(1.18,1.26)}.shell:has(.tabbar[data-press]) .dock__glass{transition-duration:.18s;transform:scale(.985)}.page{min-height:100%;padding:calc(24px + env(safe-area-inset-top)) max(16px, calc((100% - 640px) / 2)) calc(var(--tabbar-h) + 56px + env(safe-area-inset-bottom));align-content:start;gap:14px;display:grid}.page--passport{grid-template-columns:repeat(2,1fr)}.page--passport>:not(.bg){grid-column:1/-1}.page--passport>.ward-card{grid-column:auto}.page>*{animation:rise .6s var(--ease) both}.page>:first-child{animation-delay:0s}.page>:nth-child(2){animation-delay:60ms}.page>:nth-child(3){animation-delay:.12s}.page>:nth-child(4){animation-delay:.18s}.page>:nth-child(5){animation-delay:.24s}.page>:nth-child(6){animation-delay:.3s}.page>:nth-child(n+7){animation-delay:.36s}.page__head p{margin:0}.section{margin-top:10px}.onboarding{z-index:50;background:#14182e80;grid-template-rows:1fr auto;padding:28px 0;animation:.4s both fade;display:grid;position:fixed;inset:0}.onboarding__cards{scroll-snap-type:x mandatory;scrollbar-width:none;align-items:center;gap:14px;padding:0 20px;display:flex;overflow-x:auto}.onboarding__cards::-webkit-scrollbar{display:none}.onboarding__card{scroll-snap-align:center;min-height:300px;animation:rise .7s var(--ease) both;flex:0 0 86%;align-content:center;gap:10px;display:grid}.onboarding__card:nth-child(2){animation-delay:80ms}.onboarding__card:nth-child(3){animation-delay:.16s}.onboarding__card:nth-child(4){animation-delay:.24s}.onboarding__card h2{font-size:var(--fs-1);text-transform:uppercase;font-weight:500;line-height:1.1}.onboarding__go{margin:14px 20px 0}.map-page{height:100%;min-height:70vh;position:relative}.map-page>.map{position:absolute;inset:0}.map-glass{z-index:20;pointer-events:none;position:absolute;inset:0}.map-glass>.glass,.map-ward-btn,.map-locate{pointer-events:auto!important}.map-ward-btn{top:calc(12px + env(safe-area-inset-top));z-index:20;border-radius:50%;width:56px;height:56px;padding:0;position:absolute;left:12px;pointer-events:auto!important}.map-ward-btn--active{z-index:25!important}.map-ward-btn__trigger{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;place-items:center;width:100%;height:100%;padding:0;display:grid;pointer-events:auto!important}.rainbow-ward-stamp{color:#fff;text-shadow:0 1px 3px #14182e66;width:44px;height:44px;transition:transform .3s var(--spring);background:radial-gradient(circle at 32% 26%,#ffe484 0%,#ffc431 16%,#ec613f 34%,#ea3897 52%,#2252ef 70%,#12b28a 86%,#83db49 100%);border:2.5px solid #fffffff2;border-radius:50%;place-items:center;font-size:20px;font-weight:800;line-height:1;display:grid;box-shadow:inset 0 0 0 2.5px #ffffff73,0 6px 16px -2px #ea38978c,0 2px 6px #14182e26}.rainbow-ward-stamp span{-webkit-user-select:none;user-select:none;display:block;transform:translateY(-.5px)}.map-ward-btn:active .rainbow-ward-stamp{transform:scale(.9)}.map-locate{left:12px;bottom:calc(var(--tabbar-h) + 40px + env(safe-area-inset-bottom));border-radius:50%;width:56px;height:56px;padding:0;position:absolute;pointer-events:auto!important}.map-locate__btn{width:100%;height:100%;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid;pointer-events:auto!important}.map-locate__btn[aria-pressed=true]{color:var(--blue)}.map-toast{top:calc(72px + env(safe-area-inset-top));z-index:5;border-radius:var(--radius-sm);color:var(--danger);animation:rise .4s var(--ease) both;background:#ffffffeb;padding:10px 14px;font-weight:600;position:absolute;left:12px;right:12px}@keyframes wardRowDrop{0%{opacity:0;transform:translate(-18px,-14px)scale(.65)}70%{opacity:1;transform:translate(2px)scale(1.03)}to{opacity:1;transform:translate(0,0)scale(1)}}@keyframes wardStampPop{0%{opacity:0;transform:translate(-10px)scale(0)}70%{opacity:1;transform:translate(2px)scale(1.15)}to{opacity:1;transform:translate(0,0)scale(1)}}.ward-floating-backdrop{z-index:12;background:#14182e1f;animation:.25s both fade;position:absolute;inset:0}.ward-floating-menu{top:calc(74px + env(safe-area-inset-top));z-index:15;pointer-events:auto;flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:absolute;left:12px}.ward-floating-pill{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transform-origin:0 0;min-height:54px;animation:wardRowDrop .38s var(--spring) both;animation-delay:var(--row-delay,0s);transition:transform .2s var(--ease), box-shadow .2s var(--ease);background:#fffffff2;border:1px solid #ffffffe6;border-radius:999px;outline:none;align-items:center;gap:10px;padding:4px 14px 4px 4px;display:inline-flex;box-shadow:0 6px 18px -2px #14182e24,0 2px 6px #14182e0f}.ward-floating-pill:hover{transform:scale(1.03)translate(2px);box-shadow:0 8px 24px -2px #14182e2e}.ward-floating-pill:active{transform:scale(.97)}.ward-floating-pill__badge{background:color-mix(in srgb, var(--ward) 28%, #fff);border-radius:50%;flex:none;place-items:center;width:48px;height:48px;padding:3.5px;display:grid;position:relative;box-shadow:0 3px 10px #14182e1f}.ward-floating-pill__badge-inner{width:100%;height:100%;font-size:22px}.ward-seal-stamp{background:radial-gradient(circle at 32% 26%, color-mix(in srgb, var(--ward) 55%, #fff) 0%, var(--ward) 65%, color-mix(in srgb, var(--ward) 80%, #000) 100%);box-shadow:inset 0 0 0 1.5px #fff6, 0 4px 10px -1px color-mix(in srgb, var(--ward) 75%, transparent), 0 2px 4px #14182e1a;text-shadow:0 1px 2px #14182e73;border:2px solid #fffffff2;border-radius:50%;place-items:center;font-weight:800;line-height:1;display:grid;color:#fff!important}.ward-seal-stamp span{-webkit-user-select:none;user-select:none;display:block;transform:translateY(-.5px)}.ward-floating-pill__star{color:#14182e;background:gold;border:1.5px solid #fff;border-radius:50%;place-items:center;width:16px;height:16px;font-size:10px;font-weight:900;display:grid;position:absolute;top:-2px;right:-2px;box-shadow:0 1px 3px #00000040}.ward-floating-pill__stamps{align-items:center;gap:6px;display:flex}.ward-floating-stamp{background:color-mix(in srgb, var(--ward) 30%, white);transform-origin:0;width:28px;height:28px;animation:wardStampPop .35s var(--spring) both;animation-delay:calc(var(--row-delay,0s) + var(--stamp-delay,.1s));border-radius:50%;flex:none;place-items:center;padding:2.5px;display:grid;position:relative;box-shadow:0 2px 5px #14182e1a}.ward-floating-stamp__inner{background:var(--ward);width:100%;height:100%;color:var(--ward-ink);border-radius:50%;place-items:center;display:grid}.ward-floating-stamp__inner svg{width:12px;height:12px}.ward-floating-stamp--ward{flex:none;width:35px;height:35px;padding:0;font-size:16px}.ward-floating-placeholder{border:2px dashed color-mix(in srgb, var(--ward) 45%, transparent);background:color-mix(in srgb, var(--ward) 10%, transparent);transform-origin:0;width:28px;height:28px;animation:wardStampPop .35s var(--spring) both;animation-delay:calc(var(--row-delay,0s) + var(--stamp-delay,.1s));border-radius:50%;flex:none;place-items:center;display:grid}.ward-floating-placeholder:after{content:"";background:color-mix(in srgb, var(--ward) 40%, transparent);border-radius:50%;width:6px;height:6px}.pin{cursor:pointer;background:0 0;border:0;width:36px;height:36px;padding:0;position:relative}.pin:before{content:"";background:var(--pin);transition:transform .3s var(--spring);border:3px solid #fff;border-radius:50%;position:absolute;inset:4px;box-shadow:0 8px 16px -4px #14182e80}.pin:after{content:"";border:2px solid var(--pin);border-radius:50%;animation:2.6s ease-out infinite ping;position:absolute;inset:0}.pin:active:before{transform:scale(.88)}.pin--hidden:before{border:2px dashed var(--pin);background:color-mix(in srgb, var(--pin) 30%, transparent);filter:blur(1.2px);animation:3s ease-in-out infinite breathe;inset:0}.pin--hidden:after{display:none}.pin--event:before{background:linear-gradient(135deg, var(--yellow-soft), var(--orange));border-radius:10px;animation:1.6s ease-in-out infinite bob}.pin--event:after{border-color:var(--orange);border-radius:14px}.pin--done:before{opacity:.45;filter:grayscale(.4)}.map[data-far] .pin:before{border-width:2px;inset:11px}.map[data-far] .pin--hidden:before{inset:7px}.map[data-far] .pin:after,.pin--done:after{display:none}.me-dot{background:var(--blue);border:3px solid #fff;border-radius:50%;width:20px;height:20px;position:relative;box-shadow:0 4px 10px #2252ef80}.me-dot:after{content:"";border:2px solid var(--blue);border-radius:50%;animation:2s ease-out infinite ping;position:absolute;inset:-9px}.zone-label{font-size:var(--fs-3);color:var(--ink);pointer-events:none;white-space:nowrap;background:#ffffffb8;border:1px solid #fff;border-radius:999px;align-items:center;gap:6px;padding:2px 10px 2px 3px;font-weight:600;display:inline-flex;box-shadow:0 4px 10px -4px #14182e59}.zone-label__no{background:var(--ink);color:#fff;min-width:22px;height:22px;font-size:var(--fs-3);border-radius:999px;place-items:center;padding:0 5px;font-weight:600;line-height:1;display:grid}.zone-label__dot{background:var(--dot);border-radius:50%;width:8px;height:8px;margin-left:-2px;box-shadow:0 0 0 1.5px #fff}.maplibregl-ctrl-attrib{border-radius:10px 0 0;font-size:10px;background:#ffffffb3!important}.maplibregl-ctrl-bottom-right{bottom:calc(var(--tabbar-h) + 22px)}.maplibregl-ctrl-group{border-radius:16px;overflow:hidden;box-shadow:0 8px 18px -8px #14182e80}.ward-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.ward-card{text-align:center;background:linear-gradient(145deg,#ffffff47 0%,#ffffff14 100%);border:1px solid #ffffff6b;border-radius:40px;justify-items:center;gap:8px;padding:18px 12px 14px;display:grid;box-shadow:0 10px 24px -2px #14182e4d,0 4px 10px -2px #14182e26,inset 0 0 0 1px #ffffff59,inset 0 2px 4px #ffffffb3,inset 0 -3px 8px #14182e24,inset 0 0 24px #ffffff1f}.ward-card:hover{filter:none;transform:none}.ward-card:before{background:radial-gradient(120% 70% at 50% 0%, color-mix(in srgb, var(--ward) 14%, #fff9), transparent 65%);opacity:.35;border-radius:inherit}.ward-card:after{display:none!important}.ward-card h2{text-transform:uppercase;letter-spacing:.06em;margin:0}.stamp{width:88px;height:88px;font-size:var(--fs-1);border:3px dashed color-mix(in srgb, var(--ward) 65%, transparent);color:color-mix(in srgb, var(--ward) 70%, var(--ink));background:#ffffff59;border-radius:50%;place-items:center;font-weight:600;display:grid}.stamp--on{border:3px solid var(--ward);color:var(--ward-ink,#fff);background:radial-gradient(circle at 32% 26%, color-mix(in srgb, var(--ward) 60%, white), var(--ward) 62%);box-shadow:inset 0 0 0 5px #fff6, 0 12px 22px -10px var(--ward);animation:stamp .9s var(--spring) both;animation-delay:calc(var(--n,0) * .11s + .25s);position:relative}.stamp--on:after{content:"";border:3px solid var(--ward);opacity:0;animation:1.2s ease-out both ripple;animation-delay:calc(var(--n,0) * .11s + .7s);border-radius:50%;position:absolute;inset:-4px}.stamp--small{width:44px;height:44px;font-size:var(--fs-2)}.dot{border:2px solid var(--ward);width:12px;height:12px;transition:background .4s var(--ease), transform .4s var(--spring);border-radius:50%;margin:0 3px;display:inline-block}.dot--on{background:var(--ward);transform:scale(1.1)}.extra-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.extra-list li{border-radius:var(--radius-sm);background:#ffffff9e;border:1px solid #fff;align-items:center;gap:12px;padding:8px 12px;display:flex}.gift-status p{margin:0}.my-rank{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.my-rank strong{background:linear-gradient(120deg, var(--pink), var(--orange));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:48px;font-weight:500;line-height:1}.rank-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.rank-row{border-radius:var(--radius-sm);animation:rise .5s var(--ease) both;background:#ffffff9e;border:1px solid #fff;grid-template-columns:44px 1fr auto;align-items:center;gap:8px;padding:10px 14px;display:grid}.rank-row:nth-child(2){animation-delay:40ms}.rank-row:nth-child(3){animation-delay:80ms}.rank-row:nth-child(4){animation-delay:.12s}.rank-row:nth-child(5){animation-delay:.16s}.rank-row:nth-child(n+6){animation-delay:.2s}.rank-row--me{border-color:var(--pink);box-shadow:0 10px 20px -12px var(--pink);background:linear-gradient(120deg,#ffb6e7b3,#ffd3648c)}.rank-row__no{color:var(--ink-soft);font-weight:600}.rank-row__pts{font-weight:600}.rank-row:nth-child(-n+3) .rank-row__no{width:32px;height:32px;color:var(--ink);background:linear-gradient(135deg, #ffe08a, var(--yellow));border-radius:50%;place-items:center;display:grid;box-shadow:0 4px 10px -4px #ffc431e6}.rank-row:nth-child(2) .rank-row__no{background:linear-gradient(135deg,#fff,#cfd6ea);box-shadow:0 4px 10px -4px #7c91ffb3}.rank-row:nth-child(3) .rank-row__no{background:linear-gradient(135deg, #ffc3a6, var(--orange));color:#fff;box-shadow:0 4px 10px -4px #ec613fcc}.qr-wrap{place-items:center;min-width:0;display:grid}.qr-card{justify-items:center;gap:10px;width:100%;min-width:0;display:grid}.qr-frame{background:conic-gradient(from var(--a), var(--pink), var(--yellow), var(--blue), var(--green), var(--pink));border-radius:30px;width:min(100%,280px);padding:4px;box-shadow:0 20px 36px -14px #ea389799}.qr{aspect-ratio:1;background:#fff;border-radius:26px;width:100%;padding:8px}.qr svg{width:100%;height:auto;animation:.4s both fade;display:block}.qr-card__timer{background:#14182e1a;border-radius:6px;width:min(100%,272px);height:6px;overflow:hidden}.qr-card__timer span{background:linear-gradient(90deg, var(--pink), var(--orange));height:100%;transition:width 1s linear;display:block}.reward-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.reward-list li{border-radius:var(--radius-sm);background:#ffffff9e;border:1px solid #fff;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex}.link-list{gap:12px;margin-top:8px;display:grid}.me-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.me-head__title{flex:auto;min-width:0}.me-cart-btn{width:48px;height:48px;color:var(--ink);transition:transform .2s var(--spring), box-shadow .2s, background .2s;background:#ffffffe0;border:1.5px solid #14182e24;border-radius:50%;flex:0 0 48px;justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative;box-shadow:0 6px 16px -4px #14182e1f,inset 0 1px #fff}.me-cart-btn:hover{background:#fff;transform:scale(1.06);box-shadow:0 8px 20px -4px #ea389740}.me-cart-btn:active{transform:scale(.95)}.me-cart-btn__badge{background:linear-gradient(135deg, var(--pink), var(--orange));color:#fff;border:1.5px solid #fff;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:700;line-height:1.1;position:absolute;top:-4px;right:-4px;box-shadow:0 3px 8px #ea389773}.page--rewards{padding-bottom:calc(var(--tabbar-h) + 40px)}.rewards-head{gap:10px;display:grid}.back-btn{width:fit-content;color:var(--ink);transition:background .2s, transform .2s var(--spring);background:#ffffffbf;border:1px solid #14182e1f;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.back-btn:hover{background:#fff;transform:translate(-2px)}.rewards-balance-card{border-radius:var(--radius);background:linear-gradient(135deg,#ffffffd9,#fff2f8bf);border:1.5px solid #fff;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.rewards-balance-number{color:var(--pink);margin-top:4px;font-size:32px;font-weight:700;line-height:1;display:block}.rewards-balance-total{text-align:right}.rewards-info-box{border-radius:var(--radius-sm);padding:14px 18px}.rewards-info-box h3{margin:0 0 4px;font-size:14px}.me-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;width:100%;margin-top:24px;display:flex}.me-action-btn{cursor:pointer;transition:transform .2s var(--spring), box-shadow .2s var(--ease), background .2s, border-color .2s;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:13px 26px;font-family:inherit;font-size:16px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.me-action-btn svg{flex-shrink:0;width:20px;height:20px;display:block}.me-action-btn:active{transform:scale(.95)}.me-action-btn--settings{color:var(--ink);background:#ffffffe0;border:1.5px solid #14182e29;box-shadow:0 4px 14px -3px #14182e1a,inset 0 1px #ffffffe6}.me-action-btn--settings:hover{background:#fff;border-color:#14182e4d;transform:translateY(-1px);box-shadow:0 6px 18px -3px #14182e29,inset 0 1px #fff}.me-action-btn--logout{color:var(--danger);background:#c6282814;border:1.5px solid #c6282847;box-shadow:0 4px 14px -3px #c6282824,inset 0 1px #ffffffd9}.me-action-btn--logout:hover{background:#c6282826;border-color:#c6282873;transform:translateY(-1px);box-shadow:0 6px 18px -3px #c6282838,inset 0 1px #ffffffe6}.settings-backdrop{z-index:150;animation:fade .25s var(--ease) both;background:#14182e73;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.settings-card{border-radius:var(--radius);width:min(100%,360px);animation:pop .35s var(--spring) both;background:#fbf7f2f5;border:1px solid #ffffffe6;padding:20px;box-shadow:0 20px 48px -12px #14182e59}.settings-card__header{border-bottom:1px solid #14182e14;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;display:flex}.settings-card__title-group{align-items:center;gap:8px;display:flex}.settings-card__title-group h3{color:var(--ink);margin:0;font-size:16px;font-weight:600}.settings-card__icon{width:28px;height:28px;color:var(--ink);background:#14182e0f;border-radius:50%;place-items:center;display:grid}.settings-card__close{cursor:pointer;width:30px;height:30px;color:var(--ink);transition:transform .2s var(--spring), background .2s;background:#ffffffd9;border:1px solid #14182e1f;border-radius:50%;place-items:center;font-size:13px;font-weight:600;display:grid}.settings-card__close:hover{background:#fff;transform:scale(1.08)}.settings-card__body{gap:12px;display:grid}.settings-item{border-radius:var(--radius-sm);background:#ffffffb8;border:1px solid #fff;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.settings-item__text strong{margin-bottom:2px;font-size:13px;font-weight:600;display:block}.settings-item__text span{font-size:11px;display:block}.settings-toggle{cursor:pointer;flex-shrink:0;width:44px;height:24px;margin:0;display:inline-block;position:relative}.settings-toggle input{opacity:0;width:0;height:0;position:absolute}.settings-toggle__slider{transition:background-color .25s var(--ease);background-color:#14182e29;border-radius:999px;position:absolute;inset:0}.settings-toggle__slider:before{content:"";width:18px;height:18px;transition:transform .25s var(--spring);background-color:#fff;border-radius:50%;position:absolute;bottom:3px;left:3px;box-shadow:0 2px 4px #14182e33}.settings-toggle input:checked+.settings-toggle__slider{background-color:var(--pink)}.settings-toggle input:checked+.settings-toggle__slider:before{transform:translate(20px)}.settings-meta{text-align:center;padding-top:6px}.settings-meta__badge{text-transform:uppercase;letter-spacing:.05em;color:var(--pink);background:#ea38971a;border-radius:999px;margin-bottom:4px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.profile-modal__close-btn{width:48px;height:48px;color:var(--ink);cursor:pointer;transition:transform .2s var(--spring), background .2s, border-color .2s;-webkit-tap-highlight-color:transparent;background:#14182e0a;border:1.5px solid #14182e24;border-radius:50%;flex:0 0 48px;justify-content:center;align-items:center;padding:0;display:inline-flex}.profile-modal__close-btn:hover{background:#14182e17;border-color:#14182e3d;transform:scale(1.06)}.profile-modal__close-btn:active{transform:scale(.92)}.me-head__actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.sheet .page--me{min-height:auto;padding:12px max(16px, calc((100% - 500px) / 2)) calc(24px + env(safe-area-inset-bottom))}.sheet .qr-wrap{background:#fbf9f6;border:1px solid #14182e14;box-shadow:0 10px 24px -4px #14182e0f}.sheet .link-list a,.sheet .link-list button{width:100%;font:inherit;cursor:pointer;color:var(--ink);border-radius:var(--radius-sm);transition:background .2s, border-color .2s, transform .2s var(--spring);appearance:none;background:#f8f9fc;border:1px solid #14182e14;justify-content:space-between;align-items:center;padding:14px 18px;font-weight:500;text-decoration:none;display:flex}.sheet .link-list a:active,.sheet .link-list button:active{background:#fff;border-color:#14182e33;transform:translateY(-1px)}.profile-modal-subview{width:100%;position:relative}.profile-modal-subview__close{z-index:10;position:absolute;top:12px;right:16px}.sheet .page{min-height:auto;padding:12px max(16px, calc((100% - 500px) / 2)) calc(24px + env(safe-area-inset-bottom))}.sheet .page--rewards .rewards-head,.sheet .announcements-head{padding-right:56px}.step{align-items:flex-start;gap:14px;display:flex}.step__no{background:linear-gradient(135deg, var(--pink), var(--orange));color:#fff;height:40px;box-shadow:0 8px 16px -8px var(--pink);border-radius:50%;flex:0 0 40px;place-items:center;font-weight:600;display:grid}.faq dt{margin-top:10px;font-weight:600}.faq dd{color:var(--ink-soft);margin:2px 0 0}.announcement h2{margin-bottom:4px}.pin-tag{font-size:var(--fs-3);background:var(--yellow);color:var(--ink);vertical-align:middle;border-radius:999px;padding:2px 8px}.scanner{gap:14px;max-width:520px;margin:0 auto;padding:20px 16px 32px;display:grid}.scan-box{border-radius:var(--radius);position:relative;overflow:hidden;box-shadow:0 22px 40px -16px #14182e99}.scan-video{aspect-ratio:1;object-fit:cover;background:var(--ink);width:100%;display:block}.scan-box:before,.scan-box:after{content:"";z-index:2;pointer-events:none;border:4px solid #fff;width:44px;height:44px;position:absolute}.scan-box:before{border-bottom:0;border-right:0;border-radius:14px 0 0;top:18px;left:18px}.scan-box:after{border-top:0;border-left:0;border-radius:0 0 14px;bottom:18px;right:18px}.scan-line{background:linear-gradient(90deg, transparent, var(--pink), transparent);height:3px;box-shadow:0 0 18px var(--pink);z-index:2;pointer-events:none;border-radius:3px;animation:2.4s ease-in-out infinite alternate scan;position:absolute;left:12%;right:12%}.scan-result{border-radius:var(--radius);text-align:center;animation:pop .5s var(--spring) both;padding:20px}.scan-result--ok{border:2px solid var(--green);background:#83db4966}.scan-result--err{border:2px solid var(--orange);background:#ec613f40}.scan-result strong{font-size:var(--fs-1);text-transform:uppercase;font-weight:500;display:block}.admin{z-index:1;box-sizing:border-box;grid-template-columns:280px minmax(0,1fr);gap:24px;max-width:1560px;min-height:100vh;margin:0 auto;padding:24px;display:grid;position:relative}.admin__sidebar{-webkit-backdrop-filter:saturate(180%);box-sizing:border-box;scrollbar-width:thin;background:#ffffffc7;border:1px solid #fffffff2;border-radius:28px;flex-direction:column;height:calc(100vh - 48px);padding:24px 18px;display:flex;position:sticky;top:24px;overflow-y:auto;box-shadow:0 16px 40px -12px #14182e14,0 2px 6px #14182e05,inset 0 1px 1px #ffffffe6}.admin__brand{border-bottom:1px solid #14182e12;align-items:center;gap:14px;margin-bottom:18px;padding-bottom:20px;display:flex}.admin__brand-seal{color:#fff;width:44px;height:44px;font-family:var(--font-display,inherit);-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#ea3897 0%,#fa8055 100%);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;font-size:24px;font-weight:900;display:flex;transform:rotate(-3deg);box-shadow:0 8px 18px -4px #ea389773}.admin__brand-info{flex-direction:column;gap:3px;display:flex}.admin__brand-title{font-family:var(--font-display,inherit);letter-spacing:-.02em;color:var(--ink);font-size:19px;font-weight:800;line-height:1.1}.admin__brand-tag{text-transform:uppercase;letter-spacing:.06em;color:var(--pink);background:#ea38971a;border:1px solid #ea389733;border-radius:999px;align-self:flex-start;padding:2px 8px;font-size:10.5px;font-weight:700}.admin__user-card{background:#ffffffa6;border:1px solid #14182e0f;border-radius:18px;align-items:center;gap:12px;margin-bottom:22px;padding:12px 14px;display:flex;box-shadow:0 2px 8px #14182e08}.admin__user-avatar{color:#fff;background:linear-gradient(135deg,#4f46e5 0%,#ea3897 100%);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:13px;font-weight:800;display:flex;box-shadow:0 4px 10px -2px #4f46e559}.admin__user-details{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.admin__user-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:700;display:block;overflow:hidden}.admin__role-pill{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;background:#14182e14;border-radius:999px;align-self:flex-start;align-items:center;padding:2px 8px;font-size:10.5px;font-weight:700;display:inline-flex}.admin__role-pill--btc{color:var(--pink);background:#ea38971f;border:1px solid #ea389740}.admin__role-pill--boss{color:#b45309;background:#f59e0b26;border:1px solid #f59e0b4d}.admin__role-pill--dev{color:#7c3aed;background:#8b5cf624;border:1px solid #8b5cf647}.admin__role-pill--staff{color:#0284c7;background:#0ea5e924;border:1px solid #0ea5e947}.admin__nav{flex-direction:column;gap:6px;margin:0;padding:0;display:flex}.admin__nav-header{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:6px;padding:0 12px;font-size:11px;font-weight:700}.admin__nav-link{color:var(--ink-soft);transition:all .22s var(--ease);border:1px solid #0000;border-radius:16px;align-items:center;gap:12px;padding:11px 16px;font-size:14.5px;font-weight:600;text-decoration:none;display:flex}.admin__nav-link svg{stroke:currentColor;transition:transform .22s var(--ease), stroke .22s var(--ease);flex-shrink:0}.admin__nav-link:hover{color:var(--ink);background:#ffffffd9;transform:translate(3px);box-shadow:0 4px 14px -4px #14182e0f}.admin__nav-link.active{color:var(--pink);background:#fff;border-color:#ea389733;font-weight:700;box-shadow:0 8px 24px -6px #ea389747,inset 0 0 0 1px #fffc}.admin__nav-link.active svg{stroke:var(--pink);transform:scale(1.12)}.admin__sidebar-footer{border-top:1px solid #14182e12;margin-top:auto;padding-top:18px}.admin__signout-btn{width:100%;color:var(--ink);cursor:pointer;transition:all .22s var(--ease);background:#14182e0a;border:1px solid #14182e12;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:12px 18px;font-size:14px;font-weight:600;display:flex}.admin__signout-btn:hover{color:#dc2626;background:#fff;border-color:#dc262640;transform:translateY(-1px);box-shadow:0 6px 18px -4px #dc26262e}.admin__signout-btn:active{transform:scale(.98)}.admin__body{min-width:0;animation:rise .4s var(--ease) both;flex-direction:column;gap:20px;display:flex}.admin__header{-webkit-backdrop-filter:saturate(180%);background:#ffffffc7;border:1px solid #fffffff2;border-radius:28px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 28px;display:flex;box-shadow:0 12px 32px -10px #14182e0f,0 2px 6px #14182e05}.admin__header-info{flex-direction:column;gap:2px;display:flex}.admin__breadcrumbs{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.admin__breadcrumbs-slash{color:#14182e40}.admin__breadcrumbs-active{color:var(--pink)}.admin__header-title{font-family:var(--font-display,inherit);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:26px;font-weight:800;line-height:1.2}.admin__header-actions{align-items:center;gap:12px;display:flex}.admin__content{align-content:start;gap:22px;display:grid}.admin__content>h1{display:none}.admin .glass{-webkit-backdrop-filter:saturate(160%);transition:transform .25s var(--ease), box-shadow .25s var(--ease);background:#ffffffd1;border:1px solid #fffffff2;border-radius:28px;padding:26px 28px;box-shadow:0 14px 36px -10px #14182e0f,0 2px 6px #14182e05}.admin .glass:hover{box-shadow:0 18px 44px -10px #14182e14,0 2px 8px #14182e08}.admin h2{color:var(--ink);letter-spacing:-.015em;border-bottom:1px solid #14182e12;align-items:center;gap:10px;margin:0 0 18px;padding-bottom:14px;font-size:19px;font-weight:700;display:flex}.admin h2:before{content:"";background:linear-gradient(180deg, var(--pink), #fa8055);border-radius:999px;flex-shrink:0;width:4px;height:18px;display:inline-block}.table-wrap{background:#ffffffa6;border:1px solid #14182e14;border-radius:20px;overflow-x:auto;box-shadow:inset 0 1px 2px #14182e05}.table{border-collapse:separate;border-spacing:0;width:100%}.table th,.table td{text-align:left;font-size:var(--fs-3);vertical-align:middle;padding:12px 16px}.table th{text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);white-space:nowrap;background:#14182e09;border-bottom:1px solid #14182e14;font-size:11.5px;font-weight:700}.table td{color:var(--ink);transition:background .15s var(--ease);border-bottom:1px solid #14182e0d}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:#ffffffd9}.row{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.row>*{flex:180px}.row>.btn{flex:none}.admin input:not([type=checkbox]):not([type=radio]),.admin select,.admin textarea{color:var(--ink);transition:border-color .2s var(--ease), box-shadow .2s var(--ease);background:#fffffff2;border:1px solid #14182e1f;border-radius:16px;padding:11px 16px;font-family:inherit;font-size:14px}.admin input:not([type=checkbox]):not([type=radio]):focus,.admin select:focus,.admin textarea:focus{border-color:var(--pink);outline:none;box-shadow:0 0 0 3.5px #ea38972e}.badge{color:var(--ink-soft);letter-spacing:.02em;background:#14182e12;border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.admin .error{color:#b91c1c;background:#ef444417;border:1px solid #ef444440;border-radius:16px;margin:12px 0;padding:12px 18px;font-size:13.5px;font-weight:600}.admin .ok{color:#15803d;background:#22c55e17;border:1px solid #22c55e40;border-radius:16px;margin:12px 0;padding:12px 18px;font-size:13.5px;font-weight:600}.print-sheet{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;display:grid}.print-sheet figure{text-align:center;word-break:break-all;background:#fff;border:1px solid #14182e14;border-radius:16px;margin:0;padding:12px;font-size:11px;box-shadow:0 4px 12px #14182e0a}.print-sheet svg{border-radius:8px;width:100%;height:auto}@media (width<=900px){.admin{grid-template-columns:1fr;gap:16px;padding:16px 12px}.admin__sidebar{border-radius:24px;height:auto;margin:0;padding:18px 16px;position:static}.admin__brand{margin-bottom:14px;padding-bottom:14px}.admin__user-card{margin-bottom:14px}.admin__nav{-webkit-overflow-scrolling:touch;scrollbar-width:none;background:#14182e0a;border-radius:999px;flex-direction:row;padding:6px;overflow-x:auto}.admin__nav::-webkit-scrollbar{display:none}.admin__nav-header{display:none}.admin__nav-link{white-space:nowrap;border-radius:999px;flex:none;padding:8px 16px;font-size:13.5px}.admin__nav-link:hover{transform:none}.admin__sidebar-footer{margin-top:14px;padding-top:14px}.admin__header{border-radius:22px;padding:16px 20px}.admin .glass{border-radius:22px;padding:20px 18px}}@media print{body{background:#fff}.bg,.admin__sidebar,.admin__header,.no-print{display:none!important}.admin{max-width:none;padding:0;display:block}}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(60px)scale(.96)}to{opacity:1;transform:none}}@keyframes slide-down{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.7)}60%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes stamp{0%{opacity:0;transform:scale(2.4)rotate(-28deg)}55%{opacity:1;transform:scale(.9)rotate(-4deg)}75%{transform:scale(1.05)rotate(-9deg)}to{opacity:1;transform:scale(1)rotate(-8deg)}}@keyframes ripple{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}@keyframes ping{0%{opacity:.8;transform:scale(.7)}80%,to{opacity:0;transform:scale(1.7)}}@keyframes breathe{0%,to{opacity:.7;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}@keyframes bob{0%,to{transform:translateY(0)rotate(-4deg)}50%{transform:translateY(-5px)rotate(4deg)}}@keyframes drift-a{0%{transform:translate(0,0)scale(1)}to{transform:translate(-8vmax,6vmax)scale(1.12)}}@keyframes drift-b{0%{transform:translate(0,0)scale(1)}to{transform:translate(9vmax,-7vmax)scale(1.1)}}@keyframes float{0%{transform:translate(0,0)rotate(0)}to{transform:translateY(-16px)rotate(4deg)}}@keyframes sway{0%{transform:translate(0,0)rotate(-1.5deg)}to{transform:translate(-3%,4%)rotate(1.5deg)}}@keyframes sheen{0%{background-position:160% 0}55%,to{background-position:-60% 0}}@keyframes shimmer{0%{background-position:0 0}to{background-position:100% 0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rot{to{--a:360deg}}@keyframes scan{0%{top:14%}to{top:84%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (pointer:coarse){.bg__glow,.bg__swoosh,.bg__shape{will-change:auto;animation:none!important}.dock__glass:after{opacity:.18;background-position:50% 0;animation:none}}.sheet-scrim{z-index:140;opacity:0;pointer-events:none;touch-action:none;background:#14182e61;position:fixed;inset:0}.sheet-scrim[data-open=true]{pointer-events:auto}.sheet-layer{z-index:141;pointer-events:none;will-change:transform;contain:layout style;height:min(84dvh,680px);position:fixed;bottom:0;left:0;right:0;transform:translateY(150vh)}.sheet-layer:not([data-open=true]){visibility:hidden!important;pointer-events:none!important}.sheet-root{pointer-events:none;position:absolute;inset:0}.sheet{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));pointer-events:auto;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:none;backdrop-filter:none;contain:paint;background:#fff;border:1px solid #14182e14;border-radius:36px;outline:none;flex-direction:column;max-width:520px;max-height:calc(100% - 24px);margin:0 auto;padding:14px 22px 24px;display:flex;position:absolute;box-shadow:0 -12px 48px #14182e38,0 -2px 12px #14182e14}.sheet:before,.sheet:after{display:none!important}.sheet__grab{touch-action:none;cursor:grab;background:#14182e38;border-radius:999px;flex:none;width:40px;height:5px;margin:0 auto 14px;display:block}.sheet__grab:active{cursor:grabbing}.sheet__body{overscroll-behavior:contain;scrollbar-width:none;flex:auto;min-height:0;overflow-y:auto}.sheet__body::-webkit-scrollbar{display:none}.sheet h2{font-size:var(--fs-1);text-transform:uppercase;margin-top:4px;font-weight:500;line-height:1.1}.sheet__meta{margin:0}.ward-sheet__head{align-items:center;gap:16px;margin-bottom:6px;display:flex}.ward-sheet__head h2{margin:0}.ward-sheet__head .stamp{width:72px;height:72px;font-size:var(--fs-1);flex:none}.ward-sheet__title{font-size:var(--fs-3);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin:16px 0 8px;font-weight:500}.place-list{gap:8px;margin:0 0 12px;padding:0;list-style:none;display:grid}.place{border-radius:var(--radius-sm);background:#f8f9fd;border:1px solid #14182e0f;grid-template-columns:32px 1fr auto;align-items:center;gap:12px;padding:10px 14px 10px 10px;display:grid}.place__no{border:2px dashed color-mix(in srgb, var(--ward) 65%, transparent);width:32px;height:32px;font-size:var(--fs-3);transition:background .4s var(--ease), color .4s var(--ease);border-radius:50%;place-items:center;font-weight:600;display:grid}.place--on .place__no{background:var(--ward);border:2px solid var(--ward);color:var(--ward-ink,#fff)}.place__name{gap:2px;min-width:0;display:grid}.place__state{font-size:var(--fs-3);color:var(--ink-soft);white-space:nowrap;font-weight:600}.place--on .place__state{color:var(--ok)}.place--on .place__state:before{content:"✓ "}.ward-progress-sheet{flex-direction:column;gap:12px;padding-bottom:8px;display:flex}.ward-progress-sheet__summary{border-radius:var(--radius-sm);background:#f4f6fc;border:1px solid #14182e0f;justify-content:space-between;align-items:center;margin-bottom:2px;padding:8px 14px;display:flex}.ward-progress-sheet__badge{font-size:var(--fs-3);color:var(--ink);align-items:center;gap:8px;font-weight:600;display:flex}.ward-progress-sheet__rainbow-dot{background:conic-gradient(#ffc431,#ec613f,#ea3897,#2252ef,#12b28a,#83db49,#ffc431);border-radius:50%;width:10px;height:10px;box-shadow:0 0 6px #ea389766}.ward-progress-list{flex-direction:column;gap:10px;display:flex}.ward-progress-row{border-radius:var(--radius-sm);transition:background .2s var(--ease);background:#f8f9fd;border:1px solid #14182e0f;grid-template-columns:130px 1fr;align-items:center;gap:12px;padding:10px 12px;display:grid}.ward-progress-row:hover{background:#f2f4fa}.ward-progress-row__ward{align-items:center;gap:10px;min-width:0;display:flex}.ward-progress-row__stamp{letter-spacing:-.02em;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;font-size:13px;font-weight:700;display:grid;position:relative;box-shadow:0 2px 6px -1px #14182e29,inset 0 0 0 2px #fff6}.ward-progress-row__stamp--achieved{box-shadow:0 3px 10px -1px var(--ward-c), inset 0 0 0 2px #fffc}.ward-progress-row__star{color:#14182e;background:gold;border:1.5px solid #fff;border-radius:50%;place-items:center;width:15px;height:15px;font-size:9px;font-weight:900;display:grid;position:absolute;top:-3px;right:-3px;box-shadow:0 1px 3px #0003}.ward-progress-row__info{flex-direction:column;min-width:0;display:flex}.ward-progress-row__name{white-space:nowrap;text-overflow:ellipsis;color:var(--ink);font-size:13px;font-weight:600;overflow:hidden}.ward-progress-row__count{line-height:1.2}.ward-progress-row__track{scrollbar-width:none;align-items:center;padding:2px 0;display:flex;overflow-x:auto}.ward-progress-row__track::-webkit-scrollbar{display:none}.ward-progress-row__stamps{flex-wrap:nowrap;align-items:center;gap:7px;display:flex}.ward-progress-row__empty{align-items:center;gap:6px;display:flex}.ward-progress-stamp-slot{background:#14182e05;border:1.5px dashed #14182e2e;border-radius:50%;width:28px;height:28px}.ward-progress-row__empty-text{margin-left:2px;font-size:11px;font-style:italic}.ward-progress-found-stamp{border:2px solid var(--ward-c);background:#fff;border-radius:50%;flex-direction:column;flex:none;justify-content:center;align-items:center;width:32px;height:32px;display:flex;box-shadow:0 2px 5px -1px #14182e1a}.ward-progress-found-stamp__num{font-size:9px;font-weight:700;line-height:1}.ward-progress-found-stamp--ward{width:32px;height:32px;box-shadow:0 3px 8px -2px var(--ward-c);font-size:14px;font-weight:700}.sheet-scrim[data-lift=tabs]{z-index:18}.sheet-layer[data-lift=tabs]{--dock-gap:calc(22px + env(safe-area-inset-bottom));z-index:19;bottom:calc(var(--tabbar-h) + 2 * var(--dock-gap));height:min(calc(100dvh - var(--tabbar-h) - 2 * var(--dock-gap) - 12px - env(safe-area-inset-top)), 680px);transform:translateY(150vh)}.sheet-layer[data-lift=tabs] .sheet{max-height:100%;bottom:0}.sheet .glass,.sheet .qr-wrap{-webkit-backdrop-filter:none;backdrop-filter:none}*{-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;touch-action:manipulation;overscroll-behavior:none}body{overscroll-behavior:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}input,textarea,select,[contenteditable=true],.selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}img,svg{-webkit-user-drag:none}button,a,label,summary,[role=button]{touch-action:manipulation}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{transition:transform .5s var(--spring), box-shadow .25s var(--ease), background .25s var(--ease), opacity .25s var(--ease)}.btn:active:not(:disabled){transition-duration:80ms,80ms,.25s,.25s;transform:scale(.94)}.ward-card,.map-locate{transition:transform .5s var(--spring)}.ward-card{cursor:pointer}.ward-card:active,.map-locate:active{transition-duration:80ms;transform:scale(.94)}.ward-card:focus-visible{outline-offset:4px;outline:3px solid #ea389780}.map-locate:active{transform:scale(.9)}.journey-selection,.journey-loading{z-index:1;position:relative}.journey-selection{max-width:760px;min-height:100dvh;padding:max(28px, env(safe-area-inset-top)) 20px max(28px, env(safe-area-inset-bottom));margin:auto}.journey-selection h1{max-width:20ch;margin-bottom:16px}.explorer-choices,.ward-choices{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:24px 0;display:grid}.explorer-choice,.ward-choice{appearance:none;cursor:pointer;font:inherit;color:var(--ink);text-align:left;background:#fbf7f2;border:2px solid #14182e;border-radius:24px;padding:12px;box-shadow:0 4px #14182e}.explorer-choice:active,.ward-choice:active{transform:translateY(2px);box-shadow:0 2px #14182e}.explorer-choice .character{height:190px}.ward-choice .character{height:105px}.ward-choice span{margin-top:4px;font-size:12px;display:block}.character{object-fit:contain;align-self:end;width:100%;height:100%;max-height:240px;display:block}.journey-overlay{z-index:1200;-webkit-backdrop-filter:blur(2px);background:#14182e4d;align-items:flex-end;display:flex;position:fixed;inset:0}.character-dialogue{isolation:isolate;--portrait-size:clamp(114px, 17vw, 208px);--dialogue-gutter:clamp(20px, 5vw, 80px);outline:none;width:100%;position:relative}.character-dialogue__portrait{z-index:-1;bottom:calc(100% - 28px);left:var(--dialogue-gutter);width:var(--portrait-size);height:calc(var(--portrait-size) * 1.3);pointer-events:none;filter:drop-shadow(0 12px 24px #14182e26);animation:dialogue-portrait-in .5s var(--ease) both;position:absolute}.character-dialogue[data-side=right] .character-dialogue__portrait{left:auto;right:var(--dialogue-gutter)}.character-dialogue__portrait:before{content:"";z-index:-1;background:radial-gradient(ellipse, color-mix(in srgb, var(--character-color) 26%, transparent), transparent 68%);border-radius:50%;position:absolute;inset:12% -14% 0}.character-dialogue__portrait .character{max-height:none}.character-dialogue__box{background:linear-gradient(135deg, #fffffff7, #fbf7f2f0 60%, color-mix(in srgb, var(--character-color) 11%, #fbf7f2));color:#14182e;-webkit-backdrop-filter:blur(28px)saturate(1.35);overscroll-behavior:contain;border:1px solid #ffffffe6;border-bottom:0;border-radius:32px 32px 0 0;max-height:calc(100dvh - 160px);position:relative;overflow-y:auto;box-shadow:0 -12px 60px #14182e1f,inset 0 1px #fff}.character-dialogue__box:before{content:"";top:0;left:var(--dialogue-gutter);right:var(--dialogue-gutter);background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--character-color) 55%, #fff), transparent);height:1px;position:absolute}.character-dialogue__inner{max-width:1120px;padding:24px var(--dialogue-gutter) max(24px, env(safe-area-inset-bottom));margin:0 auto}.character-dialogue__speaker{align-items:center;gap:12px;margin-bottom:20px;display:flex}.character-dialogue__seal{color:#14182e;background:color-mix(in srgb, var(--character-color) 15%, white);border:1px solid color-mix(in srgb, var(--character-color) 30%, white);border-radius:12px;flex:none;place-items:center;width:38px;height:38px;font-size:20px;display:grid}.character-dialogue__name{margin:0 0 3px;font-size:14px;font-weight:600}.character-dialogue__role{letter-spacing:.1em;text-transform:uppercase;color:#626579;margin:0;font-size:10px}.character-dialogue__edition{letter-spacing:.14em;color:#77798b;white-space:nowrap;align-items:center;gap:9px;margin-left:auto;font-size:10px;display:flex}.character-dialogue__edition i{opacity:.5;background:currentColor;width:18px;height:1px}.character-dialogue h2{letter-spacing:-.03em;text-wrap:balance;max-width:42ch;margin-bottom:12px;font-size:clamp(20px,2vw,28px);font-weight:500;line-height:1.3}.character-dialogue__text{overflow-wrap:anywhere;color:#4d5065;max-width:80ch;font-size:14px;line-height:1.75}.character-dialogue__text p:last-child{margin-bottom:0}.character-dialogue__actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.dialogue-button{transition:transform .4s var(--spring);border-radius:999px;flex-shrink:0;display:inline-grid}.dialogue-button .dialogue-button__glass{border-radius:inherit;pointer-events:none;transition:box-shadow .2s var(--ease), background .2s var(--ease);padding:0;position:absolute;inset:0}.dialogue-button--primary .dialogue-button__glass{background:linear-gradient(135deg, #fffc, color-mix(in srgb, var(--character-color,#ea3897) 22%, transparent));border-color:#fffffff2}.dialogue-button__control{z-index:1;color:#14182e;font:inherit;border-radius:inherit;cursor:pointer;text-align:center;min-height:48px;transition:transform .25s var(--spring);background:0 0;border:0;padding:14px 24px;font-size:13px;font-weight:600;position:relative}.dialogue-button:has(:disabled){opacity:.5}.dialogue-button__control:disabled{cursor:wait}.dialogue-button:active:not(:has(:disabled)){transition-duration:80ms;transform:scale(.97)}.dialogue-button:active .dialogue-button__glass{box-shadow:inset 0 1px 5px #14182e1f}.journey-conversation{z-index:1100;pointer-events:none;align-items:flex-end;display:flex;position:fixed;inset:0}.journey-conversation .character-dialogue__box{pointer-events:auto}@keyframes dialogue-portrait-in{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.journey-error{z-index:1201;background:#fbf7f2;border-radius:16px;padding:12px;position:fixed;bottom:100px;left:16px;right:16px}.journey-progress{border:1px solid var(--pink);background:#fbf7f2;border-radius:20px;margin-bottom:16px;padding:16px}.journey-progress .btn{margin-top:8px}.map-journey{top:max(14px, env(safe-area-inset-top));color:#14182e;z-index:3;background:#fbf7f2;border:1px solid #14182e;border-radius:18px;padding:10px 14px;font-size:12px;position:absolute;left:76px;right:16px}.pin--exchange:before{background:#ffc431;border-radius:8px}.pin--exchange:after{border-radius:12px}.pin__symbol{z-index:1;color:#14182e;pointer-events:none;place-items:center;font-size:16px;font-weight:600;line-height:1;display:grid;position:absolute;inset:4px}.map[data-far] .pin--exchange:before{border-radius:4px}.map[data-far] .pin__symbol{font-size:8px;inset:11px}.stamp--grand{color:#14182e;background:#ffc431;border:3px double #14182e}button:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #2252ef}@media (width>=600px){.ward-choices{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=480px){.character-dialogue__edition{display:none}.character-dialogue__actions{justify-content:flex-start;gap:8px}.dialogue-button__control{padding:12px 18px}.character-dialogue__box{border-radius:24px 24px 0 0}}@media (height<=560px){.character-dialogue{--portrait-size:76px}.character-dialogue__box{max-height:calc(100dvh - 88px)}.character-dialogue__inner{padding-top:14px;padding-bottom:14px}.character-dialogue__speaker{margin-bottom:10px}.character-dialogue__edition,.character-dialogue__role{display:none}.character-dialogue__actions{margin-top:14px}}@media (prefers-reduced-motion:reduce){.character-dialogue__portrait{animation:none}}.tutorial-spotlight{z-index:1100;pointer-events:none;position:fixed;inset:0}.tutorial-spotlight__shade{pointer-events:none;animation:.4s ease-out both tutorial-shade-in;display:block;position:absolute;inset:0}.tutorial-spotlight__hole{animation:.4s ease-out both tutorial-light-in}.tutorial-spotlight__character{pointer-events:none;filter:drop-shadow(0 6px 18px #00000047);animation:tutorial-character-in .4s var(--ease) both;position:absolute}.tutorial-spotlight__character .character{max-height:none}.tutorial-spotlight__note{color:#fff;pointer-events:none;text-align:center;max-height:calc(100dvh - 32px);position:absolute;overflow-y:auto}.tutorial-spotlight__note[data-qr-guidance]{pointer-events:auto;overscroll-behavior:contain}.tutorial-spotlight__note[data-placement=right]{text-align:left}.tutorial-spotlight__note[data-placement=right] .tutorial-spotlight__actions{justify-content:flex-start}.tutorial-spotlight__fallback{color:#fff;pointer-events:auto;overscroll-behavior:contain;position:absolute;overflow-y:auto}.tutorial-spotlight__fallback .tutorial-spotlight__actions{margin-top:0}.tutorial-spotlight__text{text-wrap:pretty;text-shadow:0 1px 4px #0c1021,0 1px 14px #0c1021;margin:0;font-size:13px;font-weight:400;line-height:1.65}.tutorial-spotlight__actions{pointer-events:auto;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 14px;margin-top:10px;display:flex}.tutorial-spotlight__skip{min-height:44px;font:inherit;color:#ffffffd1;text-underline-offset:4px;cursor:pointer;text-shadow:0 1px 8px #0c1021;background:0 0;border:0;padding:10px 4px;font-size:11px;text-decoration:underline}.tutorial-spotlight .dialogue-button__control{color:#fff;min-height:44px;padding:11px 16px;font-size:11px}.tutorial-spotlight .dialogue-button .dialogue-button__glass{background:#ffffff24;border-color:#fff6}.tutorial-spotlight .error{color:#ffd364;text-shadow:0 1px 8px #0c1021;margin-top:8px;font-size:12px}.tutorial-spotlight .dialogue-button{pointer-events:auto}.tutorial-spotlight button:focus-visible{border-radius:999px;outline-color:#fff}@keyframes tutorial-light-in{0%{opacity:0}to{opacity:1}}@keyframes tutorial-shade-in{0%{opacity:0}to{opacity:1}}@keyframes tutorial-character-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.tutorial-spotlight__shade,.tutorial-spotlight__character,.tutorial-spotlight__hole{animation:none}}.bg.bg--global,.bg.bg--scene,.bg.bg--fixed{pointer-events:none;height:125lvh;position:fixed;inset:-12.5lvh 0 auto;overflow:hidden}
