@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#213a33;background:#f6f7f3;font-synthesis:none}*{box-sizing:border-box}body{margin:0}header,main,footer{max-width:1360px;margin:auto}header{display:flex;align-items:center;justify-content:space-between;padding:30px 48px;border-bottom:1px solid #dce2d9}.brand{display:flex;gap:12px;align-items:center;color:#264e40;text-decoration:none;font-size:30px;font-weight:700}.brand span{font-size:15px;letter-spacing:2px}.badge,.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px}.badge{border:1px solid #cbd6ca;border-radius:20px;padding:8px 12px;color:#617669}main{padding:48px}.intro{padding:12px 0 40px}.eyebrow{color:#758b68;margin:0 0 12px}h1{font-family:Manrope,sans-serif;font-size:clamp(36px,5vw,57px);line-height:1.12;letter-spacing:-2.6px;margin:14px 0 18px;font-weight:800}.intro>p:last-child{color:#6e7a73;font-size:16px}.workspace{display:grid;grid-template-columns:265px minmax(0,1fr);gap:38px;align-items:start}aside{position:sticky;top:24px}form{background:#fff;border:1px solid #dce2d9;border-radius:14px;padding:24px}.filter-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}h2{font-size:19px;margin:0;font-weight:600}.filter-heading h2{font-size:16px}button,input,select{font:inherit}button,select{cursor:pointer}label{display:block;font-size:12px;font-weight:600;margin-bottom:9px}input,select{width:100%;background:#fff;border:1px solid #d9dfd7;border-radius:7px;color:#31463c;padding:11px;font-size:13px}form input,form select{margin-bottom:23px}.text-button{background:none;border:0;color:#788578;font-size:12px;padding:4px}.hint{font-size:12px;line-height:1.7;color:#899185;margin:0 0 23px}.primary{display:flex;justify-content:space-between;width:100%;background:#2d5947;color:#fff;border:0;border-radius:7px;padding:13px;font-size:13px;font-weight:600}.collection{padding:26px 12px}.collection p{font-size:14px;line-height:1.5}.collection small{font-size:11px;color:#899185}.results-heading{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:4px 0 24px}.results-heading .eyebrow{font-size:9px;margin-bottom:8px}.sort{display:flex;align-items:center;gap:10px;white-space:nowrap;color:#7a847a;font-size:11px;margin:0}.sort select{width:auto;padding:9px;font-size:11px}.route-card{background:white;border:1px solid #dee4db;border-radius:12px;padding:22px 25px;margin-bottom:12px;transition:border-color .15s}.route-card:hover{border-color:#9eaf96}.area{color:#81907f;text-transform:uppercase;letter-spacing:1.1px;font-size:9px;line-height:1.7;margin:0 0 9px;overflow-wrap:anywhere}.route-heading{display:flex;align-items:start;justify-content:space-between;gap:15px}h3{font-family:Manrope,sans-serif;font-size:19px;letter-spacing:-.4px;margin:0 0 18px;overflow-wrap:anywhere}.grade{font-size:14px;font-weight:700;color:#416345;white-space:nowrap;background:#eff3e9;padding:6px 10px;border-radius:6px}.details{display:flex;align-items:center;gap:20px;font-size:11px;color:#849083;flex-wrap:wrap}.style-tag{color:#547160;background:#f1f5ef;padding:5px 9px;border-radius:4px}.source-link{margin-left:auto;text-decoration:none;color:#3c6650;font-size:11px;font-weight:600}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:24px;font-size:12px;color:#7c8a7b}.pagination button{border:1px solid #d7dfd3;border-radius:6px;background:white;color:#3c5944;padding:10px 14px}.pagination button:disabled{opacity:.4;cursor:default}.empty,#error{padding:35px;border:1px dashed #c9d4c3;border-radius:12px;line-height:1.6;color:#697a67}footer{padding:26px 48px;border-top:1px solid #dce2d9;font-size:10px;letter-spacing:1.5px;color:#73836c;display:flex;justify-content:space-between}footer span{letter-spacing:0}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #99b47d;outline-offset:3px}[aria-busy=true]{opacity:.5}@media(max-width:800px){header,main,footer{padding:24px}.workspace{grid-template-columns:1fr;gap:20px}aside{position:static}.collection{display:none}form{display:grid;grid-template-columns:1fr;gap:0}.results-heading{flex-wrap:wrap}.intro{padding-bottom:24px}footer{gap:20px}.details{gap:12px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.map-panel{border:1px solid #dce2d9;border-radius:12px;background:white;overflow:hidden;margin-bottom:24px}.map-heading{display:flex;align-items:center;justify-content:space-between;padding:14px 18px}.map-heading h2{font-size:15px}.map-heading button{border:1px solid #d7dfd3;background:#fff;border-radius:6px;padding:7px 12px;color:#3c5944;font-size:12px}.map-heading button:disabled{opacity:.4;cursor:default}#map{height:390px;background:#e7ece1;z-index:0}#map-status,.map-note{padding:0 18px;font-size:11px;color:#6e7a73;line-height:1.6}.map-note{margin-top:0}.map-popup{max-height:240px;overflow:auto;min-width:180px}.map-popup small{display:block;color:#6e7a73;margin-top:3px}#coordinates{font-size:11px;background:#f6f7f3}@media(max-width:800px){#map{height:310px}}
.map-container{position:relative}.style-filter{border:0;border-bottom:1px solid #e1e7dd;padding:0 0 18px;margin:0 0 23px;min-width:0}.style-filter legend{font-size:12px;font-weight:600;padding:0}.more-styles{margin-top:10px}.more-styles summary{cursor:pointer;font-size:12px;color:#547160;padding:4px 0}.other-styles{padding-top:10px;max-height:210px;overflow:auto}.style-actions{margin:3px 0 7px;font-size:11px}.style-actions button{border:0;background:none;color:#26749e;padding:2px;font-size:12px}.style-option{display:flex;align-items:center;gap:7px;font-size:11px;margin:0 0 6px;cursor:pointer}.style-option input{width:13px;height:13px;margin:0;accent-color:#3388ff;padding:0}.style-badge{display:inline-block;border:1px solid;border-radius:3px;padding:2px 4px;color:#24382d;font-size:10px;background:white}.style-count{margin-left:auto;color:#647260;font-variant-numeric:tabular-nums}.route-count-icon{background:none;border:0}.route-count-marker{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid #fff;border-radius:50%;box-shadow:0 1px 4px #0006;position:relative;color:#23392d;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;isolation:isolate}.route-count-marker::before{content:'';position:absolute;inset:4px;border-radius:50%;background:#fffffff2;z-index:-1}.popup-styles{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.grade-range{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:6px;align-items:end}.grade-range>div{min-width:0}.grade-range select{min-width:0;padding:10px 3px;font-size:11px}.grade-range label{font-size:10px}.original-grade{display:block;font-weight:400;font-size:9px;margin-top:5px;white-space:normal;max-width:170px;line-height:1.5}

.numeric-filter{border:0;padding:0;margin:0 0 4px;min-width:0}.numeric-filter legend{font-size:12px;font-weight:600;margin-bottom:12px;padding:0}.numeric-range{display:grid;grid-template-columns:1fr 1fr;gap:10px}.numeric-range>div{min-width:0}.numeric-range input{min-width:0}.numeric-range label{font-size:10px}

/* Compact route rows, with source links and pitch details kept together. */
#routes{background:#fff;border-radius:6px}.route-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:9px;padding:10px 12px;border-bottom:1px solid #d8dfd5;align-items:start}.route-row:first-child{border-top:1px solid #d8dfd5}.route-row:hover{background:#f5f8f1}.route-number{font-size:10px;line-height:20px;color:#849080;text-align:right;font-variant-numeric:tabular-nums}.route-body{min-width:0}.compact-heading{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-height:20px}.compact-heading h3{font-family:inherit;font-size:13px;line-height:1.35;font-weight:500;letter-spacing:0;margin:0}.compact-heading a{color:#1676a0;text-decoration:none}.compact-heading a:hover{text-decoration:underline}.compact-heading .style-badge{font-size:9px;padding:0 3px;line-height:15px}.route-metric{font-size:10px;color:#5d6c5b;white-space:nowrap}.compact-area{font-size:10px;color:#85907e;line-height:1.5;margin:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-grade{font-size:10px;font-weight:600;white-space:nowrap;padding:2px 5px;border:1px solid #b8c981;border-radius:2px;background:#f0f6d7;color:#3e5927;line-height:15px;font-variant-numeric:tabular-nums}.pitch-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:3px 12px;max-width:540px;margin:6px 0 0;padding:0;list-style:none}.pitch-list li{display:flex;gap:4px;align-items:center;font-size:10px;line-height:16px;color:#5f6f58}.pitch-number{display:inline-flex;align-items:center;justify-content:center;min-width:15px;height:15px;border:1px solid #c4cebd;border-radius:50%;font-size:9px;color:#7d8976}.pitch-grade{border:1px solid #cedaa9;background:#f1f5df;border-radius:2px;padding:0 3px;color:#40592c;line-height:13px}@media(max-width:500px){.route-row{grid-template-columns:18px minmax(0,1fr);gap:6px;padding:9px 7px}.compact-grade{grid-column:2;justify-self:start}.compact-heading{gap:5px}.pitch-list{grid-template-columns:repeat(auto-fill,minmax(85px,1fr))}}

.map-popup a.area-website-button{display:inline-block;margin-top:10px;padding:8px 11px;border-radius:5px;background:#2d5947;color:#fff;text-decoration:none;font-size:12px;font-weight:600}.map-popup a.area-website-button:hover{background:#214735}

.map-context-menu{position:absolute;z-index:1100;background:#fff;border:1px solid #cbd6c6;border-radius:5px;box-shadow:0 3px 12px #0003;padding:4px;min-width:160px}.map-context-menu[hidden]{display:none}.map-context-menu button{display:block;width:100%;border:0;background:white;color:#264e40;padding:9px 12px;text-align:left;border-radius:3px;font-size:12px}.map-context-menu button:hover,.map-context-menu button:focus-visible{background:#edf3e7}

.elevation-credit{max-width:1264px;margin:12px auto 24px;padding:0 24px;font-size:10px;color:#7b8973}.elevation-credit a{color:#3c6650}

.exposure-filter{border:0;padding:0;margin:0 0 18px;min-width:0}.exposure-filter legend{font-size:12px;font-weight:600;margin-bottom:12px}.compass{position:relative;width:190px;height:190px;margin:0 auto 14px;border-radius:50%;background:radial-gradient(circle,transparent 48%,#dce4d6 49%,#dce4d6 50%,transparent 51%)}.compass::before{content:'';position:absolute;inset:29px;background:#e4ebdd;clip-path:polygon(50% 0,58% 32%,85% 15%,68% 42%,100% 50%,68% 58%,85% 85%,58% 68%,50% 100%,42% 68%,15% 85%,32% 58%,0 50%,32% 42%,15% 15%,42% 32%)}.compass-point{position:absolute;transform:translate(-50%,-50%);margin:0;cursor:pointer}.compass-point input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.compass-point span{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #cbd8c1;border-radius:50%;background:#fff;color:#59714b;font-size:11px;font-weight:600}.compass-point input:checked+span{background:#2d5947;color:#fff;border-color:#2d5947}.compass-point input:focus-visible+span{outline:3px solid #99b47d;outline-offset:2px}.compass-point:hover span{border-color:#2d5947}#exposure-clear{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:0;border-radius:50%;background:#f6f8f1;color:#58704a;width:36px;height:36px;font-size:10px}

/* Keep the full filter set within a shorter sidebar. */
#filters{padding:16px}
#filters .filter-heading{margin-bottom:14px}
#filters label{margin-bottom:4px}
#filters input:not([type="checkbox"]),#filters select{padding:7px 8px;margin-bottom:10px;font-size:12px}
#filters .grade-range select{padding:7px 3px;font-size:11px}
#filters .numeric-filter{margin-bottom:2px}
#filters .numeric-filter legend,#filters .exposure-filter legend{margin-bottom:5px;font-size:11px}
#filters .numeric-range{gap:8px}
#filters .style-filter{padding-bottom:10px;margin-bottom:12px}
#filters .style-option{margin-bottom:4px}
#filters .style-actions{margin:2px 0 5px}
#filters .more-styles{margin-top:4px}
#filters .more-styles summary{padding:2px 0}
#filters .other-styles{padding-top:6px;max-height:160px}
#filters .exposure-filter{margin-bottom:8px}
#filters .compass{width:136px;height:136px;margin:0 auto 4px}
#filters .compass::before{inset:23px}
#filters .compass-point{margin:0}
#filters .compass-point span{width:28px;height:28px;font-size:10px}
#filters #exposure-clear{width:30px;height:30px;font-size:9px}
#filters .primary{padding:10px 12px;margin-top:2px}

.brand img{display:block;flex-shrink:0;border-radius:9px}

.login-page{min-height:100vh;display:grid;place-items:center}.login-page main{width:min(440px,100%);padding:24px}.login-card{padding:28px}.login-card h1{font-size:30px;letter-spacing:-1px}.login-card p{font-size:13px;color:#6e7a73;line-height:1.6}.login-card #login-error{color:#a43b2d}

#filters .unknown-exposure{display:flex;align-items:center;justify-content:center;gap:6px;margin:4px 0 8px;font-size:11px;cursor:pointer}#filters .unknown-exposure input{width:13px;height:13px;margin:0;accent-color:#2d5947}

#topo-files{padding:0;list-style:none}#topo-files li{padding:14px 0;border-bottom:1px solid #dce2d9;overflow-wrap:anywhere}#topo-files a{color:#264e40}#topo-files span{font-size:12px;color:#73836c}#topo-search{max-width:560px}
