:root{--brand: #1f6feb;--brand-dark: #1a5fd0;--bg: #f4f6f9;--card: #ffffff;--ink: #1b2430;--muted: #6b7785;--line: #e3e8ef;--ok: #128a3b;--ok-bg: #e7f6ec;--err: #c02626;--err-bg: #fdeaea;--warn: #8a5a00}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:#d7dde6;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}#root{max-width:480px;margin:0 auto;background:var(--bg);box-shadow:0 0 24px #00000014;display:flex;flex-direction:column;overflow:hidden}button{font-family:inherit;cursor:pointer}.center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}.spinner{width:38px;height:38px;border:4px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login{flex:1;display:flex;align-items:center;justify-content:center;padding:28px}.login-card{width:100%;display:flex;flex-direction:column}.logo{font-size:34px;font-weight:800;color:var(--brand);text-align:center}.subtitle{font-size:15px;color:var(--muted);text-align:center;margin:4px 0 28px}.input{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:13px 14px;font-size:16px;color:var(--ink);margin-bottom:12px;outline:none}.input:focus{border-color:var(--brand)}.error{color:var(--err);margin-bottom:12px;font-size:14px}.btn{background:var(--brand);color:#fff;border:none;border-radius:10px;padding:15px;font-size:16px;font-weight:700;margin-top:6px}.btn:disabled{opacity:.6}.btn:active{background:var(--brand-dark)}.btn.small{padding:11px 22px;border-radius:9px}.btn.start{width:100%;border-radius:11px}.screen{flex:1;display:flex;flex-direction:column;min-height:0}.header{display:flex;align-items:center;gap:4px;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));background:var(--brand);color:#fff}.header-text{flex:1;min-width:0}.header-title{font-size:17px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-sub{font-size:12px;color:#ffffffd9;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-btn{background:transparent;border:none;color:#fff;font-size:15px;font-weight:600;padding:6px 10px}.error-bar{color:var(--err);background:var(--err-bg);padding:10px 12px;font-size:13px}.empty-title{font-size:18px;font-weight:700;margin-bottom:6px}.empty-sub{font-size:14px;color:var(--muted);margin-bottom:18px}.map{height:260px;width:100%}.map-loading{display:flex;align-items:center;justify-content:center;background:var(--line)}.map-pin{min-width:26px;height:26px;padding:0 6px;border-radius:13px;border:2px solid #fff;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:12px;box-shadow:0 1px 3px #0000004d}.pin-start{background:var(--ok)}.pin-done{background:var(--muted)}.pin-normal{background:var(--err)}.summary{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--line)}.summary-text{color:var(--muted);font-size:13px}.pill{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;background:#e8f0fe;color:var(--brand)}.pill-done{background:var(--ok-bg);color:var(--ok)}.pill-in_progress{background:#fff4d6;color:var(--warn)}.stop-list{flex:1;list-style:none;margin:0;padding:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.stop-row{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--card);border-bottom:1px solid var(--line)}.stop-row[aria-disabled=true]{opacity:.5}.badge{width:30px;height:30px;border-radius:15px;background:var(--brand);color:#fff;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.badge-done{background:var(--ok)}.stop-main{flex:1;min-width:0}.stop-name{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stop-name.done{text-decoration:line-through;color:var(--muted)}.stop-addr{font-size:13px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.check{width:26px;height:26px;border-radius:13px;border:2px solid var(--line);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:14px;flex-shrink:0}.check-done{background:var(--ok);border-color:var(--ok)}.footer{padding:10px 16px;padding-bottom:calc(10px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}.btn.locate{width:100%;background:var(--card);color:var(--brand);border:1.5px solid var(--brand);margin-bottom:8px}.btn.locate:active{background:var(--bg)}.btn.ghost{background:var(--card);color:var(--muted);border:1.5px solid var(--line)}.proposal{margin:0 16px 10px;padding:12px 14px;background:var(--card);border:1.5px solid var(--brand);border-radius:12px}.proposal-text{font-size:14px;line-height:1.45}.proposal-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.proposal-actions .btn{flex:1;margin-top:0;min-width:120px}.loc-field{margin-top:10px}.loc-label{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:4px}.loc-row{display:flex;gap:6px;align-items:stretch}.loc-input{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:var(--card);color:var(--ink)}.loc-input:focus{outline:none;border-color:var(--brand)}.loc-row .btn{margin-top:0;white-space:nowrap}.proposal-hint{margin-top:10px;font-size:13px;color:var(--muted)}
