body:has(.exercise-page) .book-toc .book-toc-content{scrollbar-width:thin;overflow:hidden auto}.ex-mobile-toc{padding:.5rem .75rem 1rem}.exercise-page{inline-size:100%;max-inline-size:none}.ex-hero{margin:0 0 1.75rem}.ex-kicker{color:var(--color-link);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.6875rem;font-weight:600}.ex-title{letter-spacing:-.022em;margin:.4rem 0 0;font-size:clamp(1.5rem,2.4vw,1.85rem);font-weight:600;line-height:1.32}.ex-intro{max-inline-size:40rem;color:var(--gray-700);margin:.65rem 0 0;font-size:.875rem;line-height:1.85}.ex-main{min-inline-size:0;position:relative}.ex-map-sentinel{block-size:1px;margin-block-end:-1px}.ex-map-hero{z-index:30;background:0 0;margin-block-end:1.6rem;padding-block:0;position:sticky;inset-block-start:0}.ex-map-hero.is-stuck{border:1px solid color-mix(in srgb, var(--gray-500) 45%, transparent);background:var(--body-background);border-radius:.6rem;padding-block:0;overflow:hidden;box-shadow:0 10px 26px #0000001f}.ex-map-hero.is-stuck .ex-map-card{box-shadow:none;border:0;border-radius:0}.ex-map-card{border:1px solid var(--gray-200);background:var(--gray-100);border-radius:.5rem;transition:border-radius .26s,box-shadow .26s;position:relative;overflow:hidden}.ex-map-viewport{--ex-map-full:21rem;--ex-map-stuck:15rem;block-size:var(--ex-map-full);transition:block-size .3s cubic-bezier(.2,.6,.2,1);position:relative;overflow:hidden}.ex-map-hero.is-stuck .ex-map-viewport{block-size:var(--ex-map-stuck)}.ex-map-canvas{inline-size:100%;block-size:var(--ex-map-full);background:var(--gray-100);transition:transform .3s cubic-bezier(.2,.6,.2,1)}.ex-map-hero.is-stuck .ex-map-canvas{transform:translateY(calc((var(--ex-map-stuck) - var(--ex-map-full)) / 2))}.ex-map-hero.is-resizing .ex-map-viewport,.ex-map-hero.is-resizing .ex-map-canvas{transition:none}.ex-map-badge{z-index:2;background:color-mix(in srgb, var(--body-background) 86%, transparent);max-inline-size:calc(100% - .9rem);color:var(--body-font-color);text-overflow:ellipsis;white-space:nowrap;backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;padding:.14rem .5rem;font-size:.6875rem;line-height:1.5;position:absolute;inset-block-start:.45rem;inset-inline-start:.45rem;overflow:hidden}.ex-map-reset{z-index:2;border:1px solid var(--gray-200);background:color-mix(in srgb, var(--body-background) 86%, transparent);color:var(--gray-700);cursor:pointer;backdrop-filter:blur(6px);border-radius:999px;padding:.14rem .45rem;font-size:.6875rem;line-height:1.5;position:absolute;inset-block-start:.45rem;inset-inline-end:.45rem}.ex-map-reset:hover{color:var(--color-link);border-color:color-mix(in srgb, var(--color-link) 45%, var(--gray-200))}.ex-map-state{z-index:2;background:color-mix(in srgb, var(--body-background) 82%, transparent);max-inline-size:calc(100% - 1.4rem);color:var(--gray-700);text-align:center;text-overflow:ellipsis;white-space:nowrap;backdrop-filter:blur(6px);border-radius:999px;margin:0;padding:.18rem .55rem;font-size:.625rem;line-height:1.5;position:absolute;inset-block-start:2.4rem;inset-inline-start:50%;overflow:hidden;transform:translate(-50%)}.ex-map-state[hidden]{display:none}.ex-sidebar,.ex-stats-stack{flex-direction:column;gap:.85rem;min-inline-size:0;display:flex}.ex-stats-divider{border:0;border-block-start:1px solid var(--gray-200);margin:.1rem 0}.ex-stats-card{background:0 0;border:0;border-radius:.5rem;min-inline-size:0;padding:0}.ex-tabs{background:var(--gray-100);border-radius:.375rem;grid-template-columns:repeat(4,minmax(0,1fr));gap:.1rem;padding:.12rem;display:grid}.ex-tab{appearance:none;color:var(--gray-700);font:inherit;text-align:center;cursor:pointer;background:0 0;border:0;border-radius:.3rem;padding:.26rem 0;font-size:.6875rem;line-height:1.4;transition:background .14s,color .14s}.ex-tab:hover{color:var(--body-font-color)}.ex-tab.is-active{background:var(--body-background);color:var(--body-font-color);font-weight:600;box-shadow:0 1px 2px #00000014}.ex-tab:focus-visible{outline:2px solid var(--color-link);outline-offset:1px}.ex-tab-panel{padding-block-start:.55rem}.ex-map-filter{margin-block-start:.55rem;padding-inline:.55rem}.ex-map-hero.is-stuck .ex-map-filter{border-block-start:1px solid color-mix(in srgb, var(--gray-500) 24%, transparent);background:var(--body-background);margin-block-start:0;padding-block:.42rem .5rem}.ex-map-replay-bar{z-index:3;background:linear-gradient(to top, color-mix(in srgb, var(--body-background) 84%, transparent), transparent);pointer-events:auto;align-items:center;gap:.3rem;padding:.42rem .45rem .38rem;display:flex;position:absolute;inset-block-end:0;inset-inline:0}.ex-map-card.is-replaying .ex-map-info{opacity:0;visibility:hidden}.ex-map-card .ex-map-info{transition:opacity .16s,visibility .16s}.ex-map-replay-control{border:1px solid color-mix(in srgb, var(--body-font-color) 18%, transparent);background:color-mix(in srgb, var(--body-background) 82%, transparent);block-size:1.3rem;inline-size:1.3rem;color:var(--body-font-color);cursor:pointer;backdrop-filter:blur(6px);border-radius:999px;flex:none;place-items:center;padding:0;transition:background .14s,color .14s,border-color .14s;display:grid;box-shadow:0 1px 4px #0000002e}.ex-map-replay-control:hover{border-color:color-mix(in srgb, var(--color-link) 55%, transparent);color:var(--color-link)}.ex-map-replay-control:focus-visible{outline:2px solid var(--color-link);outline-offset:1px}.ex-map-replay-close{color:var(--gray-500)}.ex-map-replay-icon{block-size:.7rem;inline-size:.7rem}.ex-map-replay-range{appearance:none;cursor:pointer;background:0 0;flex:auto;block-size:1.1rem;min-inline-size:0;margin:0;padding:0}.ex-map-replay-range::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--color-link) 0 var(--ex-replay-progress,0%), color-mix(in srgb, var(--body-font-color) 26%, transparent) var(--ex-replay-progress,0%) 100%);border-radius:999px;height:2px}.ex-map-replay-range::-webkit-slider-thumb{appearance:none;border:2px solid var(--color-link);background:var(--body-background);border-radius:50%;width:.7rem;height:.7rem;margin-top:calc(1px - .35rem);box-shadow:0 1px 3px #00000040}.ex-map-replay-range::-moz-range-track{background:linear-gradient(to right, var(--color-link) 0 var(--ex-replay-progress,0%), color-mix(in srgb, var(--body-font-color) 26%, transparent) var(--ex-replay-progress,0%) 100%);border:0;border-radius:999px;height:2px}.ex-map-replay-range::-moz-range-thumb{border:2px solid var(--color-link);background:var(--body-background);border-radius:50%;width:.7rem;height:.7rem;box-shadow:0 1px 3px #00000040}.filter-chips{flex-wrap:wrap;gap:.4rem;min-inline-size:0;display:flex}.filter-chip{border:1px solid var(--gray-200);color:var(--gray-700);font:inherit;cursor:pointer;background:0 0;border-radius:999px;align-items:baseline;gap:.3rem;margin:0;padding:.3rem .7rem;font-size:.75rem;line-height:1.25;text-decoration:none;transition:background-color .14s,border-color .14s,color .14s;display:inline-flex}.filter-chip span{color:var(--gray-500);font-variant-numeric:tabular-nums;font-size:.625rem}.filter-chip:hover{border-color:var(--gray-400);color:var(--body-font-color)}.filter-chip.is-active{border-color:var(--body-font-color);background:var(--body-font-color);color:var(--body-background)}.filter-chip.is-active span{color:color-mix(in srgb, var(--body-background) 65%, transparent)}.ex-timeline [hidden]{display:none!important}.ex-timeline.timeline-list{inline-size:100%;margin-block:.5rem 1.5rem}.ex-timeline .ledger-row{--ledger-row-gap:1.7rem;grid-template-rows:auto auto;grid-template-columns:3rem minmax(0,1fr);align-items:start;gap:0 .55rem;min-inline-size:0;display:grid;position:relative}.ex-timeline .ledger-row+.ledger-row{margin-block-start:var(--ledger-row-gap)}.ex-timeline .ledger-row+.ledger-row:before{content:"";z-index:0;block-size:var(--ledger-row-gap);background:var(--gray-200);pointer-events:none;inline-size:1px;position:absolute;inset-block-start:calc(-1 * var(--ledger-row-gap));inset-inline-start:calc(1.5rem - .5px)}.ex-timeline .ledger-date{z-index:2;color:var(--gray-700);font-variant-numeric:tabular-nums;text-align:center;cursor:pointer;flex-direction:column;grid-area:1/1;justify-self:center;align-items:center;gap:.08rem;padding:0 .1rem .35rem;display:flex;position:relative}.ex-timeline .ledger-date .ledger-year{color:var(--gray-500);font-size:.5625rem;line-height:1.15}.ex-timeline .ledger-date .ledger-date-value{color:var(--body-font-color);letter-spacing:-.01em;font-size:.8125rem;font-weight:600;line-height:1.2}.ex-timeline .ledger-date .ledger-weekday{color:var(--gray-500);font-size:.625rem;line-height:1.2}.ex-timeline .ledger-row.is-active .ledger-date-value{color:var(--color-link)}.ex-timeline .ledger-rail{grid-area:2/1;justify-content:center;align-self:stretch;display:flex;position:relative}.ex-timeline .ledger-rail:before{content:"";z-index:0;background:var(--gray-200);pointer-events:none;inline-size:1px;position:absolute;inset-block:.95rem 0;inset-inline-start:calc(1.5rem - .5px)}.ex-timeline .rail-marker{z-index:1;block-size:.95rem;inline-size:.95rem;color:color-mix(in srgb, #18794e 55%, var(--gray-500));place-items:center;display:grid;position:relative}.ex-timeline .rail-marker:before{content:"";z-index:-1;background:var(--body-background);inline-size:3px;position:absolute;inset-block:0;inset-inline-start:50%;transform:translate(-50%)}.ex-timeline .rail-marker svg{z-index:1;stroke-width:2px;block-size:.78rem;inline-size:.78rem;position:relative;overflow:visible}.ex-timeline .ledger-row.is-active .rail-marker{color:var(--color-link)}.ex-timeline .ledger-body{grid-area:2/2;min-inline-size:0}.ex-timeline .ledger-content{min-inline-size:0}.ex-timeline .strava-cards{grid-template-columns:repeat(auto-fill,minmax(15.5rem,1fr));gap:.8rem;display:grid}.ex-timeline .strava-card{--strava-color:#16a34a;background:color-mix(in srgb, var(--body-background) 92%, var(--strava-color));box-shadow:inset 0 0 0 1px var(--gray-200);cursor:pointer;border-radius:.375rem;padding:.8rem .9rem .85rem;transition:transform .16s,box-shadow .16s;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.ex-timeline .ex-month-row.reveal-ready .ledger-body{opacity:.45;transform:translateY(14px)}.ex-timeline .ex-month-row.reveal-ready.is-visible .ledger-body{opacity:1;transition:opacity .52s ease-out,transform .62s cubic-bezier(.2,.6,.2,1);transform:translateY(0)}}.ex-timeline .strava-card.sport-ride{--strava-color:#2563eb}.ex-timeline .strava-card.sport-walk{--strava-color:#b45309}.ex-timeline .strava-card.sport-hike{--strava-color:#4d7c0f}.ex-timeline .strava-card.sport-climb{--strava-color:#7c3aed}.ex-timeline .strava-card.sport-swim{--strava-color:#0e7490}.ex-timeline .strava-card.sport-other{--strava-color:var(--gray-500)}.ex-timeline .strava-card:hover,.ex-timeline .strava-card:focus-within{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-link) 30%, var(--gray-200)), 0 5px 18px #0000000f;transform:translateY(-1px)}.ex-timeline .strava-card.is-active{box-shadow:inset 0 0 0 1.5px var(--color-link)}.ex-timeline .strava-route{block-size:100%;inline-size:100%;color:var(--strava-color);opacity:.2;pointer-events:none;position:absolute;top:0;bottom:0;right:0;mask-image:linear-gradient(#000 48%,#0000 100%)}.ex-timeline .strava-route path{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round}.ex-timeline .strava-route circle{fill:currentColor}.ex-timeline .strava-content{z-index:1;position:relative}.ex-timeline .strava-title-row{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.ex-timeline .strava-title-row .entry-title{margin:0}.ex-timeline .strava-sport-icon{block-size:.9rem;inline-size:.9rem;color:var(--strava-color);flex:none}.ex-timeline .strava-sport-name{color:var(--strava-color);font-size:.6875rem;font-weight:600}.ex-timeline .strava-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem .9rem;margin-block:.6rem 0;display:grid}.ex-timeline .strava-stats>div{align-items:baseline;gap:.3rem;min-inline-size:0;display:flex}.ex-timeline .strava-stats dt{color:var(--gray-500);white-space:nowrap;font-size:.6875rem}.ex-timeline .strava-stats dd{color:var(--body-font-color);white-space:nowrap;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;font-weight:600}.ex-timeline .strava-stats .is-primary dd{color:var(--strava-color)}@media screen and (width<=22rem){.ex-timeline .strava-stats{column-gap:.35rem}.ex-timeline .strava-stats dd{font-size:.72rem}}.ex-timeline .entry-title{color:var(--body-font-color);letter-spacing:-.01em;margin:0;font-size:1.0625rem;font-weight:600;line-height:1.4}.ex-timeline .entry-title a{color:var(--body-font-color);text-decoration:none}.ex-timeline .entry-title a:hover{color:var(--color-hover-link)}.ex-timeline .ext{color:var(--gray-500);margin-inline-start:.15rem;font-size:.75rem;font-weight:400}.ex-empty{color:var(--gray-500);text-align:center;margin:2rem 0;font-size:.8125rem}@media screen and (width<=60rem){.ex-timeline .strava-cards{grid-template-columns:minmax(0,1fr)}}@media screen and (width<=34rem){.ex-map-filter .filter-chips{scrollbar-width:none;flex-wrap:nowrap;padding-block-end:.2rem;overflow-x:auto}.ex-map-filter .filter-chips::-webkit-scrollbar{display:none}.ex-map-filter .filter-chip{flex:none}}@media screen and (width<=47.84rem){body:has(.exercise-page) .book-menu{z-index:40}body:has(.exercise-page) .book-menu-overlay{z-index:35}.ex-map-viewport{--ex-map-full:13rem;--ex-map-stuck:10rem}.ex-hero{margin-block-end:1.35rem}}@media (prefers-reduced-motion:reduce){.ex-map-hero,.ex-map-viewport,.ex-map-canvas,.ex-map-card,.ex-timeline .strava-card,.ex-tab{transition:none}}.ex-map-canvas{position:relative}.ex-map-canvas.mapboxgl-map{background:var(--gray-100)}.ex-map-canvas .mapboxgl-canvas{outline:none}.ex-map-canvas .mapboxgl-canvas:focus-visible{outline:2px solid var(--color-link);outline-offset:-2px}.ex-map-card .ex-map-reset{border:1px solid color-mix(in srgb, var(--body-font-color) 22%, transparent);background:color-mix(in srgb, var(--body-background) 94%, transparent);min-block-size:1.4rem;color:var(--body-font-color);justify-content:center;align-items:center;padding:.1rem .55rem;font-size:.6875rem;font-weight:600;line-height:1.4;display:inline-flex;box-shadow:0 1px 3px #00000024}.ex-map-card .ex-map-reset:hover{border-color:color-mix(in srgb, var(--color-link) 60%, transparent);color:var(--color-link)}.ex-map-card .ex-map-play{z-index:2;border:1px solid color-mix(in srgb, var(--body-font-color) 20%, transparent);background:color-mix(in srgb, var(--body-background) 88%, transparent);block-size:1.75rem;inline-size:1.75rem;color:var(--body-font-color);cursor:pointer;backdrop-filter:blur(8px)saturate(1.1);border-radius:999px;place-items:center;padding:0;transition:color .14s,border-color .14s,background .14s,transform .14s;display:grid;position:absolute;inset-block-end:.5rem;inset-inline-end:.5rem;box-shadow:0 2px 8px #0000002e}.ex-map-card .ex-map-play:hover{border-color:color-mix(in srgb, var(--color-link) 60%, transparent);color:var(--color-link)}.ex-map-card .ex-map-play:active{transform:scale(.92)}.ex-map-card .ex-map-play:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.ex-map-card .ex-map-play.is-playing{border-color:color-mix(in srgb, var(--color-link) 55%, transparent);background:color-mix(in srgb, var(--color-link) 12%, var(--body-background));color:var(--color-link)}.ex-map-play-icon{block-size:.8rem;inline-size:.8rem}.ex-map-card.is-replaying .mapboxgl-canvas-container{pointer-events:none}.ex-map-card.is-replaying{cursor:default}.ex-map-card .ex-map-badge{font-size:.6563rem;font-weight:500;box-shadow:0 1px 2px #0000000f}@media screen and (width<=47.84rem){.ex-map-card .ex-map-play{inset-block-end:2.55rem}}.ex-map-canvas .mapboxgl-ctrl{margin:.25rem}.ex-map-canvas .mapboxgl-ctrl-group{border-radius:.3rem}.ex-map-canvas .mapboxgl-ctrl-attrib,.ex-map-canvas .mapboxgl-ctrl-attrib a{font-size:.5625rem;line-height:1.4}.ex-map-canvas .mapboxgl-ctrl-logo{margin:0 0 .3rem .3rem}.ex-map-canvas.has-state .mapboxgl-ctrl-bottom-left,.ex-map-canvas.has-state .mapboxgl-ctrl-bottom-right{margin-block-end:1.5rem}.ex-map-info{z-index:2;background:color-mix(in srgb, var(--body-background) 58%, transparent);max-inline-size:15rem;box-shadow:0 2px 12px #00000014, inset 0 0 0 1px color-mix(in srgb, var(--body-background) 42%, transparent);backdrop-filter:blur(8px)saturate(1.08);pointer-events:none;border-radius:.4rem;padding:.35rem .5rem .4rem;position:absolute;inset-block-end:.5rem;inset-inline-start:.5rem}.ex-map-info-top{color:var(--gray-500);justify-content:space-between;gap:.5rem;font-size:.5625rem;display:flex}.ex-map-info-sport{color:var(--color-link);font-weight:600}.ex-map-info-name{color:var(--body-font-color);text-overflow:ellipsis;white-space:nowrap;margin:.1rem 0 .25rem;font-size:.75rem;font-weight:600;line-height:1.3;overflow:hidden}.ex-map-info-stats{gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.ex-map-info-stats li{flex-direction:column;gap:.02rem;display:flex}.ex-map-info-stats b{color:var(--body-font-color);white-space:nowrap;font-size:.625rem;font-weight:600}.ex-map-info-stats span{color:var(--gray-500);font-size:.5rem}@media screen and (width<=47.84rem){.ex-map-info{white-space:nowrap;align-items:baseline;gap:.45rem;max-inline-size:none;padding:.26rem .5rem .3rem;display:flex;inset-block-end:.4rem;inset-inline:.4rem}.ex-map-info-top{display:none}.ex-map-info-name{flex:auto;min-inline-size:0;margin:0;font-size:.6563rem;line-height:1.4}.ex-map-info-stats{flex:none;align-items:baseline;gap:.4rem}.ex-map-info-stats li{flex-direction:row;align-items:baseline;gap:.14rem}.ex-map-info-stats b{font-size:.5938rem}.ex-map-info-stats span{font-size:.5rem}}@media screen and (width<=30rem){.ex-map-info{gap:.35rem;padding-inline:.4rem}.ex-map-info-stats{gap:.3rem}.ex-map-info-stats li+li:before{content:"·";color:var(--gray-500);font-size:.5rem}.ex-map-info-stats span{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}}@media screen and (width<=23.5rem){.ex-map-info-stats b{font-size:.5625rem}}.ex-map-canvas .mapboxgl-ctrl-logo,.ex-map-canvas .mapboxgl-ctrl-attrib,.ex-map-canvas .mapboxgl-touch-pan-blocker{display:none!important}.ex-stats-body{color:var(--body-font-color);font-variant-numeric:tabular-nums;font-size:.75rem;line-height:1.5;container-type:inline-size}.ex-stats-block{flex-direction:column;gap:.42rem;min-inline-size:0;display:flex}.ex-stats-head{justify-content:space-between;align-items:flex-start;gap:.4rem;min-block-size:1.4rem;margin-block-end:.4rem;display:flex}.ex-stats-head-main{flex-direction:column;gap:.02rem;min-inline-size:0;display:flex}.ex-stats-head-title{color:var(--body-font-color);letter-spacing:-.01em;white-space:nowrap;margin:0;font-size:.8125rem;font-weight:600;line-height:1.4}.ex-stats-head-sub{color:var(--gray-500);white-space:nowrap;margin:0;font-size:.625rem;line-height:1.4}.ex-stats-nav{block-size:1.15rem;inline-size:1.15rem;color:var(--gray-500);cursor:pointer;background:0 0;border:0;border-radius:.25rem;justify-content:center;align-items:center;padding:0;transition:background .14s,color .14s;display:flex}.ex-stats-nav:hover{background:var(--gray-100);color:var(--color-link)}.ex-stats-nav:focus-visible{outline:2px solid var(--color-link);outline-offset:1px}.ex-stats-chev{block-size:.8rem;inline-size:.8rem}.ex-stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.32rem .3rem;margin:0;padding:0;display:grid}.ex-stats-grid.is-two{grid-template-columns:repeat(2,minmax(0,1fr))}.ex-stats-grid.is-three{grid-template-columns:repeat(3,minmax(0,1fr))}.ex-stats-cell{min-inline-size:0}.ex-stats-cell-label{color:var(--gray-500);font-size:.625rem;line-height:1.4}.ex-stats-cell-value{color:var(--body-font-color);font-variant-numeric:tabular-nums;white-space:nowrap;margin:.03rem 0 0;font-size:.75rem;font-weight:600;line-height:1.4;overflow:hidden}.ex-stats-grid.is-two .ex-stats-cell-value,.ex-stats-grid.is-three .ex-stats-cell-value{font-size:.8125rem}.ex-stats-cell-unit{color:var(--gray-700);letter-spacing:.01em;margin-inline-start:.14rem;font-size:.625rem;font-weight:500}.ex-stats-cal{grid-template-columns:repeat(7,minmax(0,1fr));gap:.12rem;display:grid}.ex-stats-cal-weekday{color:var(--gray-500);text-align:center;padding-block-end:.1rem;font-size:.5625rem;line-height:1.4}.ex-stats-cal-day{color:var(--gray-700);font:inherit;font-variant-numeric:tabular-nums;background:0 0;border:0;border-radius:0;flex-direction:column;align-items:center;gap:1px;padding:1px 0 0;font-size:.6875rem;line-height:1;display:flex}button.ex-stats-cal-day{color:var(--body-font-color);cursor:pointer}.ex-stats-cal-ring{border-radius:50%;place-items:center;block-size:1.7rem;inline-size:1.7rem;display:grid;position:relative}.ex-stats-cal-day.has-donut .ex-stats-cal-ring{background:var(--ex-donut,var(--gray-100))}.ex-stats-cal-day.has-donut .ex-stats-cal-ring:before{content:"";background:var(--body-background);border-radius:50%;position:absolute;inset:3px}.ex-stats-cal-num{z-index:1;font-size:.625rem;line-height:1;position:relative}.ex-stats-cal-day.has-donut .ex-stats-cal-num{font-weight:600}button.ex-stats-cal-day:hover .ex-stats-cal-ring{box-shadow:0 0 0 1.5px color-mix(in srgb, var(--color-link) 45%, transparent)}.ex-stats-cal-day.is-today .ex-stats-cal-ring{box-shadow:inset 0 0 0 1px var(--gray-500)}.ex-stats-cal-day.is-selected .ex-stats-cal-ring,.ex-stats-cal-day.is-selected:hover .ex-stats-cal-ring{box-shadow:0 0 0 1.5px var(--color-link)}.ex-stats-cal-day:focus-visible{outline:2px solid var(--color-link);outline-offset:1px}.ex-stats-cal-day.is-out{color:var(--gray-500);opacity:.4}.ex-stats-summary{color:var(--gray-700);font-variant-numeric:tabular-nums;text-align:center;margin:.5rem 0 0;font-size:.6875rem;line-height:1.5}.ex-stats-strong{color:var(--body-font-color);font-weight:600}.ex-stats-sep{color:var(--gray-500);margin-inline:.28rem}.ex-stats-empty{color:var(--gray-500);margin:.1rem 0;font-size:.6875rem;line-height:1.6}.ex-stats-section{color:var(--gray-500);letter-spacing:.04em;margin:.06rem 0 -.16rem;font-size:.625rem;line-height:1.4}.ex-stats-more{color:var(--gray-500);margin:-.14rem 0 0;font-size:.625rem;line-height:1.4}.ex-stats-bars{grid-template-columns:repeat(7,minmax(0,1fr));gap:.14rem;margin-block-start:.1rem;display:grid}.ex-stats-bars.is-year{grid-template-columns:repeat(12,minmax(0,1fr));gap:.1rem}.ex-stats-bar-col{min-inline-size:0;color:var(--gray-500);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:.18rem;padding:0;display:flex}.ex-stats-bar-col:disabled{cursor:default}.ex-stats-bar-track{border-bottom:1px solid var(--gray-200);justify-content:center;align-items:flex-end;block-size:2.6rem;display:flex}.ex-stats-bars.is-year .ex-stats-bar-track{block-size:3rem}.ex-stats-bar{background:color-mix(in srgb, var(--color-link) 55%, var(--gray-200));border-radius:2px 2px 0 0;inline-size:58%;min-inline-size:3px;transition:background .14s;display:block}.ex-stats-bar-col:disabled .ex-stats-bar{display:none}.ex-stats-bar-col:not(:disabled):hover .ex-stats-bar,.ex-stats-bar-col.is-selected .ex-stats-bar{background:var(--color-link)}.ex-stats-bars.is-year .ex-stats-bar{inline-size:62%}.ex-stats-bar-label{color:var(--gray-500);text-align:center;font-size:.5625rem;line-height:1.3}.ex-stats-bars.is-year .ex-stats-bar-label{font-size:.5rem}.ex-stats-bar-col.is-today .ex-stats-bar-label{color:var(--body-font-color);font-weight:600}.ex-stats-bar-col.is-selected .ex-stats-bar-label{color:var(--color-link);font-weight:600}.ex-stats-bar-col:focus-visible{outline:2px solid var(--color-link);outline-offset:1px;border-radius:.2rem}.ex-stats-sports{flex-direction:column;gap:.34rem;margin:0;padding:0;list-style:none;display:flex}.ex-stats-sport{min-inline-size:0}.ex-stats-sport-head{align-items:baseline;gap:.3rem;min-inline-size:0;display:flex}.ex-stats-sport-dot,.ex-stats-item-dot,.ex-stats-line-dot{background:var(--ex-sport-color,var(--gray-500));border-radius:50%;flex:none;align-self:center;block-size:.4rem;inline-size:.4rem}.ex-stats-sport-name{color:var(--body-font-color);font-size:.6875rem}.ex-stats-sport-count{color:var(--gray-500);font-size:.625rem}.ex-stats-sport-value{color:var(--body-font-color);white-space:nowrap;margin-inline-start:auto;font-size:.6875rem;font-weight:600}.ex-stats-sport-share{min-inline-size:1.9rem;color:var(--gray-500);text-align:end;font-size:.625rem}.ex-stats-sport-track{background:var(--gray-100);border-radius:999px;block-size:.1875rem;margin-block-start:.18rem;display:block;overflow:hidden}.ex-stats-sport-fill{border-radius:inherit;background:color-mix(in srgb, var(--ex-sport-color) 76%, transparent);block-size:100%;display:block}.ex-stats-sports.is-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:.22rem .6rem;display:grid}.ex-stats-sports.is-compact .ex-stats-sport-head{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"dot name value""dot count share";align-items:baseline;gap:0 .24rem;display:grid}.ex-stats-sports.is-compact .ex-stats-sport-dot{grid-area:dot;align-self:center}.ex-stats-sports.is-compact .ex-stats-sport-name{text-overflow:ellipsis;white-space:nowrap;grid-area:name;font-size:.625rem;overflow:hidden}.ex-stats-sports.is-compact .ex-stats-sport-count{grid-area:count;font-size:.5625rem}.ex-stats-sports.is-compact .ex-stats-sport-value{grid-area:value;font-size:.625rem}.ex-stats-sports.is-compact .ex-stats-sport-share{grid-area:share;min-inline-size:0;font-size:.5625rem}.ex-stats-marks.is-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:.12rem .5rem;display:grid}.ex-stats-marks.is-compact .ex-stats-line{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"dot label value""dot date date";gap:.02rem .28rem;min-inline-size:0;display:grid}.ex-stats-marks.is-compact .ex-stats-line-dot{grid-area:dot;align-self:center}.ex-stats-marks.is-compact .ex-stats-line-label{text-overflow:ellipsis;white-space:nowrap;grid-area:label;overflow:hidden}.ex-stats-marks.is-compact .ex-stats-line-value{grid-area:value}.ex-stats-marks.is-compact .ex-stats-line-date{text-align:end;grid-area:date}.ex-stats-filter{border-block-start:1px solid var(--gray-200);margin-block-start:.55rem;padding-block-start:.55rem}.ex-stats-card--calendar .ex-tab-panel{padding-block-start:.45rem}.ex-stats-weeks{flex-direction:column;gap:.02rem;margin:0;padding:0;list-style:none;display:flex}.ex-stats-week{inline-size:100%;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;border-radius:.25rem;grid-template-columns:2.1rem minmax(0,1fr) auto;align-items:center;gap:.4rem;padding:.2rem .25rem;transition:background .14s;display:grid}.ex-stats-week:disabled{cursor:default}.ex-stats-week:not(:disabled):hover{background:var(--gray-100)}.ex-stats-week.is-active{background:color-mix(in srgb, var(--color-link) 9%, transparent);box-shadow:inset 2px 0 0 var(--color-link)}.ex-stats-week:focus-visible{outline:2px solid var(--color-link);outline-offset:-1px}.ex-stats-week-label{color:var(--gray-700);font-variant-numeric:tabular-nums;font-size:.625rem}.ex-stats-week-track{background:var(--gray-100);border-radius:999px;block-size:.1875rem;display:block;overflow:hidden}.ex-stats-week-fill{border-radius:inherit;background:color-mix(in srgb, var(--color-link) 62%, transparent);block-size:100%;display:block}.ex-stats-week-value{color:var(--body-font-color);font-variant-numeric:tabular-nums;text-align:end;white-space:nowrap;font-size:.625rem;font-weight:600}.ex-stats-week:disabled .ex-stats-week-value{color:var(--gray-500);font-weight:400}.ex-stats-best{border:1px solid var(--gray-200);inline-size:100%;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border-radius:.375rem;flex-direction:column;gap:.08rem;padding:.28rem .35rem;transition:background .14s,border-color .14s;display:flex}.ex-stats-best:hover{border-color:color-mix(in srgb, var(--color-link) 45%, var(--gray-200));background:var(--gray-100)}.ex-stats-best:focus-visible{outline:2px solid var(--color-link);outline-offset:1px}.ex-stats-best-head{align-items:baseline;gap:.35rem;min-inline-size:0;display:flex}.ex-stats-best-label{color:var(--gray-500);font-size:.625rem}.ex-stats-best-value{color:var(--body-font-color);font-variant-numeric:tabular-nums;white-space:nowrap;margin-inline-start:auto;font-size:.75rem;font-weight:600}.ex-stats-best-date{color:var(--gray-500);font-variant-numeric:tabular-nums;font-size:.625rem}.ex-stats-best-name{color:var(--body-font-color);text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;line-height:1.4;overflow:hidden}.ex-stats-list,.ex-stats-marks{flex-direction:column;gap:.02rem;margin:0;padding:0;list-style:none;display:flex}.ex-stats-item{inline-size:100%;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;border-radius:.25rem;grid-template-columns:auto 2.3rem minmax(0,1fr) auto;align-items:center;gap:.3rem;padding:.22rem .25rem;transition:background .14s;display:grid}.ex-stats-item:hover{background:var(--gray-100)}.ex-stats-item.is-active{background:color-mix(in srgb, var(--color-link) 9%, transparent);box-shadow:inset 2px 0 0 var(--color-link)}.ex-stats-item:focus-visible{outline:2px solid var(--color-link);outline-offset:-1px}.ex-stats-item-when{color:var(--gray-500);font-variant-numeric:tabular-nums;font-size:.625rem}.ex-stats-item-name{color:var(--body-font-color);text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;overflow:hidden}.ex-stats-item-value{color:var(--body-font-color);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.6875rem;font-weight:600}.ex-stats-line{inline-size:100%;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;border-radius:.25rem;grid-template-columns:auto 3.7rem minmax(0,1fr) auto;align-items:center;gap:.32rem;padding:.22rem .25rem;transition:background .14s;display:grid}.ex-stats-line:hover{background:var(--gray-100)}.ex-stats-line.is-active{background:color-mix(in srgb, var(--color-link) 9%, transparent);box-shadow:inset 2px 0 0 var(--color-link)}.ex-stats-line:focus-visible{outline:2px solid var(--color-link);outline-offset:-1px}.ex-stats-line-label{color:var(--gray-700);font-size:.625rem}.ex-stats-line-value{color:var(--body-font-color);font-variant-numeric:tabular-nums;text-align:end;text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;font-weight:600;overflow:hidden}.ex-stats-line-date{color:var(--gray-500);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.625rem}@container (width<=265px){.ex-stats-sports.is-compact,.ex-stats-marks.is-compact{grid-template-columns:minmax(0,1fr)}.ex-stats-grid:not(.is-two){grid-template-columns:repeat(2,minmax(0,1fr))}.ex-stats-week{grid-template-columns:1.9rem minmax(0,1fr) auto;gap:.3rem}.ex-stats-item{grid-template-columns:auto 2rem minmax(0,1fr) auto;gap:.25rem}.ex-stats-cal-day{block-size:1.55rem}}.ex-cal-body{padding:0;animation:.24s ex-cal-in}@keyframes ex-cal-in{0%{opacity:.35;transform:translateY(2px)}to{opacity:1;transform:none}}.ex-stats-card--calendar .ex-stats-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.25rem;display:grid}.ex-stats-card--calendar .ex-stats-head-title{grid-column:2;justify-self:center}.ex-stats-card--calendar .ex-cal-nav{justify-self:start;block-size:1.4rem;inline-size:1.4rem}.ex-stats-card--calendar .ex-cal-nav:last-child{justify-self:end}.ex-ov{flex-direction:column;min-inline-size:0;display:flex}.ex-ov-head{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.ex-ov-title{color:var(--body-font-color);letter-spacing:-.01em;margin:0;font-size:.8125rem;font-weight:600}.ex-ov-range{color:var(--gray-500);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.5625rem}.ex-ov-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem .5rem;margin:.6rem 0 0;display:grid}.ex-ov-metric{min-inline-size:0}.ex-ov-metric dt{color:var(--gray-500);white-space:nowrap;font-size:.625rem;line-height:1.3}.ex-ov-metric dd{color:var(--body-font-color);font-variant-numeric:tabular-nums;white-space:nowrap;margin:.08rem 0 0;font-size:.8125rem;font-weight:600;line-height:1.2}.ex-ov-metric dd small{color:var(--gray-700);margin-inline-start:.1rem;font-size:.5625rem;font-weight:500}@container (width<=265px){.ex-ov-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}.ex-ov-section{border-block-start:1px solid var(--gray-100);color:var(--gray-500);letter-spacing:.08em;text-transform:uppercase;margin:.7rem 0 .3rem;padding-block-start:.5rem;font-size:.5625rem}.ex-ov-share{background:var(--gray-100);border-radius:999px;block-size:.3rem;display:flex;overflow:hidden}.ex-ov-share span{block-size:100%;min-inline-size:2px}.ex-ov-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:.18rem .55rem;margin:.4rem 0 0;padding:0;list-style:none;display:grid}.ex-ov-legend li{align-items:baseline;gap:.22rem;min-inline-size:0;font-size:.625rem;display:flex}.ex-ov-legend i{background:var(--c,var(--gray-500));border-radius:50%;flex:none;align-self:center;block-size:.36rem;inline-size:.36rem}.ex-ov-legend span{color:var(--gray-700);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ex-ov-legend b{color:var(--body-font-color);white-space:nowrap;font-weight:600}.ex-ov-legend em{color:var(--gray-500);white-space:nowrap;margin-inline-start:auto;font-style:normal}.ex-ov-records{grid-template-columns:minmax(0,1fr);gap:.12rem;margin-inline:-.32rem;display:grid}.ex-ov-record{color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;border-radius:.25rem;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:baseline;gap:.3rem;padding:.26rem .32rem;transition:background .14s,box-shadow .14s;display:grid}.ex-ov-record:hover{background:var(--gray-100)}.ex-ov-record.is-active{background:color-mix(in srgb, var(--color-link) 8%, transparent);box-shadow:inset 0 0 0 1px var(--color-link)}.ex-ov-record-icon{block-size:.75rem;inline-size:.75rem;color:var(--gray-500);flex:none;align-self:center;transition:color .14s}.ex-ov-record:hover .ex-ov-record-icon,.ex-ov-record.is-active .ex-ov-record-icon{color:var(--color-link)}.ex-ov-record-label{color:var(--gray-500);text-overflow:ellipsis;white-space:nowrap;font-size:.625rem;overflow:hidden}.ex-ov-record-value{color:var(--body-font-color);text-align:end;white-space:nowrap;font-size:.6875rem;font-weight:600}.ex-ov-record-date{color:var(--gray-500);white-space:nowrap;grid-column:4;font-size:.5625rem}@container (width>=24rem){.ex-ov-records{grid-template-columns:repeat(2,minmax(0,1fr));gap:.12rem .9rem}}.ex-cal-head{align-items:baseline;gap:.2rem;display:flex}.ex-cal-head-part{color:inherit;font:inherit;cursor:help;text-decoration:underline dotted color-mix(in srgb, var(--gray-500) 40%, transparent);text-underline-offset:.18rem;background:0 0;border:0;padding:0}.ex-cal-head-part:hover{color:var(--color-link)}.tippy-box.ex-cal-tip-box .tippy-content{padding:0}.ex-cal-tip{font-variant-numeric:tabular-nums;border-radius:calc(.7rem - 1px);flex-direction:column;min-inline-size:13.5rem;font-size:.6875rem;line-height:1.5;display:flex;overflow:hidden}.ex-cal-tip-head{background:linear-gradient(180deg, color-mix(in srgb, var(--gray-100) 90%, transparent), color-mix(in srgb, var(--gray-100) 28%, transparent));border-block-end:1px solid color-mix(in srgb, var(--gray-500) 24%, transparent);flex-direction:column;gap:.08rem;padding:.52rem .68rem .48rem;display:flex}.ex-cal-tip-title{color:var(--body-font-color);letter-spacing:-.01em;font-size:.7813rem;font-weight:650;line-height:1.35}.ex-cal-tip-sub{color:var(--gray-700);font-size:.625rem;line-height:1.45}.ex-cal-tip-body{flex-direction:column;gap:.52rem;padding:.55rem .68rem .62rem;display:flex}.ex-cal-tip-body:empty{display:none}.ex-cal-tip-grid{background:color-mix(in srgb, var(--gray-500) 24%, transparent);border-radius:.4rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.ex-cal-tip-grid span{background:color-mix(in srgb, var(--body-background) 86%, var(--gray-100));flex-direction:column;gap:.02rem;padding:.3rem .42rem;display:flex}.ex-cal-tip-grid em{color:var(--gray-500);font-size:.5625rem;font-style:normal;line-height:1.3}.ex-cal-tip-grid b{color:var(--body-font-color);white-space:nowrap;font-size:.75rem;font-weight:650;line-height:1.25}.ex-cal-tip-section{color:var(--gray-500);letter-spacing:.07em;align-items:center;gap:.4rem;margin:0;font-size:.5625rem;font-weight:600;line-height:1.4;display:flex}.ex-cal-tip-section:after{content:"";background:color-mix(in srgb, var(--gray-500) 26%, transparent);flex:1;block-size:1px}.ex-cal-tip-list{flex-direction:column;margin:-.08rem 0 0;padding:0;list-style:none;display:flex}.ex-cal-tip-list li{border-block-start:1px solid color-mix(in srgb, var(--gray-500) 18%, transparent);align-items:baseline;gap:.32rem;min-inline-size:0;padding:.24rem .12rem;font-size:.625rem;display:flex}.ex-cal-tip-list li:first-child{border-block-start:0}.ex-cal-tip .is-clickable{cursor:pointer;border-radius:.25rem;transition:background .12s}.ex-cal-tip .is-clickable:hover{background:color-mix(in srgb, var(--gray-100) 85%, transparent)}.ex-cal-tip-list i{background:var(--c,var(--gray-500));border-radius:50%;flex:none;align-self:center;block-size:.4rem;inline-size:.4rem}.ex-cal-tip-list span{color:var(--gray-700);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.ex-cal-tip-list em{color:var(--gray-500);flex:none;font-style:normal}.ex-cal-tip-list b{color:var(--body-font-color);white-space:nowrap;flex:none;font-weight:600}.ex-cal-tip-months{grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.ex-cal-tip-months li{background:color-mix(in srgb, var(--gray-100) 55%, transparent);border-radius:.32rem;flex-direction:column;gap:.02rem;padding:.26rem .34rem;font-size:.625rem;display:flex}.ex-cal-tip-months em{color:var(--gray-500);font-size:.5625rem;font-style:normal}.ex-cal-tip-months b{color:var(--body-font-color);white-space:nowrap;font-weight:600}.ex-cal-tip-record{background:color-mix(in srgb, var(--gray-100) 55%, transparent);color:var(--gray-700);border-radius:.32rem;justify-content:space-between;align-items:baseline;gap:.5rem;margin-block-start:-.08rem;padding:.3rem .38rem;font-size:.625rem;display:flex}.ex-cal-tip-record b{color:var(--body-font-color);white-space:nowrap;font-weight:600}@media (prefers-reduced-motion:reduce){.ex-stats-nav,.ex-stats-cal-day,.ex-stats-bar,.ex-stats-week,.ex-stats-best,.ex-stats-item,.ex-stats-line{transition:none}}
