:root{--bg:#ebebeb;--ink:#1532b5;--grid:#1532b51f;--grid-strong:#1532b547;--muted:#1532b585;--faint:#1532b552;--sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ease:cubic-bezier(.22,.61,.36,1)}*{box-sizing:border-box;cursor:crosshair;margin:0;padding:0}::selection{background:var(--ink);color:var(--bg)}html,body{height:100%}body{background-color:var(--bg);color:var(--ink);font-family:var(--sans);text-transform:uppercase;letter-spacing:.05em;-webkit-font-smoothing:antialiased;font-size:11px;font-weight:500;line-height:1.2;overflow-x:hidden}.mat-container{background-color:var(--bg);flex-direction:column;width:100%;min-height:100vh;display:flex;position:relative}body:after{content:"";pointer-events:none;z-index:9998;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.25)}to{opacity:1;transform:scale(1)}}@keyframes grow{0%{width:0}to{width:var(--w,0)}}@keyframes draw-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes draw-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.reveal{animation:fade .5s var(--ease) both}.meta-header{z-index:10;grid-template-columns:repeat(5,1fr);align-items:start;gap:20px 24px;width:100%;padding:20px;display:grid;position:relative}.meta-toggle{display:none}.meta-block .k{color:var(--muted);letter-spacing:.13em;margin-bottom:7px;font-size:9px;display:block}.meta-block .v{color:var(--ink);letter-spacing:.015em;font-variant-numeric:tabular-nums;font-size:14px;font-weight:600;line-height:1.3;display:block}.athlete-sel{font:inherit;color:var(--ink);letter-spacing:.015em;border:none;border-bottom:1px dashed var(--faint);cursor:crosshair;appearance:none;background:0 0;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%), linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:right 5px center,right 1px center;background-repeat:no-repeat;background-size:4px 4px,4px 4px;margin:0;padding:0 18px 2px 0;font-size:14px;font-weight:600;line-height:1.3}.athlete-sel:hover,.athlete-sel:focus{border-bottom-color:var(--ink);border-bottom-style:solid;outline:none}.header-rule{background:var(--ink);transform-origin:0;height:1px;animation:draw-x .5s var(--ease) both;transform:scaleX(0)}.meta-block .v.status-v{align-items:center;gap:9px;display:inline-flex}.status-v .ring{flex:none;display:block}.section-head{justify-content:space-between;align-items:baseline;padding:15px 20px;display:flex;position:relative}.section-head:after{content:"";background:var(--ink);transform-origin:0;height:1px;animation:draw-x .5s var(--ease) 80ms both;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.section-head h2{letter-spacing:.1em;font-size:12px;font-weight:600}.base-toggle{font:inherit;text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--ink);color:var(--ink);cursor:crosshair;transition:all .14s var(--ease);background:0 0;padding:6px 12px}.base-toggle:hover{background:#1532b514}.base-toggle[aria-pressed=true]{background:var(--ink);color:var(--bg)}.base-toggle:disabled{opacity:.35;cursor:not-allowed}.base-toggle:disabled:hover{background:0 0}.head-toggles{align-items:baseline;gap:8px;display:inline-flex}#yaxis-sel{font:inherit;text-transform:uppercase;letter-spacing:inherit;color:var(--ink);border:none;border-bottom:1px dashed var(--faint);cursor:crosshair;appearance:none;background:0 0;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%), linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:right 5px center,right 1px center;background-repeat:no-repeat;background-size:4px 4px,4px 4px;margin:0 2px;padding:0 16px 2px 2px;font-weight:600}#yaxis-sel:hover,#yaxis-sel:focus{border-bottom-color:var(--ink);border-bottom-style:solid;outline:none}.toggles{flex-wrap:wrap;align-items:center;gap:7px;padding:15px 20px;display:flex;position:relative}.toggles:after{content:"";background:var(--ink);transform-origin:0;height:1px;animation:draw-x .5s var(--ease) .16s both;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.toggles .lead{color:var(--muted);letter-spacing:.13em;margin-right:6px;font-size:9px}.chip{font:inherit;text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--grid);color:var(--muted);cursor:crosshair;transition:color .16s var(--ease), border-color .16s var(--ease), background .16s var(--ease), transform .16s var(--ease);background:0 0;border-radius:999px;align-items:center;gap:7px;padding:6px 14px 6px 7px;display:inline-flex}.chip:hover{border-color:var(--faint);color:var(--ink);transform:translateY(-1px)}.chip .sw{opacity:.3;width:9px;height:9px;transition:opacity .16s var(--ease), box-shadow .16s var(--ease);border-radius:50%}.chip .val{font-variant-numeric:tabular-nums;opacity:.65;text-transform:none;letter-spacing:.01em}.chip[aria-pressed=true]{border-color:var(--ink);color:var(--ink);background:#1532b50f}.chip[aria-pressed=true] .sw{opacity:1}.chip[aria-pressed=true] .val{opacity:.85;font-weight:600}.type-filter{z-index:1;display:inline-flex;position:relative}.type-filter-btn{font:inherit;text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--ink);color:var(--ink);cursor:crosshair;transition:background .16s var(--ease);background:0 0;align-items:center;gap:8px;padding:6px 10px;display:inline-flex}.type-filter-btn:hover{background:#1532b50f}.type-filter-btn[aria-expanded=true]{background:#1532b517}.type-filter-btn .tf-icon{background:var(--ink);opacity:.85;flex:none;width:7px;height:7px;transform:rotate(45deg)}.type-filter-btn .tf-label{font-weight:600}.type-filter-btn .tf-arrow{background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%), linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:0,4px;background-repeat:no-repeat;background-size:4px 4px,4px 4px;flex:none;width:9px;height:8px;margin-left:1px}.toggle-sep{background:var(--grid-strong);align-self:stretch;width:1px;margin:2px 5px 2px 2px}.type-filter-menu{z-index:200;background:var(--bg);border:1px solid var(--ink);flex-direction:column;min-width:168px;padding:5px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 10px 26px #1532b52e}.tf-opt{font:inherit;text-transform:uppercase;letter-spacing:.06em;color:var(--ink);cursor:crosshair;text-align:left;transition:background .12s var(--ease);background:0 0;border:none;align-items:center;gap:9px;padding:8px 10px;display:flex}.tf-opt:hover{background:#1532b514}.tf-all{font-weight:600}.tf-div{background:var(--grid-strong);height:1px;margin:4px 2px}.tf-box{flex:none;width:13px;height:13px;position:relative}.tf-box.on:after{content:"";border:solid var(--ink);border-width:0 2px 2px 0;width:4px;height:8px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.tf-box.some:after{content:"";background:var(--ink);width:8px;height:2px;position:absolute;top:5.5px;left:2.5px}.tf-diamond{flex:none;width:8px;height:8px;transform:rotate(45deg)}.tf-dot{border-radius:50%;flex:none;width:9px;height:9px}.metric-filter{display:none}.metric-menu{max-height:60vh;overflow-y:auto}.log-empty{color:var(--muted);letter-spacing:.05em;padding:22px 24px}.chart-area{padding:22px 20px 10px;animation:.45s .34s both fade;position:relative}svg.chart{cursor:crosshair;width:100%;height:auto;display:block;overflow:visible}.chart-scrubber{border:1px solid var(--grid-strong);touch-action:none;cursor:pointer;background:#1532b506;height:46px;margin:4px 0 2px;display:none;position:relative;overflow:hidden}.scrub-svg{width:100%;height:100%;position:absolute;inset:0}.scrub-window{border:1.5px solid var(--ink);pointer-events:none;background:#1532b524;border-radius:1px;min-width:24px;position:absolute;top:-1px;bottom:-1px}.grid-line{stroke:var(--grid);stroke-width:1px;stroke-dasharray:2 4}.week-line{stroke:var(--grid-strong);stroke-width:1px;stroke-dasharray:3 4}.axis-text{fill:var(--muted);font-size:6px;font-family:var(--sans);letter-spacing:.08em}.axis-text.num{font-variant-numeric:tabular-nums;letter-spacing:.04em}.week-text{fill:var(--ink);letter-spacing:.11em;font-size:6px;font-weight:500}.week-text .wk-miles{fill:var(--muted);letter-spacing:.04em;font-weight:500}.series-line{fill:none;stroke-width:1.4px;stroke-linejoin:round;stroke-linecap:round}.series-gap{fill:none;stroke-width:1.2px;stroke-linecap:round;stroke-dasharray:1 6;opacity:.5}.series-dot{stroke:var(--bg);stroke-width:1.4px}.end-label{letter-spacing:.06em;font-size:6px;font-weight:500}.end-label .u{fill-opacity:.62;letter-spacing:.02em;font-weight:500}.end-hook{fill:none;stroke-width:1px;opacity:.38}.cross-line{stroke:var(--ink);stroke-width:1px;stroke-dasharray:2 3;transition:opacity .15s var(--ease)}.chart.anim .areas{animation:.9s both fade}.chart.anim .ends{animation:.55s both fade}.chart.anim .dots circle{animation:pop .34s var(--ease) both;transform-box:fill-box;transform-origin:50%}.tip{pointer-events:none;opacity:0;background:var(--ink);color:var(--bg);white-space:nowrap;letter-spacing:.05em;z-index:50;font-variant-numeric:tabular-nums;min-width:264px;transition:opacity .14s var(--ease), left .16s var(--ease), top .16s var(--ease);padding:14px 16px;font-size:12px;position:absolute;transform:translate(-50%,calc(-100% - 18px));box-shadow:0 12px 28px #1532b538}.tip.on{opacity:1}.tip .tip-h{border-bottom:1px solid #ebebeb4d;align-items:center;gap:9px;margin-bottom:9px;padding-bottom:8px;display:flex}.tip .tip-type{letter-spacing:.07em;align-items:center;gap:6px;font-size:12.5px;font-weight:700;display:inline-flex}.tip .tip-type .tt{width:9px;height:9px;margin-right:3px;display:inline-block;transform:rotate(45deg)}.tip .tip-type .tt-outline{border:1px solid var(--bg)}.tip .tip-meta{opacity:.72;font-size:11px}.tip .tip-loc{opacity:.78;white-space:normal;align-items:center;gap:6px;margin-bottom:9px;font-size:11px;display:flex}.tip .tip-loc .pin{opacity:.8;font-size:10px}.tip .tip-sum{border-bottom:1px solid #ebebeb4d;gap:20px;margin-bottom:9px;padding-bottom:9px;display:flex}.tip .tip-sum .c{flex-direction:column;gap:3px;display:flex}.tip .tip-sum .l{opacity:.65;font-size:10px}.tip .tip-sum b{font-size:14px;font-weight:700}.tip .tip-r{justify-content:space-between;gap:18px;margin-top:5px;font-size:12px;display:flex}.tip .tip-r .nm{align-items:center;gap:8px;display:inline-flex}.tip .tip-r .sw{border-radius:50%;width:10px;height:10px;display:inline-block}.tip .tip-r b{font-weight:700}.tip .tip-note{white-space:normal;opacity:.9;text-transform:none;letter-spacing:.01em;border-top:1px solid #ebebeb4d;max-width:288px;margin-top:10px;padding-top:9px;font-size:11px;font-weight:500;line-height:1.5}.tip .tip-sum+.tip-note{border-top:none;margin-top:0;padding-top:0}#run-log{width:100%;max-width:880px;margin:0 auto;position:relative}#run-log:before,#run-log:after{content:"";background:var(--ink);z-index:6;transform-origin:top;width:1px;animation:draw-y .6s var(--ease) .2s both;position:absolute;top:0;bottom:0;transform:scaleY(0)}#run-log:before{left:0}#run-log:after{right:0}.log-row{border-bottom:1px solid var(--ink);transition:background .16s var(--ease), color .16s var(--ease), padding-left .16s var(--ease);grid-template-columns:62px 96px 1fr 28px;align-items:center;gap:10px;padding:14px 24px;display:grid}.log-row.head{color:var(--ink);z-index:5;letter-spacing:.11em;background:#e0e2e8;font-size:10px;position:sticky;top:0}.log-item:not(.open) .log-row:hover{background:var(--ink);color:var(--bg);padding-left:30px}.log-item.open>.log-row{background:#1532b512;padding-left:30px}.log-row span{font-variant-numeric:tabular-nums}.log-row .type{text-transform:none;letter-spacing:.02em;font-weight:600}.type-tag{vertical-align:middle;width:7px;height:7px;margin:0 9px 0 2px;display:inline-block;transform:rotate(45deg)}.log-row .stats{text-transform:none;letter-spacing:.01em;opacity:.82}.log-row .caret{text-align:right;opacity:.5;transition:opacity .16s var(--ease);font-size:15px;line-height:1}.log-row:hover .caret{opacity:1}.log-detail{border-bottom:1px solid var(--ink);animation:rise .32s var(--ease) both;background:#1532b509;padding:20px 28px 24px 27px}.nrow{border-bottom:1px solid var(--grid);text-transform:none;letter-spacing:.01em;font-variant-numeric:tabular-nums;grid-template-columns:180px 1fr;align-items:baseline;gap:14px;padding:9px 0;display:grid}.nrow:last-child{border-bottom:none}.nlabel{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:10px}.nval.unreported{color:var(--faint);font-style:italic}.nval{color:var(--ink);font-size:12px;line-height:1.45}.nrow.felt{background:#1532b50d;margin:2px -8px;padding:8px}.nrow.felt .nval{font-weight:600}.strava-link{border:1px solid var(--ink);color:var(--ink);letter-spacing:.06em;margin-bottom:14px;padding:6px 12px;text-decoration:none;transition:all .12s;display:inline-block}.strava-link:hover{background:var(--ink);color:var(--bg)}.planned-dot{fill:var(--bg);stroke-width:1.3px}.chart.anim .planned-dots{animation:.6s .5s both fade}.log-item.planned .log-row.planned{cursor:default;color:var(--ink);background:repeating-linear-gradient(45deg,#0000,#0000 6px,#1532b508 6px 12px)}.log-row.planned>span:first-child{color:var(--ink);font-weight:600}.log-item.planned .log-row.planned:hover{color:var(--ink);background:#1532b50d;padding-left:24px}.type-tag.hollow{border:1px solid var(--faint);background:0 0!important}.planned-label{color:var(--ink);opacity:.82}.planned-mark{opacity:.6;font-size:12px}footer{border-top:1px solid var(--ink);color:var(--muted);letter-spacing:.11em;justify-content:space-between;margin-top:auto;padding:22px 20px;font-size:10px;display:flex}@media (max-width:900px){.meta-header{grid-template-columns:1fr 1fr;gap:18px 20px;padding:18px 48px 18px 16px}.meta-toggle{z-index:12;border:1px solid var(--ink);width:30px;height:30px;color:var(--ink);cursor:crosshair;transition:background .14s var(--ease);background:0 0;justify-content:center;align-items:center;font-size:11px;line-height:1;display:inline-flex;position:absolute;top:14px;right:14px}.meta-toggle:hover{background:#1532b514}.meta-header.collapsed{grid-template-columns:1fr 1fr}.meta-header.collapsed .meta-block:not(.keep){display:none}.meta-block.right{text-align:left!important}.section-head{flex-direction:column;align-items:flex-start;gap:12px;padding:16px}.head-toggles{flex-wrap:wrap}.base-toggle{white-space:nowrap}.toggles{padding:14px 16px}.toggles .chip{display:none}.metric-filter{display:inline-flex}.chart-area{padding:18px 12px 10px}.chart-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:none;overflow:auto visible}.chart-scroll::-webkit-scrollbar{display:none}svg.chart{min-width:1120px}.week-text{font-size:8px}.axis-text{font-size:7.5px}.end-label{font-size:8px}.chart-scrubber{display:block}.log-row{grid-template-columns:52px 1fr 24px;grid-template-areas:"week run caret""stats stats stats";row-gap:7px;padding:14px 16px}.log-row>span:first-child{grid-area:week}.log-row>span:nth-child(2){grid-area:run}.log-row>span:nth-child(3){grid-area:stats}.log-row>span:nth-child(4){grid-area:caret}.log-item:not(.open) .log-row:hover,.log-item.open>.log-row{padding-left:22px}.log-detail{padding:18px 16px 22px}.nrow{grid-template-columns:1fr;gap:3px;padding:10px 0}.nrow.felt{margin:2px -6px;padding:8px 6px}footer{padding:20px 16px}}@media (prefers-reduced-motion:reduce){.reveal,.chart-area,.log-detail,.header-rule,.section-head:after,.toggles:after,#run-log:before,#run-log:after,.chart.anim .areas,.chart.anim .ends,.chart.anim .dots circle{opacity:1;transform:none;animation:none!important}*{transition-duration:.01ms!important}}
