@import "https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,700;12..96,800&family=Instrument+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans+Thai:wght@400;500;600;700&display=swap";:root{--bg:#f4f5f7;--surface:#fff;--surface-2:#ebedf1;--line:#dde1e7;--line-strong:#c3c9d2;--ink:#121820;--muted:#5b6472;--accent:#e8336d;--accent-ink:#fff;--gold:#f2a93b;--c-music:#e8336d;--c-food:#e78a1e;--c-art:#7a5af8;--c-market:#1e9e6e;--c-nightlife:#2b6cf6;--c-sport:#f0553b;--c-family:#12a7b8;--c-festival:#c99a1a;--c-fairs:#64748b;--shadow:0 10px 30px #1218201a;--display:"Bricolage Grotesque", "IBM Plex Sans Thai", "Helvetica Neue", Arial, sans-serif;--body:"Instrument Sans", "IBM Plex Sans Thai", "Helvetica Neue", Arial, sans-serif;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--pad:clamp(16px, 4vw, 40px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f1318;--surface:#171c23;--surface-2:#1f252e;--line:#2a313b;--line-strong:#3a4350;--ink:#f1f3f6;--muted:#9aa3b0;--accent:#ff4f84;--accent-ink:#1a0a10;--gold:#f5b64b;--c-music:#ff4f84;--c-nightlife:#5b8be0;--shadow:0 10px 30px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--body);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}h1,h2,h3{font-family:var(--display);text-wrap:balance;letter-spacing:-.02em;margin:0}p{margin:0}.wrap{max-width:1400px;padding-left:var(--pad);padding-right:var(--pad);margin:0 auto}.eyebrow{font:500 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.site-header{z-index:20;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.bar{align-items:center;gap:20px;height:60px;display:flex}.logo{font:800 20px/1 var(--display);letter-spacing:-.03em;white-space:nowrap;align-items:center;gap:10px;text-decoration:none;display:flex}.logo svg{flex:none}.logo .pin-body{fill:var(--accent)}.logo .pin-power{stroke:var(--surface)}.nav{gap:4px;margin-left:8px;display:flex}.nav a{color:var(--muted);white-space:nowrap;border-radius:999px;padding:8px 10px;font-weight:500;text-decoration:none}.nav a[aria-current]{color:var(--ink);background:var(--surface-2)}.search{background:var(--surface);border:1px solid var(--line);border-radius:999px;flex:0 300px;align-items:center;gap:8px;min-width:0;height:38px;margin-left:auto;padding:0 12px;display:flex}.search input{color:var(--ink);font:inherit;background:0 0;border:0;outline:none;width:100%;min-width:0}.search svg{color:var(--muted);flex:none}.cta{background:var(--ink);color:var(--bg);white-space:nowrap;border-radius:999px;align-items:center;height:38px;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.lang{flex:none;position:relative}.lang summary{height:38px;font:600 13px/1 var(--body);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 12px;list-style:none;display:inline-flex}.lang summary::-webkit-details-marker{display:none}.lang summary:hover,.lang[open] summary{background:var(--surface-2)}.lang ul{z-index:30;background:var(--surface);border:1px solid var(--line);min-width:160px;box-shadow:var(--shadow);border-radius:12px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);right:0}.lang ul a{border-radius:8px;padding:9px 12px;font-size:14px;text-decoration:none;display:block}.lang ul a:hover{background:var(--surface-2)}.lang ul a[aria-current]{background:var(--surface-2);font-weight:600}.account{white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;height:38px;padding:0 12px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.account:hover,.account[aria-current]{background:var(--surface-2)}.member{white-space:nowrap;flex:none;align-items:center;gap:8px;font-size:14px;font-weight:600;display:inline-flex}.member .avatar{background:var(--accent);width:28px;height:28px;color:var(--accent-ink);border-radius:50%;place-items:center;font-size:13px;display:grid}.member-name{text-overflow:ellipsis;max-width:140px;overflow:hidden}.logout{flex:none;margin:0}.logout button{height:38px;color:var(--muted);white-space:nowrap;padding:0 10px;font-size:14px;font-weight:500}.logout button:hover{color:var(--ink)}.list-icon{width:38px;height:38px;color:var(--ink);border-radius:50%;flex:none;place-items:center;display:none}.signin{background:var(--surface);width:min(400px,100vw - 32px);color:var(--ink);box-shadow:var(--shadow);border:0;border-radius:20px;padding:28px}.signin::backdrop{background:#12182073}.signin h2{margin-top:12px;font-size:22px;font-weight:700}.signin p{color:var(--muted);margin-top:6px}.signin-actions{gap:8px;margin-top:20px;display:flex}.signin-actions .btn{height:42px;padding:0 18px;font-size:14px}@media (width<=860px){.nav,.cta,.logout,.member-name{display:none}.list-icon{display:grid}.search{flex:1}}.filterbar{height:56px;padding:0 var(--pad);background:var(--surface);border-bottom:1px solid var(--line);scrollbar-width:none;align-items:center;gap:14px;display:flex;overflow-x:auto}.filterbar::-webkit-scrollbar{display:none}.seg{background:var(--surface-2);border-radius:999px;flex:none;padding:3px;display:flex}.seg button{height:32px;color:var(--muted);white-space:nowrap;border-radius:999px;padding:0 14px;font-size:13px;font-weight:600}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #1218201f}.filterbar .sep{background:var(--line);flex:none;width:1px;height:24px}.chips{flex-wrap:nowrap;gap:6px;display:flex}.chip{background:var(--surface);border:1px solid var(--line);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:7px;height:32px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.chip .sw{background:var(--sw);border-radius:50%;width:8px;height:8px}.chip[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.stage{border-bottom:1px solid var(--line);grid-template-columns:440px minmax(0,1fr);height:calc(100vh - 117px);min-height:520px;max-height:900px;display:grid}.map{background:var(--surface-2);min-width:0;position:relative;overflow:hidden}.map #map{position:absolute;inset:0}.pin{background:var(--pc);border:3px solid var(--surface);width:18px;height:18px;box-shadow:0 0 0 2px var(--ink), 0 2px 8px #1218204d;border-radius:50%}.maplibregl-popup{z-index:4}.maplibregl-popup-content{font:14px/1.4 var(--body);color:var(--ink);background:var(--surface);border-radius:16px;width:min(360px,100vw - 32px);padding:0;overflow:hidden;box-shadow:0 16px 40px #12182033}.pop>:not(.pop-more){margin-left:16px;margin-right:16px}.pop-head{align-items:center;gap:8px;padding-top:14px;display:flex}.pop-head .dot{border-radius:50%;flex:none;width:9px;height:9px}.pop-cat{color:var(--muted);font-size:12px;font-weight:600}.pop-now{color:#116b46;background:color-mix(in srgb, var(--c-market) 18%, transparent);border-radius:999px;padding:3px 8px;font-size:11px;font-weight:600}.pop-head .save{width:36px;height:36px;margin-left:auto;position:static}.pop-title{font:700 20px/1.2 var(--display);letter-spacing:-.02em;margin:8px 16px 0}.pop-row{color:var(--ink);grid-template-columns:16px minmax(0,1fr);align-items:start;gap:10px;margin-top:8px;display:grid}.pop-row svg{color:var(--muted);margin-top:2px}.pop-row small{color:var(--muted);font-size:13px;display:block}.pop-blurb{color:var(--muted);margin:12px 16px 0;font-size:14px}.pop-actions{gap:8px;margin-top:14px;display:flex}.pop-actions .btn{flex:1;justify-content:center;height:40px;font-size:14px}.pop-src{color:var(--muted);margin-top:10px;font-size:12px}.pop>:last-child:not(.pop-more){margin-bottom:14px}.pop-more{background:var(--bg);margin-top:14px;padding:12px 16px 14px;font-size:13px}.pop-more-head{color:var(--muted);font-size:12px;font-weight:600}.pop-more ul{margin:4px 0 0;padding:0;list-style:none}.pop-more li a{border-bottom:1px solid var(--line);color:var(--ink);justify-content:space-between;gap:12px;padding:7px 0;text-decoration:none;display:flex}.pop-more li a span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.pop-when{color:var(--muted);white-space:nowrap}.pop-showall{margin-top:8px;padding:0;font-size:13px;font-weight:600;text-decoration:underline}.maplibregl-popup-tip{border-top-color:var(--surface)!important}.rail{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;order:-1;min-width:0;min-height:0;display:flex}.rail .handle{display:none}.rail-head{justify-content:space-between;align-items:baseline;gap:12px;padding:18px 20px 6px;display:flex}.rail-head h2{font-size:22px;font-weight:700}.count{font:500 12px/1 var(--mono);color:var(--muted);white-space:nowrap}.list{flex:1;min-height:0;padding:0 12px 16px;overflow:auto}.day[hidden]{display:none}.day-head{z-index:1;background:var(--surface);font:700 17px/1.3 var(--body);letter-spacing:-.01em;color:var(--ink);padding:16px 12px 6px;position:sticky;top:0}.card{border-radius:12px;transition:background .15s;position:relative}.card[hidden]{display:none}.card:hover{background:var(--bg)}.card.sel{background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--ink)}.card.past{opacity:.6}.card-main{color:var(--ink);grid-template-columns:10px minmax(0,1fr);gap:12px;padding:12px;text-decoration:none;display:grid}.card-main .dot{background:var(--cc);border-radius:50%;width:10px;height:10px;margin-top:6px;position:relative}.card.now .card-main .dot:after{content:"";background:var(--cc);border-radius:50%;animation:2s ease-out infinite pulse;position:absolute;inset:0}@keyframes pulse{0%{opacity:.45;transform:scale(1)}to{opacity:0;transform:scale(3)}}.card .body{flex-direction:column;gap:2px;min-width:0;display:flex}.card .title{font-size:15px;font-weight:600;line-height:1.3}.card .place{color:var(--muted);font-size:13px}.card-main{padding-right:48px}.save{width:40px;height:40px;color:var(--muted);border-radius:50%;place-items:center;display:grid;position:absolute;top:6px;right:6px}.save svg path{fill:none;stroke:currentColor;stroke-width:2px;stroke-linejoin:round}.save:hover{color:var(--ink);background:var(--surface-2)}.save[aria-pressed=true]{color:var(--accent)}.save[aria-pressed=true] svg path{fill:currentColor}.pop-cat .save{width:32px;height:32px;margin-top:-6px;margin-left:auto;margin-right:-6px;position:static}.save-btn{width:auto;height:36px;color:var(--ink);border-radius:999px;display:inline-flex;position:static}.save-btn .on,.save-btn[aria-pressed=true] .off{display:none}.save-btn[aria-pressed=true] .on{display:inline}.saved-list{flex-direction:column;gap:4px;margin-top:20px;display:flex}.saved-list.past{opacity:.6;margin-top:4px}.card .when{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}html:is(:lang(th),:lang(zh),:lang(ja),:lang(ko)) :is(.eyebrow,.kv dt){font-family:var(--body);letter-spacing:0}.empty{text-align:center;color:var(--muted);padding:40px 20px}@media (width<=860px){.stage{grid-template-rows:52vh minmax(0,1fr);grid-template-columns:1fr;height:auto;max-height:none}.rail{z-index:3;border-right:0;border-radius:20px 20px 0 0;order:0;max-height:75vh;margin-top:-20px;position:relative;box-shadow:0 -6px 24px #1218201f}.rail .handle{background:var(--line-strong);border-radius:999px;width:40px;height:5px;margin:10px auto 0;display:block}.day-head{top:0}.map .maplibregl-ctrl-bottom-right,.map .maplibregl-ctrl-bottom-left{margin-bottom:20px}}.auth{max-width:440px;padding:40px var(--pad) 64px;margin:0 auto}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px}.auth h1{margin-bottom:18px;font-size:26px;font-weight:700}.auth-lead{color:var(--muted);margin-bottom:8px;font-size:14px}.auth-msg{color:#8a5a00;background:color-mix(in srgb, var(--gold) 22%, transparent);border-radius:10px;margin-bottom:16px;padding:12px 14px;font-size:14px}.auth-msg.info{color:var(--ink);background:var(--surface-2)}@media (prefers-color-scheme:dark){.auth-msg{color:var(--gold)}}.social{flex-direction:column;gap:8px;display:flex}.social .btn,.auth .btn.primary{justify-content:center;width:100%;height:44px;font-size:14px}.or{color:var(--muted);align-items:center;gap:12px;margin:18px 0 4px;font-size:13px;display:flex}.or:before,.or:after{content:"";background:var(--line);flex:1;height:1px}.auth label{margin-top:14px;font-size:13px;font-weight:600;display:block}.auth input{border:1px solid var(--line-strong);background:var(--surface);width:100%;height:44px;color:var(--ink);font:inherit;border-radius:10px;margin-top:6px;padding:0 12px;display:block}.auth input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:#0000}.auth .btn.primary{margin-top:18px}.auth-foot{color:var(--muted);text-align:center;margin-top:18px;font-size:14px}.auth-foot.small{margin-top:12px;font-size:13px}.auth-foot a{color:var(--ink);font-weight:600}.blog-index h1{letter-spacing:-.03em;margin-top:10px;font-size:clamp(28px,4vw,40px);font-weight:800}.tagbar{flex-wrap:wrap;margin-top:20px}.tagbar .chip{text-transform:capitalize;text-decoration:none}.posts-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin-top:24px;display:grid}.post-row{border:1px solid var(--line);background:var(--surface);border-radius:16px;flex-direction:column;gap:8px;padding:20px;text-decoration:none;display:flex}.post-row:hover{border-color:var(--line-strong)}.post-row h2{font-size:19px;font-weight:700;line-height:1.25}.post-row p{color:var(--muted);font-size:14px}.post-meta{font:500 12px/1.4 var(--mono);color:var(--muted);text-transform:capitalize}.post{max-width:760px;padding-block:32px 64px}.crumbs{color:var(--muted);margin-bottom:14px;font-size:13px}.crumbs a{color:var(--muted)}.post h1{letter-spacing:-.03em;font-size:clamp(30px,4.4vw,44px);font-weight:800;line-height:1.1}.post>.post-meta{margin:12px 0 18px;display:block}.post-map{margin:0 0 8px}.post-map .mini-map{height:280px}.post-map figcaption{margin-top:8px;font-size:13px}.post-map figcaption a{font-weight:600}.prose{margin-top:24px;font-size:17px;line-height:1.65}.prose h2{margin:36px 0 10px;font-size:24px}.prose h3{margin:24px 0 6px;font-size:18px}.prose p{margin:0 0 16px}.prose ul,.prose ol{margin:0 0 16px;padding-left:22px}.prose li{margin-bottom:6px}.prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.post-events,.post-related{border-top:1px solid var(--line);margin-top:40px;padding-top:24px}.post-events h2,.post-related h2{margin-bottom:8px;font-size:20px}.post-related ul{padding-left:20px}.post-related li{margin:6px 0}html:is(:lang(th),:lang(zh),:lang(ja),:lang(ko)) .post-meta{font-family:var(--body)}.submit .auth-card{max-width:560px}.auth.submit{max-width:600px}.submit .two{grid-template-columns:1fr 1fr;gap:12px;display:grid}.submit select,.submit textarea{border:1px solid var(--line-strong);background:var(--surface);width:100%;color:var(--ink);font:inherit;border-radius:10px;margin-top:6px;padding:10px 12px;display:block}.submit select{height:44px;padding-block:0}.submit textarea{resize:vertical}.tiers{border:0;gap:8px;margin:20px 0 0;padding:0;display:grid}.tiers legend{margin-bottom:8px;font-size:13px;font-weight:600}.tier{border:1px solid var(--line);cursor:pointer;border-radius:12px;grid-template-columns:20px 1fr;align-items:start;gap:10px;margin:0;padding:12px 14px;font-size:14px;font-weight:400;display:grid}.tier:has(input:checked){border-color:var(--ink);background:var(--bg)}.tier input{width:auto;height:auto;margin:3px 0 0}.tier b{font-size:15px}.tier .fee{font:600 14px/1 var(--mono);color:var(--accent);margin-left:8px}.tier small{color:var(--muted);margin-top:3px;font-size:13px;display:block}.submit .currency select{width:120px}@media (width<=520px){.submit .two{grid-template-columns:1fr}}.band{padding-block:56px}.band.alt{background:var(--surface);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.band-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.band h2{letter-spacing:-.03em;font-size:clamp(26px,3.4vw,38px);font-weight:800}.band .lead{color:var(--muted);max-width:60ch;margin:6px 0 0}.posts{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;display:grid}.post{border:1px solid var(--line);background:var(--surface);border-radius:16px;flex-direction:column;min-width:0;text-decoration:none;display:flex;overflow:hidden}.post .art{aspect-ratio:16/9;background:var(--surface-2);max-width:100%}.post .body{flex-direction:column;flex:1;gap:8px;padding:16px;display:flex}.post h3{font-size:18px;font-weight:700;line-height:1.2}.post p{color:var(--muted);font-size:14px}.btn{border:1px solid var(--line-strong);background:var(--surface);height:36px;color:var(--ink);border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;padding-block:28px;font-size:13px;display:flex}.event-page{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:40px;padding-block:40px;display:grid}.event-page h1{letter-spacing:-.03em;font-size:clamp(28px,4vw,44px);font-weight:800}.kv{grid-template-columns:auto minmax(0,1fr);gap:6px 16px;margin-top:20px;font-size:15px;display:grid}.kv dt{color:var(--muted);font:500 11px/1.9 var(--mono);letter-spacing:.08em;text-transform:uppercase}.kv dd{min-width:0;margin:0}.embed{border:1px solid var(--line);background:var(--surface);border-radius:16px;min-height:200px;overflow:hidden}.mini-map{border:1px solid var(--line);border-radius:16px;height:320px;overflow:hidden}@media (width<=860px){.event-page{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
