:root{--accent-green:#34d399;--accent-amber:#fbbf24;--accent-red:#f87171;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--background:#111116;--foreground:#fff;--body-bg:#080810;--text-primary:#fff;--text-secondary:#ffffffb3;--text-muted:#fff6;--glass-bg:#ffffff14;--glass-border:#ffffff1f;--glass-strong-bg:#ffffff1c;--glass-strong-border:#ffffff29;--glass-subtle-bg:#ffffff0d;--glass-subtle-border:#ffffff14;--input-bg:#ffffff0f;--input-border:#ffffff1f;--input-placeholder:#ffffff4d;--input-color:#fff;--toggle-track-bg:#ffffff26;--drawer-bg:#1c1c24;--toast-bg:#1e1e28f2;--toast-border:#ffffff1f;--toast-color:#fff;--row-border:#ffffff0f;--nav-border:#ffffff1a;--shell-shadow:0 0 0 1px #ffffff0f,0 40px 100px #000000e6;--page-gradient-start:#1a1a24;--title-gradient-start:#fff;--text-ultra-muted:#ffffff38;--divider-color:#ffffff1a;--surface-1:#ffffff0d;--surface-2:#ffffff12;--surface-border:#ffffff1f;--surface-text:#fff9;--surface-icon-bg:#ffffff14;--link-muted:#fff6;--modal-bg:#0f1412fa;--banner-bg:#0f1412eb;--tab-container-bg:#ffffff0f}[data-theme=light]{--background:#f2f2f7;--foreground:#1c1c1e;--body-bg:#e5e5ea;--text-primary:#1c1c1e;--text-secondary:#000000a6;--text-muted:#0006;--glass-bg:#ffffffb8;--glass-border:#00000014;--glass-strong-bg:#ffffffeb;--glass-strong-border:#00000014;--glass-subtle-bg:#fff9;--glass-subtle-border:#0000000d;--input-bg:#0000000a;--input-border:#0000001a;--input-placeholder:#0000004d;--input-color:#1c1c1e;--toggle-track-bg:#0000001f;--drawer-bg:#fff;--toast-bg:#fffffff5;--toast-border:#0000001a;--toast-color:#1c1c1e;--row-border:#0000000f;--nav-border:#00000014;--shell-shadow:0 0 0 1px #0000000f,0 40px 100px #00000026;--page-gradient-start:#fafafc;--title-gradient-start:#1a1a1a;--text-ultra-muted:#00000059;--divider-color:#0000001a;--surface-1:#0000000a;--surface-2:#0000000f;--surface-border:#0000001a;--surface-text:#0000008c;--surface-icon-bg:#0000000f;--link-muted:#00000073;--modal-bg:#fffffffa;--banner-bg:#ffffffeb;--tab-container-bg:#0000000f}@media (prefers-color-scheme:light){:root:not([data-theme]){--background:#f2f2f7;--foreground:#1c1c1e;--body-bg:#e5e5ea;--text-primary:#1c1c1e;--text-secondary:#000000a6;--text-muted:#0006;--glass-bg:#ffffffb8;--glass-border:#00000014;--glass-strong-bg:#ffffffeb;--glass-strong-border:#00000014;--glass-subtle-bg:#fff9;--glass-subtle-border:#0000000d;--input-bg:#0000000a;--input-border:#0000001a;--input-placeholder:#0000004d;--input-color:#1c1c1e;--toggle-track-bg:#0000001f;--drawer-bg:#fff;--toast-bg:#fffffff5;--toast-border:#0000001a;--toast-color:#1c1c1e;--row-border:#0000000f;--nav-border:#00000014;--shell-shadow:0 0 0 1px #0000000f,0 40px 100px #00000026;--page-gradient-start:#fafafc;--title-gradient-start:#1a1a1a;--text-ultra-muted:#00000059;--divider-color:#0000001a;--surface-1:#0000000a;--surface-2:#0000000f;--surface-border:#0000001a;--surface-text:#0000008c;--surface-icon-bg:#0000000f;--link-muted:#00000073;--modal-bg:#fffffffa;--banner-bg:#ffffffeb;--tab-container-bg:#0000000f}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--body-bg)}body{background:var(--body-bg);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1;-webkit-tap-highlight-color:transparent;-webkit-overflow-scrolling:touch;-webkit-user-select:none;user-select:none;overscroll-behavior-y:none;justify-content:center;align-items:center;min-height:100dvh;font-family:Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;display:flex}.app-shell{background:var(--background);flex-direction:column;width:100%;max-width:430px;height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden}.app-shell>*{flex:1;width:100%;min-height:0;position:relative}@media (min-width:480px){.app-shell{box-shadow:var(--shell-shadow)}}.public-page{overscroll-behavior-y:auto;width:100%;height:100dvh;overflow:hidden auto}.selectable{-webkit-user-select:text;user-select:text}.glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);box-shadow:0 8px 32px #0003,inset 0 1px #ffffff0d}.glass-strong{background:var(--glass-strong-bg);-webkit-backdrop-filter:blur(32px);border:1px solid var(--glass-strong-border);box-shadow:0 12px 40px #0000004d,inset 0 1px #ffffff14}.glass-subtle{background:var(--glass-subtle-bg);border:1px solid var(--glass-subtle-border)}button,a,.clickable{cursor:pointer;text-decoration:none;transition:transform .18s cubic-bezier(.25,1,.5,1),opacity .18s}button:active,a:active,.clickable:active{opacity:.8;transform:scale(.96)}.btn{cursor:pointer;border:none;outline:none;justify-content:center;align-items:center;gap:8px;font-family:inherit;font-weight:600;transition:all .2s cubic-bezier(.25,1,.5,1);display:inline-flex}.btn-primary{background:var(--accent-green);color:#000;box-shadow:0 4px 14px #34d39959}.btn-primary:active{box-shadow:none;background:#10b981}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--glass-bg);color:var(--text-primary);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.btn-secondary:active{background:#ffffff24}.btn-danger{color:var(--accent-red);background:#f8717126;border:1px solid #f8717140}.btn-danger:active{background:#f8717140}.btn-full{width:100%}.btn-sm{padding:9px 14px;font-size:13px}.input{background:var(--input-bg);border:1px solid var(--input-border);width:100%;color:var(--input-color);border-radius:14px;outline:none;padding:13px 16px;font-family:inherit;font-size:15px;transition:border-color .2s}.input:focus{border-color:#34d39980}.input::placeholder{color:var(--input-placeholder)}.avatar{color:#fff;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:16px;font-weight:700;display:flex}.avatar-sm{border-radius:10px;width:34px;height:34px;font-size:13px}.avatar-lg{border-radius:20px;width:64px;height:64px;font-size:26px}.badge{letter-spacing:.02em;border-radius:20px;align-items:center;padding:3px 10px;font-size:11px;font-weight:600;display:inline-flex}.badge-green{color:var(--accent-green);background:#34d39926;border:1px solid #34d39940}.spinner{border:3px solid #ffffff1a;border-top-color:var(--accent-green);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite spin}.toast{top:calc(24px + var(--safe-area-top));background:var(--toast-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--toast-border);color:var(--toast-color);white-space:nowrap;z-index:200;border-radius:50px;padding:11px 20px;font-size:14px;font-weight:500;animation:.2s cubic-bezier(.34,1.56,.64,1) scale-in;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #0006}.section-label{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:10px;padding-left:4px;font-size:12px;font-weight:600}.row-item{border-bottom:1px solid var(--row-border);justify-content:space-between;align-items:center;padding:14px 0;display:flex}.row-item:last-child{border-bottom:none}.toggle{cursor:pointer;align-items:center;display:flex}.toggle input{display:none}.toggle-track{background:var(--toggle-track-bg);border-radius:14px;width:48px;height:28px;transition:background .25s;position:relative}.toggle input:checked+.toggle-track{background:var(--accent-green)}.toggle-thumb{background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .25s cubic-bezier(.34,1.56,.64,1);position:absolute;top:3px;left:3px;box-shadow:0 2px 6px #0000004d}.toggle input:checked~.toggle-track .toggle-thumb,.toggle input:checked+.toggle-track .toggle-thumb{transform:translate(20px)}.drawer-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#00000080;animation:.2s fade-in;position:absolute;inset:0}.drawer{background:var(--drawer-bg);padding:8px 24px calc(28px + var(--safe-area-bottom));z-index:101;border-top-left-radius:28px;border-top-right-radius:28px;animation:.3s cubic-bezier(.25,1,.5,1) slide-up;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -20px 60px #00000080}.drawer-handle{background:#fff3;border-radius:2px;width:36px;height:4px;margin:8px auto 20px}.page-container{background:radial-gradient(circle at 50% 0%,var(--page-gradient-start)0%,var(--background)70%);flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.page-content{padding-bottom:calc(80px + var(--safe-area-bottom));flex:1;overflow:hidden auto}.nav-bar{height:calc(64px + var(--safe-area-bottom));padding-bottom:var(--safe-area-bottom);background:var(--background);border-top:1px solid var(--nav-border);z-index:50;justify-content:space-around;align-items:center;display:flex;position:absolute;bottom:0;left:0;right:0}.nav-item{height:100%;color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:9px;font-weight:500;text-decoration:none;transition:color .2s;display:flex}.nav-item.active{color:var(--accent-green)}.nav-item:active{transform:scale(.88)}.nav-icon{font-size:22px;line-height:1}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.92)translate(-50%)}to{opacity:1;transform:scale(1)translate(-50%)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-up{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes pin-pulse{0%{opacity:.8;transform:scale(1)}50%{opacity:0;transform:scale(1.55)}to{opacity:0;transform:scale(1)}}@keyframes pin-pulse-amber{0%{opacity:.5;transform:scale(1)}50%{opacity:0;transform:scale(1.35)}to{opacity:0;transform:scale(1)}}.animate-in{animation:.35s cubic-bezier(.25,1,.5,1) both slide-up}::-webkit-scrollbar{display:none}*{-ms-overflow-style:none;scrollbar-width:none}.fab{bottom:calc(88px + var(--safe-area-bottom));background:var(--accent-green);color:#000;cursor:pointer;z-index:20;border:none;border-radius:24px;outline:none;justify-content:center;align-items:center;width:72px;height:72px;font-size:28px;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,background .2s;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 8px 28px #34d39973,0 2px 8px #0000004d}.fab:active{transform:translate(-50%)scale(.92);box-shadow:0 4px 14px #34d3994d}.fab:disabled{cursor:not-allowed}.fab.reporting{color:var(--accent-green);box-shadow:none;background:#34d39926;border:2px solid #34d39966;animation:1.2s ease-in-out infinite fab-pulse}@keyframes fab-pulse{0%,to{box-shadow:0 0 #34d39966}50%{box-shadow:0 0 0 12px #34d39900}}.fab.fab-ghosted{color:#ffffff73;box-shadow:none;background:#94a3b81f;border:2px solid #94a3b840}.fab.fab-ghosted:hover{background:#94a3b82e}.hardware-accelerate{will-change:transform,opacity;transform:translateZ(0)}.public-page{color:#f0f0f0;-webkit-overflow-scrolling:touch;-webkit-user-select:text;user-select:text;background:#080810;font-family:Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:fixed;inset:0;overflow:hidden auto}.map-dark .leaflet-tile-pane{filter:brightness(1.65)contrast(.82)saturate(.82)}.map-light .leaflet-tile-pane{filter:none}
