body.page-page,body.page-section{min-height:100vh;display:flex;flex-direction:column}.site-header,.site-footer{max-width:var(--term-max);width:100%;margin:0 auto;padding:1.25rem clamp(1rem,4vw,2.25rem);font-size:13px;letter-spacing:.04em;color:var(--term-muted)}.site-header{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--term-rule);gap:1rem;flex-wrap:wrap}.site-header::before{content:"─ "}.site-name{font-family:var(--term-mono);color:var(--term-fg);text-decoration:none;border-bottom:none}.site-name:hover{color:var(--term-prompt)}.site-name:hover{color:var(--term-prompt)}.site-nav{display:flex;align-items:baseline;gap:.55rem;flex-wrap:wrap}.site-nav a{border-bottom:1px dotted transparent;color:var(--term-fg)}.site-nav a:hover{color:var(--term-prompt);border-bottom-color:var(--term-prompt)}.site-nav a{animation:nav-in 480ms cubic-bezier(.22,1,.36,1)both}.site-nav a:nth-child(1){animation-delay:60ms}.site-nav a:nth-child(2){animation-delay:140ms}.site-nav a:nth-child(3){animation-delay:220ms}.site-nav a:nth-child(4){animation-delay:300ms}@keyframes nav-in{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.site-nav a{animation:none}}.site-main{flex:1;max-width:var(--term-max);width:100%;margin:0 auto;padding:2rem clamp(1rem,4vw,2.25rem)4rem}.site-footer{border-top:1px solid var(--term-rule);text-align:center}.page__head{margin-bottom:2.5rem}.page__title{font-family:var(--term-serif);font-weight:500;font-size:clamp(2.4rem,7vw,3rem);line-height:1.08;letter-spacing:-.01em;color:var(--term-fg);margin:0 0 1.25rem;position:relative;display:inline-block}.page__title::after{content:"";position:absolute;left:0;bottom:-.4rem;width:3rem;border-top:1px solid var(--term-prompt)}.page__desc{color:var(--term-muted);font-size:16px;margin:0;max-width:56ch}.page__lead{font-family:var(--term-serif);font-size:1.15rem;line-height:1.65;color:var(--term-fg);margin:.8rem 0 0}.page__epigraph{margin:1.6rem 0 0;padding:0;border:none;color:var(--term-soft);font-family:var(--term-serif);font-style:italic;font-size:1.05rem;line-height:1.45;max-width:56ch}.page__epigraph p{margin:0}.page__epigraph p::before{content:"❝ ";color:var(--term-prompt);font-style:normal}.page__epigraph p::after{content:" ❞";color:var(--term-prompt);font-style:normal}.page__epigraph cite{display:block;font-style:normal;font-family:var(--term-mono);font-size:11px;color:var(--term-muted);letter-spacing:.04em;margin-top:.35rem}.prose{font-family:var(--term-serif);font-size:19px;line-height:1.7;color:var(--term-fg)}.prose h2{font-family:var(--term-mono);font-weight:500;font-size:.95rem;text-transform:lowercase;letter-spacing:.08em;color:var(--term-prompt);margin:2.4rem 0 .9rem;padding-bottom:.35rem;border-bottom:1px solid var(--term-rule)}.prose h2::before{content:"» ";color:var(--term-muted)}.prose h3{font-family:var(--term-mono);font-weight:400;font-size:.85rem;text-transform:lowercase;letter-spacing:.06em;color:var(--term-muted);margin:1.8rem 0 .5rem}.prose p{margin:0 0 1rem;max-width:64ch}.prose strong{color:var(--term-fg);font-weight:600}.prose em{color:var(--term-soft);font-style:italic;font-family:var(--term-serif)}.prose ul,.prose ol{margin:0 0 1.2rem;padding-left:1.2rem;max-width:64ch}.prose ul{list-style:none;padding-left:0}.prose ul li{position:relative;padding-left:1.2rem;margin-bottom:.2rem}.prose ul li::before{content:"·";position:absolute;left:0;color:var(--term-prompt)}.prose ol{padding-left:1.5rem}.prose ol li{margin-bottom:.2rem}.prose ol li::marker{color:var(--term-muted)}.prose code{font-family:var(--term-mono);font-size:.92em;background:rgba(216,207,189,6%);padding:.1em .35em;border-radius:2px;color:var(--term-prompt)}.prose pre{background:rgba(216,207,189,4%);border:1px solid var(--term-rule);padding:1rem;overflow-x:auto;margin:0 0 1.2rem;font-size:13px;line-height:1.5}.prose pre code{background:0 0;padding:0;color:var(--term-fg)}.prose hr{border:none;border-top:1px solid var(--term-rule);margin:2.5rem 0}.prose blockquote{margin:1.2rem 0;padding:.2rem 0 .2rem 1rem;border-left:2px solid var(--term-prompt);color:var(--term-soft);font-family:var(--term-serif);font-style:italic;font-size:1rem;max-width:60ch}.prose table{border-collapse:collapse;margin:0 0 1.5rem;width:100%;max-width:64ch;font-size:14px}.prose table th,.prose table td{text-align:left;padding:.45rem .9rem .45rem 0;border-bottom:1px solid var(--term-rule)}.prose table th{font-weight:400;color:var(--term-muted);letter-spacing:.06em;text-transform:lowercase;font-size:11px}.prose table td:last-child,.prose table th:last-child{padding-right:0}.stats{margin:0 0 1.8rem}.stats__title{font-family:var(--term-mono);font-weight:500;font-size:1.15rem;text-transform:lowercase;letter-spacing:.08em;color:var(--term-prompt);margin:0 0 1.2rem;padding-bottom:.35rem;border-bottom:1px solid var(--term-rule)}.stats__title::before{content:"» ";color:var(--term-muted)}.ledger{font-family:var(--term-mono);margin:0}.ledger__row{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;column-gap:.7rem;padding:.18rem 0;font-size:.9rem}.ledger__k{color:var(--term-muted);text-transform:lowercase;letter-spacing:.06em;font-size:.8rem}.ledger__dots{border-bottom:1px dotted rgba(216,207,189,.18);transform:translateY(-.28em)}.ledger__v{color:var(--term-fg);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.ledger__v u{color:var(--term-muted);text-decoration:none;font-weight:400;font-size:.8em;margin-left:.25em}.ledger__v--big{color:var(--term-prompt);font-size:1.25rem;text-shadow:0 0 30px rgba(201,165,90,.16)}.years{margin:0 0 1.8rem}.years__title{font-family:var(--term-mono);font-weight:500;font-size:1.15rem;text-transform:lowercase;letter-spacing:.08em;color:var(--term-prompt);margin:0 0 1.2rem;padding-bottom:.35rem;border-bottom:1px solid var(--term-rule);display:flex;align-items:baseline;gap:.5rem}.years__title::before{content:"» ";color:var(--term-muted)}.years__cols{display:grid;grid-template-columns:2.4rem 1fr 2.4rem;gap:.6rem;margin-bottom:.3rem}.years__unit{grid-column:3;text-align:right;font-family:var(--term-sans);font-size:11px;letter-spacing:.04em;color:var(--term-muted)}.years__list{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}.year{display:grid;grid-template-columns:2.4rem 1fr 2.4rem;align-items:center;gap:.6rem}.year__label{font-family:var(--term-mono);font-size:11px;color:var(--term-muted);font-variant-numeric:tabular-nums}.year__track{height:.4rem;background:rgba(216,207,189,5%);border-radius:2px;overflow:hidden}.year__bar{display:block;height:100%;width:max(var(--w),2px);background:linear-gradient(to right,rgba(201,165,90,.55),var(--term-prompt));border-radius:2px;transform-origin:left;animation:year-grow 700ms cubic-bezier(.22,1,.36,1)both}@keyframes year-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){.year__bar{animation:none}}.year__km{font-family:var(--term-mono);font-size:11px;font-weight:600;color:var(--term-muted);text-align:right;font-variant-numeric:tabular-nums}.week{margin:0 0 1.8rem}.week__head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:0 0 1.1rem;padding-bottom:.35rem;border-bottom:1px solid var(--term-rule)}.week__title{font-family:var(--term-mono);font-weight:500;font-size:1.15rem;text-transform:lowercase;letter-spacing:.08em;color:var(--term-prompt);margin:0 0 1.2rem;padding-bottom:.35rem;border-bottom:1px solid var(--term-rule)}.week__title::before{content:"» ";color:var(--term-muted)}.week__sum{font-family:var(--term-sans);font-size:15px;color:var(--term-muted);margin:0 0 1rem;letter-spacing:.01em}.week__sum b{color:var(--term-fg);font-weight:600}.week__bars{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.week__day{display:flex;flex-direction:column;align-items:center;gap:.45rem;min-width:0}.week__track{height:76px;width:100%;display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid var(--term-rule)}.week__bar{width:100%;max-width:26px;height:2px;background:var(--term-muted);opacity:.4;border-radius:1px 1px 0 0}.week__day.is-run .week__bar{height:max(var(--h),6px);opacity:1;background:linear-gradient(to top,var(--term-prompt),rgba(201,165,90,.55));box-shadow:0 0 14px rgba(201,165,90,.25);transform-origin:bottom;animation:week-grow 620ms cubic-bezier(.22,1,.36,1)both}.week__day:nth-child(1) .week__bar{animation-delay:40ms}.week__day:nth-child(2) .week__bar{animation-delay:90ms}.week__day:nth-child(3) .week__bar{animation-delay:140ms}.week__day:nth-child(4) .week__bar{animation-delay:190ms}.week__day:nth-child(5) .week__bar{animation-delay:240ms}.week__day:nth-child(6) .week__bar{animation-delay:290ms}.week__day:nth-child(7) .week__bar{animation-delay:340ms}@keyframes week-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}@media(prefers-reduced-motion:reduce){.week__day.is-run .week__bar{animation:none}}.week__km{font-family:var(--term-mono);font-size:13px;color:var(--term-muted);letter-spacing:0}.week__day.is-run .week__km{color:var(--term-prompt);font-weight:500}.week__dow{font-family:var(--term-sans);font-size:13px;font-weight:500;letter-spacing:.02em;text-transform:lowercase;color:var(--term-muted)}.next-races{margin:0 0 1.8rem}.next-races__title{font-family:var(--term-mono);font-weight:500;font-size:1.15rem;text-transform:lowercase;letter-spacing:.08em;color:var(--term-prompt);margin:0 0 1.2rem;padding-bottom:.35rem;border-bottom:1px solid var(--term-rule)}.next-races__title::before{content:"» ";color:var(--term-muted)}.next-races .race-countdown{margin:0 0 1.6rem}.next-races .race-countdown:last-child{margin-bottom:0}.race-countdown{margin:1.8rem 0 2rem;padding:.95rem 0 0;border:none;border-top:1px solid var(--term-prompt);background:0 0;display:grid;grid-template-columns:1fr auto;gap:.3rem 1.5rem;align-items:baseline;transition:border-color 200ms ease}.race-countdown:hover{border-top-color:var(--term-cursor)}.race-countdown__title{grid-column:1;font-family:var(--term-mono);font-size:14px;letter-spacing:.08em;text-transform:lowercase;color:var(--term-prompt);margin:0;font-weight:400}.race-countdown__name{grid-column:1;margin:0;font-family:var(--term-sans);font-weight:500;color:var(--term-fg);font-size:20px}.race-countdown__date{grid-column:1;margin:0;font-family:var(--term-sans);font-size:16px;color:var(--term-muted)}.race-countdown__days{grid-column:2;grid-row:1/span 3;margin:0;font-family:var(--term-mono);font-size:clamp(1.3rem,3.5vw,1.7rem);font-weight:500;color:var(--term-cursor);white-space:nowrap;align-self:center}.races{margin:0 0 1.8rem}.races__title{font-family:var(--term-mono);font-weight:500;font-size:1.15rem;text-transform:lowercase;letter-spacing:.08em;color:var(--term-prompt);margin:0 0 1.2rem;padding-bottom:.35rem;border-bottom:1px solid var(--term-rule)}.races__title::before{content:"» ";color:var(--term-muted)}.sec__summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:.5rem}.sec__summary::-webkit-details-marker{display:none}.sec__summary::after{content:"▸";margin-left:auto;align-self:center;font-size:.8em;color:var(--term-muted)}.sec[open]>.sec__summary::after{content:"▾"}.sec[open]>.sec__summary{margin-bottom:.6rem}.sec:not([open])>.sec__summary{margin-bottom:0;padding-bottom:.35rem}.races__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1.1rem}.race{border-left:2px solid var(--term-muted);padding:.2rem 0 .4rem 1rem;background:0 0;transition:border-color 200ms ease}.race:hover{border-left-color:var(--term-soft)}.race--marathon{border-left-color:var(--term-cursor)}.race--trail{border-left-color:var(--term-soft)}.race--road{border-left-color:var(--term-muted)}.race__head{display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap;margin-bottom:.3rem}.race__strava{display:inline-flex;align-items:center;border-bottom:none;line-height:0;color:var(--term-muted);position:relative}.race__strava::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%)translateY(3px);background:var(--term-fg);color:var(--term-bg);font-family:var(--term-mono);font-size:11px;letter-spacing:.02em;line-height:1;white-space:nowrap;padding:.3rem .5rem;border-radius:3px;opacity:0;pointer-events:none;transition:opacity 140ms ease,transform 140ms ease;z-index:5}.race__strava:hover::after,.race__strava:focus-visible::after{opacity:1;transform:translateX(-50%)translateY(0)}.race--marathon .race__strava{color:var(--term-cursor)}.race--trail .race__strava{color:var(--term-soft)}.race--road .race__strava{color:var(--term-muted)}.strava-mark{width:15px;height:15px;fill:currentColor;opacity:.8;transition:opacity 150ms ease,transform 150ms ease}.race__strava:hover .strava-mark{opacity:1;transform:scale(1.12)}.race__date{font-family:var(--term-sans);font-size:15px;color:var(--term-muted);letter-spacing:.01em;white-space:nowrap}.race__name{font-family:var(--term-serif);font-style:italic;font-size:21px;color:var(--term-fg);flex:1;min-width:0}.race__badge{font-family:var(--term-sans);font-size:13px;font-weight:500;letter-spacing:.02em;text-transform:lowercase;padding:.1rem .45rem;border:1px solid;border-radius:2px;white-space:nowrap}.race--marathon .race__badge{color:var(--term-cursor)}.race--trail .race__badge{color:var(--term-soft)}.race--road .race__badge{color:var(--term-muted)}.race__meta{list-style:none;padding:0;margin:0 0 .35rem;display:flex;flex-wrap:wrap;gap:.15rem 1rem;font-family:var(--term-sans);font-size:17px;color:var(--term-fg)}.race__meta li::before{content:"· ";color:var(--term-muted);margin-right:.15rem}.race__meta li:first-child::before{content:"";margin:0}.race__km{color:var(--term-prompt);font-weight:500}.race__time{color:var(--term-fg)}.race__pace{color:var(--term-muted)}.race__elev{color:var(--term-muted)}.race__notes{font-family:var(--term-serif);font-style:italic;font-size:17px;color:var(--term-soft);margin:.15rem 0 0;max-width:62ch;line-height:1.5}.page__meta{font-family:var(--term-sans);font-size:14px;letter-spacing:.01em;color:var(--term-muted);margin:0 0 .6rem;text-transform:lowercase}.page__foot{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--term-rule)}.page__back{font-family:var(--term-mono);font-size:12px;color:var(--term-muted);border-bottom:1px dotted transparent;letter-spacing:.04em}.page__back:hover{color:var(--term-prompt);border-bottom-color:var(--term-prompt)}