:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--green:#2f7f12;--primary:#2f7f12;--primary-hover:#266a0e;--green-soft:#edf6e3;--accent:#f26b1d;--accent-hover:#d95a10;--accent-soft:#fff0e5;--bike:#3a8a16;--run:#2563eb;--danger:#c2372c;--danger-bg:#c2372c;--danger-soft:#fdeceb;--text:#15211b;--muted:#5d6b64;--bg:#fff;--surface:#f3f6f4;--surface-2:#f1f8f4;--border:#dfe6e2;--input-border:#c9d4ce;--shadow-sm:0 1px 3px #10281c1a;--shadow-lg:0 12px 40px #10281c38;--logo-green:#4c9a12;--logo-orange:#e2560c;--radius:14px;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--green:#9be33f;--primary:#2f8a17;--primary-hover:#379e1b;--green-soft:#243019;--accent:#ff8a3d;--accent-hover:#ff9d5c;--accent-soft:#3a2415;--bike:#3f9a1d;--run:#3b7bf0;--danger:#ff8077;--danger-soft:#3a1c1a;--text:#e8ebef;--muted:#a3a9b3;--bg:#1c1e22;--surface:#141518;--surface-2:#23262b;--border:#30343b;--input-border:#40454e;--shadow-sm:0 1px 3px #0006;--shadow-lg:0 12px 40px #0009;--logo-green:#9be33f;--logo-orange:#ff7a1a}}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{flex-direction:column;display:flex}.site-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:.75rem;padding:.75rem 1rem;display:flex}.site-header h1{color:var(--green);margin:0;font-size:1.25rem}.site-header a{color:inherit;text-decoration:none}.tagline{color:var(--muted);margin:0;font-size:.9rem}.map-wrap{flex:1;min-height:300px;position:relative}#map{position:absolute;inset:0}#map.picking{cursor:crosshair}.pick-banner{z-index:1000;background:var(--bg);border-radius:8px;align-items:center;gap:.75rem;max-width:calc(100% - 2rem);padding:.5rem .75rem;display:flex;position:absolute;top:.75rem;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000040}.pick-banner[hidden]{display:none}.draw-banner{flex-wrap:wrap;justify-content:center;width:max-content}.draw-buttons{flex-wrap:wrap;gap:.4rem;display:flex}.route-box{border:1px solid var(--border);border-radius:8px;margin:0 0 .9rem;padding:.5rem .75rem .25rem}.route-box legend{padding:0 .25rem;font-weight:600}.route-box .hint{color:var(--muted);margin:.25rem 0 .5rem}.route-actions{flex-wrap:wrap;gap:.5rem;display:flex}.site-footer{border-top:1px solid var(--border);flex-wrap:wrap;gap:.25rem 1rem;padding:.5rem 1rem;font-size:.85rem;display:flex}.site-footer a{white-space:nowrap;color:var(--muted)}.legal{flex:1;max-width:48rem;padding:1rem}.legal h3{margin:1.25rem 0 .25rem;font-size:1rem}.legal p{margin:0 0 .75rem;line-height:1.5}.legal ul{margin:0 0 .75rem;padding-left:1.25rem;line-height:1.5}.legal li{margin-bottom:.35rem}.legal-date{color:var(--muted)}.toolbar{gap:.5rem;margin-left:auto;display:flex}button{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:6px;padding:.4rem .8rem}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.danger{background:var(--danger-bg);border-color:var(--danger-bg);color:#fff}button:disabled{opacity:.5;cursor:not-allowed}dialog{border:1px solid var(--border);border-radius:10px;width:min(28rem,100vw - 2rem);padding:1.25rem}dialog::backdrop{background:#0006}dialog h2{margin-top:0;font-size:1.15rem}dialog label{flex-direction:column;gap:.3rem;margin-bottom:.9rem;display:flex}dialog label.check{flex-direction:row;align-items:flex-start;gap:.5rem}dialog input[type=email],dialog input[type=password],dialog input[type=text]{font:inherit;border:1px solid var(--border);border-radius:6px;padding:.5rem}dialog small{color:var(--muted)}.actions{justify-content:flex-end;gap:.5rem;display:flex}.status{min-height:1.2em;color:var(--muted)}.status.error{color:var(--danger)}dialog hr{border:0;border-top:1px solid var(--border);margin:1.25rem 0}dialog select,dialog textarea,dialog input[type=number],dialog input[type=datetime-local]{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;padding:.5rem}dialog .row{flex-wrap:wrap;gap:0 .75rem;display:flex}dialog .row label{flex:8rem}button.link{color:var(--green);background:0 0;border:0;margin-bottom:.9rem;padding:0;text-decoration:underline}.ride-fields{grid-template-columns:max-content 1fr;gap:.35rem .75rem;margin:0 0 1rem;display:grid}.ride-fields dt{color:var(--muted)}.ride-fields dd{margin:0}.ride-description{white-space:pre-line;overflow-wrap:anywhere}.cancelled{background:var(--danger-soft);color:var(--danger);border-radius:6px;padding:.5rem .75rem}.owner-actions{gap:.5rem;margin-right:auto;display:flex}.owner-actions[hidden]{display:none}.ride-list{flex-direction:column;gap:.5rem;max-height:60vh;margin-bottom:1rem;display:flex;overflow-y:auto}.ride-item{text-align:left;flex-direction:column;align-items:flex-start;gap:.2rem;display:flex}.ride-item span{color:var(--muted);font-size:.85rem}.join-box{border:1px solid var(--border);border-radius:8px;margin:.75rem 0;padding:.6rem .75rem}.join-count{margin:0 0 .5rem;font-weight:600}.join-box .status{margin:.4rem 0 0}.participants h3{margin:.5rem 0 .25rem;font-size:1rem}.participants ol{margin:0 0 .75rem;padding-left:1.5rem}.participants li.empty{color:var(--muted);margin-left:-1.5rem;list-style:none}.contact-form label,.admin-card label{margin-bottom:.9rem;display:block}.contact-form input,.contact-form textarea,.admin-card textarea{width:100%;font:inherit;border:1px solid var(--border);border-radius:6px;margin-top:.25rem;padding:.45rem .5rem;display:block}.admin-card{border:1px solid var(--border);border-radius:8px;margin:0 0 1rem;padding:.75rem 1rem}.admin-card h4{margin:0 0 .25rem}.admin-text{white-space:pre-wrap}.muted{color:var(--muted)}.hidden-list li{margin-bottom:.4rem}.offline-banner{z-index:1000;color:#fff;background:#3a3f3c;border-radius:8px;max-width:calc(100% - 2rem);padding:.5rem .75rem;position:absolute;bottom:1.75rem;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000040}.offline-banner[hidden]{display:none}@media (width<=640px){.site-header{align-items:center;row-gap:.5rem}.tagline{display:none}.account{margin-left:auto}.toolbar{flex-wrap:nowrap;order:3;width:100%;margin-left:0;overflow-x:auto}.toolbar button{flex:none}}.ride-tools{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.5rem 0;display:flex}.ride-tools .status{min-height:0}#my-rides-dialog h3{margin:.75rem 0 .4rem;font-size:1rem}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.comments{margin:.75rem 0}.comments h3{margin:0 0 .4rem;font-size:1rem}.comments .link{margin-bottom:0}.comment-list{max-height:16rem;margin:0 0 .5rem;padding:0;list-style:none;overflow-y:auto}.comment-list .empty{color:var(--muted)}.comment{border-bottom:1px solid var(--border);padding:.4rem 0}.comment-head{flex-wrap:wrap;align-items:baseline;gap:0 .5rem;display:flex}.comment-head time{color:var(--muted);font-size:.8rem}.badge{background:var(--green-soft);color:var(--green);border-radius:4px;padding:0 .35rem;font-size:.75rem}.comment-body{white-space:pre-line;overflow-wrap:anywhere;margin:.15rem 0 0}.hidden-comment .comment-body{color:var(--muted);text-decoration:line-through}.comment-note{color:var(--danger);margin:.2rem 0 0;font-size:.85rem}.comment-actions{gap:.75rem;font-size:.85rem;display:flex}#comment-form label{margin-bottom:.4rem}.comment-form-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.admin-quote{border-left:3px solid var(--border);margin:0 0 .75rem;padding:.4rem .75rem}.avatar{color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;line-height:1;display:inline-flex}.avatar-sm{width:1.5rem;height:1.5rem;font-size:.65rem}.avatar-lg{width:3rem;height:3rem;font-size:1.1rem}.nick-link{color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:.35rem;padding:0;font-weight:600;display:inline-flex}.nick-link:hover{text-decoration:underline}.user-head{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.user-head h2,.user-head p{margin:0}.chips{flex-wrap:wrap;gap:.35rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.chips li{background:var(--green-soft);color:var(--green);border-radius:999px;padding:.15rem .6rem;font-size:.85rem}#user-dialog h3{margin:.75rem 0 .4rem;font-size:1rem}.bike-choices{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:0 1rem;margin:0 0 .75rem;padding:.4rem .75rem 0;display:flex}.bike-choices label.check{margin-bottom:.5rem}.draw-snap{white-space:nowrap;align-items:center;gap:.3rem;display:inline-flex}.ride-pin{background:0 0;border:0}.ride-pin-dot{border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;line-height:1;display:flex;box-shadow:0 1px 4px #00000059}.pin-bike{background:var(--bike)}.pin-run{background:var(--run)}.pin-mine{border-color:var(--accent);box-shadow:0 0 0 2px #fff,0 1px 4px #00000059}.pin-cancelled{opacity:.8;background:#8a918d}.sport-choice{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:0 1.25rem;margin:0 0 .9rem;padding:.4rem .75rem 0;display:flex}.sport-choice label.check{margin-bottom:.5rem}#pace-run input{width:100%;min-width:0}.series-box h3{margin:.75rem 0 .4rem;font-size:1rem}.series-dates{flex-wrap:wrap;gap:.35rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.series-date{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:999px;padding:.2rem .65rem;font-size:.85rem}.series-date[aria-current=true]{border-color:var(--green);background:var(--green-soft);color:var(--green);opacity:1;font-weight:600}.series-date.cancelled-date{color:var(--muted);text-decoration:line-through}#groups-open{align-items:center;gap:.35rem;display:inline-flex}.unread-count{background:var(--accent);color:#fff;text-align:center;border-radius:999px;min-width:1.25rem;padding:0 .35rem;font-size:.75rem;font-weight:600;line-height:1.25rem}#groups-dialog h3,.group-dialog h3{margin:.75rem 0 .4rem;font-size:1rem}.search-row{gap:.5rem;margin-bottom:.5rem;display:flex}.search-row input{min-width:0;font:inherit;border:1px solid var(--border);border-radius:6px;flex:1;padding:.4rem .6rem}.group-list{max-height:16rem;margin:0 0 .75rem;padding:0;list-style:none;overflow-y:auto}.group-list .empty{padding:.4rem 0}.group-item{text-align:left;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;margin-bottom:.35rem;display:flex}.group-item>span{color:var(--muted);font-size:.85rem}.group-item strong{overflow-wrap:anywhere;align-items:center;gap:.35rem;display:inline-flex}.group-dialog{width:min(32rem,100vw - 2rem)}.invite-box{border:1px dashed var(--border);border-radius:8px;margin:.5rem 0;padding:.6rem .75rem .1rem}.invite-box input{font:inherit;border:1px solid var(--border);border-radius:6px;padding:.35rem .5rem}.tabs{border-bottom:1px solid var(--border);gap:.25rem;margin:.75rem 0 .5rem;display:flex}.tabs button{background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0}.tabs button.active{border-bottom-color:var(--green);color:var(--green);font-weight:600}.chat-list{height:min(18rem,40vh);margin:0 0 .5rem;padding:0;list-style:none;overflow-y:auto}.chat-list .empty{padding:.5rem 0}.chat-message{padding-inline:.35rem}.member-list{max-height:20rem;margin:0 0 .75rem;padding:0;list-style:none;overflow-y:auto}.member-list li{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.25rem .5rem;padding:.35rem 0;display:flex}.member-actions{gap:.75rem;margin-left:auto;display:flex}.member-actions .link{margin:0}.group-dialog .actions{flex-wrap:wrap;align-items:center}.group-dialog .actions .link{margin:0 auto 0 0}button.link.danger-link{color:var(--danger);display:block}.admin-ride-mode{flex-direction:column}body{background:var(--surface);-webkit-font-smoothing:antialiased}.site-header{z-index:1001;background:var(--bg);box-shadow:var(--shadow-sm);border-bottom:0;align-items:center;padding:.6rem 1rem;position:relative}.brand{letter-spacing:-.02em;align-items:center;gap:.5rem;font-size:1.35rem;font-weight:800;display:flex}.brand a{align-items:center;gap:.5rem;display:inline-flex}.logo{flex:none;width:40px;height:40px}.wordmark{color:var(--logo-green);letter-spacing:-.03em;font-style:italic;font-weight:900}.wordmark .eo{color:var(--logo-orange)}.tagline{font-weight:500}button{border-color:var(--input-border);border-radius:999px;padding:.5rem .95rem;font-weight:500;transition:background-color .15s,border-color .15s,box-shadow .15s,transform 50ms}button:hover:not(:disabled){border-color:var(--green)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid color-mix(in srgb, var(--green) 45%, transparent);outline-offset:2px}button.primary{background:var(--primary);border-color:var(--primary);font-weight:600}button.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}button.danger:hover:not(:disabled){filter:brightness(1.08);border-color:var(--danger-bg)}button.link,.nick-link,.tabs button{border-radius:4px}button.link:hover:not(:disabled){border-color:#0000}#ride-add{background:var(--accent);border-color:var(--accent);box-shadow:0 2px 8px color-mix(in srgb, var(--accent) 35%, transparent)}#ride-add:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}#ride-add:before{content:"+";margin-right:.35rem;font-size:1.15em;font-weight:700;line-height:1}#account-open{font-weight:600}dialog{background:var(--bg);color:var(--text);box-shadow:var(--shadow-lg);border:0;border-radius:20px;padding:1.4rem 1.4rem 1.2rem}dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0a140f73}dialog[open]{animation:.18s ease-out dialog-in}@keyframes dialog-in{0%{opacity:0;transform:translateY(12px)scale(.98)}}dialog h2{letter-spacing:-.01em;font-size:1.3rem;font-weight:800}dialog h3{font-weight:700}dialog label>span:first-child{font-weight:500}dialog select,dialog textarea,dialog input[type=number],dialog input[type=datetime-local],dialog input[type=email],dialog input[type=password],dialog input[type=text],dialog input[type=search],.search-row input,.contact-form input,.contact-form textarea,.admin-card textarea{border:1px solid var(--input-border);background:var(--bg);color:var(--text);border-radius:10px;padding:.6rem .7rem}dialog select:focus,dialog textarea:focus,dialog input:focus,.search-row input:focus,.contact-form input:focus,.contact-form textarea:focus{border-color:var(--green)}.sport-choice,.bike-choices,.route-box,.invite-box,.join-box{border-color:var(--border);border-radius:var(--radius)}.join-box{background:var(--surface-2);border:0}.join-count{font-size:1.05rem}.cancelled{border-radius:10px;font-weight:600}.ride-fields{border-radius:var(--radius);background:var(--surface);padding:.75rem .9rem}.ride-fields dd{font-weight:500}.badge{border-radius:999px;padding:.05rem .5rem;font-weight:600}.chips li{font-weight:500}.ride-item,.group-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:100%;box-shadow:var(--shadow-sm);padding:.7rem .9rem}.ride-item:hover:not(:disabled),.group-item:hover:not(:disabled){border-color:var(--green);background:var(--surface-2)}.ride-item strong,.group-item strong{font-size:1rem}.group-item{margin-bottom:.5rem}.series-date{border-color:var(--input-border)}.tabs button.active{border-bottom-width:3px}.comment{border-bottom-color:var(--border)}.chat-message{background:var(--surface);border:0;border-radius:12px;margin-bottom:.4rem;padding:.45rem .65rem}.chat-message.mine{background:var(--green-soft)}.map-wrap{background:var(--surface)}.leaflet-container{font:inherit;background:var(--surface)}.leaflet-bar{overflow:hidden;box-shadow:var(--shadow-sm)!important;border:0!important;border-radius:12px!important}.leaflet-bar a{background:var(--bg)!important;width:36px!important;height:36px!important;color:var(--text)!important;border-color:var(--border)!important;line-height:36px!important}.ride-pin-dot{border-width:3px;width:32px;height:32px;font-size:16px;transition:transform .12s;box-shadow:0 2px 6px #00000059}.ride-pin:hover .ride-pin-dot,.ride-pin:focus-visible .ride-pin-dot{transform:scale(1.15)}.pick-banner,.offline-banner{border-radius:var(--radius);box-shadow:var(--shadow-lg)}.pick-banner{background:var(--bg);color:var(--text)}.site-footer{background:var(--bg);border-top:0}.site-footer a:hover{color:var(--green)}.legal,.admin-page{background:var(--bg);box-shadow:var(--shadow-sm);border-radius:20px;margin:1rem auto;padding:1.5rem}.admin-card{border-radius:var(--radius);background:var(--bg)}@media (prefers-color-scheme:dark){.leaflet-tile-pane{filter:brightness(.82)contrast(1.05)saturate(.85)}.leaflet-control-attribution{color:var(--muted);background:#171e1ad9!important}.leaflet-control-attribution a{color:var(--green)}.ride-pin-dot{border-color:#e6eee9}.avatar{box-shadow:0 0 0 1px #ffffff14}}@media (width<=640px){.site-header{padding:.5rem .75rem}.brand{font-size:1.2rem}.logo{width:34px;height:34px}.toolbar{scrollbar-width:none;padding-bottom:2px}.toolbar::-webkit-scrollbar{display:none}#ride-add{z-index:1002;right:1rem;bottom:calc(4.5rem + env(safe-area-inset-bottom));box-shadow:0 6px 18px color-mix(in srgb, var(--accent) 45%, transparent);padding:.85rem 1.25rem;font-size:1rem;position:fixed}dialog,.group-dialog{width:100%;max-width:100%;max-height:92dvh;padding:1.6rem 1.1rem calc(1.1rem + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;margin:auto 0 0}dialog:before{content:"";background:var(--border);border-radius:2px;width:2.5rem;height:4px;position:absolute;top:.5rem;left:50%;transform:translate(-50%)}dialog[open]{animation:.22s ease-out sheet-in}@keyframes sheet-in{0%{opacity:.4;transform:translateY(40px)}}.actions{flex-wrap:wrap}.legal,.admin-page{border-radius:0;margin:0}}@media (prefers-reduced-motion:reduce){dialog[open],button{transition:none;animation:none}}.join-box .status:empty,.route-box .status:empty{min-height:0;margin:0}.legal a,.contact-form a{color:var(--green)}.map-page .site-header,.map-page .site-footer{z-index:1001;background:color-mix(in srgb, var(--bg) 75%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:relative}.map-page .site-footer{margin-top:auto}.map-page .map-wrap{min-height:0;position:fixed;inset:0}.map-page .leaflet-top{top:var(--header-h,0px)}.map-page .leaflet-bottom{bottom:var(--footer-h,0px)}.map-page .pick-banner{top:calc(var(--header-h,0px) + .75rem)}.map-page .offline-banner{bottom:calc(var(--footer-h,0px) + 1.75rem)}@media (width<=640px){.map-page .site-header{-webkit-backdrop-filter:none;backdrop-filter:none}.map-page #ride-add{bottom:calc(var(--footer-h,3.5rem) + 1rem)}}.auth-links{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;margin:.75rem 0 0;display:flex}.auth-links button.link{margin:0;font-size:.9rem}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.75rem;display:grid}.stat-tile{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);flex-direction:column;gap:.15rem;padding:.85rem 1rem;display:flex}.stat-label{color:var(--muted);font-size:.85rem}.stat-value{font-variant-numeric:tabular-nums;font-size:1.9rem;line-height:1.15}.stat-sub{color:var(--muted);font-size:.8rem}.stat-chart{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);margin:1rem 0 0;padding:.85rem 1rem}.stat-chart figcaption{justify-content:space-between;gap:1rem;margin-bottom:.6rem;font-weight:600;display:flex}.stat-bars{border-bottom:1px solid var(--border);align-items:flex-end;gap:2px;height:7rem;display:flex}.stat-bar{cursor:default;flex:1;align-items:flex-end;height:100%;display:flex}.stat-bar>span{background:var(--primary);border-radius:4px 4px 0 0;width:100%}.stat-bar:hover>span{background:var(--primary-hover)}.stat-bar:hover{background:var(--surface)}.stat-axis{color:var(--muted);justify-content:space-between;margin-top:.3rem;font-size:.8rem;display:flex}.stat-chart details{margin-top:.6rem;font-size:.9rem}.stat-chart table{border-collapse:collapse;margin-top:.4rem}.stat-chart th,.stat-chart td{text-align:left;font-variant-numeric:tabular-nums;padding:.15rem 1.25rem .15rem 0}
