:root{--bg: #f2f2f7;--card: #ffffff;--text: #1c1c1e;--muted: #6b6b74;--line: rgb(60 60 67 / .13);--tint: #0069d9;--tint-solid: #0069d9;--good: #157f3c;--warn: #b25000;--danger: #c9302c;--shadow: 0 1px 2px rgb(16 24 40 / .04), 0 1px 3px rgb(16 24 40 / .06);--radius: 14px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #16161a;--card: #1f1f24;--text: #f2f2f7;--muted: #9a9aa2;--line: rgb(120 120 128 / .3);--tint: #2b90ff;--tint-solid: #0a6fd6;--good: #30d158;--warn: #ff9f0a;--danger: #ff453a;--shadow: none}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 -apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shell{max-width:1100px;margin:0 auto;padding:24px 16px 64px}.shell--centred{display:grid;place-content:center;gap:12px;min-height:80vh;text-align:center}.shell__head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.shell__actions{display:flex;gap:8px}h1{font-size:28px;margin:0}h2{font-size:16px;margin:0}.tabs{display:flex;gap:4px;margin:20px 0;flex-wrap:wrap}.tabs__tab{border:none;background:transparent;color:var(--muted);padding:8px 14px;border-radius:999px;cursor:pointer;font-size:15px;text-decoration:none;display:inline-block}.tabs__tab--on{background:color-mix(in srgb,var(--tint) 12%,transparent);color:var(--tint);font-weight:600}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:stretch}.card{background:var(--card);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);box-shadow:var(--shadow)}.card--wide{margin:16px 0}.card__head{display:flex;justify-content:space-between;align-items:center;gap:8px}.row{display:flex;justify-content:space-between;gap:12px;font-size:14px}.row__label{color:var(--muted)}.row__value{font-variant-numeric:tabular-nums}.row__value--good,.good{color:var(--good)}.row__value--warn,.warn{color:var(--warn)}.muted{color:var(--muted);font-size:13px;margin:4px 0 0}.error{color:#c0392b;font-size:14px}.headline{text-align:center}.headline--split{display:flex;justify-content:space-between;align-items:baseline;text-align:left}.headline__caption{color:var(--muted);font-size:13px;margin:0}.headline__value{font-size:44px;font-weight:600;margin:4px 0;font-variant-numeric:tabular-nums}.headline__value--small{font-size:32px}.headline__sub{color:var(--muted);margin:0}.bar{height:6px;background:var(--line);border-radius:999px;overflow:hidden}.bar__fill{height:100%;background:var(--tint)}.chart{width:100%;height:auto}.chart__line{fill:none;stroke:var(--tint);stroke-width:2}.chart__area{fill:var(--tint);opacity:.15}.chart__bar{fill:var(--tint);opacity:.7}.chart__zero,.chart__target{stroke:var(--muted);stroke-width:1;stroke-dasharray:4 3}.chart__label{fill:var(--muted);font-size:11px}.table-scroll{overflow-x:auto;background:var(--card);border-radius:var(--radius)}table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:8px 12px;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}th:first-child,td:first-child{text-align:left}th{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line)}tbody tr:nth-child(2n){background:color-mix(in srgb,var(--line) 40%,transparent)}button{font:inherit;font-weight:500;padding:7px 14px;border-radius:9px;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer;transition:background-color .12s ease,opacity .12s ease}button:hover:not(:disabled){background:color-mix(in srgb,var(--tint) 8%,var(--card))}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--tint-solid);border-color:transparent;color:#fff}button.primary:hover:not(:disabled){background:color-mix(in srgb,black 12%,var(--tint-solid))}button.destructive{color:var(--danger)}button.link{border:none;background:none;color:var(--tint);padding:0;text-align:left}.toolbar{display:flex;justify-content:flex-end;margin-bottom:12px}.dialog{border:none;border-radius:var(--radius);background:var(--card);color:var(--text);padding:20px;max-width:420px;width:92vw}.dialog::backdrop{background:#0006}.dialog__actions{display:flex;justify-content:flex-end;gap:8px;align-items:center;margin-top:16px}.dialog label,.fields label{display:flex;flex-direction:column;gap:4px;margin-top:12px;font-size:14px;color:var(--muted)}.dialog label.inline,label.inline{flex-direction:row;align-items:center;gap:6px;color:var(--text)}input,select,textarea{font:inherit;padding:7px 10px;border-radius:9px;border:1px solid var(--line);background:var(--card);color:var(--text)}:where(button,input,select,textarea,a):focus-visible{outline:2px solid var(--tint);outline-offset:2px}fieldset{border:1px solid var(--line);border-radius:8px;margin:12px 0 0;display:flex;gap:12px}legend{color:var(--muted);font-size:13px}.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 16px}.walks{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.walks__item{display:flex;gap:10px;align-items:center;width:100%;text-align:left;border:none;background:none;padding:8px;border-radius:8px}.walks__item:hover{background:var(--bg)}.features{max-width:940px}.features__back{font-size:14px;color:var(--muted);text-decoration:none}.features__back:hover{color:var(--tint)}.features__title{font-size:clamp(28px,5vw,40px);line-height:1.1;margin:18px 0 10px}.features__lede{color:var(--muted);max-width:60ch;margin:0 0 28px;font-size:17px}.features__figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:0 0 40px}.features__figures>div{background:var(--card);padding:14px 16px}.features__figures dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}.features__figures dd{margin:0;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.features__h2{margin:48px 0 6px;padding-top:18px;border-top:2px solid var(--text);font-size:22px}.features__note{margin:0 0 18px;font-size:14px}.features__scroll{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}.matrix{border-collapse:collapse;width:100%;min-width:660px}.matrix thead th{position:sticky;top:0;background:var(--card);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);text-align:center;padding:12px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.matrix thead th:first-child{text-align:left;padding-left:16px}.matrix__group{text-align:left;padding:20px 16px 6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tint)}.matrix tbody td,.matrix tbody th[scope=row]{border-top:1px solid var(--line);padding:9px 8px;font-size:14px}.matrix tbody th[scope=row]{text-align:left;font-weight:400;padding-left:16px;min-width:250px}.matrix tbody td{text-align:center}.matrix__mark{font-size:14px;line-height:1}.matrix__mark--full{color:var(--good)}.matrix__mark--part{color:var(--warn)}.matrix__mark--none{color:var(--line)}.matrix__fn{font-size:10px;color:var(--muted);margin-left:3px}.features__legend{display:flex;flex-wrap:wrap;gap:18px;font-size:14px;color:var(--muted);margin:14px 0 0}.features__legend span{display:inline-flex;align-items:center;gap:6px}.features__notes{margin:20px 0 0;padding-left:20px;color:var(--muted);font-size:14px;max-width:72ch}.features__notes li{margin-bottom:6px}.features__prose{max-width:68ch}.features__prose h3{font-size:17px;margin:26px 0 6px}.features__prose p{color:var(--muted);margin:0}.features__foot{margin-top:48px;padding-top:18px;border-top:1px solid var(--line);font-size:13px}:root{--s1: #0069d9;--s2: #157f3c;--s3: #b25000;--s4: #7d3cb5}@media(prefers-color-scheme:dark){:root{--s1: #0a84ff;--s2: #30d158;--s3: #ff9f0a;--s4: #bf5af2}}.ranges{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:16px 0 4px}.ranges button{font:inherit;font-size:13px;padding:5px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer}.ranges button:hover{color:var(--text)}.ranges__on{border-color:var(--tint);color:var(--tint);font-weight:600}.ranges .muted{font-size:13px;margin-left:4px}.ts{position:relative}.ts__svg{width:100%;height:auto;display:block;touch-action:none}.ts__axis{font-size:10px;fill:var(--muted)}.ts__zero{stroke:var(--line);stroke-width:1}.ts__s--1{color:var(--s1)}.ts__s--2{color:var(--s2)}.ts__s--3{color:var(--s3)}.ts__s--4{color:var(--s4)}.ts__line{fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.ts__area{fill:currentColor;opacity:.14;stroke:none}.ts__bar{fill:currentColor;opacity:.75}.ts__dot{fill:currentColor;stroke:var(--card);stroke-width:1.5}.ts__cursor line{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}.ts__tip{position:absolute;top:6px;transform:translate(-50%);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12px;pointer-events:none;min-width:130px;box-shadow:0 6px 20px #0000001f}.ts__tip-date{margin:0 0 4px;font-weight:600;color:var(--text)}.ts__tip-row{margin:0;display:flex;justify-content:space-between;gap:12px;color:currentColor}.ts__tip-row strong{color:var(--text);font-variant-numeric:tabular-nums}.ts__legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.ts__key{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12px;background:none;border:0;padding:2px 0;color:var(--text);cursor:pointer}.ts__key .ts__swatch{width:11px;height:11px;border-radius:3px;background:currentColor;flex:none}.ts__key--off{color:var(--muted)!important}.ts__key--off .ts__swatch{background:none;box-shadow:inset 0 0 0 1.5px var(--muted)}.features__title{font-size:clamp(30px,5.2vw,46px);line-height:1.08;letter-spacing:-.02em;margin:20px 0 14px;max-width:16ch;text-wrap:balance}.features__highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:36px 0 8px}.features__highlights section{background:var(--card);border-radius:var(--radius);padding:18px 20px;border:1px solid var(--line)}.features__highlights h2{font-size:17px;margin:0 0 6px}.features__highlights p{margin:0;color:var(--muted);font-size:14.5px}.features__group{max-width:68ch;margin:22px 0 0}.features__group h3{font-size:16px;margin:0 0 2px}.features__group p{margin:0;color:var(--muted);font-size:14.5px}.routes{display:flex;flex-direction:column;gap:1rem}.routes__map{width:100%;height:60vh;min-height:320px;border-radius:8px;overflow:hidden}.routes__fields{align-items:end}.routes__mode{flex-direction:row;align-items:center;gap:.4rem}.routes__hint{margin:.5rem 0;font-size:.85rem}.routes__save{margin-top:.75rem;align-items:end}.routes__summary{margin:0;align-self:center}.routes__list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.routes__list li{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;align-items:center;padding-bottom:.75rem;border-bottom:1px solid var(--line, rgba(128,128,128,.25))}.routes__list li:last-child{border-bottom:0;padding-bottom:0}.routes__ends{margin:.15rem 0 0;font-size:.85rem}.routes__actions{display:flex;gap:.4rem}.routes__import{display:flex;flex-direction:column;gap:.35rem;margin:0 0 .75rem}.routes__import span{font-size:.85rem;color:var(--muted, #6b7280)}.routes__paste{margin:0 0 .75rem}.routes__paste summary{cursor:pointer;font-size:.85rem;color:var(--muted, #6b7280)}.routes__paste p{margin:.5rem 0;font-size:.85rem}.routes__paste textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;resize:vertical}.routes__paste button{margin-top:.5rem}.mapview{display:flex;flex-direction:column;gap:1rem}.mapview__map,.mapview__pano{width:100%;border-radius:8px;overflow:hidden}.mapview__map{height:55vh;min-height:300px}.mapview__pano{height:45vh;min-height:260px}.mapview__actions{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap}.mapview__placing{margin-top:.75rem;padding:.75rem;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.mapview__placing p{margin:0 0 .25rem}.mapview__placing .mapview__actions{margin-top:.5rem}.routes__waypoints{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.routes__waypoints span{font-size:.8rem}.shared__head{margin-bottom:8px}.shared__head h1{margin-bottom:4px}.shares{display:grid;gap:10px}.shares__row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.shares__url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow-wrap:anywhere}
