:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#10151a;--panel:#171e25;--channel:#1f2831;--line:#2b3743;--paper:#e8e4d9;--muted:#8a97a2;--brass:#d8a24a;--brass-hi:#f0c46a;--brass-fill:#d8a24a29;--brass-fill-2:#d8a24a3d;--patina:#64b6a4;--lvl-0:var(--channel);--lvl-1:#d8a24a33;--lvl-2:#d8a24a6b;--lvl-3:#d8a24aa8;--lvl-4:var(--brass);--display:"Space Grotesk", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", monospace}*{box-sizing:border-box}body{background:radial-gradient(120% 90% at 50% -10%, #18212a 0%, var(--ink) 60%) fixed;min-height:100vh;color:var(--paper);font-family:var(--display);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}#app{max-width:940px;margin:0 auto;padding:clamp(1.5rem,5vw,3.5rem) clamp(1rem,4vw,2rem) 5rem}:focus-visible{outline:2px solid var(--brass-hi);outline-offset:2px;border-radius:4px}.masthead{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.5rem;padding-bottom:1.1rem;animation:.5s both rise;display:flex}.wordmark{align-items:baseline;gap:.7rem;display:flex}.mark{letter-spacing:-.03em;border-bottom:2px solid var(--brass);padding-bottom:.15rem;font-size:clamp(1.5rem,5vw,2rem);font-weight:700}.sub{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-size:.72rem}.masthead-right{flex-direction:column;align-items:flex-end;gap:.6rem;display:flex}.meta{font-family:var(--mono);flex-wrap:wrap;align-items:center;gap:.85rem;font-size:.78rem;display:flex}.actions{align-items:center;gap:.5rem;display:flex}.btn{font-family:var(--mono);letter-spacing:.04em;color:var(--brass-hi);border:1px solid var(--brass);cursor:pointer;background:0 0;border-radius:999px;padding:.34rem .85rem;font-size:.75rem;transition:background .15s,color .15s,border-color .15s}.btn:hover{background:var(--brass-fill-2)}.btn.ghost{color:var(--muted);border-color:var(--line)}.btn.ghost:hover{color:var(--paper);background:var(--channel);border-color:#3a4a58}.btn.link{color:var(--muted);border-color:var(--line);align-items:center;text-decoration:none;display:inline-flex}.btn.link:hover{color:var(--brass-hi);border-color:var(--brass);background:0 0}.src{border:1px solid var(--patina);color:var(--patina);border-radius:999px;padding:.2rem .55rem}.chip{border:1px solid var(--brass);color:var(--brass-hi);letter-spacing:.06em;text-transform:lowercase;border-radius:999px;padding:.25rem .6rem}.gen{color:var(--muted)}.readout{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.25rem 2rem;margin:clamp(1.75rem,5vw,2.75rem) 0;animation:.5s 80ms both rise;display:flex}.total{flex-direction:column;display:flex}.total-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:clamp(3rem,12vw,5.5rem);font-weight:700;line-height:.95}.total-label{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:.5rem;font-size:.74rem}.secondary{gap:1.75rem;margin:0;display:flex}.metric{flex-direction:column-reverse;gap:.2rem;display:flex}.metric dd{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--patina);margin:0;font-size:1.35rem;font-weight:500}.metric dt{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:.68rem}.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:clamp(1.25rem,4vw,2rem) clamp(1.1rem,4vw,2.2rem) clamp(1.5rem,4vw,2.25rem);position:relative;box-shadow:inset 0 1px #ffffff08}.scale{height:1.5rem;margin-bottom:.5rem;position:relative}.tick{font-family:var(--mono);color:var(--muted);white-space:nowrap;font-size:.7rem;animation:.5s .3s both fade;position:absolute;top:0;transform:translate(-50%)}.tick:after{content:"";background:var(--line);width:1px;height:5px;position:absolute;top:1.2rem;left:50%}.chart{position:relative}.graticule{pointer-events:none;position:absolute;inset:0}.grid{background:var(--line);opacity:.6;width:1px;position:absolute;top:0;bottom:0}.rows{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex;position:relative}.row{border:1px solid var(--line);background:var(--channel);width:100%;font:inherit;color:var(--paper);text-align:left;cursor:pointer;appearance:none;border-radius:9px;grid-template-columns:auto minmax(0,1fr) auto auto auto;align-items:center;gap:.9rem;padding:.85rem 1rem;transition:border-color .18s;display:grid;position:relative;overflow:hidden}.row:hover{border-color:#3a4a58}.chev{color:var(--muted);justify-self:end;transition:transform .2s;position:relative}.row[aria-expanded=true] .chev{color:var(--brass-hi);transform:rotate(180deg)}.row-item.open .row{border-color:#3a4a58;border-bottom-right-radius:0;border-bottom-left-radius:0}.drill{grid-template-rows:0fr;transition:grid-template-rows .28s;display:grid}.row-item.open .drill{grid-template-rows:1fr}.drill-inner{min-height:0;padding:1rem 1.1rem 1.2rem;overflow:hidden}.row-item.open .drill-inner{background:#0d1217eb;border:1px solid #3a4a58;border-top:none;border-radius:0 0 9px 9px}.bar{width:var(--w);background:linear-gradient(90deg, var(--brass-fill) 0%, var(--brass-fill-2) 100%);border-right:2px solid var(--brass-hi);animation:.85s cubic-bezier(.2,.8,.15,1) both sweep;animation-delay:calc(var(--i) * 60ms + .35s);position:absolute;inset:0 auto 0 0;box-shadow:2px 0 10px #d8a24a59}.row:hover .bar{background:linear-gradient(90deg, var(--brass-fill-2) 0%, #d8a24a52 100%)}.rank,.pname,.reading,.pcount{position:relative}.rank{font-family:var(--mono);color:var(--muted);font-size:.78rem}.pname{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.reading{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--paper);font-weight:500}.pcount{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--patina);align-items:baseline;gap:.35rem;font-size:.85rem;display:flex}.unit{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.62rem}.notice{text-align:center;padding:2.25rem .5rem}.notice-mark{font-family:var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--brass);border:1px solid var(--brass);border-radius:999px;padding:.25rem .7rem;font-size:.7rem;display:inline-block}.notice-head{margin:1rem 0 .4rem;font-size:1.2rem;font-weight:500}.notice-detail{color:var(--muted);margin:0;font-size:.95rem}.notice-detail code{font-family:var(--mono);color:var(--paper);background:var(--channel);border:1px solid var(--line);border-radius:5px;padding:.1rem .4rem;font-size:.85em}.dropzone{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);pointer-events:none;background:#0a0e12d1;justify-content:center;align-items:center;padding:2rem;display:none;position:fixed;inset:0}body.dragging .dropzone{display:flex}.dropzone-inner{border:2px dashed var(--brass);text-align:center;border-radius:16px;padding:clamp(2rem,8vw,3.5rem) clamp(2rem,10vw,5rem)}.dropzone-inner strong{margin-bottom:.4rem;font-size:1.35rem;font-weight:500;display:block}.dropzone-inner span{font-family:var(--mono);color:var(--muted);font-size:.82rem}.banner{border:1px solid var(--brass);background:#d8a24a1a;border-radius:12px;margin-bottom:1.25rem;padding:.85rem 1.1rem;font-size:.92rem}.howto{border:1px solid var(--line);background:var(--panel);border-radius:12px;margin-bottom:1.25rem;overflow:hidden}.howto summary{cursor:pointer;font-family:var(--mono);letter-spacing:.04em;color:var(--brass-hi);padding:.85rem 1.1rem;font-size:.8rem;list-style:none}.howto summary::-webkit-details-marker{display:none}.howto summary:before{content:"▸";color:var(--brass);margin-right:.5rem;transition:transform .2s;display:inline-block}.howto[open] summary:before{transform:rotate(90deg)}.howto-body{padding:0 1.2rem 1.15rem}.howto-body ol{margin:.4rem 0;padding-left:1.25rem;line-height:1.75}.howto-body a{color:var(--patina)}.howto-body pre{background:var(--channel);border:1px solid var(--line);border-radius:8px;margin:.45rem 0;padding:.6rem .8rem;overflow:auto}.howto-privacy{color:var(--muted);margin:.7rem 0 0;font-size:.85rem}.howto-body code,.hint code,.banner code{font-family:var(--mono);color:var(--paper);background:var(--channel);border:1px solid var(--line);border-radius:5px;padding:.08rem .36rem;font-size:.85em}.howto-body pre code{background:0 0;border:none;padding:0}.hint{color:var(--muted);margin:0;font-size:.9rem}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem}.activity{flex-direction:column;gap:1.1rem;margin-bottom:1.5rem;display:flex}.streaks{grid-template-columns:repeat(3,1fr);gap:.9rem;display:grid}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:.15rem;padding:1rem 1.1rem;display:flex;position:relative}.sc-value{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700;line-height:1}.sc-label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.66rem}.sc-tag{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid;border-radius:999px;padding:.15rem .5rem;font-size:.6rem;position:absolute;top:1rem;right:1rem}.sc-tag.live{color:var(--patina);border-color:var(--patina)}.sc-tag.ended{color:var(--muted);border-color:var(--line)}.cal-heat{grid-template-columns:minmax(0,1fr);gap:1.1rem;display:grid}.calendar,.heat-wrap{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem}.activity h3,.drill h4{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 .8rem;font-weight:500}.activity h3{font-size:.72rem}.drill h4{font-size:.68rem}.contrib{grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:3px;width:max-content;max-width:100%;display:grid}.cell{background:var(--lvl-0);border-radius:3px;width:13px;height:13px}.cell.empty{background:0 0}.cell.lvl-0{background:var(--lvl-0)}.cell.lvl-1{background:var(--lvl-1)}.cell.lvl-2{background:var(--lvl-2)}.cell.lvl-3{background:var(--lvl-3)}.cell.lvl-4{background:var(--lvl-4)}.heat{grid-template-columns:repeat(24,1fr);gap:3px;display:grid}.heat .cell{width:auto;height:22px}.heat-axis{font-family:var(--mono);color:var(--muted);grid-template-columns:repeat(24,1fr);margin-top:5px;font-size:.62rem;display:grid}.heat-axis span{grid-row:1}.drill-stats{flex-wrap:wrap;gap:1.25rem 1.75rem;margin-bottom:1.1rem;display:flex}.ds{flex-direction:column;gap:.15rem;display:flex}.ds-v{font-family:var(--mono);color:var(--paper);font-variant-numeric:tabular-nums;font-weight:500}.ds-l{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.66rem}.drill-charts{gap:1.4rem;display:grid}.daybars{flex-direction:column;gap:5px;max-height:300px;padding-right:4px;display:flex;overflow:auto}.daybar{font-family:var(--mono);grid-template-columns:62px minmax(0,1fr) 62px 42px;align-items:center;gap:.6rem;font-size:.74rem;display:grid}.db-date{color:var(--muted)}.db-track{background:var(--channel);border-radius:4px;height:12px;overflow:hidden}.db-fill{background:linear-gradient(90deg, var(--brass-fill-2), var(--brass));border-radius:4px;height:100%;display:block}.db-min{text-align:right;color:var(--paper);font-variant-numeric:tabular-nums}.db-p{text-align:right;color:var(--patina);font-variant-numeric:tabular-nums}.db-p .unit{color:var(--muted)}.site-footer{border-top:1px solid var(--line);text-align:center;font-family:var(--mono);color:var(--muted);margin-top:2.5rem;padding-top:1.25rem;font-size:.8rem}.site-footer a{color:var(--brass-hi)}@keyframes sweep{0%{width:0}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}@keyframes fade{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.masthead,.readout,.tick,.bar{animation:none}.drill,.chev,.howto summary:before{transition:none}}@media (width>=760px){.cal-heat{grid-template-columns:auto minmax(0,1fr);align-items:start}}@media (width<=560px){.readout{align-items:flex-start}.secondary{gap:1.25rem}.row{grid-template-columns:auto minmax(0,1fr) auto auto;gap:.35rem .8rem;padding:.75rem .85rem}.reading{grid-area:1/3;font-size:.85rem}.chev{grid-area:1/4}.pcount{grid-area:2/2/auto/5;justify-self:end;font-size:.78rem}.pcount .unit,.tick:not(:first-child):nth-child(2n){display:none}.streaks{gap:.5rem}.stat-card{padding:.75rem .7rem}.sc-value{font-size:1.5rem}.sc-tag{align-self:flex-start;margin-top:.35rem;position:static}.daybar{grid-template-columns:52px minmax(0,1fr) 52px}.daybar .db-p{display:none}}
