:root{
  --bar-h:3.6rem;
  --bg:#050507;--fg:#f4f4f6;--mute:#8a8a94;--line:rgba(255,255,255,.16);--accent:#a855f7;--panel:#0c0c10;
  --display:'UnifrakturCook','Times New Roman',serif;--mono:'JetBrains Mono',monospace;--body:'Space Grotesk',system-ui,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1)
}
[data-theme=light]{--bg:#fff;--fg:#08080a;--mute:#5b5b66;--line:rgba(0,0,0,.18);--accent:#1d4ed8;--panel:#f3f3f6}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--fg);font-family:var(--body);line-height:1.5;overflow-x:clip;transition:background .5s,color .5s}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
::selection{background:var(--accent);color:#fff}

/* Custom Cyber Dot Cursor */
html, body, *, *::before, *::after{cursor:url('assets/cursor.png') 16 16, auto}
a, button, [role="button"], .ascii, .spine, input, select, textarea, label, [tabindex="0"]{cursor:url('assets/cursor.png') 16 16, pointer}
.rack-view{cursor:url('assets/cursor.png') 16 16, grab}
.rack-view:active{cursor:url('assets/cursor.png') 16 16, grabbing}
[data-theme=light], [data-theme=light] *, [data-theme=light] *::before, [data-theme=light] *::after{cursor:url('assets/cursor-dark.png') 16 16, url('assets/cursor.png') 16 16, auto}
[data-theme=light] a, [data-theme=light] button, [data-theme=light] [role="button"], [data-theme=light] .ascii, [data-theme=light] .spine, [data-theme=light] input, [data-theme=light] select, [data-theme=light] textarea, [data-theme=light] label, [data-theme=light] [tabindex="0"]{cursor:url('assets/cursor-dark.png') 16 16, url('assets/cursor.png') 16 16, pointer}

.bar{position:sticky;top:0;z-index:10;height:var(--bar-h);display:flex;justify-content:space-between;align-items:center;padding:0 1.5rem;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.mark{font-family:var(--display);font-size:1.6rem;letter-spacing:.04em}
.mark span{color:var(--accent);font-size:1rem;vertical-align:middle}
.ctrl{display:flex;gap:.6rem;align-items:center}
.audio,.theme{display:flex;align-items:center;border:1px solid var(--line);border-radius:99px;transition:border-color .3s}
.audio:hover,.audio:focus-within,.theme:hover{border-color:var(--accent)}
.audio button,.theme{width:2.5rem;height:2.5rem;justify-content:center;display:flex;align-items:center;border-radius:50%}
.audio button{border:0}
.audio svg,.theme svg{width:1.15rem;height:1.15rem}
.audio:hover button,.theme:hover{color:var(--accent)}

.audio.on .i-on{display:block}.audio.on .i-off{display:none}

.vol{max-width:0;opacity:0;overflow:hidden;transition:max-width .45s var(--ease),opacity .3s,padding .3s}
.vol input{width:5.5rem;accent-color:var(--accent)}
@media(min-width:768px){.audio:hover .vol,.audio:focus-within .vol{max-width:7rem;opacity:1;padding:0 .8rem 0 .2rem}}

/* Scroll-pinned hero section with 250vh scroll room for the assembly animation */
.hero{position:relative;display:block;height:250vh;height:250svh;padding:0;overflow:visible}
.pin{position:sticky;top:var(--bar-h);left:0;right:0;height:calc(100vh - var(--bar-h));height:calc(100svh - var(--bar-h));overflow:hidden;overflow:clip}
.pin::before{content:"";position:absolute;inset:1rem;border:1px solid var(--line);pointer-events:none;animation:frame 1.4s var(--ease) both}
.pin::after{content:"✠";position:absolute;top:.35rem;left:50%;translate:-50% 0;background:var(--bg);padding:0 .6rem;color:var(--accent);font-size:1rem}
@keyframes frame{from{clip-path:inset(0 100% 100% 0)}to{clip-path:inset(0)}}
.tag{position:absolute;font:.68rem var(--mono);letter-spacing:.2em;color:var(--mute);z-index:2}
.t1{top:2rem;left:2.2rem}.t2{bottom:2rem;right:2.2rem}

.ascii{position:absolute;inset:0;width:100%;height:100%;touch-action:pan-y}
#hud{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;background:transparent}

.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.kicker{position:absolute;top:2.6rem;left:50%;translate:-50% 0;z-index:3;font:.74rem var(--mono);letter-spacing:.35em;text-transform:uppercase;color:var(--accent);animation:up .9s var(--ease) both}
@keyframes up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.foot{position:absolute;left:0;right:0;bottom:4.8rem;z-index:3;display:flex;flex-direction:column;align-items:center;gap:1.4rem;padding:0 1rem;pointer-events:none}
.foot>*{pointer-events:auto}
.look{font:.68rem var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--accent);animation:up .8s var(--ease) .3s both}
.lead{font:.85rem var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--fg);animation:up .8s var(--ease) .5s both}
.links{display:flex;flex-wrap:wrap;justify-content:center;gap:.7rem;margin-top:0;animation:up .8s var(--ease) .7s both}
.links a{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;gap:.6rem;min-height:2.9rem;padding:0 1.1rem;font:.78rem var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 80%,transparent);transition:translate .25s var(--ease),border-color .2s,color .2s,scale .15s}
.links a::before{content:"";position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--accent) 14%,transparent);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.links a:hover::before{transform:none}
.links a:hover{border-color:var(--accent);color:var(--accent);translate:0 -3px}
.links a:active{scale:.97}
.links a:hover b{translate:2px -2px;color:var(--accent)}
.links i{font-style:normal;color:var(--accent)}
.links b{font-weight:400;color:var(--mute);transition:.3s}

.scroll{position:absolute;bottom:2rem;left:50%;translate:-50% 0;font:.68rem var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--mute);display:flex;flex-direction:column;align-items:center;gap:.3rem;z-index:4}
.scroll span{color:var(--accent);animation:bob 1.8s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(6px)}}

.reveal{opacity:0;transform:translateY(30px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.reveal.in{opacity:1;transform:none}
.label{font:.72rem var(--mono);letter-spacing:.25em;text-transform:uppercase;color:var(--accent)}

/* Live Activity Section */
.activity{padding:4.5rem 1.5rem 2rem;position:relative}
.act-wrap{max-width:1100px;margin:0 auto}
.act-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:0;flex-wrap:wrap;gap:.8rem;padding:.9rem 1.25rem;background:var(--panel);border:1px solid var(--line);border-radius:4px;cursor:pointer;user-select:none;transition:border-color .3s var(--ease),background .3s var(--ease)}
.act-head:hover{border-color:var(--accent);background:color-mix(in srgb,var(--panel) 85%,var(--accent) 15%)}
.act-wrap.expanded .act-head{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}
.act-tag{display:flex;align-items:center;gap:.65rem}
.live-dot{width:8px;height:8px;border-radius:50%;background:#64748b;display:inline-block;transition:background .3s}
.live-dot.connected{background:#22c55e;box-shadow:0 0 8px #22c55e;animation:radar 2s infinite ease-out}
@keyframes radar{0%{box-shadow:0 0 0 0 rgba(34,197,94,0.7)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.act-head-right{display:flex;align-items:center;gap:1.1rem}
.act-sync{font:.7rem var(--mono);letter-spacing:.18em;color:var(--mute);text-transform:uppercase}
.act-toggle-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .65rem;border:1px solid var(--line);border-radius:3px;font:700 .64rem var(--mono);letter-spacing:.14em;color:var(--accent);background:color-mix(in srgb,var(--bg) 60%,transparent);transition:all .25s var(--ease)}
.act-toggle-btn:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent)}
.act-chevron{width:14px;height:14px;stroke:currentColor;transition:transform .4s var(--ease)}
.act-wrap.expanded .act-chevron{transform:rotate(180deg)}

/* Collapsible container with smooth height, opacity, and transform animations */
.act-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease);overflow:hidden;border:1px solid var(--line);border-top:none;border-radius:0 0 4px 4px;background:color-mix(in srgb,var(--panel) 40%,transparent)}
.act-wrap.expanded .act-body{grid-template-rows:1fr}
.act-body-inner{min-height:0;overflow:hidden;padding:0 1.25rem;opacity:0;transform:translateY(-12px);transition:opacity .35s ease,transform .45s var(--ease),padding .45s var(--ease)}
.act-wrap.expanded .act-body-inner{padding:1.4rem 1.25rem;opacity:1;transform:translateY(0)}

.act-grid{display:grid;grid-template-columns:1fr 1.35fr;gap:1.4rem;min-height:0}
@media(max-width:850px){.act-grid{grid-template-columns:1fr}}

.act-card{background:var(--panel);border:1px solid var(--line);padding:1.5rem;position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:175px;transition:border-color .3s var(--ease),transform .3s var(--ease)}
.act-card:hover{border-color:var(--accent)}

/* Profile card */
.act-profile{flex-direction:row;align-items:center;gap:1.3rem}
.act-avatar-wrap{position:relative;width:72px;height:72px;flex-shrink:0}
.act-avatar{width:100%;height:100%;border-radius:50%;object-fit:cover;border:1px solid var(--line);background:var(--bg)}
.act-status-badge{position:absolute;bottom:2px;right:2px;width:16px;height:16px;border-radius:50%;border:2.5px solid var(--panel);background:#64748b;transition:background .3s}
.act-status-badge.online{background:#22c55e;box-shadow:0 0 8px rgba(34,197,94,0.6)}
.act-status-badge.idle{background:#f59e0b;box-shadow:0 0 8px rgba(245,158,11,0.6)}
.act-status-badge.dnd{background:#ef4444;box-shadow:0 0 8px rgba(239,68,68,0.6)}
.act-status-badge.offline{background:#64748b}

.act-user-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.3rem}
.act-names{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}
.act-display-name{font:700 1.4rem var(--display);line-height:1.1}
.act-handle{font:.74rem var(--mono);color:var(--mute);letter-spacing:.06em}
.act-badge-pill{font:.62rem var(--mono);letter-spacing:.08em;padding:.1rem .4rem;border-radius:2px;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}
.act-custom-status{display:flex;align-items:center;gap:.4rem;font:.76rem var(--mono);color:var(--fg);margin-top:.2rem;word-break:break-word}
.act-custom-status img{width:16px;height:16px;object-fit:contain}
.act-bio-link{font:.72rem var(--mono);color:var(--accent);margin-top:.15rem;display:inline-block;transition:color .2s,opacity .2s}
.act-bio-link:hover{text-decoration:underline;opacity:.85}
.act-state-label{font:700 .65rem var(--mono);letter-spacing:.18em;color:var(--mute);text-transform:uppercase;margin-top:.35rem}

/* Presence Card */
.act-presence{overflow:hidden}
.act-online-view{display:flex;flex-direction:column;height:100%}
.act-current-wrap{flex-shrink:0}
.act-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:115px;color:var(--mute);gap:.6rem;text-align:center}
.act-empty-icon{font-size:1.6rem;color:var(--accent);opacity:.5}
.act-empty-text{font:.72rem var(--mono);letter-spacing:.14em;text-transform:uppercase}

/* Middle separator that does NOT touch the ends */
.act-separator{width:72%;margin:1.3rem auto;position:relative;text-align:center;display:flex;align-items:center;justify-content:center}
.act-separator::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:linear-gradient(90deg,transparent,var(--line) 20%,var(--line) 80%,transparent);z-index:1}
.act-separator span{position:relative;z-index:2;background:var(--panel);padding:0 .8rem;font:700 .62rem var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--mute)}

/* Recent Activities list */
.act-recent-wrap{margin-top:.2rem}
.recent-list{display:flex;flex-direction:column;gap:.5rem}
.recent-item{display:flex;align-items:center;gap:.85rem;padding:.45rem .65rem;border-radius:4px;border:1px solid transparent;background:color-mix(in srgb,var(--bg) 40%,transparent);transition:border-color .2s,background .2s}
.recent-item:hover{border-color:var(--line);background:color-mix(in srgb,var(--bg) 75%,transparent)}
.recent-icon{width:30px;height:30px;border-radius:5px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg) 90%,#fff 10%);border:1px solid var(--line);flex-shrink:0}
.recent-icon svg{width:17px;height:17px}
.recent-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}
.recent-top{display:flex;justify-content:space-between;align-items:baseline}
.recent-name{font:700 .82rem var(--body);color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recent-time{font:.66rem var(--mono);color:var(--mute);letter-spacing:.05em}
.recent-tags{display:flex;gap:.35rem;flex-wrap:wrap}
.rtag{font:.6rem var(--mono);letter-spacing:.06em;padding:.08rem .32rem;border-radius:2px;background:var(--panel);color:var(--mute);border:1px solid var(--line)}
.rtag.streak{color:#f59e0b;border-color:rgba(245,158,11,0.35);background:rgba(245,158,11,0.1)}
.rtag.trend{color:#ec4899;border-color:rgba(236,72,153,0.35);background:rgba(236,72,153,0.1)}

/* Offline Touching Grass View */
.act-offline-view{display:flex;flex-direction:column;gap:1rem;height:100%;justify-content:space-between}
.grass-header{display:flex;flex-direction:column;gap:.35rem}
.grass-badge{align-self:flex-start;font:700 .64rem var(--mono);letter-spacing:.2em;padding:.2rem .6rem;background:rgba(239,68,68,0.12);color:#ef4444;border:1px solid rgba(239,68,68,0.3);text-transform:uppercase;border-radius:2px}
.grass-quote{font:700 1.15rem var(--mono);color:#4ade80;line-height:1.35;margin-top:.4rem;letter-spacing:.02em;text-shadow:0 0 10px rgba(74,222,128,0.3)}
.grass-sub{font:.68rem var(--mono);letter-spacing:.18em;color:var(--mute);text-transform:uppercase}
.grass-canvas-wrap{position:relative;width:100%;height:150px;border:1px solid rgba(74,222,128,0.25);border-radius:4px;overflow:hidden;background:rgba(5,15,8,0.6)}
.grass-canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.grass-hud-tag{position:absolute;font:700 .62rem var(--mono);letter-spacing:.1em;color:#4ade80;opacity:.85;pointer-events:none}
.t-909{top:8px;right:10px;border:1px solid rgba(74,222,128,0.4);padding:1px 4px}
.t-grass{top:8px;left:10px;background:rgba(34,197,94,0.15);padding:1px 5px}
.t-ax{bottom:8px;left:10px}
.t-o2{bottom:8px;right:10px}

/* Spotify & Game media card */
.act-media-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}
.act-badge{font:700 .64rem var(--mono);letter-spacing:.18em;padding:.2rem .55rem;border-radius:2px;text-transform:uppercase}
.spotify-badge{background:rgba(29,185,84,0.15);color:#1db954;border:1px solid rgba(29,185,84,0.35)}
.game-badge{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent)}
.act-external{font:.85rem var(--mono);color:var(--mute);transition:color .2s,transform .2s}
.act-external:hover{color:var(--accent);transform:translate(2px,-2px)}
.act-elapsed{font:.68rem var(--mono);color:var(--mute);letter-spacing:.1em}

.act-media-body{display:flex;gap:1.1rem;align-items:center;margin-bottom:.85rem}
.act-cover{width:64px;height:64px;border-radius:4px;object-fit:cover;border:1px solid var(--line);flex-shrink:0}
.act-media-details{flex:1;min-width:0}
.act-song-title,.act-game-title{font:700 1.05rem var(--mono);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}
.act-artist,.act-game-details{font:.82rem var(--body);color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.15rem}
.act-album,.act-game-state{font:.72rem var(--mono);color:var(--mute);opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.15rem}

.act-scrubber{display:flex;flex-direction:column;gap:.35rem}
.act-progress-bar{height:4px;background:var(--line);border-radius:99px;overflow:hidden}
.act-progress-fill{height:100%;background:#1db954;width:0%;transition:width .3s linear}
.act-timestamps{display:flex;justify-content:space-between;font:.65rem var(--mono);color:var(--mute);letter-spacing:.08em}

.albums{padding:4rem 1.5rem 5rem}
.head{max-width:1100px;margin:0 auto 2rem;display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap}
.head h2{font:700 clamp(2.2rem,6vw,4rem)/1.15 var(--display);letter-spacing:.05em;margin-top:.35rem}
.nav{display:flex;align-items:center;gap:.7rem;font:.8rem var(--mono);color:var(--mute)}
.nav button{width:2.8rem;height:2.8rem;border:1px solid var(--line);border-radius:50%;transition:.3s var(--ease)}
.nav button:hover{border-color:var(--accent);color:var(--accent);scale:1.08}
.rack-view{max-width:1100px;margin:0 auto;overflow-x:auto;padding:3.5rem 1rem 1.5rem;scrollbar-width:none;border-bottom:1px solid var(--line)}
.rack-view::-webkit-scrollbar{display:none}
.rack{display:flex;gap:1rem;align-items:flex-end;width:max-content;padding:0 .5rem}
.spine{position:relative;width:74px;height:270px;background:var(--panel);border:1px solid var(--line);padding:.9rem .4rem;display:flex;flex-direction:column;align-items:center;justify-content:space-between;transition:transform .5s var(--ease),border-color .3s;user-select:none}
.spine::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--line);transition:background .3s}
.spine:hover{transform:translateY(-14px);border-color:var(--accent)}
.spine.sel{transform:translateY(-30px);border-color:var(--accent)}
.spine.sel::before,.spine:hover::before{background:var(--accent)}
.spine b{font:700 .66rem var(--mono);color:var(--accent);letter-spacing:.1em}
.spine .spine-type{font:700 .55rem var(--mono);letter-spacing:.14em;color:var(--mute);text-transform:uppercase}
.spine em{font:600 .76rem var(--mono);font-style:normal;writing-mode:vertical-rl;rotate:180deg;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;max-height:140px;overflow:hidden}
.spine small{font:.62rem var(--mono);color:var(--mute)}
.spine .spine-arrow{position:absolute;top:.55rem;right:.45rem;font:.75rem var(--mono);color:var(--mute);opacity:0;transition:opacity .2s,color .2s,transform .2s;text-decoration:none}
.spine:hover .spine-arrow,.spine.sel .spine-arrow{opacity:1;color:var(--accent)}
.spine .spine-arrow:hover{transform:translate(2px,-2px);color:#fff}

.deck{max-width:900px;margin:3rem auto 0;display:flex;gap:2.5rem;align-items:center;flex-wrap:wrap}
.cover{width:220px;aspect-ratio:1;flex-shrink:0;border:1px solid var(--line);background:var(--panel);position:relative;overflow:hidden;display:grid;place-items:center}
.cover img{width:100%;height:100%;object-fit:cover}
.cover span{position:absolute;left:.8rem;top:.8rem;font:700 .64rem var(--mono);letter-spacing:.12em;color:var(--accent)}
.cover::after{content:"✠";font-size:3rem;color:var(--accent);opacity:.35}
.cover.has::after{display:none}
.meta{flex:1;min-width:240px;animation:up .6s var(--ease) both}
.meta h3{font:700 clamp(2rem,5vw,3.2rem)/1.05 var(--display);margin:.5rem 0 .3rem}
.artist{font-size:1.15rem;color:var(--mute)}
.year{font:.74rem var(--mono);letter-spacing:.2em;color:var(--mute);margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--line)}

.deck-spotify-row{margin-top:1.25rem;display:flex;align-items:center}
.deck-spotify-btn{display:inline-flex;align-items:center;gap:.65rem;padding:.55rem 1.15rem;border-radius:4px;border:1px solid rgba(29,185,84,0.38);background:rgba(29,185,84,0.12);color:#1db954;font:700 .72rem var(--mono);letter-spacing:.12em;text-transform:uppercase;transition:all .25s var(--ease);text-decoration:none}
.deck-spotify-btn:hover{background:rgba(29,185,84,0.22);border-color:#1db954;color:#22c55e;transform:translateY(-2px);box-shadow:0 0 14px rgba(29,185,84,0.3)}
.deck-spotify-btn .spotify-logo{fill:currentColor;flex-shrink:0}
.deck-spotify-btn .arrow{display:inline-block;transition:transform .2s;font-weight:400;margin-left:2px}
.deck-spotify-btn:hover .arrow{transform:translate(2px,-2px)}

.note{max-width:880px;margin:0 auto;padding:5rem 1.5rem 7rem;border-top:1px solid var(--line)}
.note-wrap{display:flex;flex-direction:column}
.note blockquote{font-size:clamp(1.1rem,2.4vw,1.42rem);line-height:1.7;margin:1.4rem 0 2.2rem;padding-left:1.4rem;border-left:2px solid var(--accent);color:var(--fg);opacity:.95}
.note-content{display:flex;flex-direction:column;gap:1.35rem;margin-bottom:2.2rem}
.note-para{font-size:1.04rem;line-height:1.8;color:var(--fg);opacity:.92}
.note-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:.65rem 1.2rem;margin:.4rem 0 .6rem;padding:1rem 1.2rem;background:var(--panel);border:1px solid var(--line);border-radius:4px}
.note-list li{display:flex;align-items:center;gap:.65rem;font:.85rem var(--mono);color:var(--fg);letter-spacing:.03em}
.note-list li span{color:var(--accent);font-size:.85rem}
.note-discord-link{display:inline;color:var(--accent);font-weight:600;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 45%,transparent);transition:all .2s;white-space:nowrap}
.note-discord-link:hover{border-color:var(--accent);text-shadow:0 0 8px color-mix(in srgb,var(--accent) 50%,transparent)}
.note-discord-link .arrow{display:inline-block;transition:transform .2s;font-weight:400;margin-left:2px}
.note-discord-link:hover .arrow{transform:translate(2px,-2px)}
.sign{font:700 1.15rem var(--mono);color:var(--accent);letter-spacing:.08em}

footer{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1.8rem 1.5rem;border-top:1px solid var(--line);font:.72rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
footer b{color:var(--accent)}
footer a:hover{color:var(--accent)}

.i-on{display:none}
.theme{position:relative;overflow:hidden}
.theme svg{position:absolute;transition:transform .5s var(--ease),opacity .25s}
.i-moon{opacity:0;transform:rotate(-90deg) scale(.4)}
[data-theme=light] .i-sun{opacity:0;transform:rotate(90deg) scale(.4)}
[data-theme=light] .i-moon{opacity:1;transform:none}
.theme:active,.audio button:active{scale:.9}
.audio button,.theme{transition:scale .15s var(--ease),color .2s,border-color .3s}

[data-theme=light] #ascii{background:transparent}

.wv{opacity:0;translate:-48px 24px;filter:blur(6px)}
.in .wv{animation:wave 1.1s var(--ease) calc(var(--w,0)*120ms) both}
@keyframes wave{0%{opacity:0;translate:-48px 24px;filter:blur(6px)}60%{translate:6px -8px}100%{opacity:1;translate:none;filter:none}}
.albums .spine{opacity:0;translate:-64px 40px}
.albums.in .spine{animation:wave2 1.1s var(--ease) calc(.4s + var(--i)*110ms) both}
@keyframes wave2{0%{opacity:0;translate:-64px 40px}55%{translate:10px -20px}100%{opacity:1;translate:none}}
.albums.in .head h2{transition-delay:.15s}

@media(max-width:767px){
  :root{--bar-h:3.2rem}
  .tag{display:none}
  .bar{padding:0 1rem}
  .pin::before{inset:.6rem}
  .deck{gap:1.5rem}
  .cover{width:100%;max-width:300px}
  .foot{bottom:4.2rem}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
  .wv,.albums .spine{opacity:1;translate:none;filter:none}
  .links a,.scroll,.lead,.kicker,.look{opacity:1}
}
