:root{--green:#176b52;--ink:#19392e;--muted:#76817b;--line:#e6ebe5;--paper:#fff;--soft:#f3f6f0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:#e8eee3}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,input:focus-visible,canvas:focus-visible,a:focus-visible{outline:3px solid #9fbd5d;outline-offset:3px}button{border:0;background:none;color:inherit}a{color:var(--green)}[hidden]{display:none!important}.app{height:100dvh;min-height:500px;position:relative}.map{position:absolute;inset:0}#map{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#map:active{cursor:grabbing}.map-note{position:absolute;left:480px;top:30px;font-size:10px;letter-spacing:3px;font-weight:700;color:#3b5947;background:#ffffffdf;padding:12px 18px;border-radius:99px;pointer-events:none}.panel{position:absolute;top:20px;left:20px;bottom:20px;width:400px;border-radius:22px;background:var(--paper);box-shadow:0 8px 40px #173a2422;overflow:auto;scrollbar-width:thin;display:flex;flex-direction:column}.brand{padding:24px 25px;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--line)}.brand-icon{background:var(--green);color:white;width:38px;height:38px;display:grid;place-items:center;border-radius:12px;font-size:28px}.brand b{font-size:19px;letter-spacing:-.7px}.brand b span{font-weight:400;color:var(--muted)}.brand small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.bike-icon{margin-left:auto;font-size:21px}.planner{padding:25px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--green);font-weight:800}h1{font-size:31px;letter-spacing:-1.1px;margin:10px 0 6px;font-weight:700}.intro{font-size:13px;color:var(--muted);margin:0 0 23px}.places{border:1px solid var(--line);border-radius:13px;position:relative;background:#fbfcfa;padding:0 12px}.place-row{display:flex;align-items:center;height:53px;gap:10px}.place-row:first-child{border-bottom:1px solid var(--line)}.place-row input{width:100%;min-width:0;background:none;border:0;outline:0;font-size:12px;padding:10px 0}.start-dot{width:10px;height:10px;border:2px solid var(--green);border-radius:50%;flex-shrink:0}.end-dot{width:10px;height:12px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--green);flex-shrink:0}.search-place{font-size:24px;padding:0 17px 0 3px}.swap{position:absolute;right:-10px;top:38px;width:30px;height:30px;background:white;border:1px solid var(--line);border-radius:50%;font-size:20px}.text-button{font-size:11px;color:var(--green);padding:12px 0}.profile-label{font-size:11px;font-weight:650;margin:11px 0}.profiles{display:flex;gap:8px;margin-bottom:18px}.profiles button{border:1px solid var(--line);border-radius:10px;flex:1;padding:12px 3px;font-size:22px}.profiles button span{display:block;font-size:10px;margin-top:5px}.profiles .selected{border-color:var(--green);background:#edf5ed;color:var(--green)}.primary{background:var(--green);color:white;border-radius:11px;padding:14px 17px;font-weight:650;font-size:12px;display:flex;justify-content:space-between;align-items:center;width:100%;gap:10px}.primary:hover{background:#125a44}.primary span{font-size:20px;line-height:16px}.status{font-size:11px;line-height:1.6;color:var(--muted);margin:12px 0 0}.status.error{color:#ae3f27}.results{border:1px solid var(--line);border-radius:10px;max-height:220px;overflow:auto;margin:0 0 10px}.results button{display:block;width:100%;text-align:left;padding:12px;font-size:12px;border-bottom:1px solid var(--line)}.results button:hover{background:var(--soft)}.results small{display:block;color:var(--muted);margin-top:5px}.welcome{margin:0 25px 25px;padding:24px;background:var(--soft);border-radius:15px}.leaf{display:grid;place-items:center;width:35px;height:35px;background:#dce9ce;color:var(--green);border-radius:50%;font-size:24px}.welcome h2{font-size:21px;letter-spacing:-.5px;margin:16px 0 8px}.welcome p{color:var(--muted);font-size:12px;line-height:1.7;margin-bottom:21px}.feature{display:flex;align-items:center;gap:13px;margin-top:17px}.feature>span{width:25px;font-size:23px;color:var(--green)}.feature b,.feature small{display:block}.feature b{font-size:11px;font-weight:600}.feature small{font-size:10px;color:var(--muted);margin-top:4px}.panel-footer{margin-top:auto;padding:17px 25px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);font-size:9px;color:var(--muted)}.panel-footer button{font-size:9px;padding:0}.map-controls{position:absolute;right:25px;bottom:65px;display:grid;gap:3px;background:white;border-radius:12px;padding:5px;box-shadow:0 3px 20px #173a2422}.map-controls button{width:40px;height:40px;font-size:25px}.map-controls button:hover{background:var(--soft);border-radius:9px}.attribution{position:absolute;right:0;bottom:0;background:#ffffffee;font-size:10px;padding:5px 10px}.scale{position:absolute;bottom:28px;right:28px;border:2px solid #294632;border-top:0;height:8px;min-width:60px;text-align:center;font-size:10px;line-height:0;padding-bottom:22px;text-shadow:0 0 4px white}.route-details{border-top:1px solid var(--line);padding:22px 25px}.section-heading{display:flex;align-items:center;justify-content:space-between}.section-heading h2{font-size:17px;margin:0}.badge{background:#edf5ed;color:var(--green);padding:5px 8px;border-radius:99px;font-size:9px}.stats{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px;margin:20px 0}.stats b{font-size:21px;letter-spacing:-.7px;display:block}.stats small{font-size:9px;color:var(--muted);display:block;margin-top:5px}.route-actions{display:flex;gap:9px}.route-actions>button:last-child{flex-shrink:0;border:1px solid var(--line);border-radius:10px;font-size:11px;padding:10px}.voice{font-size:11px;display:flex;gap:8px;align-items:center;margin:15px 0;color:var(--muted)}input[type=checkbox]{accent-color:var(--green)}h3{font-size:12px;margin:25px 0 12px}.directions{padding:0;list-style:none;margin:0}.directions li{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:12px;align-items:center}.directions li>span{font-size:22px;color:var(--green);width:25px;text-align:center}.directions small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.navigation{background:var(--green);color:white;border-radius:12px;padding:17px;font-size:15px}.navigation p{font-size:11px}.navigation button{color:white;border:1px solid #ffffff66;border-radius:8px;padding:8px;font-size:11px}dialog{border:0;border-radius:20px;max-width:480px;width:calc(100% - 30px);padding:30px;box-shadow:0 20px 100px #0003;color:var(--ink)}dialog::backdrop{background:#19392e70}dialog p{font-size:13px;line-height:1.7}dialog .close{float:right;font-size:25px}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden}@media(max-width:700px){.app{height:auto;min-height:100dvh;padding-top:46dvh}.map{position:fixed;bottom:auto;height:46dvh}.panel{position:relative;inset:auto;width:100%;border-radius:22px 22px 0 0;min-height:54dvh;overflow:visible;box-shadow:0 -5px 30px #173a2422}.brand{padding:18px 22px}.planner{padding:22px}.map-note{left:15px;top:15px;font-size:8px;padding:10px 13px;letter-spacing:2px}.map-controls{right:14px;bottom:40px}.map-controls button{width:32px;height:32px;font-size:21px}.welcome{margin:0 22px 22px}.route-details{padding:22px}.panel-footer{padding-bottom:max(20px,env(safe-area-inset-bottom))}.attribution{font-size:8px}.scale{right:75px;bottom:28px}}
.login-page{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 20% 20%,#dce9d6,transparent 60%),#f0f4eb}.login-card{max-width:430px;width:100%;padding:36px;background:white;border:1px solid #e6ebe5;border-radius:22px;box-shadow:0 20px 60px #173a2415}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:40px}.login-brand b{font-size:23px;letter-spacing:-.7px}.login-brand b span{color:var(--muted);font-weight:400}.login-card h1{font-size:29px}.login-card .intro{line-height:1.7;margin-bottom:27px}.login-card label{display:block;font-size:12px;font-weight:600;margin:17px 0 8px}.login-card input:not([type=hidden]){display:block;width:100%;padding:13px;border:1px solid var(--line);border-radius:10px;background:#fbfcfa;color:var(--ink);font-size:14px}.login-card .primary{margin-top:26px}.login-note{font-size:10px;color:var(--muted);text-align:center;margin:24px 0 0}.login-error{background:#fff0eb;color:#ae3f27;padding:12px;border-radius:9px;font-size:12px;line-height:1.6}@media(max-width:450px){.login-card{padding:27px}.login-card h1{font-size:26px}}