:root{font-family:Helvetica,Arial,sans-serif;color:#171717;background:#fff;color-scheme:light;--line:#ddd;--muted:#6b6b6b;--hover:#f5f5f5;--rows:5}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit;color:inherit}button,select{cursor:pointer}button,input,select{border:1px solid #aaa;border-radius:3px;background:transparent;padding:7px 10px;min-height:36px}button:hover{background:var(--hover)}button:disabled{opacity:.4;cursor:default}.toolbar nav button[aria-pressed=true]{color:#fff;background:#171717;border-color:#171717}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,#timeline:focus-visible{outline:2px solid #0562cd;outline-offset:3px}button,a,input,select{-webkit-tap-highlight-color:transparent}button{touch-action:manipulation}a{color:inherit}header{padding:20px 24px 0;border-bottom:1px solid var(--line)}.topline{display:flex;align-items:baseline;gap:18px}h1{font-size:20px;letter-spacing:-.5px;font-weight:500;margin:0 0 17px}output{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar nav{display:flex;gap:5px}#search{margin-left:auto;width:230px}#years{display:flex;gap:20px;overflow:auto;margin-top:15px;padding:8px 0 12px;scrollbar-width:thin}#years button{border:0;border-radius:0;padding:2px 0;min-height:24px;color:var(--muted);font-size:13px;border-bottom:1px solid transparent;background:transparent}#years button[aria-current=true]{border-bottom-color:currentColor;color:inherit}main{min-width:0}#timeline{height:calc(100dvh - 159px);min-height:350px;display:flex;overflow:auto;overscroll-behavior-x:contain;scrollbar-width:thin;padding-bottom:25px;position:relative}body.player-open #timeline{height:calc(100dvh - 303px)}.month{flex-shrink:0;padding:0 20px 0 24px;border-right:1px solid var(--line);display:flex;flex-direction:column}.month-heading{display:flex;align-items:baseline;gap:14px;padding:20px 0 13px;border-bottom:1px solid var(--line);margin-bottom:14px;position:relative}.month-heading:before{content:"";position:absolute;width:5px;height:5px;background:currentColor;bottom:-3px;left:0;border-radius:50%}.month-heading h2{margin:0;font-size:15px;font-weight:500}.month-heading span{color:var(--muted);font-size:12px}.tracks{display:grid;grid-template-rows:repeat(var(--rows),minmax(72px,1fr));grid-auto-flow:column;grid-auto-columns:250px;gap:8px 18px;flex:1;align-content:start}.song{display:grid;grid-template-columns:50px minmax(0,1fr);gap:10px;align-items:center;width:100%;text-align:left;border:0;padding:6px 0;min-height:70px;border-radius:0;position:relative;align-self:center;background:transparent}.song img{width:50px;height:50px;object-fit:cover;background:var(--hover)}.song .cover{width:50px;height:50px;position:relative;background:var(--hover);display:block}.song .cover:after{content:"▶";position:absolute;inset:0;display:grid;place-items:center;background:#0008;color:white;opacity:0;font-size:15px}.song:hover .cover:after,.song:focus-visible .cover:after{opacity:1}.song-text{min-width:0;display:flex;flex-direction:column;gap:4px}.song-title{font-size:13px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.song-artist{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-date{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}#status{padding:24px;color:var(--muted);font-size:13px}#status:empty{display:none}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:13px}th{font-weight:500;font-size:12px;color:var(--muted);background:#fff;position:sticky;top:0}th,td{padding:10px 24px;border-bottom:1px solid var(--line)}th:last-child,td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}th button{padding:0;border:0;color:inherit;min-height:24px}td:first-child{width:45%}td .song{grid-template-columns:36px minmax(0,1fr);min-height:42px;max-width:550px}td .song img,td .song .cover{width:36px;height:36px}td .song-date{display:none}td .song-artist{display:none}td .song-title{-webkit-line-clamp:1}td:nth-child(3){color:var(--muted);white-space:nowrap}#more{margin:20px 24px}footer{border-top:1px solid var(--line);background:#fff;position:fixed;bottom:0;left:0;right:0;padding:10px 24px max(10px,env(safe-area-inset-bottom));z-index:10}.player-meta{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:12px}.player-meta button{padding:3px 10px;min-height:28px}#playing-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}#spotify-link{white-space:nowrap;margin-left:5px}#close-player{margin-left:auto}#embed-wrap{height:80px;max-width:100%}#embed-wrap iframe{border:0;width:100%;height:80px;border-radius:0}body.player-open #plays{padding-bottom:150px}[hidden]{display:none!important}
@media(max-width:600px){header{padding:15px 14px 0}.topline{gap:12px}h1{font-size:18px}.toolbar{gap:7px}#search{order:3;flex:1;width:100%;margin:0}#year{margin-left:auto;max-width:122px}#random{order:4}#years{gap:20px;margin-top:10px}#timeline{height:calc(100dvh - 193px)}body.player-open #timeline{height:calc(100dvh - 330px)}.month{padding:0 14px}.tracks{grid-auto-columns:230px;gap:6px 10px}.month-heading{padding-top:16px}th,td{padding:10px 14px}th:nth-child(3),td:nth-child(3){display:none}td:first-child{min-width:215px}td:nth-child(2){min-width:120px;max-width:180px}footer{padding:8px 10px max(8px,env(safe-area-inset-bottom))}#playing-name{display:none}}
@media(prefers-reduced-motion:no-preference){.song .cover:after{transition:opacity .12s}}

.year-control{display:inline-block;position:relative;flex-shrink:0}
#year{appearance:none;-webkit-appearance:none;padding-right:34px}
.year-control svg{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:12px;height:8px;pointer-events:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:600px){.year-control{margin-left:auto}#year{margin-left:0;max-width:none;font-size:14px}}

#timeline.single{align-items:center;padding:24px 0 55px;min-height:330px}.day{flex-shrink:0;padding:0 24px;border-right:1px solid var(--line)}.day-heading{display:flex;align-items:baseline;gap:15px;border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:20px;position:relative}.day-heading:before{content:"";width:5px;height:5px;background:currentColor;position:absolute;bottom:-3px;left:0;border-radius:50%}.day-heading h2{font-size:13px;font-weight:500;margin:0;white-space:nowrap}.day-heading>span{font-size:11px;color:var(--muted)}.day-tracks{display:flex;gap:24px;align-items:flex-start}.day .song{width:164px;display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:12px;padding:0;min-height:230px}.day .song .cover,.day .song img{width:164px;height:164px}.day .song-text{width:100%;gap:5px}.day .song-title{-webkit-line-clamp:2;min-height:33px}.day .song-date{display:none}
@media(max-width:600px){#timeline.single{padding-bottom:35px}.day{padding:0 14px}.day-tracks{gap:18px}.day .song{width:144px;min-height:210px}.day .song .cover,.day .song img{width:144px;height:144px}.toolbar nav{gap:4px}.toolbar nav button{padding:7px 8px}}
