:root{--color-bg:#fafafa;--color-surface:#fff;--color-surface-2:#f4f5f7;--color-text:#171a1c;--color-text-muted:#6b7280;--color-border:#e5e7eb;--color-primary:#171a1c;--color-primary-contrast:#fff;--color-accent:#2563eb;--color-success:#16a34a;--color-warning:#d97706;--color-danger:#dc2626;--color-route:#2563eb;--color-route-motorway:#d97706;--radius:12px;--shadow:0 1px 3px #0000000f;--shadow-lg:0 8px 30px #0000001a}[data-theme=dark]{--color-bg:#0b0d0f;--color-surface:#141719;--color-surface-2:#1d2124;--color-text:#f2f4f5;--color-text-muted:#9aa3ab;--color-border:#262b2f;--color-primary:#f2f4f5;--color-primary-contrast:#0b0d0f;--color-route:#60a5fa;--color-route-motorway:#fbbf24;--shadow:0 1px 3px #0006;--shadow-lg:0 8px 30px #00000080}*{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;height:100%}body{color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:15px}.app-shell{flex-direction:column;display:flex;position:fixed;inset:0}.topbar{z-index:20;padding:calc(env(safe-area-inset-top,0px) + 12px) 16px 10px;pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.topbar>*{pointer-events:auto}.brand{letter-spacing:-.02em;background:var(--color-surface);box-shadow:var(--shadow);border-radius:999px;padding:8px 14px;font-size:17px;font-weight:600}.brand span{color:var(--color-text-muted);font-weight:500}.icon-btn{background:var(--color-surface);width:44px;height:44px;color:var(--color-text);box-shadow:var(--shadow);cursor:pointer;border:none;border-radius:999px;place-items:center;transition:background .15s;display:grid}.icon-btn:active{background:var(--color-surface-2)}.maplibregl-popup .maplibregl-popup-content{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-lg);border-radius:10px;padding:9px 13px;font-family:inherit;font-size:13.5px;font-weight:500}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{border-top-color:var(--color-surface)}.maplibregl-popup-anchor-top .maplibregl-popup-tip{border-bottom-color:var(--color-surface)}.maplibregl-popup-anchor-left .maplibregl-popup-tip{border-right-color:var(--color-surface)}.maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:var(--color-surface)}.locate-btn{right:14px;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:25;border:1px solid var(--color-border);background:var(--color-surface);width:52px;height:52px;color:var(--color-accent);box-shadow:var(--shadow-lg);cursor:pointer;border-radius:999px;place-items:center;display:grid;position:absolute}.maplibregl-map .maplibregl-ctrl-top-right{top:calc(env(safe-area-inset-top,0px) + 62px)}.sheet{z-index:30;background:var(--color-surface);box-shadow:var(--shadow-lg);padding:10px 20px calc(env(safe-area-inset-bottom,0px) + 18px);border-radius:20px 20px 0 0;max-height:72dvh;transition:transform .2s;position:absolute;bottom:0;left:0;right:0;overflow-y:auto}.sheet-handle{background:var(--color-border);border-radius:999px;width:36px;height:4px;margin:2px auto 12px}.sheet h2{letter-spacing:-.02em;margin-bottom:14px;font-size:24px;font-weight:600}.field-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:16px 0 8px;font-size:12px;font-weight:500;display:block}.chip-row{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.chip-row:first-child{margin-top:0}.chip{border:1px solid var(--color-border);background:var(--color-surface);min-height:44px;color:var(--color-text);cursor:pointer;border-radius:999px;padding:0 16px;font-size:14px;font-weight:500;transition:all .15s}.chip.selected{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.time-row{align-items:center;gap:10px;display:flex}.time-row input[type=time]{min-height:46px;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;flex:1;padding:0 12px;font-family:inherit;font-size:16px}.time-row input[type=time]:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent);outline:none}input[type=number].inline-number{width:110px;min-height:44px;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:0 12px;font-family:inherit;font-size:16px}input[type=number].inline-number:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent);outline:none}.duration-note{color:var(--color-text-muted);font-variant-numeric:tabular-nums;margin-top:8px;font-size:14px}.duration-note strong{color:var(--color-text);font-weight:600}.btn-primary{border-radius:var(--radius);background:var(--color-primary);width:100%;min-height:52px;color:var(--color-primary-contrast);cursor:pointer;border:none;margin-top:22px;font-family:inherit;font-size:16px;font-weight:600;transition:opacity .15s}.btn-primary:disabled{opacity:.45;cursor:default}.btn-ghost{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;min-height:46px;color:var(--color-text);cursor:pointer;background:0 0;margin-top:10px;font-family:inherit;font-size:15px;font-weight:500}.hint{color:var(--color-text-muted);margin-top:8px;font-size:13px}.hint-accent{color:var(--color-accent);font-weight:500}.hint.warn{color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 8%, var(--color-surface));border-radius:10px;padding:10px 12px}.loading-state{text-align:center;padding:26px 0 10px}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:28px;height:28px;margin:0 auto 16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-msg{color:var(--color-text-muted);min-height:22px;font-size:15px}.error-card{background:color-mix(in srgb, var(--color-danger) 8%, var(--color-surface));border:1px solid color-mix(in srgb, var(--color-danger) 25%, transparent);border-radius:var(--radius);margin-top:14px;padding:14px 16px;font-size:14px}.error-suggestions{color:var(--color-text-muted);margin:10px 0 0 18px;font-size:13.5px}.error-suggestions li{margin-top:4px}.summary-title{letter-spacing:-.02em;font-size:22px;font-weight:600}.score-pill{background:var(--color-surface-2);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:13px;font-weight:600;display:inline-flex}.stats-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;display:grid}.stat{background:var(--color-surface-2);border-radius:10px;padding:12px}.stat .value{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:19px;font-weight:600}.stat .label{color:var(--color-text-muted);margin-top:3px;font-size:11.5px}.explain{color:var(--color-text);background:var(--color-surface-2);border-radius:10px;margin-top:16px;padding:12px 14px;font-size:14.5px;line-height:1.5}.warn{color:var(--color-warning);font-weight:500}.journey{border:1px solid var(--color-border);border-radius:var(--radius);margin-top:14px;padding:4px 14px}.journey-leg{border-bottom:1px solid var(--color-border);padding:10px 0}.journey-leg:last-of-type{border-bottom:none}.journey-leg-head{align-items:center;gap:10px;margin-bottom:6px;display:flex}.journey-num{background:var(--color-primary);width:22px;height:22px;color:var(--color-primary-contrast);border-radius:50%;flex-shrink:0;place-items:center;font-size:12px;font-weight:700;display:grid}.journey-title{flex:1;font-size:14.5px;font-weight:600}.journey-stats{font-variant-numeric:tabular-nums;color:var(--color-text-muted);font-size:14px}.journey-total{border-top:1px solid var(--color-border);color:var(--color-text-muted);padding:10px 0;font-size:14px}.journey-total strong{color:var(--color-text);font-variant-numeric:tabular-nums}.explain.negotiation{border-left:3px solid var(--color-accent);margin-top:8px}.action-row{grid-template-columns:1fr 1fr;gap:10px;margin-top:18px;display:grid}.link-btn{place-items:center;text-decoration:none;display:grid}.warn-block{border-left:3px solid var(--color-warning)}.road-list{flex-direction:column;display:flex}.road-row{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:10px;padding:10px 0;display:flex}.road-row:last-child{border-bottom:none}.road-name{font-size:14.5px;font-weight:600}.road-meta{color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:12.5px}.road-rating{flex-shrink:0;gap:6px;display:flex}.chip.small{min-height:36px;padding:0 10px;font-size:12.5px}.search-row{gap:8px;display:flex}.search-input{min-height:44px;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;flex:1;padding:0 12px;font-family:inherit;font-size:15px}.search-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent);outline:none}.search-results{border:1px solid var(--color-border);border-radius:10px;margin-top:6px;overflow:hidden}.search-result{text-align:left;background:var(--color-surface);border:none;border-bottom:1px solid var(--color-border);cursor:pointer;width:100%;color:var(--color-text);padding:10px 12px;font-family:inherit;font-size:14px;display:block}.search-result:last-child{border-bottom:none}.search-result:hover{background:var(--color-surface-2)}.weather-strip{margin-top:14px}.weather-row{font-variant-numeric:tabular-nums;border-bottom:1px solid var(--color-border);align-items:center;gap:10px;padding:7px 0;font-size:13.5px;display:flex}.weather-row:last-child{border-bottom:none}.weather-time{min-width:44px;font-weight:600}.weather-km{color:var(--color-text-muted);min-width:56px}.weather-rain-high{color:var(--color-warning);font-weight:600}.ride-card{border:1px solid var(--color-border);border-radius:var(--radius);margin-top:10px;padding:12px 14px}.ride-main{text-align:left;cursor:pointer;width:100%;color:var(--color-text);background:0 0;border:none;padding:0;font-family:inherit;display:block}.ride-actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.fav-star{color:var(--color-warning)}.tier-gold{color:var(--color-warning);letter-spacing:.05em;font-size:11px;font-weight:700}.intel-notes{color:var(--color-text-muted);margin-top:6px;font-size:13px;line-height:1.45}.sheet.collapsed{transform:translateY(calc(100% - 64px - env(safe-area-inset-bottom,0px)));overflow:hidden}.sheet-handle-btn{cursor:pointer;background:0 0;border:none;width:100%;min-height:48px;padding:2px 0 10px;display:block}.sheet-handle-btn .sheet-handle{margin:2px auto 4px}.sheet-handle-label{text-align:center;color:var(--color-text-muted);letter-spacing:.02em;font-size:12px;font-weight:500;display:block}.nav-screen{z-index:100;color:#f2f4f5;padding:calc(env(safe-area-inset-top,0px) + 20px) 24px calc(env(safe-area-inset-bottom,0px) + 20px);text-align:center;background:#0b0d0f;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:fixed;inset:0}.nav-screen.off-route{background:#451a03}.nav-back{top:calc(env(safe-area-inset-top,0px) + 14px);z-index:10;color:#f2f4f5;cursor:pointer;background:#1d2124e6;border:1px solid #374151;border-radius:999px;place-items:center;width:48px;height:48px;display:grid;position:absolute;left:14px}.nav-arrow{color:#60a5fa;width:min(46vw,240px);height:min(46vw,240px);transition:transform .3s}.off-route .nav-arrow{color:#fbbf24}.nav-dist{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:clamp(44px,12vw,72px);font-weight:700;line-height:1}.nav-text{color:#cbd5e1;max-width:30ch;min-height:2.6em;font-size:clamp(18px,5vw,26px);font-weight:500}.nav-footer{color:#9aa3ab;font-variant-numeric:tabular-nums;gap:24px;font-size:17px;display:flex}.nav-exit{color:#f2f4f5;cursor:pointer;background:0 0;border:1px solid #374151;border-radius:999px;min-height:52px;margin-top:18px;padding:0 34px;font-family:inherit;font-size:16px;font-weight:600}.nav-exit.accent{color:#451a03;background:#fbbf24;border-color:#fbbf24}.nav-screen.with-map{justify-content:flex-end}.nav-map{position:absolute;inset:0}.nav-content{z-index:2;flex-direction:column;align-items:center;gap:8px;width:100%;display:flex;position:relative}.with-map .nav-content{background:linear-gradient(#0000,#0b0d0feb 30%);padding-top:40px}.nav-road{color:#f2f4f5;font-weight:700}.nav-second{color:#9aa3ab;font-variant-numeric:tabular-nums;font-size:17px}.nav-next-stop{color:#cbd5e1;font-variant-numeric:tabular-nums;background:#1d2124d9;border-radius:999px;align-items:center;margin-top:4px;padding:8px 16px;font-size:15px;display:flex}.nav-progress{background:#1d2124;border-radius:999px;width:min(70vw,340px);height:5px;margin-top:8px;overflow:hidden}.nav-progress-fill{background:#60a5fa;height:100%;transition:width 1s linear}.off-route .nav-progress-fill{background:#fbbf24}.nav-footer.as-button{color:#9aa3ab;cursor:pointer;background:0 0;border:none;min-height:44px;font-family:inherit}.nav-controls{gap:10px;margin-top:10px;padding-bottom:4px;display:flex}.nav-btn{color:#f2f4f5;cursor:pointer;background:#1d2124d9;border:1px solid #374151;border-radius:14px;min-width:84px;min-height:54px;padding:0 14px;font-family:inherit;font-size:15px;font-weight:600}.nav-btn.on{color:#60a5fa;border-color:#60a5fa}.nav-btn{touch-action:manipulation;-webkit-user-select:none;user-select:none}.nav-hold{position:relative;overflow:hidden}.nav-hold-fill{transform-origin:0;background:#dc2626;position:absolute;inset:0;transform:scaleX(0)}.nav-hold.holding .nav-hold-fill{transition:transform 1s linear;transform:scaleX(1)}.nav-hold-label{flex-direction:column;align-items:center;line-height:1.15;display:flex;position:relative}.nav-hold-label small{color:#9aa3ab;font-size:10.5px;font-weight:400}.nav-hold.holding .nav-hold-label small{color:#fecaca}.nav-pos-dot{background:#60a5fa;border:3px solid #fff;border-radius:50%;width:18px;height:18px;box-shadow:0 0 0 3px #60a5fa66}.nav-finish-title{letter-spacing:-.02em;font-size:clamp(28px,7vw,40px);font-weight:700}.nav-finish-stats{color:#cbd5e1;font-variant-numeric:tabular-nums;gap:18px;font-size:18px;display:flex}.nav-rate{width:min(92vw,480px);margin-top:14px}.nav-rate-title{color:#cbd5e1;margin-bottom:10px;font-size:17px}.nav-rate-row{border-bottom:1px solid #262b2f;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:14.5px;display:flex}.flag-legend{left:12px;top:calc(64px + env(safe-area-inset-top));border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow);z-index:25;flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute}.flag-item{color:var(--color-text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:4px 8px;font-size:12px;display:flex}.flag-item.active{border-color:var(--color-accent);background:var(--color-surface-2);font-weight:600}.flag-item:disabled{opacity:.35;cursor:default}.day-board{border-radius:var(--radius);background:var(--color-surface-2);margin-top:12px;padding:12px 14px}.day-row{align-items:baseline;gap:10px;padding:5px 0;font-size:14px;display:flex}.day-row+.day-row{border-top:1px solid var(--color-border)}.day-row.total{margin-top:2px;padding-top:8px;font-size:15px}.day-num{background:var(--color-primary);width:20px;height:20px;color:var(--color-primary-contrast);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.day-what{color:var(--color-text);flex:1}.day-figs{color:var(--color-text-muted);text-align:right;font-feature-settings:"tnum"}.day-row.total .day-figs strong{color:var(--color-text)}.day-note{color:var(--color-text-muted);margin-top:6px;font-size:12px}.nav-zoom{z-index:30;flex-direction:column;gap:8px;display:flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.nav-zoom-btn{color:#f2f4f5;cursor:pointer;background:#141719d1;border:none;border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;font-size:26px;font-weight:600;display:flex}.nav-zoom-btn.recenter{background:#2563eb}.nav-limit{top:calc(14px + env(safe-area-inset-top));color:#171a1c;z-index:31;font-feature-settings:"tnum";background:#fff;border:6px solid #dc2626;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;font-size:20px;font-weight:700;display:flex;position:absolute;right:14px}.edit-bar{left:50%;bottom:calc(72px + env(safe-area-inset-bottom));border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-lg);color:var(--color-text);z-index:40;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;max-width:calc(100vw - 24px);padding:10px 14px;font-size:13px;display:flex;position:fixed;transform:translate(-50%)}.chip:disabled{opacity:.4;cursor:default}.afinar-row{align-items:center;gap:10px;margin-bottom:6px;display:flex}.afinar-label{letter-spacing:.04em;text-transform:uppercase;width:86px;color:var(--color-text-muted);flex-shrink:0;font-size:11px}.afinar-row .chip-row{flex-wrap:wrap;margin:0}.time-box{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-2);margin-top:12px;padding:12px 14px}.time-box.tight{border-color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 8%, var(--color-surface-2))}.time-box-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.time-box-title{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:11px;font-weight:600}.time-box.tight .time-box-title{color:var(--color-warning)}.time-box-note{color:var(--color-text-muted);margin:6px 0 8px;font-size:13px;line-height:1.45}.time-box .chip-row{flex-wrap:wrap;margin:0}.time-inputs{flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:10px;display:flex}.time-inputs label{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);flex-direction:column;gap:3px;font-size:11px;font-weight:600;display:flex}.time-inputs input[type=time]{border:1px solid var(--color-border);background:var(--color-surface);min-height:40px;color:var(--color-text);border-radius:10px;padding:0 10px;font-family:inherit;font-size:15px}.time-arrow{color:var(--color-text-muted);padding-bottom:10px}.trip-box{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface-2);margin-bottom:16px;padding:12px 14px 14px}.trip-box-title{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:10px;font-size:11px;font-weight:600;display:block}.trip-box .field-label:first-of-type{margin-top:0}.trip-box .search-input{background:var(--color-surface)}.reset-confirm{border:1px solid var(--color-warning);border-radius:var(--radius);background:color-mix(in srgb, var(--color-warning) 10%, var(--color-surface));margin:4px 0 12px;padding:12px 14px}.reset-confirm p{margin-bottom:10px;font-size:13px;line-height:1.45}.chip.strong{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.chip.strong:disabled{opacity:.4;cursor:default}.poi-loading-banner{border-radius:var(--radius);background:var(--color-surface-2);color:var(--color-text-muted);align-items:center;gap:10px;margin-top:12px;padding:10px 14px;font-size:13px;display:flex}.poi-loading-dot{background:var(--color-accent);border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:1.1s ease-in-out infinite poi-pulse}@keyframes poi-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}.icon-btn.active{color:var(--color-accent);background:var(--color-surface-2)}.nav-stop-cats{justify-content:center;gap:8px;margin:6px 0;display:flex}.nav-stop-list{flex-direction:column;gap:4px;max-height:180px;margin:4px 12px;display:flex;overflow-y:auto}.nav-stop-row{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font:inherit;text-align:left;cursor:pointer;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.nav-stop-row.muted{color:var(--color-text-muted);background:0 0;border:none}.nav-stop-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.nav-stop-eta{color:var(--color-text-muted);white-space:nowrap;font-size:12px}.road-row.selectable{border-radius:var(--radius);font:inherit;color:inherit;cursor:pointer;background:0 0;border:1px solid #0000;padding:10px 12px;transition:background .15s,border-color .15s}.road-row.selectable:hover{background:var(--color-surface-2)}.road-row.selectable.selected{border-color:var(--color-accent);background:var(--color-surface-2)}.biker-stay{color:var(--color-success);margin-top:2px}.link-chip{flex-shrink:0;align-items:center;text-decoration:none;display:inline-flex}.chip.small.dark{color:#f2f4f5;background:#1d2124;border-color:#374151}.chip.small.dark.selected{color:#0b0d0f;background:#f2f4f5;border-color:#f2f4f5}.poi-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;margin-right:7px;display:inline-block}@media (min-width:720px){.sheet{border-radius:16px;width:400px;max-height:calc(100dvh - 110px);bottom:20px;left:20px;right:auto}}@media (orientation:landscape) and (max-height:560px){.nav-screen.with-map .nav-content{background:#0b0d0feb;flex-direction:column;justify-content:center;width:34vw;padding:10px 14px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow-y:auto}.nav-screen.with-map .nav-dist{font-size:46px;line-height:1}.nav-screen.with-map .nav-instr{font-size:20px}.nav-screen.with-map .nav-road{font-size:22px}.nav-screen.with-map .nav-stop-list,.nav-screen.with-map .nav-stop-cats{display:none}.nav-zoom{right:calc(34vw + 12px)}.nav-limit{top:10px;right:calc(34vw + 12px)}}.carplay-opt{border:1px solid var(--color-border);border-radius:var(--radius);margin-top:10px;padding:12px 14px}.carplay-steps{color:var(--color-text-muted);margin:10px 0 0 18px;font-size:13px;line-height:1.6}.carplay-steps strong{color:var(--color-text)}
