@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");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-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");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-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");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-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-inter:"Inter","Inter Fallback"}@font-face{font-family:Noto Sans Thai;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/f196b1e65fee88ed-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,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(/_next/static/media/61a7a85bb72f3355-s.woff2) format("woff2");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-family:Noto Sans Thai;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/cc95fdb254242a42-s.woff2) format("woff2");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-family:Noto Sans Thai;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/f196b1e65fee88ed-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,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(/_next/static/media/61a7a85bb72f3355-s.woff2) format("woff2");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-family:Noto Sans Thai;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/cc95fdb254242a42-s.woff2) format("woff2");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-family:Noto Sans Thai;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/f196b1e65fee88ed-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,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(/_next/static/media/61a7a85bb72f3355-s.woff2) format("woff2");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-family:Noto Sans Thai;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/cc95fdb254242a42-s.woff2) format("woff2");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-family:Noto Sans Thai;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/f196b1e65fee88ed-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,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(/_next/static/media/61a7a85bb72f3355-s.woff2) format("woff2");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-family:Noto Sans Thai;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/cc95fdb254242a42-s.woff2) format("woff2");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-family:Noto Sans Thai Fallback;src:local("Arial");ascent-override:99.79%;descent-override:42.32%;line-gap-override:0.00%;size-adjust:106.33%}.__className_8ebccf{font-family:Noto Sans Thai,Noto Sans Thai Fallback;font-style:normal}.__variable_8ebccf{--font-thai:"Noto Sans Thai","Noto Sans Thai Fallback"}@font-face{font-family:Outfit;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/98848575513c9742-s.woff2) format("woff2");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-family:Outfit;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/7b0b24f36b1a6d0b-s.p.woff2) format("woff2");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-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/98848575513c9742-s.woff2) format("woff2");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-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/7b0b24f36b1a6d0b-s.p.woff2) format("woff2");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-family:Outfit;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/98848575513c9742-s.woff2) format("woff2");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-family:Outfit;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/7b0b24f36b1a6d0b-s.p.woff2) format("woff2");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-family:Outfit;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/98848575513c9742-s.woff2) format("woff2");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-family:Outfit;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/7b0b24f36b1a6d0b-s.p.woff2) format("woff2");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-family:Outfit Fallback;src:local("Arial");ascent-override:100.18%;descent-override:26.05%;line-gap-override:0.00%;size-adjust:99.82%}.__className_9d5196{font-family:Outfit,Outfit Fallback;font-style:normal}.__variable_9d5196{--font-heading:"Outfit","Outfit Fallback"}:root{--background:#f7f6f2;--surface:#ffffff;--surface-sunken:#f1efea;--text:#1b1d1a;--text-muted:#6b6a64;--text-faint:#a3a19a;--border:#e6e3dc;--border-strong:#d6d2c8;--hover:#efede7;--primary:#1f5c4f;--primary-light:#5e8f82;--primary-soft:#e6efec;--on-primary:#ffffff;--secondary:#b5552e;--secondary-light:#d98a66;--secondary-soft:#f6e8e1;--accent:#b93a2b;--accent-soft:#f7e3df;--success:#2f7a4b;--success-soft:#e3f0e7;--warning:#a86b12;--warning-soft:#f7eddc;--cat-food:#c9773e;--cat-transport:#3d6f9e;--cat-hotel:#7a5ba6;--cat-activity:#2f7a4b;--cat-shopping:#b5487a;--cat-emergency:#b93a2b;--cat-other:#8a877f;--shadow-sm:0 1px 2px rgba(27,29,26,0.04);--shadow-md:0 1px 2px rgba(27,29,26,0.04),0 8px 24px rgba(27,29,26,0.06);--shadow-lg:0 2px 4px rgba(27,29,26,0.04),0 24px 48px rgba(27,29,26,0.12);--shadow-card:0 1px 2px rgba(27,29,26,0.03),0 6px 24px rgba(27,29,26,0.05);--hero-from:#123f36;--hero-to:#1f5c4f;--hero-text:#ffffff;--hero-muted:rgba(255,255,255,0.78);--hero-highlight:#c9ef8a;--hero-tile:rgba(255,255,255,0.08);--hero-tile-border:rgba(255,255,255,0.16);--glass-bg:rgba(247,246,242,0.86);--glass-border:var(--border);--glass-shadow:var(--shadow-sm);--nav-height:64px;--header-height:56px;--safe-bottom:env(safe-area-inset-bottom,0px);--gutter:20px;--container:1160px;--radius-sm:10px;--radius-md:16px;--radius-lg:22px;--radius-pill:999px;--font-family:var(--font-inter),var(--font-thai),ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-display:var(--font-heading),var(--font-thai),ui-sans-serif,system-ui,sans-serif;--transition-fast:0.15s ease;--transition-normal:0.25s cubic-bezier(0.2,0,0,1)}@media (prefers-color-scheme:dark){:root{--background:#121412;--surface:#1a1d1a;--surface-sunken:#161816;--text:#eceae4;--text-muted:#9c9a92;--text-faint:#6c6b65;--border:#2b2f2b;--border-strong:#3a3f3a;--hover:#232723;--primary:#8ccbb9;--primary-light:#b4ddd1;--primary-soft:rgba(140,203,185,0.12);--on-primary:#0e1f1a;--secondary:#e59a76;--secondary-light:#f0b89c;--secondary-soft:rgba(229,154,118,0.12);--accent:#ee7f6e;--accent-soft:rgba(238,127,110,0.12);--success:#7cc596;--success-soft:rgba(124,197,150,0.12);--warning:#e0b26a;--warning-soft:rgba(224,178,106,0.12);--cat-food:#e09a63;--cat-transport:#7aa7d4;--cat-hotel:#a990d1;--cat-activity:#7cc596;--cat-shopping:#dc85ad;--cat-emergency:#ee7f6e;--cat-other:#9c9a92;--shadow-sm:0 1px 2px rgba(0,0,0,0.3);--shadow-md:0 1px 2px rgba(0,0,0,0.3),0 8px 24px rgba(0,0,0,0.25);--shadow-lg:0 2px 4px rgba(0,0,0,0.3),0 24px 48px rgba(0,0,0,0.45);--shadow-card:0 1px 2px rgba(0,0,0,0.25);--hero-from:#0f2b25;--hero-to:#19463d;--glass-bg:rgba(18,20,18,0.86)}}*,:after,:before{box-sizing:border-box;padding:0;margin:0;-webkit-tap-highlight-color:transparent}body,html{max-width:100vw;overflow-x:hidden;background-color:var(--background);color:var(--text);font-family:var(--font-family);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;min-height:-webkit-fill-available;display:flex;flex-direction:column}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;letter-spacing:-.015em;color:var(--text);line-height:1.2}p{color:var(--text-muted);line-height:1.6}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}::selection{background:var(--primary-soft)}.app-container{width:100%;min-height:100vh;display:flex;flex-direction:column;background-color:var(--background);position:relative;padding-bottom:calc(var(--nav-height) + var(--safe-bottom) + 32px)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}.desktop-only{display:none!important}@media (min-width:900px){:root{--gutter:40px;--header-height:72px}.app-container{padding-bottom:56px}.desktop-only{display:flex!important}.mobile-only{display:none!important}}.page{width:100%;max-width:calc(var(--container) + var(--gutter) * 2);margin:0 auto;padding:24px var(--gutter) 0;display:flex;flex-direction:column;gap:24px;animation:page-in .3s var(--transition-normal)}@media (min-width:900px){.page{padding-top:36px;gap:32px}}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.page-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:12px}.page-title{font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1.15;letter-spacing:-.02em}.page-subtitle{font-size:15px;color:var(--text-muted);margin-top:6px}@media (min-width:900px){.page-title{font-size:34px}}.accent-text{color:var(--primary)}.eyebrow{display:block;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.section{display:flex;flex-direction:column;gap:12px;min-width:0}.section-title{font-family:var(--font-display);font-size:20px;font-weight:700;letter-spacing:-.015em}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.split{display:grid;grid-template-columns:1fr;grid-gap:24px;gap:24px;align-items:start}@media (min-width:900px){.split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px}.split-wide-left{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}}.stack{display:flex;flex-direction:column;gap:24px;min-width:0}.muted{color:var(--text-muted)}.tabular{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hero{position:relative;overflow:hidden;border-radius:var(--radius-lg);padding:28px 22px;color:var(--hero-text);background:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px) 0 0 /32px 32px,linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px) 0 0 /32px 32px,linear-gradient(135deg,var(--hero-from),var(--hero-to));display:flex;flex-direction:column;gap:24px}@media (min-width:900px){.hero{padding:44px 40px;gap:32px}}.hero-title{font-family:var(--font-display);font-weight:800;font-size:30px;line-height:1.15;letter-spacing:-.02em;color:var(--hero-text)}@media (min-width:900px){.hero-title{font-size:40px}}.hero-highlight{color:var(--hero-highlight);background:rgba(255,255,255,.08);border-radius:8px;padding:0 10px;-webkit-box-decoration-break:clone;box-decoration-break:clone}.hero-text{max-width:560px;font-size:15px;line-height:1.6;color:var(--hero-muted);margin-top:10px}@media (min-width:900px){.hero-text{font-size:17px}}.hero-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}@media (min-width:900px){.hero-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}}.hero-stat{background:var(--hero-tile);border:1px solid var(--hero-tile-border);border-radius:var(--radius-md);padding:16px;display:flex;flex-direction:column;gap:8px;min-width:0}@media (min-width:900px){.hero-stat{padding:20px 22px 24px}}.hero-stat-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--hero-muted)}.hero-stat-value{font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1.1;color:var(--hero-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width:900px){.hero-stat-value{font-size:34px}}.hero-stat-value.highlight{color:var(--hero-highlight)}.hero-stat-sub{font-size:12px;color:var(--hero-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.num-tile{width:48px;height:48px;border-radius:var(--radius-sm);background:var(--primary-soft);color:var(--primary);font-family:var(--font-display);font-weight:700;font-size:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.card{padding:20px;gap:12px}.card,.list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);display:flex;flex-direction:column}.list{overflow:hidden}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;min-height:56px}.list-row+.list-row{border-top:1px solid var(--border)}.list-title{font-size:14px;font-weight:500;color:var(--text)}.list-sub{font-size:12px}.empty,.list-sub{color:var(--text-muted)}.empty{padding:40px 16px;text-align:center;font-size:14px;display:flex;flex-direction:column;align-items:center;gap:10px}.empty svg{color:var(--text-faint)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;padding:0 18px;border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:14px;font-weight:600;white-space:nowrap;text-decoration:none;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.btn:hover{background:var(--hover)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:var(--primary);filter:brightness(1.08)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--hover);color:var(--text)}.btn-danger{background:transparent;border-color:var(--border);color:var(--accent)}.btn-danger:hover{background:var(--accent-soft)}.btn-sm{height:34px;padding:0 14px;font-size:13px}.btn-block{width:100%}.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-pill);border:none;background:transparent;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color var(--transition-fast),color var(--transition-fast)}.btn-icon:hover{background:var(--hover);color:var(--text)}.btn-icon.danger:hover{background:var(--accent-soft);color:var(--accent)}.btn-row{display:flex;gap:10px}.btn-row>.btn{flex:1 1}.btn-row>.btn-primary{flex:2 1}.chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px;border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--text-muted);font-size:12px;font-weight:500;white-space:nowrap}.chip-accent{background:var(--primary-soft);color:var(--primary)}.chip-success{background:var(--success-soft);color:var(--success)}.chip-danger{background:var(--accent-soft);color:var(--accent)}.status{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;white-space:nowrap;border:1px solid var(--border-strong);color:var(--text-muted);background:var(--surface)}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}.status-success{background:var(--success);border-color:var(--success);color:var(--surface)}.status-accent{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.status-warning{background:var(--warning);border-color:var(--warning);color:var(--surface)}.pill-tabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 calc(var(--gutter) * -1);padding:2px var(--gutter)}.pill-tabs::-webkit-scrollbar{display:none}.pill-tab{flex-shrink:0;height:36px;padding:0 16px;border-radius:var(--radius-pill);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:13px;font-weight:500;transition:all var(--transition-fast)}.pill-tab:hover{color:var(--text);border-color:var(--border-strong)}.pill-tab.active{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.pill-tab.dashed{border-style:dashed}.segmented{display:flex;padding:3px;border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--border)}.segmented button{flex:1 1;height:32px;padding:0 12px;border:none;border-radius:var(--radius-pill);background:transparent;color:var(--text-muted);font-size:13px;font-weight:500;transition:all var(--transition-fast)}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.form{gap:16px}.field,.form{display:flex;flex-direction:column}.field{gap:6px;position:relative;min-width:0}.field-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:500;color:var(--text-muted)}.input{width:100%;min-width:0;height:44px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:15px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);-webkit-appearance:none;-moz-appearance:none;appearance:none}.input::placeholder{color:var(--text-faint)}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.input:disabled{background:var(--surface-sunken);color:var(--text-muted)}textarea.input{height:auto;min-height:88px;padding:12px 14px;resize:vertical}select.input{padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238a877f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}.input-sm{height:34px;font-size:13px;padding:0 12px}select.input-sm{padding-right:30px;background-position:right 10px center}.checkbox{width:18px;height:18px;accent-color:var(--primary);flex-shrink:0}.form-error{font-size:13px;color:var(--accent);background:var(--accent-soft);padding:10px 14px;border-radius:var(--radius-sm)}.sheet-overlay{position:fixed;inset:0;background:rgba(18,20,18,.4);z-index:2000;display:flex;align-items:flex-end;justify-content:center;animation:overlay-in .2s ease}.sheet{width:100%;max-width:560px;max-height:88vh;overflow-y:auto;background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:8px var(--gutter) calc(24px + var(--safe-bottom));display:flex;flex-direction:column;gap:20px;box-shadow:var(--shadow-lg);animation:sheet-in .3s var(--transition-normal)}.sheet:before{content:"";display:block;width:36px;height:4px;border-radius:2px;background:var(--border-strong);margin:4px auto 0;flex-shrink:0}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.sheet-title{font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1.2;letter-spacing:-.015em}@media (min-width:640px){.sheet-overlay{align-items:center;padding:24px}.sheet{border-radius:var(--radius-lg);max-width:480px;padding-bottom:24px}.sheet:before{display:none}}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-in{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}.avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;background:var(--surface-sunken);border:1px solid var(--border);flex-shrink:0}.avatar-sm{width:22px;height:22px}.avatar-lg{width:44px;height:44px}.leaflet-container{font-family:var(--font-family)!important;background:var(--surface-sunken)!important}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--surface)!important;color:var(--text)!important;box-shadow:var(--shadow-md)!important}.leaflet-popup-content-wrapper{border-radius:var(--radius-sm)!important}.leaflet-bar a{background:var(--surface)!important;color:var(--text)!important;border-color:var(--border)!important}.leaflet-control-attribution{font-size:9px!important;background:color-mix(in srgb,var(--surface) 80%,transparent)!important;color:var(--text-muted)!important}