@font-face{font-family:JetBrainsMono Nerd Font Mono;src:url(/fonts/JetBrainsMonoNerdFontMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrainsMono Nerd Font Mono;src:url(/fonts/JetBrainsMonoNerdFontMono-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#000;--surface:#0c0c0ccc;--surface-fallback:#0c0c0c;--surface-solid:#0b0b0b;--quartz:#f4f1ec;--text-primary:#f4f1ec;--text-secondary:#aaa7a2;--text-muted:#85827d;--border:#f4f1ec29;--border-active:#f4f1ec4d;--border-faint:#f4f1ec14;--highlight:#f4f1ec1a;--fill-subtle:#f4f1ec0d;--fill-hover:#f4f1ec0f;--shadow:0 12px 32px #00000073;--cal-0:#242423;--cal-1:#4c4b47;--cal-2:#78766f;--cal-3:#aeaba4;--cal-4:#f4f1ec;--font-mono:"JetBrainsMono Nerd Font Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, "Noto Sans Mono CJK JP", "Liberation Mono", monospace;--fs-body:.8125rem;--fs-about:.875rem;--fs-heading:.6875rem;--fs-meta:.6875rem;--lh-body:1.7;--tracking-heading:.08em;--page-margin:32px;--gap:16px;--panel-pad:24px;--panel-blur:14px;--ease:cubic-bezier(.2, .7, .2, 1);--t-link:.18s;--t-enter:.28s;--t-stagger:30ms}@media (max-width:767.98px){:root{--page-margin:16px;--gap:12px;--panel-pad:18px}}
*,:before,:after{box-sizing:border-box;border-radius:0!important}html{background:var(--background);color:var(--text-primary);-moz-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100dvh;font-family:var(--font-mono);font-size:var(--fs-body);line-height:var(--lh-body);font-variant-ligatures:none;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,p,ul,ol{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}img,svg{display:block}time{font-variant-numeric:tabular-nums}::selection{background:var(--quartz);color:var(--background)}:root[data-protect]{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}:root[data-protect] :is(a,img,svg){-webkit-user-drag:none}:root[data-protect] img{pointer-events:none}@media print{:root[data-protect] body{display:none}}:root[data-protect] :is(input,textarea,select,[contenteditable]:not([contenteditable=false])){-webkit-user-select:text;user-select:text}:focus-visible{outline:1px solid var(--quartz);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}.skip-link{top:8px;left:var(--page-margin);z-index:60;color:var(--text-primary);border:1px solid var(--quartz);background:#000;padding:6px 12px;position:absolute;transform:translateY(-200%)}.skip-link:focus{transform:none}@media (prefers-contrast:more){:root{--border:#f4f1ec80;--border-active:#f4f1ecbf;--border-faint:#f4f1ec4d;--text-secondary:#d4d1cc;--text-muted:#aaa7a2}}@media (forced-colors:active){.calendar__svg rect,.legend-cell,.status-marker--online,.marker{forced-color-adjust:none}.calendar__svg rect,.legend-cell{fill:canvastext;background-color:canvastext}.status-marker--online,.marker{background-color:canvastext}.level-0{opacity:.15}.level-1{opacity:.35}.level-2{opacity:.55}.level-3{opacity:.8}.level-4{opacity:1}}
.page{isolation:isolate;align-content:center;min-height:100dvh;padding-block:32px;display:grid;position:relative}.page:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(60vw 45vh at 12% 6%,#f4f1ec09,#0000 70%),radial-gradient(48vw 40vh at 90% 24%,#f4f1ec07,#0000 70%),radial-gradient(70vw 48vh at 42% 104%,#f4f1ec08,#0000 70%);position:fixed;inset:0}.dashboard{gap:var(--gap);width:calc(100% - 2 * var(--page-margin));max-width:1400px;margin-inline:auto;display:grid}.row{gap:var(--gap);min-width:0;display:grid}.row>*{min-width:0}@media (min-width:1200px){.row--top{grid-template-rows:minmax(390px,auto);grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr) minmax(0,1fr) minmax(0,1fr)}.row--top .panel--discord,.row--top .panel--listening{contain:size}.row--bottom{grid-template-rows:360px;grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}@media (min-width:768px) and (max-width:1199.98px){.row--top{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:360px}.row--bottom{grid-template-columns:minmax(0,1fr)}.panel--projects{height:400px}.dashboard .panel--activity{min-height:280px}}@media (max-width:767.98px){.row--top,.row--bottom{grid-template-columns:minmax(0,1fr)}.dashboard .panel--discord{height:460px;min-height:0}.dashboard .panel--activity{min-height:280px}.panel--listening{height:380px}.panel--projects{height:420px}}
.panel{min-width:0;min-height:0;padding:var(--panel-pad);background:var(--surface-fallback);border:1px solid var(--border);box-shadow:inset 0 1px 0 var(--highlight), var(--shadow);transition:border-color var(--t-link) var(--ease);animation:panel-in var(--t-enter) var(--ease) both;animation-delay:calc(var(--i,0) * var(--t-stagger));flex-direction:column;display:flex;position:relative}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.panel{background:var(--surface);-webkit-backdrop-filter:blur(var(--panel-blur)) saturate(1.1);backdrop-filter:blur(var(--panel-blur)) saturate(1.1)}}.panel:before{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#f4f1ec38 30% 70%,#0000);height:1px;position:absolute;inset:0 0 auto}@media (hover:hover){.panel:hover{border-color:var(--border-active)}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.panel{background:var(--surface-fallback);-webkit-backdrop-filter:none;backdrop-filter:none}}:root[data-glass=opaque] .panel{background:var(--surface-fallback);-webkit-backdrop-filter:none;backdrop-filter:none}@keyframes panel-in{0%{opacity:.01;transform:translateY(6px)}to{opacity:1;transform:none}}.panel__head{flex:none;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:18px;display:flex}.panel__title{font-size:var(--fs-heading);letter-spacing:var(--tracking-heading);text-transform:uppercase;color:var(--text-secondary);font-weight:500;line-height:1.4}.panel__aside{font-size:var(--fs-meta);color:var(--text-muted);text-align:right;line-height:1.4}.panel__body{--bleed:4px;margin:calc(-1 * var(--bleed));padding:var(--bleed);scrollbar-width:none;flex:1;min-width:0;min-height:0;position:relative;overflow-y:auto}.panel__body::-webkit-scrollbar{display:none}.scroll{padding-bottom:calc(20px + var(--bleed,0px));overscroll-behavior:auto;scroll-padding-block-end:28px;-webkit-mask-image:linear-gradient(#000 calc(100% - 20px),#0000);mask-image:linear-gradient(#000 calc(100% - 20px),#0000)}.scroll:focus-visible{outline-offset:-1px}@supports selector(:has(*)){.scroll:focus-visible{outline:none}.panel:has(.scroll:focus-visible){outline:1px solid var(--quartz);outline-offset:2px}}.marker{vertical-align:1px;background:var(--quartz);width:6px;height:6px;margin-right:6px;display:inline-block}.tag{border:1px solid var(--border);font-size:var(--fs-meta);color:var(--text-secondary);padding:0 8px;line-height:1.7;display:inline-block}.muted{color:var(--text-muted)}.stale-note{font-size:var(--fs-meta);color:var(--text-muted);margin-bottom:10px}.state{align-content:center;gap:6px;height:100%;min-height:120px;display:grid}.state__text{color:var(--text-secondary)}.state__hint{font-size:var(--fs-meta);color:var(--text-muted)}.skeleton__block{background:var(--fill-subtle);border:1px solid var(--border-faint);animation:2.4s ease-in-out infinite alternate skeleton-fade;display:block}.skeleton__row{grid-template-columns:44px minmax(0,1fr);gap:12px;padding:8px 0;display:grid}.skeleton__art{width:44px;height:44px}.skeleton__lines,.discord__lines{align-content:center;gap:8px;display:grid}.skeleton__line{width:72%;height:10px}.skeleton__line--short{width:42%}@keyframes skeleton-fade{0%{opacity:.55}to{opacity:1}}.tooltip{z-index:50;background:var(--surface-solid);border:1px solid var(--border-active);max-width:min(280px,100vw - 16px);font-family:var(--font-mono);font-size:var(--fs-meta);color:var(--text-primary);pointer-events:none;padding:6px 10px;line-height:1.5;position:fixed;transform:translate(-50%,-100%);box-shadow:0 8px 20px #0009}.tooltip--below{transform:translate(-50%)}.notice{width:calc(100% - 2 * var(--page-margin));max-width:420px;margin-inline:auto}.notice .state{min-height:96px}.notice__link{font:inherit;color:var(--text-primary);border:0;border-bottom:1px solid var(--border-active);cursor:pointer;background:0 0;padding:0}.notice__link:hover{border-bottom-color:var(--quartz)}
.links{gap:10px;display:grid}.link-row{border:1px solid var(--border);min-height:48px;color:var(--text-secondary);transition:color var(--t-link) var(--ease), border-color var(--t-link) var(--ease), background-color var(--t-link) var(--ease);grid-template-columns:16px minmax(0,1fr) 12px;align-items:center;gap:12px;padding:12px 14px;display:grid}.link-row__icon{transition:transform var(--t-link) var(--ease);display:grid}.link-row__text{min-width:0;line-height:1.5;display:grid}.link-row__label{font-size:var(--fs-meta);color:var(--text-muted);overflow-wrap:anywhere}.link-row__handle{color:var(--text-primary);transition:background-size var(--t-link) var(--ease);overflow-wrap:anywhere;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;justify-self:start}.link-row__external{opacity:.55;display:grid}.link-row:hover,.link-row:focus-visible{color:var(--text-primary);border-color:var(--border-active);background-color:var(--fill-hover)}.link-row:hover .link-row__icon,.link-row:focus-visible .link-row__icon{transform:translate(2px)}.link-row:hover .link-row__handle,.link-row:focus-visible .link-row__handle{background-size:100% 1px}.art{border:1px solid var(--border);background-color:var(--fill-subtle);background-image:linear-gradient(45deg,#f4f1ec14 25%,#0000 25% 75%,#f4f1ec14 75%),linear-gradient(45deg,#f4f1ec14 25%,#0000 25% 75%,#f4f1ec14 75%);background-position:0 0,4px 4px;background-size:8px 8px;flex:none;display:block;position:relative;overflow:hidden}.art img{object-fit:cover;width:100%;height:100%;position:relative}.tracks .track{border-top:1px solid var(--border-faint)}.tracks .track:first-child{border-top:0}.track{grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 0;display:grid}.track__text{min-width:0;display:grid}.track__title{color:var(--text-primary);overflow-wrap:anywhere;font-weight:500}.track__title a,.activity__title a,.project__name{position:relative}.track__title a:after,.activity__title a:after,.project__name:after{content:"";position:absolute;inset:-5px -3px}.nowrap{white-space:nowrap}.track__title a:hover,.track__title a:focus-visible,.activity__title a:hover,.activity__title a:focus-visible{text-underline-offset:3px;text-decoration:underline}.track__external{color:var(--text-muted);margin-left:6px;display:inline-block}.track__artist{color:var(--text-secondary);overflow-wrap:anywhere;font-size:.75rem;line-height:1.5}.track__time{font-size:var(--fs-meta);white-space:nowrap;color:var(--text-muted);align-self:start;margin-top:6px}.now-playing{border:1px solid var(--border);background:var(--fill-subtle);margin-bottom:14px;padding:12px 14px}.now-playing__label{font-size:var(--fs-meta);letter-spacing:var(--tracking-heading);text-transform:uppercase;color:var(--text-secondary);margin-bottom:4px}.now-playing .track{grid-template-columns:44px minmax(0,1fr);padding:4px 0 0}.project{border-top:1px solid var(--border-faint);padding:14px 0}.project:first-child{border-top:0;padding-top:0}.project__name{color:var(--text-primary);overflow-wrap:anywhere;font-weight:500}.project__name:hover,.project__name:focus-visible{text-underline-offset:3px;text-decoration:underline}.project__external{color:var(--text-muted);margin-left:6px;display:inline-block}.project__flags{vertical-align:1px;gap:6px;margin-left:8px;display:inline-flex}.project__description{color:var(--text-secondary);overflow-wrap:anywhere;margin-top:4px}.project__meta{font-size:var(--fs-meta);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:2px 14px;margin-top:8px;display:flex}.project__meta>span{align-items:center;gap:5px;display:inline-flex}.about{font-size:var(--fs-about);gap:20px;line-height:1.75;display:grid}.about__line{color:var(--text-primary)}.panel--activity .panel__body{flex-direction:column;display:flex}.calendar{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.calendar__summary{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 16px;display:flex}.calendar__total{color:var(--text-secondary)}.calendar__number{color:var(--text-primary);font-size:1rem;font-weight:500}.calendar__range,.calendar__legend{font-size:var(--fs-meta);color:var(--text-muted)}.calendar__interactive{min-width:0;margin-block:auto}.calendar__scroll{scrollbar-width:thin;scrollbar-color:var(--border-active) transparent;direction:rtl;overflow-x:auto}.calendar__grid{direction:ltr;grid-template-rows:18px auto;grid-template-columns:32px minmax(0,1fr);min-width:700px;max-width:900px;margin-inline:auto;padding:3px;display:grid}@media (min-width:768px){.calendar__grid{min-width:640px}}.calendar__weekdays{z-index:1;background:var(--surface-solid);grid-area:2/1;position:sticky;left:0}.calendar__weekdays span{font-size:var(--fs-meta);color:var(--text-muted);line-height:1;position:absolute;right:8px;transform:translateY(-50%)}.calendar__months{grid-area:1/2;position:relative}.calendar__months span{font-size:var(--fs-meta);color:var(--text-muted);line-height:18px;position:absolute;top:0}.calendar__svg{grid-area:2/2;width:100%;height:auto;overflow:visible}.calendar__svg rect:hover,.calendar__svg rect:focus-visible{outline:1px solid var(--quartz);outline-offset:1px}.level-0{fill:var(--cal-0);background-color:var(--cal-0)}.level-1{fill:var(--cal-1);background-color:var(--cal-1)}.level-2{fill:var(--cal-2);background-color:var(--cal-2)}.level-3{fill:var(--cal-3);background-color:var(--cal-3)}.level-4{fill:var(--cal-4);background-color:var(--cal-4)}.calendar__legend{justify-content:flex-end;align-items:center;gap:6px;margin-top:8px;display:flex}.legend-cell{width:12px;height:12px;display:inline-block}.calendar-skeleton{background-color:var(--fill-subtle);border:1px solid var(--border-faint);flex:1;min-height:190px;animation:2.4s ease-in-out infinite alternate skeleton-fade}.panel--discord{padding:0}.discord__banner{border-bottom:1px solid var(--border);background:linear-gradient(118deg,#f4f1ec21 0%,#f4f1ec08 38%,#f4f1ec17 62%,#f4f1ec05 100%),repeating-linear-gradient(90deg,#f4f1ec0b 0 1px,#0000 1px 10px),#070707;flex:none;height:100px;position:relative;overflow:hidden}.discord__banner img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.discord__label,.discord__connection{z-index:1;border:1px solid var(--border);font-size:var(--fs-heading);letter-spacing:var(--tracking-heading);text-transform:uppercase;color:var(--text-secondary);background:#0009;padding:1px 8px;font-weight:500;line-height:1.6;position:absolute;top:21px}.discord__label{left:var(--panel-pad)}.discord__connection{right:var(--panel-pad);letter-spacing:.04em;color:var(--text-primary)}.discord__connection.is-stale{color:var(--text-secondary)}.discord__connection.is-stale .marker{outline:1px solid var(--text-secondary);outline-offset:-1px;background:0 0}.discord__identity{padding:0 var(--panel-pad);flex:none;align-items:flex-start;gap:16px;display:flex}.discord__avatar{background:var(--surface-solid);width:64px;height:64px;box-shadow:0 0 0 3px #0a0a0a, 0 0 0 4px var(--border-active);flex:none;margin-top:-32px;position:relative}.discord__avatar-frame{width:64px;height:64px;font-size:var(--fs-meta);color:var(--text-muted);line-height:1.2;display:block;overflow:hidden}.discord__avatar img{object-fit:cover;width:64px;height:64px}.discord__avatar .status-marker{--empty:#000;width:14px;height:14px;position:absolute;bottom:-6px;right:-6px;box-shadow:0 0 0 3px #0a0a0a}.discord__avatar-skeleton{flex:none;width:64px;height:64px;margin-top:-32px}.discord__lines{flex:1;padding-top:8px}.discord__names{min-width:0;padding-top:8px}.discord__name{color:var(--text-primary);overflow-wrap:anywhere;font-size:.875rem;font-weight:500;line-height:1.4}.discord__username{color:var(--text-muted);overflow-wrap:anywhere;font-size:.75rem;line-height:1.5}.discord__status{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:0 6px;margin-top:2px;font-size:.75rem;display:flex}.discord__platforms{color:var(--text-muted)}.discord__body{padding:14px var(--panel-pad) 20px;margin:0}.discord__bio{color:var(--text-secondary);white-space:pre-line;overflow-wrap:anywhere;margin-bottom:14px}.badges{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.custom-status{color:var(--text-primary);overflow-wrap:anywhere;align-items:center;gap:8px;display:flex}.custom-status__emoji{text-align:center;flex:none;width:16px;height:16px;line-height:16px}.activities{gap:10px;display:grid}.activity{border:1px solid var(--border);background:var(--fill-subtle);grid-template-columns:56px minmax(0,1fr);gap:12px;padding:12px 14px;display:grid}.activity__text{align-content:start;min-width:0;display:grid}.activity__kind{font-size:var(--fs-meta);letter-spacing:var(--tracking-heading);text-transform:uppercase;color:var(--text-secondary)}.activity__title{color:var(--text-primary);overflow-wrap:anywhere;font-weight:500}.activity__detail{color:var(--text-secondary);overflow-wrap:anywhere;font-size:.75rem;line-height:1.5}.activity__detail--muted{color:var(--text-muted)}.activity__time{font-size:var(--fs-meta);color:var(--text-muted);margin-top:6px}.progress{background:var(--border);height:2px;margin-top:6px;display:block;position:relative}.progress__fill{background:var(--quartz);transform-origin:0;transition:transform 1s linear;position:absolute;inset:0}.discord__setup{padding:0 var(--panel-pad)}.discord__late{inset:auto var(--panel-pad) var(--panel-pad);font-size:var(--fs-meta);color:var(--text-muted);opacity:0;visibility:hidden;margin:0;position:absolute;animation:.001ms linear 14s forwards discord-late!important}@keyframes discord-late{to{opacity:1;visibility:visible}}.status-marker{--empty:transparent;border:1px solid var(--quartz);background:var(--empty);flex:none;width:10px;height:10px;display:inline-block}.status-marker--online{background:var(--quartz)}.status-marker--idle{background:linear-gradient(135deg, var(--quartz) 50%, var(--empty) 50%)}.status-marker--dnd{background:linear-gradient(#000, #000) center / 6px 2px no-repeat, var(--quartz)}.status-marker--offline{border-color:var(--text-muted);background:var(--empty)}
