:root{--asphalt:#2a2c2e;--ink:var(--asphalt);--ink-soft:#5d6164;--concrete:#e9ece8;--concrete-2:#dce0db;--paper:#fffdf4;--tape-solid:#efd36a;--tape:#efd36ad1;--tape-soft:#fbf3d2;--stool:#d23a2e;--stool-dark:#b32f24;--green:#1f7a4d;--green-soft:#e1f0e6;--green-pale:#a9c7b4;--blue:#2f5f9e;--blue-soft:#e6eef8;--line:#cdd3cc;--focus:#2f6fd6;--font-hand:"LXGW WenKai TC", "Kaiti TC", "BiauKai", "DFKai-SB", "TW-Kai", "Noto Serif CJK TC", "PMingLiU", serif;--font-sans:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Noto Sans CJK TC", system-ui, sans-serif;--bp-app:640px;--bp-single:940px;--radius-card:14px;--shadow-note:0 1px 0 #2a2c2e0d, 0 8px 16px -10px #2a2c2e73;--topbar-h:64px;--tabbar-h:68px}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);color:var(--ink);background:var(--concrete);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.6}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shell{background:var(--concrete);width:100%;height:100dvh;color:var(--ink);position:relative;overflow:hidden;container:app/inline-size}.app{flex-direction:column;height:100%;display:flex}.main{flex:1;min-height:0;position:relative;overflow:auto}.wrap{max-width:1120px;margin:0 auto;padding:36px 24px 56px}.topbar{height:var(--topbar-h);background:var(--paper);border-bottom:1px solid var(--line);z-index:1050;flex:none;align-items:center;gap:20px;padding:0 24px;display:flex;position:relative}.logo{text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:0;text-decoration:none;display:flex}.logo svg{flex:none;width:36px;height:36px}.logo-name{font-family:var(--font-hand);font-size:22px;font-weight:700;line-height:1.1;display:block}.logo-sub{color:var(--ink-soft);font-size:11.5px;line-height:1.3;display:block}.topnav{gap:4px;margin-left:8px;display:flex}.topnav a{color:var(--ink-soft);background:0 0;border:0;border-radius:999px;padding:8px 14px;font-weight:500;text-decoration:none}.topnav a:hover{color:var(--ink)}.topnav a[aria-current=page]{background:var(--concrete);color:var(--ink)}.topbar-right{align-items:center;gap:10px;margin-left:auto;display:flex}.btn{white-space:nowrap;border:1.5px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:15px;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}.btn-red{background:var(--stool);color:#fff}.btn-red:hover{background:var(--stool-dark)}.btn-ghost{border-color:var(--asphalt);color:var(--ink);background:0 0}.btn-ghost:hover{background:#2a2c2e0f}.btn-tape{background:var(--tape-solid);color:var(--asphalt)}.btn.sm{padding:7px 14px;font-size:14px}.btn[disabled]{opacity:.45;cursor:not-allowed}.link{color:var(--ink);text-underline-offset:3px;background:0 0;border:0;padding:4px;font-size:14px;text-decoration:underline}.link.green{color:var(--green)}.hint{color:var(--ink-soft);margin:0;font-size:13px}.hero{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start;gap:40px;display:grid}.hero-lead{font-family:var(--font-hand);margin:0 0 4px;font-size:22px}.tally{flex-wrap:wrap;align-items:center;gap:2px;margin:2px 0 0 -6px;display:flex}.zheng{width:68px;height:68px;transform:rotate(var(--r,0deg))}.zheng path{fill:none;stroke:var(--asphalt);stroke-width:3.4px;stroke-linecap:round}.zheng path.new{stroke-dasharray:40;stroke-dashoffset:40px;animation:draw .3s ease-out var(--d,0s) forwards}@keyframes draw{to{stroke-dashoffset:0}}.hero-title{font-family:var(--font-hand);margin:6px 0 16px;font-size:46px;font-weight:700;line-height:1.15}.hero-lede{max-width:32em;color:var(--ink-soft);margin:0 0 24px;font-size:16px}.hero-actions{flex-wrap:wrap;gap:10px;display:flex}.impact{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:22px 22px 18px;position:relative}.impact h2{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:0 0 12px;font-size:15px;display:flex}.impact-list{gap:10px;margin:0;display:grid}.impact-list div{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:8px;display:flex}.impact-list dt{color:var(--ink-soft);font-size:14px}.impact-list dd{font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-size:19px;font-weight:700}.impact-list dd small{color:var(--ink-soft);font-size:13px;font-weight:500}.impact-list dd.green{color:var(--green)}.bars{margin-top:18px}.bars h3{color:var(--ink-soft);margin:0 0 6px;font-size:13px;font-weight:500}.bars-row{align-items:flex-end;gap:10px;display:flex}.bar{flex-direction:column;flex:1;align-items:center;gap:3px;max-width:120px;display:flex}.bar-val{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:12px}.bar-fill{background:var(--green-pale);border-radius:4px 4px 0 0;width:100%;max-width:38px}.bar.now .bar-fill{background:var(--green)}.bar.now .bar-val{color:var(--green);font-weight:700}.bar-label{color:var(--ink-soft);font-size:12px}.bars-empty{color:var(--ink-soft);margin:0;font-size:13px}.fine{color:var(--ink-soft);margin:12px 0 0;font-size:12px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin:48px 0 20px;display:flex}.section-head h2{font-family:var(--font-hand);margin:0;font-size:28px}.notes-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;padding-top:10px;display:grid}.band{border-radius:var(--radius-card);justify-content:space-between;align-items:center;gap:20px;margin-top:44px;padding:22px 24px;display:flex;position:relative}.band h2{font-family:var(--font-hand);margin:0 0 2px;font-size:24px}.band p{max-width:36em;margin:0}.band-brand{border:1.5px dashed var(--asphalt)}.band-brand p{color:var(--ink-soft)}.band-support{background:var(--asphalt);color:#eef0ed;margin-top:16px}.band-support p{opacity:.85}.band-support :focus-visible{outline-color:var(--tape-solid)}.demo-note{color:var(--ink-soft);margin:36px 0 0;font-size:12.5px}.adslot{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--paper);min-height:96px;color:var(--ink-soft);justify-content:center;align-items:center;margin-top:28px;font-size:13px;display:flex;position:relative}.adslot-banner{height:96px}.adslot-card{min-height:112px}.note{text-align:left;background:var(--paper);box-shadow:var(--shadow-note);transform:rotate(var(--tilt,0deg));color:inherit;border:0;border-radius:2px;flex-direction:column;width:100%;padding:10px 10px 14px;transition:transform .15s;display:flex;position:relative}button.note:hover{transform:rotate(0)translateY(-2px)}.note:before{content:"";background:var(--tape);width:62px;height:20px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-4deg)}.note-photo{aspect-ratio:4/3;color:var(--asphalt);background:repeating-linear-gradient(135deg,#eef0ec 0 8px,#e5e8e3 8px 16px);border-radius:1px;place-items:center;display:grid;overflow:hidden}.note-photo svg{width:46%;height:auto}.note-photo img{object-fit:cover;width:100%;height:100%}.note-body{flex-direction:column;gap:1px;min-width:0;padding:10px 4px 0;display:flex}.note-title{font-family:var(--font-hand);margin:5px 0 2px;font-size:20px;font-weight:700;line-height:1.3}.note-meta{color:var(--ink-soft);font-size:13px}.note.is-taken .note-photo,.note.is-taken .note-body{opacity:.5;filter:grayscale()}.stamp{font-family:var(--font-hand);color:var(--stool);border:3px solid var(--stool);white-space:nowrap;background:#fffdf4b3;border-radius:6px;padding:0 12px;font-size:26px;font-weight:700;position:absolute;top:36%;left:50%;transform:translate(-50%,-50%)rotate(-12deg)}.note.compact{flex-direction:row;align-items:center;gap:14px;padding:10px;transform:none}.note.compact:before{width:42px;height:14px;top:-7px;left:22px;transform:rotate(-8deg)}.note.compact .note-photo{aspect-ratio:1;flex:none;width:92px}.note.compact .note-body{padding:0}.note.compact .note-title{margin:3px 0 0;font-size:18px}.note.compact .stamp{border-width:2px;padding:0 8px;font-size:17px;top:50%;left:56px}.note.compact.selected{box-shadow:0 0 0 2.5px var(--asphalt), 0 8px 16px -10px #2a2c2e73}.tagrow{flex-wrap:wrap;gap:4px;display:flex}.tag{white-space:nowrap;border:1.5px solid;border-radius:999px;align-self:flex-start;padding:0 8px;font-size:12px;font-weight:500;line-height:1.6}.tag-street{color:var(--stool);border-color:var(--stool)}.tag-donate{color:var(--green);border-color:var(--green)}.tag-brand{color:var(--asphalt);border-color:var(--asphalt);background:var(--tape-solid)}.tag-dispose{color:var(--ink-soft);border-color:var(--line);background:var(--concrete)}.tag-review{color:var(--green);border-color:var(--green-pale);background:var(--green-soft)}.tag-reserved{color:var(--ink);border-color:var(--tape-solid);background:var(--tape-soft)}.tag-pending{color:var(--ink-soft);border-color:var(--ink-soft);border-style:dashed}.status{background:var(--green-soft);color:var(--green);border-radius:999px;padding:1px 9px;font-size:12.5px;font-weight:500}.status.off{background:var(--concrete-2);color:var(--ink-soft)}.status.reserved{background:var(--tape-soft);color:var(--ink)}.status.pending{color:var(--ink-soft);border:1.5px dashed var(--ink-soft);background:0 0}.map-view{height:100%;position:relative;overflow:clip}.map-layout{grid-template-columns:380px minmax(0,1fr);height:100%;display:grid}.map-side{border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.filters{border-bottom:1px solid var(--line);background:var(--concrete);flex-direction:column;gap:10px;padding:16px 16px 12px;display:flex;position:relative}.filters .flabel{color:var(--ink-soft);margin:0 0 -4px;font-size:12px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:4px 12px;font-size:14px}.chip:hover{border-color:var(--ink-soft)}.chip[aria-pressed=true]{border-color:var(--asphalt);background:var(--asphalt);color:#fff}.chip.mini{padding:2px 10px;font-size:13px}.check{color:var(--ink-soft);align-items:center;gap:8px;font-size:14px;display:flex}.check input{width:16px;height:16px;accent-color:var(--asphalt)}.filter-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.list{flex-direction:column;flex:1;gap:18px;padding:18px 16px 28px;display:flex;overflow:auto}.list-count{color:var(--ink-soft);margin:0 0 -4px;font-size:13px}.list-empty{color:var(--ink-soft);text-align:center;padding:24px 8px;font-size:14px}.map-box{min-height:0;position:relative}.map-host{background:#e2e6e1;position:absolute;inset:0}.map-host .map-canvas{width:100%;height:100%;position:absolute;inset:0}.map-host .maplibregl-map{font-family:inherit}.maplibregl-ctrl-group{box-shadow:0 2px 8px #00000026}.map-note{background:var(--paper);max-width:420px;color:var(--ink-soft);z-index:500;border-radius:6px;padding:6px 10px;font-size:12px;position:absolute;bottom:32px;left:12px;right:12px}.map-note code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px}.map-attrib{z-index:500;color:var(--ink-soft);background:#fffdf4d9;border-radius:6px 0 0;max-width:100%;padding:2px 8px;font-size:11px;line-height:1.4;position:absolute;bottom:0;right:0}.map-attrib a{color:var(--ink)}.map-legend{z-index:500;background:var(--paper);border-radius:10px;flex-direction:column;gap:4px;padding:8px 12px;font-size:12.5px;display:flex;position:absolute;top:12px;right:12px;box-shadow:0 2px 8px #00000026}.map-legend span{align-items:center;gap:6px;display:flex}.map-legend i{border:2.5px solid var(--stool);background:var(--paper);border-radius:50%;width:12px;height:12px}.map-legend i.d{border-color:var(--green)}.map-legend i.b{border-color:var(--asphalt);background:var(--tape-solid)}.map-legend i.t{opacity:.55;border-color:#9aa09c}.pin{background:var(--paper);border:2.5px solid var(--stool);width:34px;height:34px;color:var(--asphalt);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;box-shadow:0 2px 6px #00000047}.pin svg{width:20px;height:20px}.pin-donate{border-color:var(--green)}.pin-brand{border-color:var(--asphalt);background:var(--tape-solid)}.pin-taken{opacity:.55;border-color:#9aa09c}.pin.selected{box-shadow:0 0 0 3px var(--asphalt), 0 2px 6px #00000047;z-index:1000!important}.pin:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.scrim{opacity:0;pointer-events:none;z-index:1100;background:#2a2c2e59;border:0;padding:0;transition:opacity .2s;position:absolute;inset:0}.scrim.show{opacity:1;pointer-events:auto}.drawer{background:var(--paper);z-index:1101;width:min(440px,100%);padding:20px 22px 28px;transition:transform .25s;position:absolute;top:0;bottom:0;right:0;overflow:auto;transform:translate(105%);box-shadow:-10px 0 30px #00000026}.drawer.open{transform:none}.close{background:var(--concrete);z-index:2;border:0;border-radius:50%;place-items:center;width:36px;height:36px;font-size:20px;line-height:1;display:grid;position:absolute;top:12px;right:12px}.d-photo{aspect-ratio:4/3;background:repeating-linear-gradient(135deg,#eef0ec 0 8px,#e5e8e3 8px 16px);border-radius:4px;place-items:center;margin-top:30px;display:grid;overflow:hidden}.d-photo svg{width:38%}.d-photo img{object-fit:cover;width:100%;height:100%}.d-tags{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.d-title{font-family:var(--font-hand);margin:8px 0 14px;font-size:30px;line-height:1.25}.d-tools{flex-wrap:wrap;align-items:center;gap:6px;margin:-4px 0 14px;display:flex}.tool{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;align-items:center;gap:5px;padding:4px 12px;font-size:13.5px;display:inline-flex}.tool svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.tool.on{border-color:var(--stool);color:var(--stool)}.tool.on svg{fill:var(--stool)}.d-facts{grid-template-columns:auto 1fr;gap:6px 16px;margin:0;font-size:14px;display:grid}.d-facts dt{color:var(--ink-soft)}.d-facts dd{margin:0}.d-note{background:var(--concrete);border-radius:8px;margin:14px 0 0;padding:10px 12px;font-size:14.5px}.d-impact{color:var(--green);flex-wrap:wrap;align-items:center;gap:6px;margin:16px 0 0;font-size:14px;font-weight:500;display:flex;position:relative}.d-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:20px;display:grid}.d-report{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;font-size:14px;display:flex}.d-taken{font-family:var(--font-hand);color:var(--ink-soft);margin:20px 0 0;font-size:20px}.d-disclaimer{border-top:1px dashed var(--line);margin-top:22px;padding-top:14px}.tagphoto{background:var(--concrete);border-radius:10px;align-items:center;gap:12px;margin-top:14px;padding:10px 12px;font-size:13.5px;display:flex}.tagphoto .ph{background:var(--paper);border:1px solid var(--line);border-radius:6px;flex:none;place-items:center;width:72px;height:54px;display:grid}.tagphoto .ph svg{width:40px;height:30px}.tagphoto b{font-size:14px;display:block}.tagphoto span{color:var(--ink-soft)}.legal{color:var(--ink-soft);background:var(--concrete);border-radius:8px;margin-top:12px;padding:10px 12px;font-size:12.5px}.legal b{color:var(--ink);margin-bottom:2px;display:block}.legal p{margin:0}.legal p+p{margin-top:8px}.modal{z-index:1200;background:#2a2c2e73;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.modal-card{background:var(--paper);border-radius:18px;width:min(460px,100%);max-height:100%;padding:26px 24px 24px;position:relative;overflow:auto}.modal-title{font-family:var(--font-hand);margin:0 32px 4px 0;font-size:28px;line-height:1.2}.modal-lede{color:var(--ink-soft);margin:0;font-size:14px}.steps{counter-reset:s;gap:8px;margin:18px 0 20px;padding:0;list-style:none;display:flex}.steps li{color:var(--ink-soft);border-top:3px solid var(--line);counter-increment:s;flex:1;padding-top:6px;font-size:13px}.steps li:before{content:counter(s) ". "}.steps li.on{color:var(--ink);border-color:var(--asphalt);font-weight:700}.steps li.done{border-color:var(--green);color:var(--green)}.step{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:8px;min-width:0;display:flex}.label{font-size:14px;font-weight:700}.input{border:1.5px solid var(--line);background:var(--paper);border-radius:10px;width:100%;min-width:0;padding:10px 12px}.input:hover{border-color:var(--ink-soft)}.input:disabled{opacity:.6}.inline{gap:8px;display:flex}.inline .btn{flex:none}.btn.wide{width:100%}.btn:disabled{opacity:.55;cursor:default}.acct{grid-template-columns:1fr 1fr;gap:10px;display:grid}.typeopt{border:1.5px solid var(--line);background:var(--paper);text-align:left;border-radius:12px;padding:12px 14px}.typeopt b{font-family:var(--font-hand);font-size:19px;line-height:1.3;display:block}.typeopt span{color:var(--ink-soft);margin-top:2px;font-size:13px;line-height:1.45;display:block}.typeopt[aria-pressed=true]{border-color:var(--asphalt);box-shadow:inset 0 0 0 1px var(--asphalt)}.toggle{align-items:flex-start;gap:10px;font-size:14px;display:flex}.toggle input{width:18px;height:18px;accent-color:var(--asphalt);flex:none;margin-top:3px}.form-error{color:var(--stool);margin:0;font-size:13.5px;font-weight:600}.who{text-overflow:ellipsis;white-space:nowrap;max-width:10em;font-weight:700;text-decoration:none;overflow:hidden}.status-line{color:var(--ink-soft);background:var(--paper);border-bottom:1px solid var(--line);margin:0;padding:8px 16px;font-size:13.5px}.status-line.error{color:var(--stool)}.me-card{background:var(--paper);border-radius:var(--radius-card);box-shadow:var(--shadow-note);justify-content:space-between;align-items:center;gap:12px;padding:18px 20px;display:flex}.me-name{font-family:var(--font-hand);margin:0;font-size:26px;line-height:1.2}.toast{background:var(--asphalt);color:#fff;opacity:0;pointer-events:none;z-index:1400;text-align:center;border-radius:10px;width:max-content;max-width:calc(100% - 32px);padding:10px 16px;font-size:14px;transition:opacity .2s,transform .2s;position:absolute;bottom:24px;left:50%;transform:translate(-50%,16px)}.toast.show{opacity:1;transform:translate(-50%)}.tabbar{height:var(--tabbar-h);background:var(--paper);border-top:1px solid var(--line);flex:none;justify-content:space-around;align-items:stretch;padding:0 6px;display:none}.tab{color:var(--ink-soft);background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:0;font-size:11.5px;text-decoration:none;display:flex}.tab svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:24px;height:24px}.tab[aria-current=page]{color:var(--ink);font-weight:700}.tab-add .plus{background:var(--stool);color:#fff;border-radius:50%;place-items:center;width:50px;height:50px;margin-top:-20px;display:grid;box-shadow:0 6px 14px -4px #d23a2e99}.tab-add .plus svg{stroke-width:2.4px}.page-title{font-family:var(--font-hand);margin:0 0 4px;font-size:36px;line-height:1.2}.page-lede{color:var(--ink-soft);max-width:34em;margin:0 0 26px}.placeholder{background:var(--paper);border:1.5px dashed var(--line);border-radius:var(--radius-card);text-align:center;padding:28px 20px}.placeholder p{max-width:28em;color:var(--ink-soft);margin:0 auto 16px}@container app (width<=940px){.hero{grid-template-columns:1fr;gap:28px}.notes-row{grid-template-columns:repeat(2,minmax(0,1fr))}.map-layout{grid-template-columns:320px minmax(0,1fr)}}@container app (width<=640px){.topbar{gap:10px;height:56px;padding:0 16px}.logo-sub,.topnav{display:none}.tabbar{display:flex}.wrap{padding:22px 16px 36px}.hero-lead{font-size:19px}.hero-title{font-size:34px}.zheng{width:50px;height:50px}.hero-actions .btn{flex:1}.section-head{margin:36px 0 14px}.section-head h2{font-size:24px}.notes-row{scroll-snap-type:x mandatory;gap:18px;margin:0 -16px;padding:14px 16px 12px;display:flex;overflow-x:auto}.notes-row .note{scroll-snap-align:start;flex:0 0 62%}.band{flex-direction:column;align-items:flex-start;padding:20px}.map-view{height:auto;position:static;overflow:visible}.map-layout{flex-direction:column;height:auto;display:flex}.map-box{flex:none;order:-1;height:300px}.map-side{border-right:0}.list{overflow:visible}.page-title{font-size:30px}.drawer{border-radius:22px 22px 0 0;width:100%;max-height:88%;top:auto;left:0;right:0;transform:translateY(105%)}.drawer.open{transform:none}.d-photo{aspect-ratio:16/9;margin-top:34px}.d-photo svg{width:28%}.d-title{margin:6px 0 10px;font-size:26px}.toast{bottom:84px}.acct{grid-template-columns:1fr}.modal{padding:10px}.modal-card{padding:22px 18px 20px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.zheng path.new{stroke-dashoffset:0}}
