@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:400;src:url(/assets/kanit-thai-400-normal-D80Pglro.woff2) format("woff2"),url(/assets/kanit-thai-400-normal-D2nliXKa.woff) format("woff");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:400;src:url(/assets/kanit-vietnamese-400-normal-DRI8YWyb.woff2) format("woff2"),url(/assets/kanit-vietnamese-400-normal-dow6Bnto.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:400;src:url(/assets/kanit-latin-ext-400-normal-B2xPf58u.woff2) format("woff2"),url(/assets/kanit-latin-ext-400-normal-CHvNKHHD.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:400;src:url(/assets/kanit-latin-400-normal-BUlsQXH3.woff2) format("woff2"),url(/assets/kanit-latin-400-normal-HVZWrfev.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:500;src:url(/assets/kanit-thai-500-normal-BB8gri04.woff2) format("woff2"),url(/assets/kanit-thai-500-normal-Iy_w0a80.woff) format("woff");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:500;src:url(/assets/kanit-vietnamese-500-normal-BzTrpCM3.woff2) format("woff2"),url(/assets/kanit-vietnamese-500-normal-T1ndT7MF.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:500;src:url(/assets/kanit-latin-ext-500-normal-EHs3suD6.woff2) format("woff2"),url(/assets/kanit-latin-ext-500-normal-BFdWrG22.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:500;src:url(/assets/kanit-latin-500-normal-CX_4XcKi.woff2) format("woff2"),url(/assets/kanit-latin-500-normal-qBha86O4.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:600;src:url(/assets/kanit-thai-600-normal-Bj6oiaDc.woff2) format("woff2"),url(/assets/kanit-thai-600-normal-wbTlPO7I.woff) format("woff");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:600;src:url(/assets/kanit-vietnamese-600-normal-Bi7fw3I4.woff2) format("woff2"),url(/assets/kanit-vietnamese-600-normal-DXCRAa_8.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:600;src:url(/assets/kanit-latin-ext-600-normal-DAX3wtuq.woff2) format("woff2"),url(/assets/kanit-latin-ext-600-normal-BBDzoLaj.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:600;src:url(/assets/kanit-latin-600-normal-0lS78yAd.woff2) format("woff2"),url(/assets/kanit-latin-600-normal-DlacpeTg.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:900;src:url(/assets/kanit-thai-900-normal-B7Vqv30j.woff2) format("woff2"),url(/assets/kanit-thai-900-normal-BtkFPhJ8.woff) format("woff");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:900;src:url(/assets/kanit-vietnamese-900-normal-DowLzG_E.woff2) format("woff2"),url(/assets/kanit-vietnamese-900-normal-DLHlf4mS.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:900;src:url(/assets/kanit-latin-ext-900-normal-CZp-acLf.woff2) format("woff2"),url(/assets/kanit-latin-ext-900-normal-BareYKWk.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Kanit;font-style:normal;font-weight:900;src:url(/assets/kanit-latin-900-normal-dN0P3GyR.woff2) format("woff2"),url(/assets/kanit-latin-900-normal-DeJbwkCX.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@tailwind base;@tailwind components;@tailwind utilities;@font-face{ascent-override:105%;descent-override:35%;font-family:Kanit Fallback;line-gap-override:0%;size-adjust:97%;src:local("Arial")}@layer base{:root{--safe-area-inset-top:env(safe-area-inset-top,0px);--safe-area-inset-right:env(safe-area-inset-right,0px);--safe-area-inset-bottom:env(safe-area-inset-bottom,0px);--safe-area-inset-left:env(safe-area-inset-left,0px);--header-height:52px;--bottom-nav-height:60px;--header-total-height:calc(var(--header-height) + var(--safe-area-inset-top));--bottom-nav-total-height:calc(var(--bottom-nav-height) + var(--safe-area-inset-bottom));--main-height:calc(100dvh - var(--header-total-height) - var(--bottom-nav-total-height));--map-ui-inset-top:.75rem;--map-ui-inset-right:.75rem;--map-ui-inset-bottom:.75rem;--map-ui-inset-left:.75rem;--map-fixed-bottom:calc(var(--bottom-nav-total-height) + .75rem);--map-control-max-width:140px;--touch-target-min:44px;--touch-target-comfortable:48px;--control-compact-padding:.5rem;--venue-marker-base:clamp(28px,8vw,40px);--venue-marker-active:clamp(32px,9vw,48px);--venue-marker-icon:clamp(14px,4vw,20px);--map-btn-sm:clamp(32px,8vw,36px);--map-btn-md:clamp(36px,9vw,44px);--map-btn-lg:clamp(44px,11vw,52px);--space-xs:clamp(.25rem,.5vw,.5rem);--space-sm:clamp(.5rem,1vw,.75rem);--space-md:clamp(.75rem,1.5vw,1rem);--space-lg:clamp(1rem,2vw,1.5rem);--space-xl:clamp(1.5rem,3vw,2rem);--space-2xl:clamp(2rem,4vw,3rem);--text-xs:clamp(.625rem,1.5vw,.75rem);--text-sm:clamp(.75rem,2vw,.875rem);--text-base:clamp(.875rem,2.5vw,1rem);--text-lg:clamp(1rem,3vw,1.125rem);--text-xl:clamp(1.125rem,3.5vw,1.25rem);--text-2xl:clamp(1.25rem,4vw,1.5rem);--text-3xl:clamp(1.5rem,5vw,1.875rem);--background:0 0% 98%;--foreground:0 0% 10%;--card:0 0% 100%;--card-foreground:0 0% 10%;--popover:0 0% 100%;--popover-foreground:0 0% 10%;--primary:24 100% 50%;--primary-foreground:0 0% 100%;--primary-glow:320 80% 55%;--secondary:0 0% 92%;--secondary-foreground:0 0% 15%;--muted:0 0% 94%;--muted-foreground:0 0% 40%;--accent:320 80% 55%;--accent-foreground:0 0% 100%;--destructive:0 84% 50%;--destructive-foreground:0 0% 100%;--border:0 0% 85%;--input:0 0% 92%;--ring:24 100% 50%;--hot:0 85% 50%;--warm:45 100% 45%;--cool:210 100% 45%;--cold:0 0% 60%;--gradient-hot:linear-gradient(135deg,hsl(0 85% 50%),hsl(0 85% 40%));--gradient-warm:linear-gradient(135deg,hsl(45 100% 50%),hsl(35 100% 45%));--gradient-cool:linear-gradient(135deg,hsl(210 100% 50%),hsl(220 100% 40%));--gradient-primary:linear-gradient(135deg,hsl(24 100% 50%),hsl(320 80% 55%));--gradient-jet:linear-gradient(135deg,hsl(0 0% 95%),hsl(0 0% 90%));--shadow-glow:0 0 45px hsl(24 100% 50%/.25);--shadow-card:0 15px 40px -15px hsl(0 0% 0%/.15);--shadow-jet:0 8px 32px hsl(320 80% 55%/.15);--transition-smooth:all .3s cubic-bezier(.4,0,.2,1);--transition-jet:all .4s cubic-bezier(.16,1,.3,1);--radius:1rem;--sidebar-background:0 0% 98%;--sidebar-foreground:0 0% 10%;--sidebar-primary:24 100% 50%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:0 0% 94%;--sidebar-accent-foreground:0 0% 15%;--sidebar-border:0 0% 85%;--sidebar-ring:24 100% 50%}.dark{--background:0 0% 6%;--foreground:0 0% 98%;--card:0 0% 10%;--card-foreground:0 0% 98%;--popover:0 0% 10%;--popover-foreground:0 0% 98%;--primary:24 100% 60%;--primary-foreground:0 0% 100%;--primary-glow:320 80% 65%;--secondary:0 0% 17%;--secondary-foreground:0 0% 95%;--muted:0 0% 17%;--muted-foreground:0 0% 65%;--accent:320 80% 65%;--accent-foreground:0 0% 100%;--destructive:0 84% 60%;--destructive-foreground:0 0% 100%;--border:0 0% 20%;--input:0 0% 17%;--ring:24 100% 60%;--shadow-card:0 15px 40px -15px hsl(0 0% 0%/.7)}.light{--background:0 0% 98%;--foreground:0 0% 6%;--card:0 0% 100%;--card-foreground:0 0% 6%;--popover:0 0% 100%;--popover-foreground:0 0% 6%;--primary:24 100% 50%;--primary-foreground:0 0% 100%;--primary-glow:320 80% 55%;--secondary:0 0% 92%;--secondary-foreground:0 0% 10%;--muted:0 0% 95%;--muted-foreground:0 0% 40%;--accent:320 80% 55%;--accent-foreground:0 0% 100%;--destructive:0 84% 50%;--destructive-foreground:0 0% 100%;--border:0 0% 88%;--input:0 0% 92%;--ring:24 100% 50%;--hot:0 85% 50%;--warm:45 100% 50%;--cool:210 100% 50%;--cold:0 0% 70%;--gradient-hot:linear-gradient(135deg,hsl(0 85% 50%),hsl(0 85% 40%));--gradient-warm:linear-gradient(135deg,hsl(45 100% 50%),hsl(35 100% 45%));--gradient-cool:linear-gradient(135deg,hsl(210 100% 50%),hsl(220 100% 40%));--gradient-primary:linear-gradient(135deg,hsl(24 100% 50%),hsl(320 80% 55%));--gradient-jet:linear-gradient(135deg,hsl(0 0% 98%),hsl(0 0% 92%));--shadow-glow:0 0 45px hsl(24 100% 50%/.25);--shadow-card:0 8px 24px -8px hsl(0 0% 0%/.15);--shadow-jet:0 8px 32px hsl(320 80% 55%/.15);--sidebar-background:0 0% 100%;--sidebar-foreground:0 0% 6%;--sidebar-primary:24 100% 50%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:0 0% 92%;--sidebar-accent-foreground:0 0% 10%;--sidebar-border:0 0% 88%;--sidebar-ring:24 100% 50%}}@media (max-width:375px){:root{--header-height:48px;--bottom-nav-height:56px;--map-ui-inset-top:.5rem;--map-ui-inset-right:.5rem;--map-ui-inset-bottom:.5rem;--map-ui-inset-left:.5rem;--map-fixed-bottom:calc(var(--bottom-nav-total-height) + .5rem);--map-control-max-width:120px;--venue-marker-base:26px;--venue-marker-active:30px;--venue-marker-icon:12px;--map-btn-sm:28px;--map-btn-md:32px}}@media (min-width:376px) and (max-width:639px){:root{--header-height:52px;--bottom-nav-height:60px;--map-ui-inset-top:.75rem;--map-ui-inset-right:.75rem;--map-ui-inset-bottom:.75rem;--map-ui-inset-left:.75rem;--map-fixed-bottom:calc(var(--bottom-nav-total-height) + .75rem);--map-control-max-width:140px}}@media (min-width:640px){:root{--header-height:56px;--bottom-nav-height:64px;--map-ui-inset-top:1rem;--map-ui-inset-right:1rem;--map-ui-inset-bottom:1rem;--map-ui-inset-left:1rem;--map-fixed-bottom:calc(var(--bottom-nav-total-height) + 1rem);--map-control-max-width:180px;--venue-marker-base:36px;--venue-marker-active:44px;--venue-marker-icon:18px;--map-btn-sm:36px;--map-btn-md:42px}}@media (min-width:768px){:root{--header-height:60px;--bottom-nav-height:68px;--map-ui-inset-top:1.25rem;--map-ui-inset-right:1.25rem;--map-ui-inset-bottom:1.25rem;--map-ui-inset-left:1.25rem;--map-fixed-bottom:calc(var(--bottom-nav-total-height) + 1.25rem);--map-control-max-width:220px;--venue-marker-base:40px;--venue-marker-active:48px;--venue-marker-icon:20px}}@media (min-width:1024px){:root{--header-height:64px;--bottom-nav-height:72px;--map-ui-inset-top:1.5rem;--map-ui-inset-right:1.5rem;--map-ui-inset-bottom:1.5rem;--map-ui-inset-left:1.5rem;--map-fixed-bottom:calc(var(--bottom-nav-total-height) + 1.5rem);--map-control-max-width:260px}}@media (min-width:1280px){:root{--map-control-max-width:320px;--venue-marker-base:44px;--venue-marker-active:52px}}@layer base{*{@apply border-border;box-sizing:border-box}html{background-color:hsl(var(--background));color:hsl(var(--foreground));height:100%;max-width:100vw;min-height:100%;overflow-x:hidden;width:100%}body{@apply bg-background text-foreground;font-family:Kanit,Kanit Fallback,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;height:100dvh;max-width:100vw;min-height:100vh;min-height:100dvh;overflow-x:hidden;overflow-y:hidden;touch-action:pan-y pinch-zoom;width:100%;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;inset:0;margin:0;padding:0;position:fixed}#root{overflow:hidden;-webkit-overflow-scrolling:touch;color:hsl(var(--foreground))}#root,.app-wrapper{background-color:hsl(var(--background));display:flex;flex:1;flex-direction:column;height:100dvh;max-width:100vw;min-height:100dvh;position:relative;width:100%}.app-wrapper{box-sizing:border-box;contain:strict;isolation:isolate;overflow:hidden;transform:translateZ(0)}.app-wrapper:after,.app-wrapper:before{contain:strict;height:0;pointer-events:none;position:absolute;width:0}.main-content{animation:content-fade-in .3s ease-out forwards;contain:layout style;display:flex;flex:1;flex-direction:column;max-width:100vw;overflow:hidden;position:relative;width:100%}@keyframes content-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.page-fade-in{animation:content-fade-in .25s ease-out forwards}.page-container{flex:1;max-width:100vw;overflow-x:hidden;overflow-y:auto;padding-bottom:var(--bottom-nav-total-height);width:100%;-webkit-overflow-scrolling:touch;contain:layout style;height:auto;min-height:var(--main-height)}.map-container{contain:strict;contain-intrinsic-size:100vw 100dvh;content-visibility:auto;height:100dvh!important;max-height:100dvh!important;max-width:100vw!important;min-height:100dvh!important;overflow:hidden!important;position:relative;width:100%!important}.map-container,.map-wrapper{isolation:isolate;transform:translateZ(0)}.map-wrapper{contain:strict;height:100%;inset:0;position:absolute;width:100%;will-change:contents}.card-contained{contain:layout style paint}.header-contained{contain:layout style;isolation:isolate}.nav-contained{contain:layout style paint;isolation:isolate}}@layer utilities{.touch-target{min-height:44px;min-width:44px}.touch-target-sm{min-height:36px;min-width:36px}.touch-target-lg{min-height:48px;min-width:48px}.safe-area-top{padding-top:var(--safe-area-inset-top)}.safe-area-bottom{padding-bottom:var(--safe-area-inset-bottom)}.safe-area-left{padding-left:var(--safe-area-inset-left)}.safe-area-right{padding-right:var(--safe-area-inset-right)}.safe-area-inset{padding:var(--safe-area-inset-top) var(--safe-area-inset-right) var(--safe-area-inset-bottom) var(--safe-area-inset-left)}.space-fluid-xs{padding:var(--space-xs)}.space-fluid-sm{padding:var(--space-sm)}.space-fluid-md{padding:var(--space-md)}.space-fluid-lg{padding:var(--space-lg)}.space-fluid-xl{padding:var(--space-xl)}.space-fluid-2xl{padding:var(--space-2xl)}.px-fluid-xs{padding-left:var(--space-xs);padding-right:var(--space-xs)}.px-fluid-sm{padding-left:var(--space-sm);padding-right:var(--space-sm)}.px-fluid-md{padding-left:var(--space-md);padding-right:var(--space-md)}.px-fluid-lg{padding-left:var(--space-lg);padding-right:var(--space-lg)}.px-fluid-xl{padding-left:var(--space-xl);padding-right:var(--space-xl)}.py-fluid-xs{padding-bottom:var(--space-xs);padding-top:var(--space-xs)}.py-fluid-sm{padding-bottom:var(--space-sm);padding-top:var(--space-sm)}.py-fluid-md{padding-bottom:var(--space-md);padding-top:var(--space-md)}.py-fluid-lg{padding-bottom:var(--space-lg);padding-top:var(--space-lg)}.py-fluid-xl{padding-bottom:var(--space-xl);padding-top:var(--space-xl)}.gap-fluid-xs{gap:var(--space-xs)}.gap-fluid-sm{gap:var(--space-sm)}.gap-fluid-md{gap:var(--space-md)}.gap-fluid-lg{gap:var(--space-lg)}.gap-fluid-xl{gap:var(--space-xl)}.text-fluid-xs{font-size:var(--text-xs)}.text-fluid-sm{font-size:var(--text-sm)}.text-fluid-base{font-size:var(--text-base)}.text-fluid-lg{font-size:var(--text-lg)}.text-fluid-xl{font-size:var(--text-xl)}.text-fluid-2xl{font-size:var(--text-2xl)}.text-fluid-3xl{font-size:var(--text-3xl)}.pulse-glow{animation:pulse-glow 2s ease-in-out infinite}}@layer utilities{@keyframes pulse-glow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.animate-shimmer{animation:shimmer 1.5s ease-in-out infinite;background:linear-gradient(90deg,hsl(var(--card)) 0,hsl(var(--muted)),hsl(var(--card)));background-size:200% 100%}.shimmer-skeleton{background:hsl(var(--muted)/.3);overflow:hidden;position:relative}.shimmer-skeleton:after{animation:shimmer-slide 1.5s ease-in-out infinite;animation-delay:inherit;background:linear-gradient(90deg,transparent 0,hsl(var(--muted)/.4) 20%,hsl(var(--muted)/.7) 50%,hsl(var(--muted)/.4) 80%,transparent 100%);content:"";inset:0;position:absolute}@keyframes shimmer-slide{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes venue-pulse-intense{0%,to{box-shadow:0 8px 32px currentColor,0 0 0 1px #ffffff1a,0 0 60px currentColor,inset 0 1px 2px #fff6;transform:rotate(-45deg) scale(1)}50%{box-shadow:0 12px 48px currentColor,0 0 0 2px #ffffff4d,0 0 80px currentColor,inset 0 2px 3px #ffffff80;transform:rotate(-45deg) scale(1.15)}}@keyframes venue-pulse-moderate{0%,to{box-shadow:0 8px 32px currentColor,0 0 0 1px #ffffff1a,0 0 40px currentColor,inset 0 1px 2px #fff6;transform:rotate(-45deg) scale(1)}50%{box-shadow:0 10px 40px currentColor,0 0 0 1.5px #fff3,0 0 50px currentColor,inset 0 1.5px 2.5px #ffffff73;transform:rotate(-45deg) scale(1.1)}}@keyframes venue-pulse-subtle{0%,to{opacity:.95;transform:rotate(-45deg) scale(1)}50%{opacity:1;transform:rotate(-45deg) scale(1.05)}}@keyframes bounce{0%,to{transform:rotate(-45deg) translateY(0)}25%{transform:rotate(-45deg) translateY(-10px)}50%{transform:rotate(-45deg) translateY(-5px)}75%{transform:rotate(-45deg) translateY(-7px)}}@keyframes gradient-shift{0%,to{background:linear-gradient(135deg,#00000059,#0a0a0f4d 25%,#00000059,#0a0a0f52 75%,#00000059)}25%{background:linear-gradient(135deg,#0a0a0f52,#00000059 25%,#0a0a0f4d,#00000059 75%,#0a0a0f52)}50%{background:linear-gradient(135deg,#0a0a0f4d,#0a0a0f52 25%,#00000059,#0a0a0f4d 75%,#00000059)}75%{background:linear-gradient(135deg,#00000059,#0a0a0f4d 25%,#0a0a0f52,#00000059 75%,#0a0a0f4d)}}.auth-gradient-overlay{animation:gradient-shift 12s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.auth-gradient-overlay{animation:none}}.glow-subtle{box-shadow:0 0 20px hsl(var(--primary)/.2);transition:box-shadow .3s ease-in-out}.glow-subtle:hover{box-shadow:0 0 30px hsl(var(--primary)/.4)}.glow-button{box-shadow:0 0 15px hsl(var(--primary)/.3);transition:all .3s ease-in-out}.glow-button:hover{box-shadow:0 0 25px hsl(var(--primary)/.5)}.mapboxgl-ctrl-group{border-radius:8px!important;box-shadow:0 2px 8px #0000004d!important;overflow:hidden}.mapboxgl-ctrl-geolocate,.mapboxgl-ctrl-group button{height:var(--map-btn-md)!important;width:var(--map-btn-md)!important}@media (max-width:360px){.mapboxgl-ctrl-group{transform:scale(.85);transform-origin:top right}.mapboxgl-ctrl-group button{height:28px!important;width:28px!important}}@media (min-width:361px) and (max-width:480px){.mapboxgl-ctrl-group button{height:32px!important;width:32px!important}}@media (min-width:481px) and (max-width:640px){.mapboxgl-ctrl-group button{height:36px!important;width:36px!important}}@media (min-width:641px) and (max-width:1024px){.mapboxgl-ctrl-group button{height:40px!important;width:40px!important}}@media (min-width:1025px){.mapboxgl-ctrl-group button{height:44px!important;width:44px!important}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.mapboxgl-ctrl-group{border-width:.5px!important}}.timelapse-swipe-control{touch-action:pan-x;user-select:none;-webkit-user-select:none}.timelapse-touch-button{@apply flex items-center justify-center w-8 h-8 rounded-full text-muted-foreground transition-colors;@apply hover:bg-muted/50 hover:text-foreground active:bg-primary/20 active:text-primary;@apply disabled:opacity-50 disabled:pointer-events-none;min-height:32px;min-width:32px}.map-control-compact{@apply bg-card/90 backdrop-blur-lg rounded-lg border border-border/50 shadow-md;backface-visibility:hidden;-webkit-backface-visibility:hidden;padding:var(--control-compact-padding,.375rem);will-change:transform,opacity}@media (max-width:640px){.map-control-compact{font-size:10px!important;max-width:160px!important;padding:.25rem}.map-control-compact button,.map-control-compact select{font-size:9px!important;min-height:26px!important}}.map-control-compact .control-header{@apply flex items-center justify-between text-[10px] font-medium text-muted-foreground mb-1;}.path-flow-slider{@apply w-full appearance-none bg-transparent cursor-pointer;height:20px}.path-flow-slider::-webkit-slider-runnable-track{@apply w-full rounded-full;background:linear-gradient(to right,hsl(var(--primary)/.3),hsl(var(--primary)/.5));border:1px solid hsl(var(--primary)/.3);height:6px}.path-flow-slider::-webkit-slider-thumb{@apply appearance-none rounded-full shadow-lg;background:hsl(var(--primary));border:2px solid hsl(var(--background));box-shadow:0 0 8px hsl(var(--primary)/.5);height:16px;margin-top:-6px;transform:translateY(.5px);width:16px}.path-flow-slider::-webkit-slider-thumb:hover{box-shadow:0 0 12px hsl(var(--primary)/.7);transform:translateY(.5px) scale(1.1)}.path-flow-slider::-moz-range-track{@apply w-full rounded-full;background:linear-gradient(to right,hsl(var(--primary)/.3),hsl(var(--primary)/.5));border:1px solid hsl(var(--primary)/.3);height:6px}.path-flow-slider::-moz-range-thumb{@apply rounded-full;background:hsl(var(--primary));border:2px solid hsl(var(--background));box-shadow:0 0 8px hsl(var(--primary)/.5);height:16px;width:16px}.path-flow-slider::-moz-range-thumb:hover{box-shadow:0 0 12px hsl(var(--primary)/.7)}.control-inline-row{@apply flex items-center gap-1.5 text-[10px];}.control-inline-label{@apply text-muted-foreground whitespace-nowrap min-w-[40px];}.control-inline-value{@apply font-medium text-foreground;}.map-controls-toggle{@apply bg-card/95 backdrop-blur-xl rounded-full p-2 border border-border shadow-lg;@apply transition-all duration-300 hover:bg-card hover:scale-105;@apply focus:outline-none focus:ring-2 focus:ring-primary/50;}.map-controls-toggle:active{@apply scale-95;}.map-controls-collapsed-hint{@apply absolute bottom-0 right-0 w-1 h-8 bg-primary/50 rounded-full;animation:pulse-hint 2s ease-in-out infinite}@keyframes pulse-hint{0%,to{opacity:.3}50%{opacity:.7}}@keyframes cloud-drift-left{0%{opacity:0;transform:translate(100%)}10%{opacity:.8}90%{opacity:.8}to{opacity:0;transform:translate(-100%)}}@keyframes cloud-drift-right{0%{opacity:0;transform:translate(-100%)}10%{opacity:.6}90%{opacity:.6}to{opacity:0;transform:translate(100%)}}@keyframes airplane-bob{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(2deg)}50%{transform:translateY(1px) rotate(-1deg)}75%{transform:translateY(-1px) rotate(1deg)}}.sync-airplane-wrapper{animation:airplane-fly 2.5s ease-in-out infinite}.sync-airplane{animation:airplane-bob 1s ease-in-out infinite;filter:drop-shadow(0 2px 4px hsl(var(--primary)/.6))}@keyframes airplane-fly{0%,to{transform:translate(-2px) translateY(1px)}25%{transform:translate(2px) translateY(-2px)}50%{transform:translate(0) translateY(0)}75%{transform:translate(-1px) translateY(-1px)}}.sync-cloud-bg{animation:cloud-bg-drift 3s ease-in-out infinite}.sync-cloud-bg-2{animation:cloud-bg-drift 3.5s ease-in-out infinite reverse}@keyframes cloud-bg-drift{0%,to{opacity:.4;transform:translate(0) scale(1)}50%{opacity:.6;transform:translate(2px) scale(1.1)}}.sync-passing-clouds{inset:0;overflow:hidden;pointer-events:none;position:absolute}.sync-passing-clouds:after,.sync-passing-clouds:before{animation:passing-cloud 4s linear infinite;background:radial-gradient(ellipse,hsl(var(--foreground)/.15) 0,transparent 70%);border-radius:50%;content:"";filter:blur(3px);height:60%;position:absolute;width:40%}.sync-passing-clouds:before{animation-delay:0s;top:20%}.sync-passing-clouds:after{animation-delay:2s;top:40%}@keyframes passing-cloud{0%{left:100%;opacity:0}10%{opacity:.5}90%{opacity:.5}to{left:-40%;opacity:0}}@keyframes contrail-fade{0%{opacity:.8;transform:scaleX(.2) translate(0)}50%{opacity:.5}to{opacity:0;transform:scaleX(2) translate(-10px)}}.sync-contrail{animation:contrail-fade .8s ease-out infinite;background:linear-gradient(90deg,transparent,hsl(var(--primary)/.7));border-radius:1px;height:1.5px;position:absolute;right:100%;top:50%;transform-origin:right center;width:16px}.sync-contrail-1{animation-delay:0s;top:30%}.sync-contrail-2{animation-delay:.15s;top:70%}@keyframes cloud-float{0%,to{opacity:.7;transform:translateY(0) scale(1)}50%{opacity:.9;transform:translateY(-2px) scale(1.05)}}@keyframes sync-glow-pulse{0%,to{box-shadow:0 0 8px hsl(var(--primary)/.3)}50%{box-shadow:0 0 16px hsl(var(--primary)/.6)}}.sync-cloud-container{border-radius:9999px;overflow:hidden;position:relative}.sync-cloud-container.syncing{animation:sync-glow-pulse 1.5s ease-in-out infinite}.sync-cloud{inset:0;pointer-events:none;position:absolute}.sync-cloud:after,.sync-cloud:before{border-radius:50%;content:"";filter:blur(4px);position:absolute}.sync-cloud:before{animation:cloud-drift-left 2s ease-in-out infinite;background:radial-gradient(ellipse,hsl(var(--foreground)/.15) 0,transparent 70%);height:60%;top:20%;width:120%}.sync-cloud:after{animation:cloud-drift-right 2.5s ease-in-out .3s infinite;background:radial-gradient(ellipse,hsl(var(--foreground)/.1) 0,transparent 60%);height:50%;top:30%;width:80%}.sync-cloud-wisps{inset:0;overflow:hidden;pointer-events:none;position:absolute}.sync-cloud-wisps:before{animation:cloud-float 3s ease-in-out infinite;background:radial-gradient(ellipse,hsl(var(--muted-foreground)/.2) 0,transparent 50%);content:"";filter:blur(3px);height:40%;left:20%;position:absolute;top:30%;width:60%}.sync-success-flash{animation:success-flash .5s ease-out forwards}@keyframes success-flash{0%{background:hsl(var(--primary)/.3);transform:scale(1)}50%{background:#1cca5b66;transform:scale(1.1)}to{background:transparent;transform:scale(1)}}.sync-progress-shimmer{animation:progress-shimmer 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent 0,hsl(var(--primary)/.15) 25%,hsl(var(--primary)/.3) 50%,hsl(var(--primary)/.15) 75%,transparent 100%);background-size:200% 100%}@keyframes progress-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.flight-path-airplane{animation:airplane-gentle-bob 1.2s ease-in-out infinite}@keyframes airplane-gentle-bob{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(-2deg)}75%{transform:translateY(1px) rotate(1deg)}}.flight-contrail-trail{animation:contrail-stream .8s ease-out infinite;background:linear-gradient(90deg,transparent 0,hsl(var(--primary)/.2) 30%,hsl(var(--primary)/.5) 60%,hsl(var(--primary-foreground)/.8) 100%);border-radius:2px;bottom:0;position:absolute;right:0;top:0;width:100%}@keyframes contrail-stream{0%{opacity:.8;transform:scaleX(.3) translate(0)}50%{opacity:.5}to{opacity:0;transform:scaleX(1) translate(-100%)}}.flight-cloud-waypoint{animation:cloud-waypoint-pulse 2s ease-in-out infinite}@keyframes cloud-waypoint-pulse{0%,to{opacity:.2;transform:scale(1)}50%{opacity:.4;transform:scale(1.1)}}.compact-sync-container{animation:compact-sync-glow 1.5s ease-in-out infinite}@keyframes compact-sync-glow{0%,to{box-shadow:0 0 4px hsl(var(--primary)/.2)}50%{box-shadow:0 0 10px hsl(var(--primary)/.4)}}.compact-passing-clouds{inset:0;overflow:hidden;pointer-events:none;position:absolute}.compact-passing-clouds:after,.compact-passing-clouds:before{animation:compact-cloud-pass 3s linear infinite;background:radial-gradient(ellipse,hsl(var(--foreground)/.1) 0,transparent 70%);border-radius:50%;content:"";filter:blur(2px);height:80%;position:absolute;top:10%;width:30%}.compact-passing-clouds:before{animation-delay:0s}.compact-passing-clouds:after{animation-delay:1.5s}@keyframes compact-cloud-pass{0%{left:100%;opacity:0}10%{opacity:.6}90%{opacity:.6}to{left:-30%;opacity:0}}.compact-cloud-bg{animation:compact-cloud-drift 2s ease-in-out infinite}@keyframes compact-cloud-drift{0%,to{opacity:.3;transform:translate(0) scale(1)}50%{opacity:.5;transform:translate(2px) scale(1.1)}}.compact-airplane-fly{animation:compact-airplane-bob 1s ease-in-out infinite}@keyframes compact-airplane-bob{0%,to{transform:translateY(0) translate(0)}25%{transform:translateY(-1px) translate(1px)}75%{transform:translateY(1px) translate(-1px)}}.compact-contrail{animation:compact-contrail-fade .6s ease-out infinite;background:linear-gradient(90deg,transparent 0,hsl(var(--primary)/.3) 50%,hsl(var(--primary)/.6) 100%);border-radius:1px;bottom:0;position:absolute;right:0;top:0;width:100%}@keyframes compact-contrail-fade{0%{opacity:.7;transform:scaleX(.2) translate(0)}to{opacity:0;transform:scaleX(1) translate(-100%)}}.runway-passing-clouds{inset:0;overflow:hidden;pointer-events:none;position:absolute}.runway-passing-clouds:after,.runway-passing-clouds:before{animation:runway-cloud-pass 4s linear infinite;background:radial-gradient(ellipse,hsl(var(--foreground)/.08) 0,transparent 70%);border-radius:50%;content:"";filter:blur(3px);height:70%;position:absolute;top:15%;width:20%}.runway-passing-clouds:before{animation-delay:0s}.runway-passing-clouds:after{animation-delay:2s}@keyframes runway-cloud-pass{0%{left:100%;opacity:0}10%{opacity:.5}90%{opacity:.5}to{left:-20%;opacity:0}}.runway-cloud{animation:runway-cloud-bob 3s ease-in-out infinite}@keyframes runway-cloud-bob{0%,to{opacity:.2;transform:translateY(-50%) translateY(0) scale(1)}50%{opacity:.35;transform:translateY(-50%) translateY(-2px) scale(1.1)}}.runway-airplane{filter:drop-shadow(0 2px 4px hsl(var(--primary)/.4))}.runway-contrail{animation:runway-contrail-stream .7s ease-out infinite;background:linear-gradient(90deg,transparent 0,hsl(var(--primary)/.2) 30%,hsl(var(--primary)/.5) 70%,hsl(var(--primary-foreground)/.7) 100%);border-radius:2px;bottom:0;position:absolute;right:0;top:0;width:100%}@keyframes runway-contrail-stream{0%{opacity:.8;transform:scaleX(.2) translate(0)}50%{opacity:.4}to{opacity:0;transform:scaleX(1.2) translate(-100%)}}.runway-landing-flash{animation:runway-landing .6s ease-out forwards}@keyframes runway-landing{0%{box-shadow:0 0 hsl(var(--primary)/.4)}50%{box-shadow:0 0 15px 2px #1cca5b80}to{box-shadow:0 0 0 0 transparent}}.landed-airplane{animation:landed-settle .5s ease-out forwards}@keyframes landed-settle{0%{opacity:0;transform:translate(10px) rotate(-15deg)}60%{transform:translate(-2px) rotate(-8deg)}to{opacity:1;transform:translate(0) rotate(-10deg)}}.arrival-destination{animation:arrival-fade-in .8s ease-out .3s both}@keyframes arrival-fade-in{0%{opacity:0;transform:translate(8px)}60%{opacity:1}to{opacity:1;transform:translate(0)}}.arrival-city-name{animation:city-slide-in .6s ease-out .5s both}@keyframes city-slide-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes orbPulse{0%{opacity:.6;transform:scale(1)}50%{opacity:0;transform:scale(1.4)}to{opacity:0;transform:scale(1.8)}}@keyframes markerFadeIn{0%{opacity:0}to{opacity:1}}@keyframes markerRingPulse{0%,to{opacity:var(--ring-opacity,.5);transform:rotate(-45deg) scale(1)}50%{opacity:calc(var(--ring-opacity, .5) * 1.5);transform:rotate(-45deg) scale(1.15)}}@keyframes orbFloatIn{0%{opacity:0;transform:scale(.5)}60%{opacity:1;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes orbAppear{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes slideInFromTop{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}}
