@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d9e531347d16b9bd-s.33iiebxnyw3mn.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/824eef5f30e1c17a-s.1lnoxcpdy15zq.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ca0c78b65b883dbf-s.3ncebktlk85m0.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/45ff2848add50f49-s.42_oh81r60qk6.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/20c93b0a4151e45d-s.3pz51h88yl6ry.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/749b655c360b802f-s.2dn8n4nmks3qy.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:400;font-display:swap;src:url(../media/c3ada891737f2747-s.p.2ofae7-v0u79z.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/022b378bdcd1fcd7-s.1ieqwz-fl8er8.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/65112a9ea65b44c5-s.43a5-rp9f3fl3.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Fira Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/714ade663d238882-s.08uzow34ompqf.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Fira Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c1c89cc98b697117-s.2ojlk487y9mw0.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/131dbaea5dbadd69-s.1ya6qhwbwihlv.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fira Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/4cc786b62d5b5f63-s.0gm4pcoufoftn.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:500;font-display:swap;src:url(../media/d7cc781f889325b8-s.p.1d4i5iktl1egg.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1748134c769d78e9-s.1f8arwqmrai1b.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1bf778d0332917b2-s.267laj-7qy-0-.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Fira Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/3e24bdeb2438c466-s.2dsx-ugyhcjag.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Fira Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ac5baa95b5adeb9b-s.1um35jqo2bs9v.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/29e04cc5a66e0810-s.361fq6-659j9l.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fira Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1d97e95fd953b568-s.1gg7qmdkfhou9.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:600;font-display:swap;src:url(../media/77a4b527d08cc916-s.p.2a3w-b9irc_27.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6157c4dcb944b241-s.0y5iit_mceb2q.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/ce1f8b3867f10978-s.36_reagd89li4.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/accd2c7d2c2ce496-s.26z6iv2w9ihkb.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/33e1f6655098bd40-s.0n3fs5henw7ko.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/3a4bbeaaa0931922-s.338c098gn22ih.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/2eb890461b443d41-s.0w7s2pkyrpk2m.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Sans;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9a614735508e78b1-s.p.231-3bqi2sys0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Sans Fallback;src:local(Arial);ascent-override:91.01%;descent-override:25.79%;line-gap-override:0.0%;size-adjust:102.74%}.y9PBNq_className{font-family:Fira Sans,Fira Sans Fallback;font-style:normal}.y9PBNq_variable{--font-latin:"Fira Sans", "Fira Sans Fallback"}
@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/ce92d22f98cba196-s.p.3ok2djvs6w93k.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/bc75617546bfc27e-s.1ttn5ge0anb6a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/293c566c2e1d69ac-s.0h0-3wqrkgcb1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/ce92d22f98cba196-s.p.3ok2djvs6w93k.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/bc75617546bfc27e-s.1ttn5ge0anb6a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/293c566c2e1d69ac-s.0h0-3wqrkgcb1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/ce92d22f98cba196-s.p.3ok2djvs6w93k.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/bc75617546bfc27e-s.1ttn5ge0anb6a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/293c566c2e1d69ac-s.0h0-3wqrkgcb1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/ce92d22f98cba196-s.p.3ok2djvs6w93k.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/bc75617546bfc27e-s.1ttn5ge0anb6a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/293c566c2e1d69ac-s.0h0-3wqrkgcb1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai Fallback;src:local(Arial);ascent-override:99.79%;descent-override:42.32%;line-gap-override:0.0%;size-adjust:106.33%}.Pz5I1q_className{font-family:Noto Sans Thai,Noto Sans Thai Fallback;font-style:normal}.Pz5I1q_variable{--font-thai:"Noto Sans Thai", "Noto Sans Thai Fallback"}
:root{--color-primary:#1e40af;--color-primary-hover:#1e3a8a;--color-on-primary:#fff;--color-secondary:#3b82f6;--color-secondary-light:#dbeafe;--color-accent:#d97706;--color-background:#f8fafc;--color-surface:#fff;--color-muted:#f1f5f9;--color-foreground:#0f172a;--color-foreground-secondary:#64748b;--color-foreground-muted:#94a3b8;--color-border:#e2e8f0;--color-border-hover:#3b82f6;--color-ring:#1e40af;--color-destructive:#dc2626;--color-destructive-hover:#b91c1c;--color-error:#dc2626;--color-success:#16a34a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--font-sans:var(--font-latin), var(--font-thai), system-ui, -apple-system, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--leading-normal:1.5;--leading-relaxed:1.75;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 25px -3px #0000001a, 0 4px 6px -4px #0000000d;--transition-fast:.15s ease;--transition-normal:.25s ease;--sidebar-width:260px;--content-max-width:640px;--footer-height:48px}*,:before,:after{box-sizing:border-box}body{background:var(--color-background);min-height:100vh;color:var(--color-foreground);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);margin:0}h1{margin:0 0 var(--space-2);font-size:var(--text-2xl);font-weight:var(--font-semibold)}.muted{color:var(--color-foreground-secondary);font-size:var(--text-sm)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-8)}.stack{gap:var(--space-4);margin-top:var(--space-6);flex-direction:column;display:flex}.login-shell{min-height:100vh;padding:var(--space-4);place-items:center;display:grid}.login-card{width:100%;max-width:400px}.field{gap:var(--space-1);font-size:var(--text-sm);font-weight:var(--font-medium);flex-direction:column;display:flex}.field input{font:inherit;font-weight:var(--font-normal);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast)}.field input:focus-visible{outline:2px solid var(--color-ring);outline-offset:1px;border-color:var(--color-border-hover)}.button{min-height:44px;padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);font:inherit;font-weight:var(--font-medium);cursor:pointer;transition:background-color var(--transition-fast);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.button:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px}.button-primary{background:var(--color-primary);color:var(--color-on-primary)}.button-primary:hover{background:var(--color-primary-hover)}.button-primary:disabled{opacity:.6;cursor:progress}.button-ghost{color:var(--color-foreground-secondary);border-color:var(--color-border);background:0 0}.button-ghost:hover{background:var(--color-muted)}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-muted);font-size:var(--text-sm);margin:0}.alert-error{color:var(--color-error);background:#fef2f2;border:1px solid #fecaca}.note{font-size:var(--text-xs);color:var(--color-foreground-secondary)}.note-warning{color:var(--color-accent)}.topbar{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex}.brand{font-weight:var(--font-semibold);color:var(--color-primary)}.topbar-user{align-items:center;gap:var(--space-3);display:flex}.page{max-width:880px;padding:var(--space-8) var(--space-4);margin:0 auto}.month-list{margin:var(--space-6) 0 0;border-top:1px solid var(--color-border);padding:0;list-style:none}.month-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--color-border);display:flex}.month-info{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}@media (max-width:560px){.card{padding:var(--space-5)}.month-row{flex-direction:column;align-items:stretch}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
