:root{--red:#e1251b;--red-dark:#b81c14;--red-tint:#fdeceb;--ink:#111;--ink-2:#4a4a4a;--ink-3:#6b6b6b;--line:#111;--line-soft:#d9d9d9;--bg:#fff;--bg-2:#f5f5f5;--ok:#111;--fs-xs:15px;--fs-sm:17px;--fs-md:19px;--fs-lg:22px;--fs-xl:26px;--fs-title:26px;--radius-btn:14px;--gutter:18px;--nav-h:76px;--top-h:64px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;margin:0}body{font-size:var(--fs-md);overscroll-behavior-y:none;text-wrap:pretty;line-height:1.45}button,.btn,h1,h2,h3{text-wrap:balance}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:not-allowed}a{color:inherit}:focus-visible{outline:3px solid var(--red);outline-offset:2px}.shell{background:var(--bg-2);justify-content:center;height:100%;display:flex}.app{background:var(--bg);flex-direction:column;width:100%;max-width:560px;height:100%;display:flex;position:relative;overflow:hidden}@media (width>=600px){.app{border-left:2px solid var(--line);border-right:2px solid var(--line)}}.topbar{height:calc(var(--top-h) + var(--safe-t));padding-top:var(--safe-t);border-bottom:2px solid var(--line);background:var(--bg);flex:none;grid-template-columns:64px 1fr 64px;align-items:center;display:grid}.topbar h1{text-align:center;font-size:var(--fs-title);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;grid-column:2;margin:0;font-weight:900;overflow:hidden}.topbar .tb-left,.topbar .tb-right{justify-content:center;align-items:center;height:100%;display:flex}.icon-btn{justify-content:center;align-items:center;width:56px;height:56px;display:inline-flex}.icon-btn:active{background:var(--bg-2)}.screen{-webkit-overflow-scrolling:touch;flex:1;min-height:0;overflow-y:auto}.screen.fixed{flex-direction:column;display:flex;overflow:hidden}.pad{padding:var(--gutter)}.stack>*+*{margin-top:14px}.bottomnav{border-top:2px solid var(--line);padding-bottom:var(--safe-b);background:var(--bg);flex:none;grid-template-columns:repeat(3,1fr);display:grid}.bottomnav a{height:var(--nav-h);font-size:var(--fs-sm);color:var(--ink-3);flex-direction:column;justify-content:center;align-items:center;gap:4px;font-weight:500;text-decoration:none;display:flex}.bottomnav a+a{border-left:1px solid var(--line-soft)}.bottomnav a.active{color:var(--red);font-weight:700}.bottomnav a{position:relative}.bottomnav a.active:before{content:"";background:var(--red);width:48px;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%)}.btn{border-radius:var(--radius-btn);width:100%;min-height:62px;font-size:var(--fs-lg);letter-spacing:.03em;justify-content:center;align-items:center;gap:10px;padding:12px 20px;font-weight:700;transition:transform 80ms,background .15s;display:flex}.btn:active:not(:disabled){transform:scale(.985)}.btn-primary{background:var(--red);color:#fff}.btn-primary:hover:not(:disabled){background:var(--red-dark)}.btn-primary:disabled{background:#e6b3b0}.btn-outline{border:2px solid var(--ink);background:var(--bg);color:var(--ink)}.btn-outline:hover:not(:disabled){background:var(--bg-2)}.btn-ghost{color:var(--ink-2);min-height:52px;font-size:var(--fs-md);font-weight:500}.btn-danger{border:2px solid var(--red);color:var(--red);background:var(--bg)}.btn-sm{width:auto;min-height:48px;font-size:var(--fs-md);border-radius:12px;padding:8px 16px}.btn-row{gap:12px;display:flex}.btn-row>*{flex:1}.tag{border:1.5px solid var(--red);color:var(--red);font-size:var(--fs-xs);align-items:center;padding:1px 8px;font-weight:700;line-height:1.5;display:inline-flex}.tag.solid{background:var(--red);color:#fff}.tag.ink{border-color:var(--ink);color:var(--ink)}.muted{color:var(--ink-3)}.small{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.bold{font-weight:700}.red{color:var(--red)}.center{text-align:center}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.grow{flex:1;min-width:0}.ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.divider{background:var(--line);border:0;height:2px;margin:0}.divider.soft{background:var(--line-soft);height:1px}.section-head{padding:14px var(--gutter) 10px;font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;font-weight:700;display:flex}.section-head .icon-btn{width:44px;height:44px;margin:-10px -10px -10px 0}.section-head .icon-btn:disabled{opacity:.5}.section-head .count{background:var(--red);color:#fff;min-width:28px;height:28px;font-size:var(--fs-sm);justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.place-bar{padding:8px var(--gutter);font-size:var(--fs-sm);color:var(--ink-2);border-bottom:1px solid var(--line);align-items:center;gap:8px;text-decoration:none;display:flex}.screen.fixed.home{overflow-y:auto}.home-top{border-bottom:2px solid var(--line);flex:none}.home-top .section-head{padding-top:10px;padding-bottom:8px}.home-list{overscroll-behavior-y:contain;flex:1;min-height:220px;position:relative;overflow-y:auto}@media (height<=740px){.home-top .btn-primary{min-height:54px}.home-top .sortbar button{height:46px}.carousel>.slide{padding-top:8px;padding-bottom:8px}}.carousel-wrap{position:relative}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;display:flex;overflow-x:auto}.carousel::-webkit-scrollbar{display:none}.carousel>.slide{scroll-snap-align:start;padding:14px var(--gutter);flex:0 0 100%}.carousel-nav{letter-spacing:0;align-items:center;gap:8px;margin:-6px 0;display:inline-flex}.carousel-nav .dots{font-size:var(--fs-sm);text-align:center;min-width:44px;font-weight:700}.carousel-nav button{border:1.5px solid var(--ink);justify-content:center;align-items:center;width:44px;height:38px;display:inline-flex}.carousel-nav button:disabled{border-color:var(--line-soft);color:var(--line-soft)}.active-card{border:2px solid var(--ink);padding:12px 14px}.active-card .store{font-size:var(--fs-lg);font-weight:900}.active-card .status{margin-top:6px;font-weight:700}.active-card .actions{gap:10px;margin-top:10px;display:flex}.active-card .actions>*{flex:1}.empty-active{padding:16px var(--gutter);color:var(--ink-3);font-size:var(--fs-sm)}.sortbar{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.sortbar button{height:52px;font-size:var(--fs-md);color:var(--ink-3);font-weight:500}.sortbar button+button{border-left:1px solid var(--line)}.sortbar button.on{color:var(--ink);box-shadow:inset 0 -4px 0 var(--red);font-weight:700}.need{padding:16px var(--gutter) 16px calc(var(--gutter) + 8px);border-bottom:1px solid var(--line-soft);gap:12px;display:flex;position:relative}.need .bookmark{color:var(--red);position:absolute;top:0;left:4px}.need .store{font-size:var(--fs-lg);font-weight:900;line-height:1.25}.need .meta{color:var(--ink-2);font-size:var(--fs-sm);margin-top:4px}.need .meta b{color:var(--ink)}.need .tags{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.need .note{font-size:var(--fs-sm);color:var(--ink);border-left:3px solid var(--red);margin-top:8px;padding-left:8px}.need .side{flex-direction:column;flex:none;justify-content:center;align-items:flex-end;gap:8px;display:flex}.need.mine{background:var(--bg-2)}.ptr{height:0;color:var(--ink-3);font-size:var(--fs-sm);justify-content:center;align-items:flex-end;padding-bottom:8px;font-weight:500;display:flex;overflow:hidden}.empty{padding:48px var(--gutter);text-align:center;color:var(--ink-3)}.empty .big{font-size:var(--fs-lg);color:var(--ink);margin-bottom:6px;font-weight:700}.list-row{width:100%;min-height:68px;padding:12px var(--gutter);border-bottom:1px solid var(--line-soft);text-align:left;align-items:center;gap:12px;display:flex}button.list-row:active,a.list-row:active{background:var(--bg-2)}.list-row .label{font-size:var(--fs-md);font-weight:500}.list-row .value{color:var(--ink-3);font-size:var(--fs-sm);text-align:right}.list-row.selected{background:var(--red-tint);box-shadow:inset 4px 0 0 var(--red)}.list-row a,a.list-row{text-decoration:none}.store-row .name{font-size:var(--fs-md);font-weight:700;line-height:1.3}.store-row .addr{font-size:var(--fs-sm);color:var(--ink-3);margin-top:2px}.store-row .dist{font-size:var(--fs-sm);flex:none;font-weight:700}.store-row .dist-inline{color:var(--ink);white-space:nowrap;font-weight:700}.field{display:block}.field>.lbl{font-size:var(--fs-sm);margin-bottom:6px;font-weight:700;display:block}.input{border:2px solid var(--ink);background:var(--bg);width:100%;min-height:58px;font-size:var(--fs-md);appearance:none;border-radius:0;padding:12px 14px}.input:focus{border-color:var(--red);outline:none}textarea.input{resize:vertical;min-height:110px}.hint{font-size:var(--fs-sm);color:var(--ink-3);margin-top:6px}.error{font-size:var(--fs-sm);color:var(--red);margin-top:6px;font-weight:700}.search-box{border-bottom:2px solid var(--line);display:flex}.search-box .input{border:0;min-height:60px}.search-box button{border-left:1px solid var(--line-soft);justify-content:center;align-items:center;width:60px;display:flex}.choice{border:2px solid var(--line-soft);text-align:left;width:100%;min-height:72px;font-size:var(--fs-lg);background:var(--bg);align-items:center;gap:14px;padding:14px 16px;font-weight:700;display:flex}.choice+.choice{margin-top:10px}.choice.on{border-color:var(--red);background:var(--red-tint)}.choice .box{border:2px solid var(--ink);flex:none;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.choice .box.round{border-radius:50%}.choice.on .box{border-color:var(--red);background:var(--red);color:#fff}.choice .desc{font-size:var(--fs-sm);color:var(--ink-2);margin-top:2px;font-weight:400;display:block}.steps{border-bottom:2px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.steps div{text-align:center;font-size:var(--fs-sm);color:var(--ink-3);border-bottom:5px solid #0000;padding:10px 6px;font-weight:700}.steps div+div{border-left:1px solid var(--line-soft)}.steps div.on{color:var(--ink);border-bottom-color:var(--red)}.steps div.done{color:var(--ink)}.steps .n{font-size:var(--fs-lg);font-weight:900;display:block}.footer-bar{padding:12px var(--gutter) calc(12px + var(--safe-b));border-top:2px solid var(--line);background:var(--bg);flex:none}.pin-box{border:2px solid var(--ink);text-align:center;padding:18px 10px}.pin{justify-content:center;gap:10px;margin:10px 0 6px;display:flex}.pin span{border:2px solid var(--red);width:64px;height:84px;color:var(--red);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;font-size:52px;font-weight:900;display:flex}.kv{border-top:1px solid var(--line);grid-template-columns:auto 1fr;display:grid}.kv>div{border-bottom:1px solid var(--line-soft);padding:14px 0}.kv>div:nth-child(odd){color:var(--ink-3);font-size:var(--fs-sm);padding-right:16px}.kv>div:nth-child(2n){text-align:right;font-weight:700}.eta-big{color:var(--red);font-size:34px;font-weight:900}.notice{border:2px solid var(--red);background:var(--red-tint);padding:14px;font-weight:700}.stars{justify-content:center;gap:6px;display:flex}.stars button{justify-content:center;align-items:center;width:56px;height:56px;display:flex}.stars-inline{align-items:center;gap:4px;display:inline-flex}.banners{top:calc(8px + var(--safe-t));z-index:50;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:absolute;left:10px;right:10px}.banner{pointer-events:auto;background:var(--ink);color:#fff;border-left:8px solid var(--red);text-align:left;align-items:center;gap:12px;width:100%;padding:14px;animation:.25s ease-out drop;display:flex;box-shadow:0 8px 24px #00000040}.banner .t{font-size:var(--fs-md);font-weight:700}.banner .s{font-size:var(--fs-xs);opacity:.8}@keyframes drop{0%{opacity:0;transform:translateY(-120%)}to{opacity:1;transform:none}}.toast{left:50%;bottom:calc(var(--nav-h) + 20px + var(--safe-b));z-index:60;background:var(--ink);color:#fff;max-width:calc(100% - 32px);font-size:var(--fs-md);text-align:center;padding:12px 18px;font-weight:500;position:absolute;transform:translate(-50%)}.offline-bar{background:var(--red);color:#fff;text-align:center;font-weight:700;font-size:var(--fs-sm);flex:none;padding:8px}.inapp-bar{background:var(--ink);color:#fff;padding:calc(10px + var(--safe-t)) 8px 12px var(--gutter);flex:none;align-items:flex-start;gap:8px;display:flex}.inapp-bar .small{color:#ddd;margin-top:2px}.inapp-btn{min-height:40px;color:var(--ink);background:#fff;gap:6px;text-decoration:none}.install-steps{font-size:var(--fs-md);margin:14px 0 0;padding-left:24px}.install-steps li+li{margin-top:10px}.inline-icon{vertical-align:-4px;color:var(--red)}.overlay{z-index:40;background:#00000073;justify-content:center;align-items:flex-end;animation:.15s ease-out fade;display:flex;position:absolute;inset:0}.overlay.middle{align-items:center;padding:20px}.sheet{background:var(--bg);border-top:4px solid var(--red);width:100%;max-height:92%;padding:20px var(--gutter) calc(20px + var(--safe-b));animation:.2s ease-out rise;overflow-y:auto}.dialog{background:var(--bg);border:2px solid var(--ink);width:100%;max-width:440px;padding:22px var(--gutter)}.sheet h2,.dialog h2{font-size:var(--fs-xl);text-align:center;margin:0 0 10px;font-weight:900}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:.4;transform:translateY(40px)}}.onboard{padding:calc(24px + var(--safe-t)) 24px calc(24px + var(--safe-b));flex-direction:column;flex:1;display:flex;overflow-y:auto}.onboard .hero{text-align:center;flex-direction:column;flex:1;justify-content:center;gap:14px;display:flex}.onboard .hero img{width:148px;height:148px;margin:0 auto}.onboard h1{margin:0;font-size:32px;font-weight:900}.onboard p{font-size:var(--fs-lg);color:var(--ink-2);white-space:pre-line;margin:0}.onboard .big-icon{border:3px solid var(--red);width:96px;height:96px;color:var(--red);justify-content:center;align-items:center;margin:0 auto;display:flex}.terms-points{font-size:var(--fs-md);color:var(--ink-2);margin:18px 0 8px;padding-left:22px}.terms-points li+li{margin-top:8px}.terms-full{border:2px solid var(--line);margin-top:8px}.terms-full summary{cursor:pointer;padding:12px 14px;font-weight:700}.terms-full .prose{border-top:1px solid var(--line);max-height:50vh;overflow-y:auto}.prose{padding:var(--gutter);font-size:var(--fs-md)}.prose h2{font-size:var(--fs-lg);border-bottom:1px solid var(--line);margin:22px 0 8px;padding-bottom:6px}.prose p,.prose li{color:var(--ink-2)}.prose .draft{border:2px dashed var(--red);color:var(--red);font-weight:700;font-size:var(--fs-sm);padding:10px 12px}.switch{border:2px solid var(--ink);background:var(--bg);flex:none;width:60px;height:34px;position:relative}.switch:after{content:"";background:var(--ink);width:24px;height:24px;transition:left .15s;position:absolute;top:3px;left:3px}.switch.on{background:var(--red);border-color:var(--red)}.switch.on:after{background:#fff;left:29px}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#nl-badge-frame{top:env(safe-area-inset-top,0px)!important;bottom:auto!important;left:0!important;right:auto!important}body.has-nl-badge{--safe-t:0px}body.has-nl-badge .shell{padding-top:calc(52px + env(safe-area-inset-top,0px));border-bottom:0}body.has-nl-badge .app{border-top:2px solid var(--line)}@media (width<=360px){.onboard p{font-size:17px}:root{--fs-md:18px;--fs-lg:20px;--fs-title:23px;--gutter:14px}.pin span{width:56px;height:76px;font-size:44px}}
