:root{--bg: #f7f8fa;--surface: #ffffff;--text: #1c2430;--muted: #5d6b7c;--border: #d9dee5;--accent: #2f5d8a;--on-accent: #ffffff;--tier-1: #7a9cc6;--tier-2: #4f9e93;--tier-3: #b89a1f;--tier-4: #d06a26;--tier-5: #b83a2e;--radius: 8px;--tap: 44px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme: dark){:root{--bg: #12171d;--surface: #1a212a;--text: #e6eaf0;--muted: #93a1b3;--border: #2b3542;--accent: #7fb0e0;--on-accent: #12171d;--tier-1: #8fb0d8;--tier-2: #62b3a7;--tier-3: #d1b33a;--tier-4: #e58443;--tier-5: #e05a4c}}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0}body{background:var(--bg);color:var(--text);min-height:100vh;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;gap:10px;padding:16px 16px 8px}.app-logo{display:block;width:auto;height:36px}.app-title{margin:0;font-size:1.5rem;font-weight:650;letter-spacing:-.01em}.app-main{flex:1;padding:8px 16px 24px}.app-footer{padding:12px 16px 20px;color:var(--muted);font-size:.875rem;border-top:1px solid var(--border)}.app-footer p{margin:0;max-width:60ch}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent)}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.btn{min-height:var(--tap);min-width:var(--tap);padding:0 20px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;cursor:pointer}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.dropzone{max-width:640px;margin:8px auto 0;padding:32px 16px;border:2px dashed var(--border);border-radius:var(--radius);background:var(--surface);text-align:center}.dropzone--active{border-color:var(--accent)}.dropzone__heading{margin:0 0 8px;font-size:1.25rem}.dropzone__hint{margin:0 auto 16px;max-width:46ch;color:var(--muted)}.dropzone__status{margin:0 0 12px}.dropzone__progress{width:100%;max-width:420px;height:12px;accent-color:var(--accent)}.dropzone__error{margin:16px auto 0;max-width:52ch;padding:8px 12px;border-left:4px solid var(--tier-5);background:var(--bg);text-align:left}.guide{max-width:640px;margin:24px auto 0}.guide__heading{margin:0 0 8px;font-size:1.125rem}.guide__steps{margin:0 0 12px;padding-left:1.5em}.guide__steps li{margin-bottom:4px}.guide__privacy{margin:0;color:var(--muted)}.summary{max-width:640px;margin:8px 0 16px}.summary h2{margin:0 0 4px;font-size:1.125rem}.summary__stats{margin:0 0 12px}.summary__notes{margin:0 0 12px;color:var(--muted);font-size:.9375rem}.summary__notes h3{margin:0 0 4px;font-size:.9375rem}.summary__notes ul{margin:0;padding-left:1.25em}:root{--row-alt: #f0f3f7;--nodata-bg: #e9edf2;--nodata-line: #c4ccd6;--gap: #b4bfcc}@media (prefers-color-scheme: dark){:root{--row-alt: #1f2832;--nodata-bg: #252e39;--nodata-line: #3a4655;--gap: #566475}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.timeline{max-width:100%}.timeline__row-bg{fill:transparent}.timeline__row-bg--alt{fill:var(--row-alt)}.timeline__cell{shape-rendering:crispEdges}.timeline__cell--present{fill:var(--accent)}.timeline__cell--gap{fill:var(--gap)}.timeline__hatch-bg{fill:var(--nodata-bg)}.timeline__hatch-line{stroke:var(--nodata-line);stroke-width:2}.timeline__year-line{stroke:var(--border);stroke-width:1}.timeline__year-label{fill:var(--muted);font-size:12px;text-anchor:middle}.timeline__label{fill:var(--text);font-size:13px;text-anchor:end}.timeline__legend{display:flex;flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;padding:0;list-style:none;color:var(--muted);font-size:.875rem}.timeline__legend li{display:flex;align-items:center;gap:6px}.timeline__swatch{display:inline-block;width:18px;height:12px}.timeline__swatch--present{background:var(--accent)}.timeline__swatch--gap{height:2px;background:var(--gap)}.timeline__swatch--nodata{background:repeating-linear-gradient(45deg,var(--nodata-bg) 0 3px,var(--nodata-line) 3px 4px)}.timeline__empty{color:var(--muted)}.filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:0 0 16px}.field{display:flex;flex-direction:column;gap:4px}.field--grow{flex:1 1 220px;max-width:420px}.field__label{color:var(--muted);font-size:.875rem}.input,.select{min-height:var(--tap);padding:0 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit}.input{width:100%}.filters__count{flex-basis:100%;margin:0;color:var(--muted);font-size:.9375rem}.pager{display:flex;flex-direction:column;align-items:center;gap:8px;margin:16px 0 0}.pager__nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 12px}.pager__page{display:flex;align-items:center;gap:8px}.pager__range{margin:0;color:var(--muted);font-size:.875rem}.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}:root{--shadow: rgba(18, 23, 29, .22)}@media (prefers-color-scheme: dark){:root{--shadow: rgba(0, 0, 0, .55)}}.timeline{position:relative}.timeline__cell--present{cursor:pointer}.timeline__cell--present:focus{outline:none}.timeline__cell--present:focus-visible,.timeline__cell--selected{stroke:var(--text);stroke-width:2px}.detail{position:absolute;z-index:20;width:min(360px,calc(100% - 16px));max-height:min(70vh,480px);overflow:auto;padding:12px 14px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 6px 24px var(--shadow)}.detail:focus{outline:none}.detail:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media not all and (hover: hover) and (pointer: fine) and (min-width: 640px){.detail{position:fixed;inset:auto 0 0;width:auto;max-height:70vh;border-radius:var(--radius) var(--radius) 0 0;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}}.detail__head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.detail__title{margin:0;font-size:1.0625rem;line-height:1.3}.detail__sub{margin:2px 0 0;color:var(--muted);font-size:.875rem}.detail__summary{margin:8px 0 0;color:var(--muted);font-size:.875rem}.detail__close{flex:none}.detail__list{margin:8px 0 0;padding:0;list-style:none}.detail__item{padding:8px 0;border-top:1px solid var(--border)}.detail__line{margin:0}.detail__date{font-weight:600}.detail__meta{margin:0;color:var(--muted);font-size:.875rem}.detail__flag{margin:4px 0 0;padding-left:8px;border-left:3px solid var(--tier-3);font-size:.875rem}.detail__link{display:inline-flex;align-items:center;min-height:var(--tap)}.detail__more{margin:4px 0 0;font-weight:600}.detail__hint{margin:0;color:var(--muted);font-size:.875rem}.timeline__cell--tier-1{fill:var(--tier-1)}.timeline__cell--tier-2{fill:var(--tier-2)}.timeline__cell--tier-3{fill:var(--tier-3)}.timeline__cell--tier-4{fill:var(--tier-4)}.timeline__cell--tier-5{fill:var(--tier-5)}.timeline__swatch--tier-1{background:var(--tier-1)}.timeline__swatch--tier-2{background:var(--tier-2)}.timeline__swatch--tier-3{background:var(--tier-3)}.timeline__swatch--tier-4{background:var(--tier-4)}.timeline__swatch--tier-5{background:var(--tier-5)}.timeline__badge circle{fill:var(--surface);stroke-width:2}.timeline__badge text{fill:var(--text);font-size:11px;font-weight:600;text-anchor:middle}.timeline__badge--tier-1 circle{stroke:var(--tier-1)}.timeline__badge--tier-2 circle{stroke:var(--tier-2)}.timeline__badge--tier-3 circle{stroke:var(--tier-3)}.timeline__badge--tier-4 circle{stroke:var(--tier-4)}.timeline__badge--tier-5 circle{stroke:var(--tier-5)}.insights{margin:0 0 12px;max-width:70ch}.insights__heading{margin:0 0 4px;font-size:1.0625rem}.insights__effort,.insights__note,.insights__message{margin:0 0 4px}.insights__note,.insights__message{color:var(--muted);font-size:.9375rem}.insights__help{margin:4px 0 0;color:var(--muted);font-size:.875rem}.insights__help summary{cursor:pointer;min-height:var(--tap);display:flex;align-items:center}.insights__help p{margin:0 0 8px}.timeline__year-band{fill:var(--accent);opacity:.12;pointer-events:none}.timeline__sublabel{fill:var(--muted);font-size:11px;text-anchor:end}.filters{align-items:center;gap:8px 12px;margin:0 0 8px}.btn,.pill,.chip,.crumb,.option,.linkbtn,.seg__item,.radio{-webkit-tap-highlight-color:transparent}.seg{display:flex;flex:1 1 100%;min-width:0;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.seg__item{position:relative;display:flex;flex:1 1 auto;min-width:0}.seg__item input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.seg__label{display:flex;flex:1;align-items:center;justify-content:center;min-height:var(--tap);padding:0 12px;color:var(--muted);font-weight:500;white-space:nowrap}.seg__item+.seg__item .seg__label{border-left:1px solid var(--border)}.seg__item input:checked+.seg__label{background:var(--accent);color:var(--on-accent);font-weight:650}.seg__item input:focus-visible+.seg__label{outline:2px solid var(--accent);outline-offset:-4px}.search{flex:1 1 180px;min-width:0}.filters__loc,.filters__more{position:relative;min-width:0}.filters__loc{flex:1 1 220px}.pillrow{display:flex;align-items:center;gap:4px}.pill{display:flex;flex:1;align-items:center;gap:8px;min-width:0;min-height:var(--tap);padding:0 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer}.pill:after{content:"▾";flex:none;margin-left:auto;color:var(--muted)}.pill__label{flex:none;color:var(--muted);font-size:.8125rem}.pill__value{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pill--active{border-color:var(--accent)}.pill--active .pill__value{font-weight:600}.pill[aria-expanded=true]{background:var(--row-alt)}.pill__clear{flex:none;padding:0;border-radius:999px;font-size:1.25rem;line-height:1}.filters__btn{display:inline-flex;align-items:center;gap:6px;border-radius:999px}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--accent);color:var(--on-accent);font-size:.75rem;font-weight:650}.filters__status{display:flex;flex:1 1 100%;flex-wrap:wrap;align-items:center;gap:0 12px}.filters__status .filters__count{flex:0 1 auto}.linkbtn{min-height:var(--tap);padding:0 4px;border:0;background:none;color:var(--accent);font:inherit;text-decoration:underline;cursor:pointer}.overlay{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end}.overlay:before{content:"";position:absolute;inset:0;background:var(--shadow)}.overlay__dialog{position:relative;display:flex;flex-direction:column;width:100%;max-height:min(80vh,640px);padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px));background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0}.overlay__dialog:focus{outline:none}.overlay__dialog:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.overlay__head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}.overlay__title{margin:0;font-size:1.0625rem}.overlay__body{flex:1 1 auto;min-height:0;overflow:auto}.overlay__foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin:12px 0 0}@media (hover: hover) and (pointer: fine) and (min-width: 640px){.overlay{position:absolute;inset:auto;top:calc(100% + 6px);left:0;display:block}.overlay[data-align=end]{left:auto;right:0}.overlay:before{display:none}.overlay__dialog{width:360px;max-width:calc(100vw - 16px);max-height:70vh;padding-bottom:12px;border-radius:var(--radius);box-shadow:0 6px 24px var(--shadow)}}.crumbs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 8px;padding:0;list-style:none}.crumb{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;width:100%;min-width:0;min-height:var(--tap);padding:4px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer}.crumb:disabled{opacity:.45;cursor:not-allowed}.crumb__level{color:var(--muted);font-size:.75rem;line-height:1.2}.crumb__value{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.crumb--set .crumb__value{color:var(--text);font-weight:600}.crumb[aria-current=step]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.picker__filter{margin:0 0 8px}.picker{margin:0;padding:0;list-style:none}.picker__empty{margin:8px 0;color:var(--muted)}.option{display:flex;align-items:center;gap:8px;width:100%;min-height:var(--tap);padding:0 6px;border:0;border-bottom:1px solid var(--border);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.option__tick{flex:none;width:1.25em;color:var(--accent)}.option[aria-current=true] .option__tick:before{content:"✓"}.option[aria-current=true]{background:var(--row-alt);font-weight:600}.option__label{flex:1;min-width:0;overflow-wrap:anywhere}.option__count{flex:none;color:var(--muted);font-size:.875rem}.drawer{margin:0;padding:0;border:0;min-width:0}.drawer .field__label{padding:0}.radio{display:flex;align-items:center;gap:10px;min-height:var(--tap);cursor:pointer}.radio input{width:20px;height:20px;margin:0;accent-color:var(--accent)}.legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 8px}.legend__tiers{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.legend__caption{color:var(--muted);font-size:.875rem}.legend__chips{display:flex;gap:8px}.legend__hint{margin:0;color:var(--muted);font-size:.8125rem}.legend__marks{margin:0}.chip{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:52px;min-height:0;padding:1px 10px;border:2px solid var(--chip);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:.875rem;line-height:1.3;cursor:pointer}.chip:after{content:"";position:absolute;left:0;right:0;top:50%;height:var(--tap);transform:translateY(-50%)}.chip--tier-1{--chip: var(--tier-1)}.chip--tier-2{--chip: var(--tier-2)}.chip--tier-3{--chip: var(--tier-3)}.chip--tier-4{--chip: var(--tier-4)}.chip--tier-5{--chip: var(--tier-5)}.chip[aria-pressed=true]{background:color-mix(in srgb,var(--chip) 26%,var(--surface));font-weight:650}.chip[aria-pressed=true]:before{content:"✓"}@media (max-width: 639px){.legend__hint{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media (min-width: 720px){.seg{flex:0 0 auto}.seg__label{padding:0 18px}}.summary{max-width:none;margin:0 0 8px}.summary__row{display:flex;align-items:center;justify-content:space-between;gap:4px 12px}.summary__stats{margin:0;flex:1 1 12ch;min-width:0;font-size:.9375rem}.summary__row .btn{flex:none}.summary__notes{margin:4px 0 0}.summary__notes summary{cursor:pointer;min-height:var(--tap);display:flex;align-items:center}.timeline__frame{display:flex;align-items:flex-start}.timeline__names-svg{flex:none;display:block;border-right:1px solid var(--border);background:var(--bg)}.timeline__scroll{flex:1 1 auto;min-width:0;overflow-x:auto;overscroll-behavior-x:contain}.timeline__scroll:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.timeline__plot{display:block;max-width:none}.timeline__sublabel--sci{font-style:italic}.timeline__label--wrap{font-size:11px}.timeline__tick{stroke:var(--muted);stroke-width:1;stroke-dasharray:1 3;opacity:.45}.timeline__month-hl{fill:var(--accent);opacity:.12}.timeline__year-line,.timeline__tick,.timeline__nodata,.timeline__month-hl{pointer-events:none}.timeline__row-bg.is-near{fill:color-mix(in srgb,var(--text) 5%,transparent)}.timeline__row-bg--alt.is-near{fill:color-mix(in srgb,var(--text) 6%,var(--row-alt))}.timeline__row-bg.is-hover,.timeline__row-bg.is-selected{fill:color-mix(in srgb,var(--accent) 16%,transparent)}.export{margin:16px 0 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.export__summary{display:flex;align-items:center;min-height:var(--tap);padding:0 12px;font-weight:600;cursor:pointer}.export__summary::-webkit-details-marker{display:none}.export__summary:after{content:"▾";margin-left:auto;color:var(--muted)}.export[open]>.export__summary:after{content:"▴"}.export__body{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:4px 12px 12px}.export__group{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;border:0;min-width:0}.export__legend-text{padding:0;color:var(--muted);font-size:.875rem}.export__choice{display:flex;align-items:center;gap:8px;min-height:var(--tap)}.export__choice input{width:20px;height:20px;margin:0;accent-color:var(--accent)}.export__select{min-height:var(--tap);padding:0 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit}.export__hint{margin:0;max-width:46ch;color:var(--muted);font-size:.875rem}.export__status{margin:0;min-height:1.5em;font-size:.9375rem}.export__status[data-kind=error]{color:var(--tier-5)}.export-stage{position:absolute;left:-100000px;top:0;pointer-events:none}.export-stage--light{--bg: #f7f8fa;--surface: #ffffff;--text: #1c2430;--muted: #5d6b7c;--border: #d9dee5;--accent: #2f5d8a;--tier-1: #7a9cc6;--tier-2: #4f9e93;--tier-3: #b89a1f;--tier-4: #d06a26;--tier-5: #b83a2e;--row-alt: #f0f3f7;--nodata-bg: #e9edf2;--nodata-line: #c4ccd6;--gap: #b4bfcc;color:var(--text)}.export__bg{fill:var(--surface)}.export__title{fill:var(--text);font-size:22px;font-weight:650}.export__line{fill:var(--muted);font-size:13px}.export__legend{fill:var(--muted);font-size:12px}.export__credit{fill:var(--muted);font-size:11px}.export__sep{stroke:var(--border);stroke-width:1}.intro{max-width:36rem;margin:8px auto 20px;text-align:center}.intro__logo{display:block;width:min(100%,17.5rem);height:auto;margin:0 auto 12px}.intro__lead{margin:0 0 8px;font-size:1.125rem;font-weight:600}.intro__body{margin:0;color:var(--muted)}.dropzone__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px}.dropzone__sample-hint{margin:8px 0 0;color:var(--muted);font-size:.875rem}.dropzone__saved{margin:12px auto 0;padding:12px;max-width:28rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.dropzone__saved-heading{margin:0 0 4px;font-size:1rem}.dropzone__saved-line{margin:0;overflow-wrap:anywhere}.remember{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:8px 0;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.remember__choice{display:flex;align-items:center;gap:8px;min-height:var(--tap);font-weight:600}.remember__choice input{width:20px;height:20px;margin:0;accent-color:var(--accent)}.remember__help,.remember__note{margin:0;color:var(--muted);font-size:.875rem}.remember__note:empty,.remember__status:empty{display:none}.remember__status{margin:0;font-size:.9375rem}.remember__status[data-kind=error]{color:var(--tier-5)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 16px;text-align:center;color:var(--muted)}.empty-state__text{margin:0}
