@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap";:root{--font-primary: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Courier New", monospace;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-6: 1.5rem;--spacing-8: 2rem;--spacing-10: 2.5rem;--spacing-12: 3rem;--spacing-16: 4rem;--spacing-24: 6rem;--radius-sm: .125rem;--radius-base: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-base: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--transition-fast: .15s;--transition-base: .2s;--transition-slow: .3s;--max-width-lg: 1024px;--max-width-xl: 1280px;--container-padding: 1rem}:root,[data-theme=light]{--color-primary-main: #2d5016;--color-primary-light: #4a7c2c;--color-primary-dark: #1a3009;--color-primary-contrast: #ffffff;--color-secondary-main: #4e342e;--color-secondary-light: #6d4c41;--color-secondary-dark: #3e2723;--color-secondary-contrast: #ffffff;--color-neutral-white: #ffffff;--color-neutral-gray-100: #f5f5f4;--color-neutral-gray-200: #e7e5e4;--color-neutral-gray-300: #d6d3d1;--color-neutral-gray-400: #a8a29e;--color-neutral-gray-500: #78716c;--color-neutral-gray-600: #57534e;--color-neutral-gray-700: #44403c;--color-neutral-gray-800: #292524;--color-neutral-gray-900: #1c1917;--color-neutral-black: #0a0a0a;--color-success: #2d5016;--color-warning: #92400e;--color-error: #991b1b;--color-info: #0f766e;--color-bg-primary: #fafaf9;--color-bg-secondary: #f5f5f4;--color-bg-tertiary: #e7e5e4;--color-text-primary: #1c1917;--color-text-secondary: #44403c;--color-text-tertiary: #78716c;--color-text-inverse: #fafaf9;--color-border-primary: #e7e5e4;--color-border-secondary: #d6d3d1;--color-border-tertiary: #a8a29e;color-scheme:light}[data-theme=dark]{--color-primary-main: #4ebb8b;--color-primary-light: #6fcfa3;--color-primary-dark: #3a9a72;--color-primary-contrast: #1c1917;--color-secondary-main: #8d6e63;--color-secondary-light: #a1887f;--color-secondary-dark: #6d4c41;--color-secondary-contrast: #1c1917;--color-neutral-white: #0a0a0a;--color-neutral-gray-100: #1c1917;--color-neutral-gray-200: #292524;--color-neutral-gray-300: #44403c;--color-neutral-gray-400: #57534e;--color-neutral-gray-500: #78716c;--color-neutral-gray-600: #a8a29e;--color-neutral-gray-700: #d6d3d1;--color-neutral-gray-800: #e7e5e4;--color-neutral-gray-900: #f5f5f4;--color-neutral-black: #fafaf9;--color-success: #4ebb8b;--color-warning: #d97706;--color-error: #dc2626;--color-info: #0d9488;--color-bg-primary: #0a0a0a;--color-bg-secondary: #1c1917;--color-bg-tertiary: #292524;--color-text-primary: #f5f5f4;--color-text-secondary: #d6d3d1;--color-text-tertiary: #a8a29e;--color-text-inverse: #1c1917;--color-border-primary: #292524;--color-border-secondary: #44403c;--color-border-tertiary: #57534e;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--color-primary-main: #4ebb8b;--color-primary-light: #6fcfa3;--color-primary-dark: #3a9a72;--color-primary-contrast: #1c1917;--color-secondary-main: #8d6e63;--color-secondary-light: #a1887f;--color-secondary-dark: #6d4c41;--color-secondary-contrast: #1c1917;--color-neutral-white: #0a0a0a;--color-neutral-gray-100: #1c1917;--color-neutral-gray-200: #292524;--color-neutral-gray-300: #44403c;--color-neutral-gray-400: #57534e;--color-neutral-gray-500: #78716c;--color-neutral-gray-600: #a8a29e;--color-neutral-gray-700: #d6d3d1;--color-neutral-gray-800: #e7e5e4;--color-neutral-gray-900: #f5f5f4;--color-neutral-black: #fafaf9;--color-success: #4ebb8b;--color-warning: #d97706;--color-error: #dc2626;--color-info: #0d9488;--color-bg-primary: #0a0a0a;--color-bg-secondary: #1c1917;--color-bg-tertiary: #292524;--color-text-primary: #f5f5f4;--color-text-secondary: #d6d3d1;--color-text-tertiary: #a8a29e;--color-text-inverse: #1c1917;--color-border-primary: #292524;--color-border-secondary: #44403c;--color-border-tertiary: #57534e;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}#root{transform:none!important;zoom:1!important}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-primary);font-size:1rem;line-height:1.5;color:var(--color-text-primary);background-color:var(--color-bg-primary);min-height:100vh;transition:background-color .3s ease,color .3s ease;transform:none!important;zoom:1!important}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25;margin-bottom:.5em;color:var(--color-text-primary)}h1{font-size:2rem;font-weight:800}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.125rem}h5{font-size:1rem}h6{font-size:.9375rem}p{margin-bottom:1rem;color:var(--color-text-secondary)}a{color:var(--color-primary-main);text-decoration:none;transition:color var(--transition-base) ease}a:hover{color:var(--color-primary-dark)}ul,ol{list-style:none}button{font-family:inherit;font-size:inherit;border:none;background:none;cursor:pointer}img{max-width:100%;height:auto;display:block}code,pre{font-family:var(--font-mono)}code{padding:.125rem .25rem;background-color:var(--color-neutral-gray-100);border-radius:var(--radius-base);font-size:.875rem}pre{padding:1rem;background-color:var(--color-neutral-gray-900);color:var(--color-text-inverse);border-radius:var(--radius-lg);overflow-x:auto}pre code{background:none;padding:0;color:inherit}.container{max-width:var(--max-width-xl);margin:0 auto;padding:0 var(--container-padding)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}*:focus-visible{outline:2px solid var(--color-primary-main);outline-offset:2px}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media print{body{background:#fff;color:#000}}.theme-toggle{display:flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);background-color:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);font-size:.875rem;font-weight:500;font-family:var(--font-primary);cursor:pointer;transition:all var(--transition-base) ease;white-space:nowrap}.theme-toggle:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary);border-color:var(--color-border-secondary)}.theme-toggle:active{transform:scale(.95)}.theme-toggle__icon{display:flex;align-items:center;justify-content:center}.theme-toggle__icon svg{transition:transform var(--transition-base) ease}.theme-toggle:hover .theme-toggle__icon svg{transform:rotate(15deg)}.theme-toggle__label{font-size:.8125rem}.theme-toggle:focus-visible{outline:2px solid var(--color-primary-main);outline-offset:2px}@media(max-width:640px){.theme-toggle__label{display:none}.theme-toggle{padding:var(--spacing-2)}}@media(min-width:641px){.theme-toggle__label{display:block}}.header{position:sticky;top:0;z-index:1020;background-color:var(--color-bg-primary);border-bottom:1px solid var(--color-border-primary);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.header__container{display:flex;align-items:center;justify-content:space-between;height:3.5rem;padding-top:var(--spacing-3);padding-bottom:var(--spacing-3)}.header__logo{display:flex;align-items:center;text-decoration:none;color:var(--color-text-primary);font-weight:700;font-size:1rem;transition:color var(--transition-base) ease}.header__logo:hover{color:var(--color-primary-main)}.header__logo-text{letter-spacing:-.025em}.header__actions{display:flex;align-items:center;gap:var(--spacing-3)}.header__nav--desktop{display:none}.header__nav-list{display:flex;gap:0;list-style:none;margin:0;padding:0}.header__nav-item{display:flex}.header__nav-link{position:relative;display:flex;align-items:center;padding:var(--spacing-2);color:var(--color-text-secondary);text-decoration:none;font-weight:500;font-size:.875rem;border-radius:var(--radius-md);transition:all var(--transition-base) ease}.header__nav-link:hover{color:var(--color-primary-main);background-color:var(--color-neutral-gray-100)}.header__nav-link--active{color:var(--color-primary-main);background-color:var(--color-bg-tertiary)}.header__nav-link--active:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:0;height:2px;background-color:var(--color-primary-main)}.header__hamburger{display:flex;flex-direction:column;justify-content:center;align-items:center;width:40px;height:40px;padding:var(--spacing-2);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;gap:5px;transition:background-color var(--transition-base) ease}.header__hamburger:hover{background-color:var(--color-bg-tertiary)}.header__hamburger-line{display:block;width:22px;height:2px;background-color:var(--color-text-primary);border-radius:var(--radius-full);transition:all var(--transition-base) ease;transform-origin:center}.header__hamburger--open .header__hamburger-line:nth-child(1){transform:translateY(7px) rotate(45deg)}.header__hamburger--open .header__hamburger-line:nth-child(2){opacity:0;transform:scaleX(0)}.header__hamburger--open .header__hamburger-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.header__overlay{position:fixed;inset:0;top:3.5rem;background-color:#00000080;opacity:0;visibility:hidden;transition:opacity var(--transition-base) ease,visibility var(--transition-base) ease;z-index:1010}.header__overlay--visible{opacity:1;visibility:visible}.header__mobile-nav{position:fixed;top:3.5rem;right:0;width:280px;max-width:85vw;height:calc(100vh - 3.5rem);background-color:var(--color-bg-primary);border-left:1px solid var(--color-border-primary);transform:translate(100%);transition:transform var(--transition-slow) cubic-bezier(.4,0,.2,1);z-index:1015;overflow-y:auto;padding:var(--spacing-4)}.header__mobile-nav--open{transform:translate(0)}.header__mobile-nav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--spacing-2)}.header__mobile-nav-item{opacity:0;transform:translate(20px)}.header__mobile-nav--open .header__mobile-nav-item{animation:slideInRight var(--transition-base) ease forwards}@keyframes slideInRight{to{opacity:1;transform:translate(0)}}.header__mobile-nav-link{display:flex;align-items:center;padding:var(--spacing-3) var(--spacing-4);color:var(--color-text-secondary);text-decoration:none;font-weight:500;font-size:1rem;border-radius:var(--radius-lg);transition:all var(--transition-base) ease}.header__mobile-nav-link:hover{color:var(--color-primary-main);background-color:var(--color-bg-tertiary)}.header__mobile-nav-link--active{color:var(--color-primary-main);background-color:var(--color-bg-tertiary);font-weight:600}@media(min-width:768px){.header__container{height:3.75rem}.header__logo{font-size:1.125rem}.header__nav--desktop{display:flex;align-items:center}.header__nav-list{gap:var(--spacing-1)}.header__nav-link{padding:var(--spacing-2) var(--spacing-3);font-size:.875rem}.header__hamburger,.header__overlay,.header__mobile-nav{display:none}}@media(min-width:1024px){.header__container{height:4rem}.header__logo{font-size:1.25rem}.header__nav-list{gap:var(--spacing-2)}.header__nav-link{padding:var(--spacing-2) var(--spacing-4);font-size:.9375rem}}@media(prefers-reduced-motion:reduce){.header__hamburger-line,.header__overlay,.header__mobile-nav,.header__mobile-nav-item{transition:none;animation:none}.header__mobile-nav-item{opacity:1;transform:none}}.footer{margin-top:auto;background-color:var(--color-bg-secondary);border-top:1px solid var(--color-neutral-gray-200);padding:var(--spacing-8) 0}.footer__container{display:flex;flex-direction:column;align-items:center}.footer__content{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-4);text-align:center}.footer__text{color:var(--color-text-secondary);font-size:.875rem;margin:0}.footer__links{display:flex;gap:var(--spacing-6)}.footer__link{color:var(--color-text-secondary);text-decoration:none;font-size:.875rem;font-weight:500;transition:color var(--transition-base) ease}.footer__link:hover{color:var(--color-primary-main)}.footer__link--cryptic{font-family:var(--font-mono)}.footer__link--cryptic:hover{color:var(--color-error)}@media(min-width:768px){.footer__content{flex-direction:row;justify-content:space-between;width:100%}.footer__text{text-align:left}}.layout{display:flex;flex-direction:column;min-height:100vh}.layout__main{flex:1;width:100%;padding:var(--spacing-4) 0}@media(min-width:768px){.layout__main{padding:var(--spacing-6) 0}}@media(min-width:1024px){.layout__main{padding:var(--spacing-8) 0}}.playback-bar{position:fixed;bottom:var(--spacing-4);left:50%;transform:translate(-50%);max-width:900px;width:calc(100% - var(--spacing-8));background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:var(--spacing-3) var(--spacing-4);z-index:1000;box-shadow:0 4px 20px #00000026;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.playback-bar__container{display:grid;grid-template-columns:1fr 2fr 1fr;gap:var(--spacing-4);align-items:center}.playback-bar__song-info{display:flex;align-items:center;gap:var(--spacing-3);min-width:0}.playback-bar__song-details{min-width:0;flex:1}.playback-bar__song-name{font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}.playback-bar__song-artist{font-size:.8rem;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playback-bar__controls{display:flex;flex-direction:column;gap:var(--spacing-2);align-items:center}.playback-bar__buttons{display:flex;align-items:center;gap:var(--spacing-2)}.playback-bar__button{background:none;border:none;color:var(--color-text-secondary);cursor:pointer;padding:var(--spacing-2);border-radius:var(--border-radius-sm);transition:all .2s ease;display:flex;align-items:center;justify-content:center}.playback-bar__button svg{width:20px;height:20px}.playback-bar__button:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.playback-bar__button--play{background:var(--color-primary);color:#fff;width:40px;height:40px;border-radius:50%}.playback-bar__button--play:hover{background:var(--color-primary-dark);transform:scale(1.05)}.playback-bar__button--play svg{width:24px;height:24px}.playback-bar__button--active{color:#1db954}.playback-bar__progress-container{display:flex;align-items:center;gap:var(--spacing-2);width:100%}.playback-bar__time{font-size:.75rem;color:var(--color-text-secondary);min-width:40px;text-align:center;flex-shrink:0}.playback-bar__progress-wrapper{flex:1;position:relative;height:12px;display:flex;align-items:center;background:transparent;overflow:visible}.playback-bar__progress-fill{position:absolute;top:50%;transform:translateY(-50%);left:0;height:6px;background:#1db954;border-radius:3px;pointer-events:none;transition:width .1s linear;z-index:1}.playback-bar__progress-wrapper:before{content:"";position:absolute;top:50%;transform:translateY(-50%);left:0;width:100%;height:6px;background:var(--color-border);border-radius:3px;z-index:0}.playback-bar__progress{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;outline:none;-webkit-appearance:none;appearance:none;cursor:pointer;margin:0;z-index:2}.playback-bar__progress::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:0;height:0;cursor:pointer;opacity:0}.playback-bar__progress::-moz-range-thumb{width:0;height:0;border:none;cursor:pointer;opacity:0}.playback-bar__progress::-webkit-slider-runnable-track{width:100%;height:6px;background:transparent}.playback-bar__progress::-moz-range-track{width:100%;height:6px;background:transparent}.playback-bar__playlist-info{display:flex;justify-content:flex-end;align-items:center;min-width:0}.playback-bar__playlist-name{font-size:.85rem;color:var(--color-text-secondary);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playback-bar__track-count{display:block;font-size:.75rem;color:var(--color-text-tertiary);margin-top:2px}@media(max-width:768px){.playback-bar{bottom:var(--spacing-2);width:calc(100% - var(--spacing-4));padding:var(--spacing-3);max-width:none}.playback-bar__container{grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:var(--spacing-3)}.playback-bar__song-info{order:1;justify-content:center;text-align:center}.playback-bar__controls{order:2;gap:var(--spacing-2)}.playback-bar__playlist-info{order:3;justify-content:center}.playback-bar__buttons{gap:var(--spacing-2)}.playback-bar__button{padding:var(--spacing-1)}.playback-bar__button svg{width:18px;height:18px}.playback-bar__button--play{width:40px;height:40px}.playback-bar__button--play svg{width:22px;height:22px}.playback-bar__progress-container{width:100%}.playback-bar__time{font-size:.7rem;min-width:35px}.playback-bar__song-name{font-size:.85rem}.playback-bar__song-artist{font-size:.75rem}.playback-bar__playlist-name{font-size:.8rem;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--spacing-2)}.playback-bar__track-count{margin-top:0}}.yt-host{position:fixed;left:-10000px;top:0;width:200px;height:200px;opacity:0;pointer-events:none}.np{display:flex;align-items:center;gap:10px;min-width:0;font-family:var(--mono);font-size:12px;color:var(--ink-soft)}.np--menubar{margin-left:auto;max-width:46%}.np--bar{position:relative;z-index:6;padding:8px max(12px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line)}.np__track{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.np__track strong{color:var(--ink);font-weight:500}.np__pos{color:var(--ink-faint);font-variant-numeric:tabular-nums}.np__controls{display:flex;gap:2px;margin-left:auto;flex:none}.np__controls button{font:inherit;font-size:13px;color:var(--ink-soft);background:none;border:0;border-radius:5px;padding:2px 6px;cursor:pointer}.np__controls button:hover{color:var(--accent);background:#ffffff0f}.np__eq{display:inline-flex;align-items:flex-end;gap:2px;height:11px;flex:none}.np__eq i{width:2px;height:3px;background:var(--accent);border-radius:1px}.np__eq.is-on i{animation:np-eq .9s ease-in-out infinite}.np__eq.is-on i:nth-child(2){animation-delay:-.3s}.np__eq.is-on i:nth-child(3){animation-delay:-.6s}@keyframes np-eq{0%,to{height:3px}50%{height:11px}}@media(prefers-reduced-motion:reduce){.np__eq.is-on i{animation:none;height:8px}}.nudge{position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;align-items:center;gap:14px;max-width:min(420px,calc(100vw - 32px));padding:12px 10px 12px 16px;font-family:var(--sans, system-ui, sans-serif);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px #00000040;animation:nudge-in .42s cubic-bezier(.2,.8,.2,1) both}@keyframes nudge-in{0%{opacity:0;transform:translateY(14px)}}.nudge__eq{display:inline-flex;align-items:flex-end;gap:2px;height:16px;flex:none}.nudge__eq i{width:3px;height:4px;background:var(--accent);border-radius:1px;animation:np-eq .9s ease-in-out infinite}.nudge__eq i:nth-child(2){animation-delay:-.3s}.nudge__eq i:nth-child(3){animation-delay:-.6s}.nudge__eq i:nth-child(4){animation-delay:-.15s}.nudge__text{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:13.5px;line-height:1.4}.nudge__text strong{font-weight:600}.nudge__text span{color:var(--ink-soft)}.nudge__text code{padding:0;font-family:var(--mono, ui-monospace, monospace);font-size:12.5px;background:none;color:var(--accent);-webkit-user-select:all;user-select:all;white-space:nowrap}.nudge--howto{align-items:flex-start}.nudge--howto .nudge__eq{margin-top:3px}.nudge__play{flex:none;min-height:36px;padding:0 14px;font:inherit;font-size:13.5px;font-weight:600;color:var(--on-accent);background:var(--accent);border:0;border-radius:999px;cursor:pointer}.nudge__play:hover{filter:brightness(1.08)}.nudge__close{flex:none;width:30px;height:30px;font-size:13px;color:var(--ink-faint);background:none;border:0;border-radius:8px;cursor:pointer}.nudge__close:hover{color:var(--ink);background:#7f7f7f24}.nudge :focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){.nudge,.nudge__eq i{animation:none}}.pdf__pages{max-width:780px;margin:0 auto}.pdf__page{margin-bottom:16px;box-shadow:0 6px 20px #0006}.pdf__page canvas{max-width:100%;height:auto!important}.pdf__status{margin:40px 0;text-align:center;color:var(--ink-soft);font-size:13px}.readme__body{max-width:720px;margin:0 auto;font-family:var(--mono);font-size:14px;line-height:1.7;color:var(--ink-soft)}.readme__body h1{margin:0 0 6px;font-size:26px;line-height:1.2;color:var(--ink);font-weight:600}.readme__body h1:before{content:"# ";color:var(--accent)}.readme__body h2{margin:32px 0 10px;font-size:16px;color:var(--ink);font-weight:600}.readme__body h2:before{content:"## ";color:var(--accent)}.readme__body p{margin:0 0 14px}.readme__body ul{margin:0;padding-left:0;list-style:none}.readme__body li{padding-left:18px;position:relative;margin-bottom:4px}.readme__body li:before{content:"-";position:absolute;left:0;color:var(--accent)}.readme__tags{color:var(--ink-faint);font-size:12.5px}.readme__links{display:flex;flex-wrap:wrap;gap:8px 20px}.readme__links a{color:var(--path);text-underline-offset:3px}.readme__stack{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 20px;margin:0}.readme__stack dt{color:var(--key)}.readme__stack dd{margin:0}@media(max-width:600px){.readme__body{font-size:13px}.readme__body h1{font-size:22px}}.view--pdf{padding:20px;background:#1a1e23;min-height:100%}.view--readme{padding:28px 32px 40px}.view--image{margin:0;height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto;place-items:center;padding:16px;gap:10px}.view--image img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:6px}.view--image figcaption{font-size:12.5px;color:var(--ink-faint)}.readme__shots{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.readme__shot{display:flex;flex-direction:column;gap:6px;padding:0;font:inherit;font-size:11.5px;line-height:1.4;text-align:left;color:var(--ink-faint);background:none;border:0;cursor:zoom-in}.readme__shot img{width:100%;aspect-ratio:16 / 10;object-fit:cover;object-position:top;border:1px solid var(--line);border-radius:6px;transition:border-color .15s}.readme__shot:hover img{border-color:var(--accent)}.readme__shot:hover span{color:var(--ink-soft)}@media(max-width:600px){.view--readme{padding:18px 16px 32px}}.view--library{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:18px;padding:24px;align-content:start}.shelf__book{position:relative;display:block;border-radius:4px;transition:transform .15s}.shelf__book img{display:block;width:100%;aspect-ratio:2 / 3;object-fit:cover;border-radius:4px;box-shadow:0 6px 16px #00000080}.shelf__book:hover{transform:translateY(-3px)}.shelf__book:hover img{outline:2px solid var(--accent);outline-offset:2px}.shelf__fav{position:absolute;top:6px;right:6px;font-size:12px;line-height:1;padding:3px 4px;border-radius:3px;color:var(--accent);background:#07090bcc}.site{position:relative;min-height:100svh;font-size:16px;line-height:1.6}.site-rain{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.22;--gap: 600px;-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(50% - var(--gap) - 80px),transparent calc(50% - var(--gap) + 40px),transparent calc(50% + var(--gap) - 40px),#000 calc(50% + var(--gap) + 80px));mask-image:linear-gradient(to right,#000 0,#000 calc(50% - var(--gap) - 80px),transparent calc(50% - var(--gap) + 40px),transparent calc(50% + var(--gap) - 40px),#000 calc(50% + var(--gap) + 80px))}@media(max-width:1239px){.site-rain{display:none}}:where(.site>:not(.site-rain)){position:relative;z-index:1}.site>.site-bar{position:sticky;z-index:20}.site>.rail{position:fixed;z-index:10}:where(.site) a{color:inherit}.site-wrap{max-width:1120px;margin:0 auto;padding-left:max(24px,env(safe-area-inset-left,0px));padding-right:max(24px,env(safe-area-inset-right,0px))}.site-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:24px;padding:12px max(24px,env(safe-area-inset-right,0px)) 12px max(24px,env(safe-area-inset-left,0px));background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}.site-bar__name{font-weight:650;letter-spacing:-.01em;text-decoration:none}.site-bar__nav{display:flex;gap:4px;font-size:14px}.site-bar__nav a,.site-bar__nav button{font:inherit;color:var(--ink-soft);background:none;border:0;border-radius:6px;padding:5px 10px;text-decoration:none;cursor:pointer}.site-bar__nav a:hover,.site-bar__nav button:hover{color:var(--ink);background:var(--surface)}.site-bar__tools{margin-left:auto;display:flex;align-items:center;gap:10px}.site-bar__term{font-family:var(--mono);font-size:12px;color:var(--ink-soft);background:transparent;border:1px solid var(--line);border-radius:999px;padding:7px 12px;cursor:pointer}.site-bar__term span{color:var(--accent);margin-right:4px}.site-bar__term:hover{color:var(--ink);border-color:var(--ink-faint)}.hero{padding-top:clamp(56px,10vw,120px);padding-bottom:clamp(48px,8vw,96px);display:flex;flex-direction:column;gap:22px}.hero>*{margin:0}.hero__name{font-size:clamp(56px,10vw,136px);font-weight:680;letter-spacing:-.05em;line-height:.88}.hero__role{font-size:clamp(18px,2vw,23px);font-weight:500;letter-spacing:-.01em;color:var(--ink)}.hero__sep{color:var(--accent);margin:0 4px}.hero__lead{max-width:60ch;font-size:18px;line-height:1.6;color:var(--ink-soft)}.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}.hero__links{display:inline-flex;align-items:center;gap:18px;white-space:nowrap}.hero__skip{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:28px;font-family:var(--mono);font-size:13px;color:var(--ink-faint)}.hero__skip a{color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:1px}.hero__skip a:hover{color:var(--ink)}.hero__link{display:inline-flex;align-items:center;gap:7px;font-size:14.5px;color:var(--ink-soft)!important;text-decoration:none}.brand-icon{flex:none}.hero__link:hover{color:var(--ink)!important}.site-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 20px;font:inherit;font-size:15px;font-weight:500;color:var(--ink);background:transparent;border:1px solid var(--ink);border-radius:999px;text-decoration:none;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}.site-btn:hover{background:var(--ink);color:var(--bg)}.site-btn--solid{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.site-btn--solid:hover{background:var(--ink);border-color:var(--ink);color:var(--bg)}.rail{position:fixed;left:24px;top:50%;translate:0 -50%;z-index:10;display:none;flex-direction:column;gap:6px;font-family:var(--mono);font-size:12px}.rail a{color:var(--ink-faint);text-decoration:none;padding:2px 0 2px 14px;position:relative;transition:color .15s}.rail a:before{content:"";position:absolute;left:0;top:50%;width:6px;height:1px;background:currentColor;transition:width .15s}.rail a:hover{color:var(--ink)}.rail a.is-on{color:var(--accent)}.rail a.is-on:before{width:10px;left:-4px}@media(min-width:1280px){.rail{display:flex}}.year{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,7fr);gap:40px;padding-top:56px;padding-bottom:56px;border-top:1px solid var(--line);scroll-margin-top:60px}.year__side{position:sticky;top:84px;align-self:start;display:flex;flex-direction:column;gap:28px;min-width:0}.year__num{margin:0;font-size:clamp(64px,9vw,128px);font-weight:700;letter-spacing:-.06em;line-height:.85;font-variant-numeric:tabular-nums}.year__body{display:flex;flex-direction:column;gap:32px;min-width:0}.collage{position:relative;height:calc(var(--rows) * 118px + 70px);max-width:300px}.print{display:block;position:absolute;left:calc(var(--col) * 46%);top:calc(var(--row) * 118px + var(--col) * 34px);width:54%;padding:5px 5px 16px;background:#fbfbf9;border:0;border-radius:3px;box-shadow:0 8px 22px #0000002e,0 1px 3px #0000001f;rotate:var(--tilt);z-index:calc(1 + var(--i));transition:rotate .2s ease,scale .2s ease,box-shadow .2s ease}.print img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:1px}.print:hover{rotate:0deg;scale:1.12;z-index:20;box-shadow:0 16px 36px #00000047}.evs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;position:relative}.evs:before{content:"";position:absolute;left:calc(5ch + 21px);top:14px;bottom:14px;width:1px;background:var(--line)}.ev{display:grid;grid-template-columns:5ch 11px minmax(0,1fr);gap:0 16px;align-items:start}.ev__when{padding-top:14px;font-family:var(--mono);font-size:13px;color:var(--ink-faint);text-align:right}.ev__mark{position:relative;z-index:1;margin-top:19px;width:11px;height:11px;border-radius:50%;background:var(--ink);box-shadow:0 0 0 4px var(--bg)}.ev--project .ev__mark{border-radius:3px;background:var(--accent)}.ev--milestone .ev__mark{background:var(--bg);border:2px solid var(--ink-faint)}.ev__body{display:flex;align-items:center;gap:18px;padding:10px 14px;margin-left:-14px;border-radius:12px;font:inherit;text-align:left;color:inherit;background:none;border:0;text-decoration:none}.ev__body--project,.ev__body--link{cursor:pointer;transition:background-color .15s}.ev__body--project:hover,.ev__body--link:hover{background:var(--surface)}.ev__body--project:hover .ev__title,.ev__body--link:hover .ev__title{color:var(--accent)}.ev__text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.ev__title{font-size:19px;font-weight:600;letter-spacing:-.015em;line-height:1.35}.ev__detail{color:var(--ink-soft);font-size:15.5px;line-height:1.55;max-width:58ch}.ev__more{margin-top:4px;font-family:var(--mono);font-size:12.5px;color:var(--ink-faint)}.ev__shot{flex:none;width:168px;aspect-ratio:16 / 10;object-fit:cover;object-position:top left;border-radius:8px;border:1px solid var(--line)}.music{margin-left:calc(5ch + 29px);padding:16px 18px;border-radius:14px;background:var(--surface);display:flex;flex-direction:column;gap:12px}.music__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.music__count{font-size:15px;color:var(--ink-soft)}.music__play{font:inherit;font-size:14px;font-weight:500;color:var(--accent);background:none;border:1px solid var(--accent);border-radius:999px;padding:5px 14px;cursor:pointer}.music__play:hover{background:var(--accent);color:var(--on-accent)}.music__months{display:flex;flex-wrap:wrap;gap:6px}.music__month{display:inline-flex;align-items:baseline;gap:6px;padding:6px 11px;font:inherit;font-size:14px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:999px;cursor:pointer}.music__month small{font-family:var(--mono);font-size:11.5px;color:var(--ink-faint)}.music__month:hover{border-color:var(--accent)}.music__month.is-playing{border-color:var(--accent);color:var(--accent)}.block{padding-top:64px;padding-bottom:24px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:14px}.block__title{margin:0;font-size:clamp(28px,3.4vw,40px);font-weight:650;letter-spacing:-.035em;line-height:1.1}.block__lead,.block__note{margin:0;color:var(--ink-soft)}.block__note a{color:var(--accent)}.shelf{display:flex;gap:18px;overflow-x:auto;padding:14px 10px 18px 2px;scroll-snap-type:x proximity;scrollbar-width:thin}.shelf__item{position:relative;flex:none;width:112px;scroll-snap-align:start;transition:transform .15s}.shelf__item img{display:block;width:100%;aspect-ratio:2 / 3;object-fit:cover;border-radius:4px;box-shadow:0 8px 20px #00000040}.shelf__item:hover{transform:translateY(-4px)}.shelf__star{position:absolute;top:-8px;right:-8px;display:grid;place-items:center;width:28px;height:28px;font-size:15px;line-height:1;color:#fff;background:var(--accent);border-radius:50%;box-shadow:0 0 0 3px var(--bg),0 4px 10px #00000040}.people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;margin-top:6px}.people__group{margin:0 0 8px;font-size:15px;font-weight:600;color:var(--ink-soft)}.people__list{list-style:none;margin:0;padding:0}.people__list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 12px;padding:12px 0;border-top:1px solid var(--line)}.people__name{font-weight:600}.people__role{grid-column:1;color:var(--ink-soft);font-size:14.5px}.people__rel{grid-column:2;grid-row:1 / span 2;align-self:center;font-size:13px;color:var(--ink-faint)}.contact{padding-top:96px;padding-bottom:96px;display:flex;flex-direction:column;gap:18px}.contact__line{margin:0;font-size:clamp(30px,4.6vw,56px);font-weight:650;letter-spacing:-.04em;line-height:1.05;max-width:18ch;text-wrap:balance}.contact__cta{margin:0;font-size:19px;font-weight:500}.contact__email{color:var(--accent)!important;text-underline-offset:5px}.foot{display:flex;justify-content:space-between;gap:12px;padding-top:24px;padding-bottom:96px;border-top:1px solid var(--line);font-size:14px;color:var(--ink-faint)}.foot__reset{font:inherit;color:var(--ink-soft);background:none;border:0;padding:0;cursor:pointer}.foot__reset:hover{color:var(--ink)}.projects{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 24px;margin-top:10px}.proj{display:flex;flex-direction:column;gap:6px;padding:0;font:inherit;text-align:left;color:inherit;background:none;border:0;text-decoration:none;cursor:pointer;min-width:0}.proj__shot{display:block;aspect-ratio:16 / 10;max-width:100%;overflow:hidden;border-radius:12px;border:1px solid var(--line);background:var(--surface);margin-bottom:8px}.proj__shot img{width:100%;height:100%;object-fit:cover;object-position:top left;transition:transform .4s cubic-bezier(.2,.8,.2,1)}.proj:hover .proj__shot img{transform:scale(1.03)}.proj__title{font-size:19px;font-weight:600;letter-spacing:-.015em}.proj:hover .proj__title{color:var(--accent)}.proj__desc{color:var(--ink-soft);font-size:15px;line-height:1.5}.proj__tags{font-family:var(--mono);font-size:12px;color:var(--ink-faint)}.jams{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:28px;margin-top:10px;align-items:start}.jams__months{position:sticky;top:84px;display:flex;flex-direction:column;gap:14px}.jams__search{width:100%;min-height:42px;padding:0 14px;font:inherit;font-size:15px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px}.jams__search:focus{outline:2px solid var(--accent);outline-offset:1px}.jams__year{display:grid;grid-template-columns:4.5ch minmax(0,1fr);gap:10px;align-items:start}.jams__yearnum{padding-top:5px;font-family:var(--mono);font-size:13px;color:var(--ink-faint)}.jams__chips{display:flex;flex-wrap:wrap;gap:5px}.jams__chip{font:inherit;font-size:13.5px;padding:4px 10px;color:var(--ink-soft);background:none;border:1px solid var(--line);border-radius:999px;cursor:pointer}.jams__chip:hover{color:var(--ink);border-color:var(--ink-faint)}.jams__chip.is-on{color:var(--bg);background:var(--ink);border-color:var(--ink)}.jams__chip.is-playing:not(.is-on){color:var(--accent);border-color:var(--accent)}.jams__list{min-width:0}.jams__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--line)}.jams__title{font-size:22px;font-weight:650;letter-spacing:-.02em}.tracks{list-style:none;margin:0;max-height:min(560px,70svh);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:4px 4px 4px 0;scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent;scrollbar-gutter:stable;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 28px),transparent)}.tracks::-webkit-scrollbar{width:8px}.tracks::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;border:2px solid var(--bg)}.tracks::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}.tracks-wrap{position:relative}.tracks__more{position:absolute;left:50%;bottom:10px;translate:-50% 0;padding:7px 14px;font:inherit;font-size:13.5px;font-weight:500;color:var(--on-accent);background:var(--accent);border:0;border-radius:999px;box-shadow:0 6px 16px #0003;cursor:pointer}.tracks__more:hover{filter:brightness(1.08)}.jams__count{font-weight:450;color:var(--ink-faint)}.track{display:grid;grid-template-columns:3ch minmax(0,1fr) minmax(0,.8fr);gap:14px;align-items:center;width:100%;padding:10px 12px;margin:0;font:inherit;text-align:left;color:inherit;background:none;border:0;border-radius:10px;cursor:pointer}.track:hover{background:var(--surface)}.track:disabled{opacity:.45;cursor:default}.track__n{font-family:var(--mono);font-size:12.5px;color:var(--ink-faint);text-align:right}.track__main{display:flex;flex-direction:column;min-width:0}.track__name{font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track__artist{font-size:14px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track__album{font-size:13.5px;color:var(--ink-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track.is-on .track__name,.track.is-on .track__n{color:var(--accent)}.site .np--bar{position:fixed;left:0;right:0;bottom:0;z-index:30}.site-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px));background:#05070a8c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:modal-in .16s ease-out both}@keyframes modal-in{0%{opacity:0}}.site-modal__panel{width:min(820px,100%);height:min(88svh,1000px);display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--bg);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 30px 80px #0006}.site-modal__panel.is-wide{width:min(1120px,100%)}.site-modal__bar{display:flex;align-items:center;gap:12px;padding:12px 14px 12px 20px;border-bottom:1px solid var(--line)}.site-modal__title{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-modal__action{font-size:14px;color:var(--accent)!important}.site-modal__close{font:inherit;width:34px;height:34px;border-radius:50%;border:0;color:var(--ink-soft);background:var(--surface);cursor:pointer}.site-modal__close:hover{color:var(--ink)}.site-modal__body{min-height:0;overflow:auto;overscroll-behavior:contain}@media(max-width:860px){.projects{grid-template-columns:repeat(2,minmax(0,1fr))}.jams{grid-template-columns:minmax(0,1fr)}.jams__months{position:static}.year{grid-template-columns:minmax(0,1fr);gap:20px;padding-top:40px;padding-bottom:40px}.year__side{position:static;flex-direction:row;align-items:center;gap:18px}.year__num{font-size:clamp(56px,18vw,88px);flex:none}.collage{flex:1;min-width:0;height:86px;max-width:220px}.print{left:calc(var(--i) * min(24px,(100% - 62px) / max(var(--n) - 1,1)));top:calc(var(--col) * 10px + 4px);width:62px;padding:3px 3px 9px}.print:hover{scale:1.25}.ev__shot{width:112px}.people{grid-template-columns:minmax(0,1fr)}}@media(max-width:600px){.projects{grid-template-columns:minmax(0,1fr)}.track{grid-template-columns:3ch minmax(0,1fr)}.track__album{display:none}.site-bar{gap:12px}.site-bar__nav{display:none}.ev{grid-template-columns:4ch 11px minmax(0,1fr);gap:0 12px}.evs:before{left:calc(4ch + 17px)}.music{margin-left:0}.ev__body{flex-direction:column;align-items:flex-start;gap:10px}.ev__shot{width:100%;max-width:280px}.site-modal{padding:0}.site-modal__panel{width:100%;height:100%;border-radius:0;border:0}}@media(prefers-reduced-motion:reduce){.print{transition:none}.site-modal{animation:none}.shelf__item,.site-btn{transition:none}}@media(max-width:560px){.hero__actions{flex-wrap:nowrap;gap:10px}.hero__actions .site-btn{padding:0 16px;flex:none}.hero__links{flex-direction:column;align-items:flex-start;gap:6px;margin-left:6px;font-size:14px}}.term{position:relative;height:100svh;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;font-family:var(--mono);font-size:14.5px;line-height:1.6}.term__rain{position:absolute;inset:0;width:100%;height:100%;opacity:.32;pointer-events:none}.menubar{position:relative;z-index:5;display:flex;align-items:center;gap:4px;height:30px;padding:0 max(12px,env(safe-area-inset-right,0px)) 0 max(12px,env(safe-area-inset-left,0px));background:#0a0c0fd1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);font-family:var(--mono);font-size:12px;color:var(--ink-soft)}.menubar__brand{font-weight:600;color:var(--ink);margin-right:10px}.menubar button{font:inherit;color:inherit;background:none;border:0;border-radius:5px;padding:3px 9px;cursor:pointer}.menubar button:hover{background:#ffffff12;color:var(--ink)}.menubar__clock{margin-left:16px;color:var(--ink-faint);font-variant-numeric:tabular-nums}.term__desk{position:relative;min-height:0}.term__frame{position:absolute;min-width:0}.term__frame.is-max{inset:0}.term__window{position:relative;font-family:var(--mono);-webkit-text-size-adjust:100%;text-size-adjust:100%;width:100%;height:100%;min-width:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);background:#07090b;border:1px solid var(--line);border-radius:12px;box-shadow:0 30px 80px #0000008c,0 0 0 1px #ffffff05;overflow:hidden;animation:term-open .32s cubic-bezier(.2,.8,.2,1) both}.term__frame.is-max .term__window{border-radius:0;border-width:0}.term__window:not(.is-active) .term__bar{color:#4b535c}.term__window:not(.is-active) .term__dot{background:#2a3037!important}.term__snap{position:absolute;z-index:9998;box-sizing:border-box;border:2px solid var(--accent);border-radius:12px;background:color-mix(in srgb,var(--accent) 12%,transparent);pointer-events:none;transition:left .12s,top .12s,width .12s,height .12s}.term__grip{position:absolute;z-index:2;touch-action:none}.term__grip--r{top:12px;bottom:12px;right:-4px;width:8px;cursor:ew-resize}.term__grip--b{left:12px;right:12px;bottom:-4px;height:8px;cursor:ns-resize}.term__grip--rb{right:-4px;bottom:-4px;width:16px;height:16px;cursor:nwse-resize}.term__empty{position:absolute;inset:0;display:grid;place-content:center;gap:12px;text-align:center;color:var(--ink-faint);font-family:var(--mono);font-size:13px}.term__empty p{margin:0}.term__empty button{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 14px;cursor:pointer}.term__empty button:hover{border-color:var(--accent)}@keyframes term-open{0%{opacity:0;transform:scale(.94) translateY(10px)}}.term__bar{touch-action:none;-webkit-user-select:none;user-select:none;cursor:default;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:40px;padding:0 14px;border-bottom:1px solid var(--line);background:#0c0f12;font-size:12px;color:var(--ink-faint)}.term__dots{display:flex;gap:8px}.term__dot{width:12px;height:12px;border-radius:50%;background:#2a3037;border:0;padding:0}.term__dot{cursor:pointer}.term__dot:disabled{cursor:default}.term__dot--close{background:#ff5f57}.term__dot--reset{background:#febc2e}.term__dot--max{background:#28c840}.term__dot:not(:disabled):hover{filter:brightness(1.15)}.term--phone .term__dot--reset,.term--phone .term__dot--max{background:#2a3037}.term__title{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term__switch{justify-self:end;font:inherit;color:var(--ink-soft);background:none;border:0;padding:4px 2px;cursor:pointer}.term__switch:hover{color:var(--accent)}.term__scroll{overflow-y:auto;overflow-x:hidden;padding:22px 24px 28px;overscroll-behavior:contain}.term__block,.term__input{max-width:96ch}.term__block{animation:t-in .16s ease-out both;min-width:0;overflow-wrap:anywhere}@keyframes t-in{0%{opacity:0;transform:translateY(3px)}}.term__block p{margin:0;overflow-wrap:anywhere}.term__block+.term__block{margin-top:6px}.t-echo{margin-top:14px!important}.term .t-out{margin:0;padding:0;font:inherit;color:inherit;background:none;border-radius:0;overflow:visible;white-space:pre-wrap;overflow-wrap:anywhere}.term .t-out.t-err{color:var(--err)}.t-gap{margin-top:12px!important}.t-motd{display:flex;flex-direction:column;gap:16px}.t-motd__list p{white-space:pre}.term__input{display:flex;align-items:center;gap:10px;margin-top:14px}.term__input input{flex:1;min-width:0;font:inherit;font-size:16px;color:var(--ink);background:transparent;border:0;outline:none;caret-color:var(--accent);padding:0;box-shadow:none}.term__input input:focus,.term__input input:focus-visible{outline:none}.term__input:focus-within{outline:none}.t-prompt{white-space:nowrap}.t-user{color:var(--ok)}.t-host{color:var(--path)}.t-dim{color:var(--ink-faint)}.t-accent{color:var(--accent)}.t-ok{color:var(--ok)}.t-path{color:var(--path)}.t-exec{color:var(--ok)}.term .t-code{font:inherit;color:var(--accent);background:none;padding:0;border-radius:0}.t-key{color:var(--key)}.t-err{color:var(--err)}.term strong{color:#fff;font-weight:600}.term a{color:var(--path);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--path) 40%,transparent);text-underline-offset:3px}.term a:hover{text-decoration-color:currentColor}.t-table{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 24px}.t-table>span{min-width:0;overflow-wrap:anywhere}.t-ls{display:flex;flex-wrap:wrap;gap:4px 24px}.t-cmd{font:inherit;color:var(--accent);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}@media(max-width:600px){.term{font-size:13.5px}.term__rain{display:none}.term--phone{grid-template-rows:minmax(0,1fr)}.term--phone .term__frame{inset:0}.term__window{border:0;border-radius:0;box-shadow:none;animation:none}.term__bar{padding:0 max(12px,env(safe-area-inset-left,0px))}.term__scroll{padding:16px max(16px,env(safe-area-inset-left,0px)) calc(20px + env(safe-area-inset-bottom,0px))}.t-table{grid-template-columns:minmax(0,1fr);gap:0}.t-table>span:nth-child(odd){margin-top:8px}.t-prompt>:nth-child(-n+3){display:none}}@media(prefers-reduced-motion:reduce){.term__window,.term__block{animation:none}}.term__viewer{min-height:0;overflow:auto;overscroll-behavior:contain;background:#07090b}.term__note{padding:16px 20px;font-family:var(--mono);font-size:13px;line-height:1.6;color:var(--ink)}.term__note p{margin:0 0 12px;color:var(--ink)}.term__note p.t-dim{color:var(--ink-faint)}.term__note table{border-collapse:collapse;margin:0 0 12px}.term__note td{padding:2px 18px 2px 0;vertical-align:top;color:var(--ink-soft)}.term__note code{padding:0;font-family:inherit;font-size:inherit;color:var(--accent);background:none;border-radius:0;-webkit-user-select:all;user-select:all}.term__note .t-dim code{color:var(--ink-soft)}.site{--bg: #eef0f1;--surface: #e3e6e8;--ink: #101418;--ink-soft: #49525b;--ink-faint: #6b747d;--line: #cdd2d6;--accent: #c2410c;--on-accent: #fff7f2;--path: #2457b8;--key: #8a5a00;--ok: #2f7d3a}[data-theme=dark] .site{--bg: #0e1114;--surface: #161a1f;--ink: #e7eaee;--ink-soft: #a2aab3;--ink-faint: #7c858e;--line: #262c33;--accent: #ff7a3d;--on-accent: #1a0c04;--path: #84b6ff;--key: #e9c47f;--ok: #7fd18b}.term,.gate{--bg: #0e1114;--surface: #161a1f;--ink: #d9dee4;--ink-soft: #a2aab3;--ink-faint: #7c858e;--line: #262c33;--accent: #ff7a3d;--ok: #7fd18b;--path: #84b6ff;--key: #e9c47f;--err: #ff7b7b}.site,.term,.gate{--sans: "Geist", "Inter", system-ui, -apple-system, sans-serif;--mono: "Geist Mono", "JetBrains Mono", ui-monospace, Menlo, monospace;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}.site :focus-visible,.term :focus-visible,.gate :focus-visible{outline:2px solid var(--accent);outline-offset:3px}.gate{position:relative;overflow:hidden;min-height:100svh;display:flex;align-items:center;padding:48px max(20px,env(safe-area-inset-right,0px)) 48px max(20px,env(safe-area-inset-left,0px))}.gate__inner{position:relative;z-index:1;width:100%;max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:28px;animation:gate-in .42s cubic-bezier(.2,.8,.2,1) both}@keyframes gate-in{0%{opacity:0;transform:translateY(8px)}}.gate__q{margin:0;color:var(--ink);font-family:var(--sans);font-weight:600;font-size:clamp(28px,7.2vw,60px);line-height:1.12;letter-spacing:-.03em;text-wrap:balance}.gate__q-sub{color:var(--ink-faint)}.gate__untyped{visibility:hidden}.gate__caret{display:inline-block;width:.08em;height:.9em;margin:0 .04em 0 .06em;vertical-align:-.08em;background:var(--accent);animation:gate-caret 1.05s steps(2,jump-none) infinite}@keyframes gate-caret{50%{opacity:0}}.gate__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gate__opt{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:10px 16px 10px 10px;text-align:left;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:inset 0 1px #ffffff0d,0 2px #00000059;cursor:pointer;transition:border-color .15s,transform .12s,box-shadow .12s}.gate__opt:hover{border-color:var(--accent)}.gate__opt:active{transform:translateY(2px);box-shadow:inset 0 1px #ffffff0d}.gate__label{display:flex;flex-direction:column;gap:2px;min-width:0}.gate__go{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);color:var(--ink-soft);font-size:17px;transition:background-color .15s,color .15s,border-color .15s,transform .15s}.gate__opt:hover .gate__go{background:var(--accent);border-color:var(--accent);color:#1a0c04;transform:translate(2px)}.gate__name{font-size:21px;font-weight:600;letter-spacing:-.01em}.gate__preview{--s: .5;position:relative;display:block;width:calc(264px * var(--s));height:calc(168px * var(--s));overflow:hidden;border-radius:8px;border:1px solid var(--line)}.pv-scale{position:absolute;top:0;left:0;width:264px;height:168px;transform:scale(var(--s));transform-origin:0 0}.gate__preview--term{display:flex;flex-direction:column;gap:4px;padding:18px 20px;background:#07090b;font-family:var(--mono);font-size:12.5px;line-height:1.5;color:var(--ink)}.pv-term__line,.pv-term__out{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pv-term__prompt{color:var(--accent)}.pv-term__typed{display:inline-block;vertical-align:bottom;overflow:hidden;width:6ch;animation:pv-type 6s steps(6,end) infinite}.pv-term__out{color:var(--ink-soft);animation:pv-show 6s step-end infinite}.pv-term__out b{color:#fff;font-weight:600}.pv-term__out--2{color:var(--accent);animation-name:pv-show-2}.pv-term__line--next{animation:pv-show-2 6s step-end infinite}.pv-term__cursor{display:inline-block;width:7px;height:14px;vertical-align:-2px;background:var(--ink);animation:pv-blink 1s steps(2,jump-none) infinite}@keyframes pv-type{0%,4%{width:0}22%,to{width:6ch}}@keyframes pv-show{0%{visibility:hidden}27%{visibility:visible}}@keyframes pv-show-2{0%{visibility:hidden}32%{visibility:visible}}@keyframes pv-blink{50%{opacity:0}}.gate__preview--site{background:#05070a;padding:14px 18px 0}.pv-site__page{display:flex;flex-direction:column;gap:10px;padding:10px 14px 14px;background:#0e1114;color:#e7eaee;border-radius:8px 8px 0 0;box-shadow:0 0 0 1px #262c33,0 6px 20px #00000080;transition:transform .5s cubic-bezier(.2,.8,.2,1)}.gate__opt--site:hover .pv-site__page{transform:translateY(-38px)}.pv-site__bar{display:flex;justify-content:space-between;align-items:center}.pv-site__brand{font-size:8px;font-weight:600}.pv-site__links{display:flex;gap:5px}.pv-site__links i,.pv-site__stats i,.pv-site__cards i{display:block;background:#262c33;border-radius:2px}.pv-site__links i{width:14px;height:3px}.pv-site__hero{display:flex;justify-content:space-between;align-items:center;gap:8px}.pv-site__copy{display:flex;flex-direction:column;gap:5px;min-width:0}.pv-site__name{font-size:21px;font-weight:650;letter-spacing:-.04em;line-height:.95}.pv-site__roles{font-size:7px;font-weight:500;white-space:nowrap}.pv-site__roles em{font-style:normal;color:#ff7a3d}.pv-site__btn{width:34px;height:9px;border-radius:2px;background:#e7eaee}.pv-site__iso{width:74px;flex:none}.pv-site__cube path{fill:#1f252c;stroke:#e7eaee;stroke-width:.8;stroke-linejoin:round}.pv-site__cube path:nth-child(2){fill:#171c21}.pv-site__cube path:nth-child(3){fill:#12161a}.pv-site__cube--on path:first-child{fill:#ff7a3d}.pv-site__link{fill:none;stroke:#ff7a3d;stroke-width:1;stroke-dasharray:2 2;animation:pv-flow 1.2s linear infinite}@keyframes pv-flow{to{stroke-dashoffset:-8}}.pv-site__stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #262c33;border-bottom:1px solid #262c33}.pv-site__stats span{display:flex;flex-direction:column;gap:3px;padding:5px 0}.pv-site__stats b{font-size:10px;font-weight:600}.pv-site__stats i{width:60%;height:2px}.pv-site__cards{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.pv-site__cards i{height:34px;border-radius:3px}.logo-field{position:absolute;inset:0;touch-action:none}.logo-card{position:absolute;display:block;width:max-content;padding:8px;cursor:grab;-webkit-user-select:none;user-select:none;will-change:transform;translate:-50% -50%;left:calc(var(--x) * 1%);top:calc(var(--y) * 1%)}.logo-card img{display:block;max-width:none;object-fit:contain;pointer-events:none;filter:drop-shadow(0 8px 14px rgba(0,0,0,.6));transition:scale .2s cubic-bezier(.2,.8,.2,1)}.logo-field.is-live .logo-card{left:0;top:0;translate:none}.logo-card:hover img{scale:1.06}.logo-card.is-held{cursor:grabbing;z-index:2}.logo-card.is-held img{scale:1.12;filter:drop-shadow(0 18px 24px rgba(0,0,0,.7))}@media(max-width:560px){.gate__options{grid-template-columns:minmax(0,1fr)}.gate__preview{--s: .36}.gate__opt{gap:12px;padding:8px 12px 8px 8px}.gate__go{width:30px;height:30px;font-size:15px}.gate__name{font-size:19px}.logo-card{left:calc(var(--mx) * 1%);top:calc(var(--my) * 1%);padding:6px}.logo-card img{zoom:.55}}@media(prefers-reduced-motion:reduce){.gate__caret,.pv-term__typed,.pv-term__out,.pv-term__line--next,.pv-term__cursor,.pv-site__link{animation:none}.pv-site__page{transition:none}.gate__inner{animation:none}.gate__opt,.logo-card img{transition:none}}.library{width:100%}.library__hero{padding:var(--spacing-8) 0 var(--spacing-6) 0;background:linear-gradient(135deg,var(--color-bg-primary) 0%,var(--color-bg-secondary) 100%)}.library__header{text-align:center;max-width:48rem;margin:0 auto}.library__title{font-size:2rem;margin-bottom:var(--spacing-4);font-weight:800}.library__description{font-size:1rem;color:var(--color-text-secondary);line-height:1.7}.library__section{padding:var(--spacing-8) 0}.library__section--articles{background-color:var(--color-bg-primary)}.library__section--books{background-color:var(--color-bg-secondary)}.library__section-title{text-align:center;font-size:1.75rem;font-weight:700;margin-bottom:var(--spacing-3)}.library__section-description{text-align:center;max-width:42rem;margin:0 auto var(--spacing-8);font-size:1rem;color:var(--color-text-secondary);line-height:1.6}.library__grid{display:grid;grid-template-columns:1fr;gap:var(--spacing-6)}.library__article{display:flex;flex-direction:column}.library__article-meta{display:flex;gap:var(--spacing-3);align-items:center;margin-bottom:var(--spacing-4)}.library__article-type{display:inline-block;padding:var(--spacing-1) var(--spacing-3);background-color:var(--color-bg-tertiary);color:var(--color-primary-main);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border-radius:var(--radius-full)}.library__article-date{font-size:.875rem;color:var(--color-text-tertiary)}.library__article-title{font-size:1.5rem;font-weight:700;margin-bottom:var(--spacing-3);color:var(--color-text-primary)}.library__article-description{font-size:1rem;color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--spacing-4)}.library__article-link{color:var(--color-primary-main);font-weight:600;font-size:.9375rem;text-decoration:none;transition:color var(--transition-base) ease;margin-top:auto}.library__article-link:hover{color:var(--color-primary-dark);text-decoration:underline}.library__books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--spacing-4)}.library__book-card{display:block;border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 4px 12px #0003;transition:all var(--transition-base) ease;text-decoration:none;cursor:pointer}.library__book-card:hover{box-shadow:0 8px 20px #0000004d;transform:translateY(-6px) scale(1.02)}.library__book-cover-image{width:100%;aspect-ratio:2/3;overflow:hidden;position:relative}.library__book-cover-image img{width:100%;height:100%;object-fit:cover;display:block}.library__book-favorite{position:absolute;top:var(--spacing-2);right:var(--spacing-2);width:28px;height:28px;background:#fffffff2;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0003;z-index:10}.library__book-favorite-icon{width:16px;height:16px;color:#f59e0b}.library__book-info{display:none}@media(min-width:768px){.library__hero{padding:var(--spacing-10) 0 var(--spacing-8) 0}.library__title{font-size:2.5rem}.library__description{font-size:1.125rem}.library__section{padding:var(--spacing-10) 0}.library__section-title{font-size:2rem}.library__section-description{font-size:1.0625rem}.library__grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.library__books-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--spacing-5)}}@media(min-width:1024px){.library__hero{padding:var(--spacing-8) 0}.library__title{font-size:2.25rem}.library__description{font-size:.9375rem}.library__section{padding:var(--spacing-8) 0}.library__section-title{font-size:1.75rem}.library__section-description{font-size:.9375rem}.library__books-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--spacing-6)}}.card{background-color:var(--color-bg-primary);border-radius:var(--radius-xl);transition:all var(--transition-base) ease}.card--default{background-color:var(--color-bg-primary);border:1px solid var(--color-neutral-gray-200)}.card--elevated{background-color:var(--color-bg-primary);box-shadow:var(--shadow-md)}.card--elevated:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card--outlined{background-color:transparent;border:2px solid var(--color-neutral-gray-300)}.card--padding-sm{padding:var(--spacing-3)}.card--padding-md{padding:var(--spacing-4)}.card--padding-lg{padding:var(--spacing-6)}@media(min-width:768px){.card--padding-sm{padding:var(--spacing-4)}.card--padding-md{padding:var(--spacing-6)}.card--padding-lg{padding:var(--spacing-8)}}@media(min-width:1024px){.card--padding-sm{padding:var(--spacing-2)}.card--padding-md{padding:var(--spacing-3)}.card--padding-lg{padding:var(--spacing-4)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);font-family:var(--font-primary);font-weight:600;text-align:center;white-space:nowrap;border:2px solid transparent;border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-base) ease;outline:none}.btn--primary{background-color:var(--color-primary-main);color:var(--color-primary-contrast);box-shadow:var(--shadow-sm)}.btn--primary:hover:not(:disabled){background-color:var(--color-primary-dark);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn--primary:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-sm)}.btn--secondary{background-color:var(--color-secondary-main);color:var(--color-secondary-contrast);box-shadow:var(--shadow-sm)}.btn--secondary:hover:not(:disabled){background-color:var(--color-secondary-dark);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn--secondary:active:not(:disabled){transform:translateY(0);box-shadow:var(--shadow-sm)}.btn--outline{background-color:transparent;color:var(--color-primary-main);border:2px solid var(--color-primary-main)}.btn--outline:hover:not(:disabled){background-color:var(--color-primary-main);color:var(--color-primary-contrast)}.btn--ghost{background-color:transparent;color:var(--color-text-primary)}.btn--ghost:hover:not(:disabled){background-color:var(--color-neutral-gray-100)}.btn--sm{padding:var(--spacing-2) var(--spacing-3);font-size:.875rem;line-height:1.25}.btn--md,.btn--lg{padding:var(--spacing-3) var(--spacing-6);font-size:1rem;line-height:1.5}.btn--full-width{width:100%}.btn--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn:focus-visible{outline:2px solid var(--color-primary-main);outline-offset:2px}.projects{width:100%;padding:var(--spacing-6) 0}.projects__header{text-align:center;max-width:48rem;margin:0 auto var(--spacing-8)}.projects__title{font-size:2rem;margin-bottom:var(--spacing-4)}.projects__description{font-size:1rem;color:var(--color-text-secondary);line-height:1.7}.projects__grid{display:grid;grid-template-columns:1fr;gap:var(--spacing-6)}.projects__card{position:relative;overflow:hidden}.projects__item{display:flex;flex-direction:column;height:100%;position:relative;z-index:2}.projects__item-preview{position:absolute;bottom:var(--spacing-4);right:var(--spacing-4);width:120px;pointer-events:none;z-index:1;opacity:.85;transition:opacity var(--transition-base),transform var(--transition-base)}.projects__item-preview img{width:100%;height:auto;object-fit:cover;border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:2px solid var(--color-border-secondary)}.projects__card:hover .projects__item-preview{opacity:1;transform:scale(1.05)}.projects__item-title{font-size:1.75rem;font-weight:700;margin-bottom:var(--spacing-4);color:var(--color-text-primary)}.projects__item-description{font-size:1rem;color:var(--color-text-secondary);line-height:1.6;margin-bottom:var(--spacing-6);flex:1}.projects__item-tags{display:flex;flex-wrap:wrap;gap:var(--spacing-2);margin-bottom:var(--spacing-6)}.projects__item-tag{padding:var(--spacing-1) var(--spacing-3);background-color:var(--color-neutral-gray-100);color:var(--color-text-secondary);font-size:.8125rem;font-weight:500;border-radius:var(--radius-full);transition:all var(--transition-base) ease}.projects__item-tag:hover{background-color:var(--color-primary-main);color:var(--color-primary-contrast)}.projects__item-actions{display:flex;flex-direction:column;gap:var(--spacing-3);margin-top:auto}@media(min-width:768px){.projects{padding:var(--spacing-8) 0}.projects__title{font-size:2.5rem}.projects__header{margin-bottom:var(--spacing-12)}.projects__description{font-size:1.125rem}.projects__grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.projects__item-actions{flex-direction:row}.projects__item-preview{width:160px}}@media(min-width:1024px){.projects__title{font-size:3rem}.projects__grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}}.project-detail{min-height:100vh;margin-top:calc(-1 * var(--spacing-4))}.project-detail__hero{position:relative;width:100vw;margin-left:calc(-50vw + 50%);height:250px;overflow:hidden;margin-bottom:var(--spacing-6)}.project-detail__hero-image{width:100%;height:100%;object-fit:cover;object-position:top center}.project-detail__hero-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 0%,var(--color-bg-primary) 100%)}.project-detail__back{display:inline-block;color:var(--color-text-secondary);font-size:.9375rem;margin-bottom:var(--spacing-4);transition:color var(--transition-fast)}.project-detail__back:hover{color:var(--color-primary-main)}.project-detail__header{margin-bottom:var(--spacing-8);padding-bottom:var(--spacing-6);border-bottom:1px solid var(--color-border-primary)}.project-detail__title{font-size:2rem;font-weight:800;margin-bottom:var(--spacing-4);line-height:1.2}.project-detail__tags{display:flex;flex-wrap:wrap;gap:var(--spacing-2);margin-bottom:var(--spacing-6)}.project-detail__tag{padding:var(--spacing-1) var(--spacing-3);background-color:var(--color-primary-main);color:var(--color-primary-contrast);font-size:.8125rem;font-weight:600;border-radius:var(--radius-full)}.project-detail__actions{display:flex;gap:var(--spacing-3);flex-wrap:wrap}.project-detail__content{display:flex;flex-direction:column;gap:var(--spacing-10);padding-bottom:var(--spacing-12)}.project-detail__section-title{font-size:1.5rem;font-weight:700;margin-bottom:var(--spacing-6);color:var(--color-text-primary);position:relative;padding-bottom:var(--spacing-2)}.project-detail__section-title:after{content:"";position:absolute;bottom:0;left:0;width:60px;height:3px;background:var(--color-primary-main);border-radius:var(--radius-full)}.project-detail__description p{color:var(--color-text-secondary);line-height:1.8;margin-bottom:var(--spacing-4);font-size:1.0625rem}.project-detail__description p:last-child{margin-bottom:0}.project-detail__highlights{display:flex;flex-wrap:wrap;gap:var(--spacing-3);margin-bottom:var(--spacing-2)}.project-detail__highlight{display:inline-flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-4);background:linear-gradient(135deg,var(--color-primary-main),var(--color-primary-dark));color:var(--color-primary-contrast);font-size:.875rem;font-weight:600;border-radius:var(--radius-full)}.project-detail__highlight:before{content:"★";font-size:.75rem}.project-detail__gallery{display:flex;flex-direction:column;gap:var(--spacing-6)}.project-detail__gallery-secondary-row{display:flex;gap:var(--spacing-4);flex-wrap:wrap}.project-detail__gallery-item{margin:0}.project-detail__gallery-item--main{width:100%}.project-detail__gallery-item--main img{width:100%;height:auto;border-radius:var(--radius-xl);box-shadow:var(--shadow-xl)}.project-detail__gallery-item--secondary{max-width:150px}.project-detail__gallery-item--secondary img{width:100%;height:auto;border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.project-detail__gallery-item--secondary figcaption{font-size:.75rem}.project-detail__gallery-item img{transition:transform var(--transition-base),box-shadow var(--transition-base)}.project-detail__gallery-item img:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl)}.project-detail__gallery-item figcaption{margin-top:var(--spacing-3);text-align:center;font-size:.875rem;color:var(--color-text-tertiary);font-style:italic}.project-detail__features{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:var(--spacing-3)}.project-detail__features li{position:relative;padding:var(--spacing-3) var(--spacing-4);padding-left:var(--spacing-10);background:var(--color-bg-secondary);border-radius:var(--radius-lg);color:var(--color-text-secondary);line-height:1.5;font-size:.9375rem}.project-detail__features li:before{content:"✓";position:absolute;left:var(--spacing-4);top:50%;transform:translateY(-50%);color:var(--color-primary-main);font-weight:700;font-size:1rem}.project-detail__tech-stack{display:grid;grid-template-columns:1fr;gap:var(--spacing-6)}.project-detail__tech-category{background:var(--color-bg-secondary);padding:var(--spacing-6);border-radius:var(--radius-xl);box-shadow:var(--shadow-md)}.project-detail__tech-category h3{font-size:1rem;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-4);text-transform:uppercase;letter-spacing:.05em}.project-detail__tech-items{display:flex;flex-wrap:wrap;gap:var(--spacing-2)}.project-detail__tech-item{padding:var(--spacing-2) var(--spacing-4);background:var(--color-bg-primary);color:var(--color-text-secondary);font-size:.875rem;font-weight:500;border-radius:var(--radius-lg);border:1px solid var(--color-border-primary)}@media(min-width:768px){.project-detail{margin-top:calc(-1 * var(--spacing-6))}.project-detail__hero{height:350px}.project-detail__title{font-size:2.5rem}.project-detail__features{grid-template-columns:repeat(2,1fr)}.project-detail__tech-stack{grid-template-columns:repeat(3,1fr)}.project-detail__gallery-item--secondary{max-width:220px}.project-detail__gallery-item--secondary figcaption{font-size:.8125rem}}@media(min-width:1024px){.project-detail{margin-top:calc(-1 * var(--spacing-8))}.project-detail__hero{height:450px}.project-detail__title{font-size:3rem}.project-detail__content{max-width:1000px}.project-detail__section-title{font-size:1.75rem}.project-detail__gallery-item--secondary{max-width:300px}}:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors:active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--total-scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--total-scale-factor));width:100%;min-width:calc(180px * var(--total-scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--total-scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) #888;border-radius:calc(2px * var(--total-scale-factor));padding:calc(6px * var(--total-scale-factor));margin-left:calc(5px * var(--total-scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--total-scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--total-scale-factor));padding-top:calc(2px * var(--total-scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors:active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;inset:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{position:absolute;top:0;left:0;width:0;height:0;display:none}.resume{padding:var(--spacing-8) 0;min-height:100vh}.resume__header{text-align:center;margin-bottom:var(--spacing-8)}.resume__title{font-size:2rem;font-weight:800;color:var(--color-text-primary);margin-bottom:var(--spacing-2)}.resume__subtitle{font-size:1rem;color:var(--color-text-secondary);max-width:600px;margin:0 auto var(--spacing-6)}.resume__actions{display:flex;gap:var(--spacing-3);justify-content:center;flex-wrap:wrap}.resume__document{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-6)}.resume__page{box-shadow:var(--shadow-lg);border-radius:var(--radius-lg);overflow:hidden;background:#fff}.resume__page canvas{max-width:100%!important;height:auto!important}.resume__loading{padding:var(--spacing-8);text-align:center;color:var(--color-text-secondary);font-size:1rem}.resume__error{padding:var(--spacing-8);text-align:center;color:var(--color-error);font-size:1rem}.resume__page .react-pdf__Page__textContent{-webkit-user-select:text;user-select:text}@media(min-width:768px){.resume__title{font-size:2.5rem}.resume__subtitle{font-size:1.125rem}}@media(min-width:1024px){.resume{padding:var(--spacing-12) 0}}.references{position:relative;padding:var(--spacing-8) 0;min-height:100vh;overflow:hidden}.references__background{position:absolute;inset:0;pointer-events:none;overflow:hidden}.references__gradient-orb{position:absolute;border-radius:50%;filter:blur(120px);opacity:.08}.references__gradient-orb--1{width:300px;height:300px;background:var(--color-primary-main);top:-80px;right:-80px}.references__gradient-orb--2{width:250px;height:250px;background:var(--color-secondary-main);bottom:20%;left:-80px}.references__grid-pattern{display:none}.references__header{text-align:center;margin-bottom:var(--spacing-6);position:relative;z-index:1}.references__title{font-size:2rem;font-weight:800;color:var(--color-text-primary);margin-bottom:var(--spacing-2);letter-spacing:-.02em}.references__subtitle{font-size:.9375rem;color:var(--color-text-secondary);max-width:400px;margin:0 auto var(--spacing-6);line-height:1.6}.references__tabs{display:inline-flex;background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);padding:var(--spacing-1);gap:var(--spacing-1)}.references__tab{padding:var(--spacing-2) var(--spacing-4);font-size:.875rem;font-weight:500;color:var(--color-text-tertiary);background:transparent;border:none;border-radius:var(--radius-full);cursor:pointer;transition:all var(--transition-base) ease}.references__tab:hover{color:var(--color-text-secondary)}.references__tab--active{background:var(--color-bg-primary);color:var(--color-primary-main);box-shadow:var(--shadow-sm);font-weight:600}.references__grid{display:grid;grid-template-columns:1fr;gap:var(--spacing-4);margin-bottom:var(--spacing-8);position:relative;z-index:1}.references__card-wrapper{opacity:1;transition:transform var(--transition-base) ease}.references__card-wrapper--hovered{transform:translateY(-2px)}.references__card-content{display:flex;flex-direction:column;gap:var(--spacing-4)}.references__card-header{display:flex;gap:var(--spacing-3);align-items:flex-start}.references__avatar{width:48px;height:48px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:var(--shadow-sm)}.references__avatar-initials{font-size:1rem;font-weight:700;color:#fff;letter-spacing:.02em}.references__info{flex:1;min-width:0}.references__name{font-size:1rem;font-weight:700;color:var(--color-text-primary);margin-bottom:var(--spacing-1)}.references__title-role{font-size:.875rem;color:var(--color-primary-main);font-weight:500;margin-bottom:var(--spacing-1)}.references__company{font-size:.8125rem;color:var(--color-text-tertiary);margin-bottom:0}.references__card-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--spacing-2);padding-top:var(--spacing-3);border-top:1px solid var(--color-border-primary)}.references__relationship-badge{display:inline-flex;padding:var(--spacing-1) var(--spacing-2);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);font-size:.6875rem;font-weight:600;color:var(--color-text-tertiary)}.references__privacy-notice{display:flex;align-items:center;gap:var(--spacing-1);font-size:.6875rem;color:var(--color-text-tertiary)}.references__lock-icon{width:10px;height:10px;opacity:.6}.references__request-section{position:relative;z-index:1;margin-bottom:var(--spacing-6)}.references__request-content{display:flex;flex-direction:column;gap:var(--spacing-4);text-align:center}.references__request-icon{width:48px;height:48px;margin:0 auto;padding:var(--spacing-3);background:linear-gradient(135deg,var(--color-primary-main),var(--color-primary-light));border-radius:var(--radius-lg);color:#fff;box-shadow:var(--shadow-md)}.references__request-icon svg{width:100%;height:100%}.references__request-text h2{font-size:1.25rem;font-weight:700;color:var(--color-text-primary);margin-bottom:var(--spacing-2)}.references__request-text p{font-size:.875rem;color:var(--color-text-secondary);line-height:1.65;max-width:500px;margin:0 auto}.references__request-action{display:flex;justify-content:center}.references__email-icon,.references__check-icon{width:16px;height:16px;margin-right:var(--spacing-2)}.references__button--sent{background:var(--color-success)!important}.references__footer{text-align:center;position:relative;z-index:1}.references__footer-note{font-size:.8125rem;color:var(--color-text-tertiary);font-style:italic}@media(min-width:768px){.references{padding:var(--spacing-10) 0}.references__gradient-orb--1{width:450px;height:450px}.references__gradient-orb--2{width:350px;height:350px}.references__grid-pattern{display:block;position:absolute;inset:0;background-image:linear-gradient(var(--color-border-primary) 1px,transparent 1px),linear-gradient(90deg,var(--color-border-primary) 1px,transparent 1px);background-size:80px 80px;opacity:.15;mask-image:radial-gradient(ellipse at center,black 0%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse at center,black 0%,transparent 70%)}.references__title{font-size:2.5rem}.references__subtitle{font-size:1rem;max-width:500px}.references__tabs{padding:var(--spacing-1)}.references__tab{padding:var(--spacing-2) var(--spacing-6);font-size:.9375rem}.references__grid{grid-template-columns:repeat(2,1fr);gap:var(--spacing-6)}.references__avatar{width:52px;height:52px}.references__avatar-initials,.references__name{font-size:1.0625rem}.references__request-content{flex-direction:row;align-items:center;text-align:left;gap:var(--spacing-6)}.references__request-icon{width:52px;height:52px;margin:0;flex-shrink:0}.references__request-text{flex:1}.references__request-text h2{font-size:1.375rem}.references__request-text p{margin:0;font-size:.9375rem}.references__request-action{flex-shrink:0}}@media(min-width:1024px){.references{padding:var(--spacing-12) 0}.references__gradient-orb--1{width:550px;height:550px;opacity:.1}.references__gradient-orb--2{width:450px;height:450px}.references__header{margin-bottom:var(--spacing-8)}.references__grid{gap:var(--spacing-8)}.references__avatar{width:56px;height:56px}.references__avatar-initials{font-size:1.125rem}}@media(prefers-reduced-motion:reduce){.references__card-wrapper{transition:none}}.song-item{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-md);transition:all .2s cubic-bezier(.4,0,.2,1);background-color:transparent;border:1px solid transparent;position:relative}.song-item:hover{background-color:#00000005;transform:translate(2px)}[data-theme=dark] .song-item:hover{background-color:#ffffff08}.song-item--playing{background:linear-gradient(135deg,var(--color-primary-dark),var(--color-primary-main));color:#fff;border-color:transparent;box-shadow:0 2px 8px #2d501640}[data-theme=dark] .song-item--playing{background:linear-gradient(135deg,var(--color-primary-main),var(--color-primary-light));box-shadow:0 2px 8px #7a9b5a40}.song-item--playing .song-item__artist,.song-item--playing .song-item__album{color:#ffffffd9}.song-item__index{flex-shrink:0;width:28px;text-align:center;font-size:.8125rem;color:var(--color-text-tertiary);font-weight:600;font-variant-numeric:tabular-nums}.song-item--playing .song-item__index{color:#fffffff2}.song-item__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--spacing-1)}.song-item__name{font-weight:600;font-size:.9375rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--color-text-primary)}.song-item--playing .song-item__name{color:#fff}.song-item__artist{font-size:.8125rem;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-item__album{font-size:.75rem;color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-item__play-button{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:none;background-color:var(--color-primary-main);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);opacity:0;box-shadow:0 2px 8px #2d501633}.song-item:hover .song-item__play-button{opacity:1}.song-item--playing .song-item__play-button{opacity:1;background-color:#fff;color:var(--color-primary-main);box-shadow:0 2px 8px #00000026}[data-theme=dark] .song-item--playing .song-item__play-button{background-color:#fffffff2;color:var(--color-primary-dark)}.song-item__play-button:hover{transform:scale(1.08)}.song-item__play-button:active{transform:scale(.96)}.song-item__spotify-icon{flex-shrink:0;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);opacity:.5}.song-item__error{position:absolute;bottom:-24px;right:0;font-size:.6875rem;color:var(--color-error, #ef4444);background:var(--color-bg-secondary);padding:4px 8px;border-radius:var(--radius-sm);white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 8px #0000001a;z-index:10}@media(min-width:768px){.song-item{padding:var(--spacing-3) var(--spacing-4)}.song-item__index{width:32px;font-size:.875rem}.song-item__name{font-size:1rem}.song-item__artist{font-size:.875rem}.song-item__album{font-size:.8125rem}.song-item__play-button,.song-item__spotify-icon{width:40px;height:40px}}@media(min-width:1024px){.song-item{padding:var(--spacing-3) var(--spacing-4);gap:var(--spacing-4)}}.monthly-playlist{background-color:var(--color-bg-secondary);border-radius:var(--radius-xl);overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid var(--color-border-primary);box-shadow:0 1px 3px #0000000d}.monthly-playlist:hover{border-color:var(--color-primary-light);box-shadow:0 8px 24px #00000014;transform:translateY(-2px)}.monthly-playlist--expanded{border-color:var(--color-primary-light);box-shadow:0 4px 16px #0000001a}.monthly-playlist__header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s ease;position:relative}.monthly-playlist__header:hover{background-color:#00000005}[data-theme=dark] .monthly-playlist__header:hover{background-color:#ffffff08}.monthly-playlist__title-section{display:flex;flex-direction:column;gap:var(--spacing-2)}.monthly-playlist__title{font-size:1.125rem;font-weight:700;margin:0;background:linear-gradient(135deg,var(--color-primary-dark),var(--color-primary-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.01em}.monthly-playlist__count{font-size:.75rem;color:var(--color-text-tertiary);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.monthly-playlist__toggle{flex-shrink:0;width:36px;height:36px;border:none;background:#00000008;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-primary);transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:var(--radius-md)}[data-theme=dark] .monthly-playlist__toggle{background:#ffffff0d}.monthly-playlist__toggle:hover{background-color:var(--color-primary);color:#fff;transform:scale(1.05)}.monthly-playlist--expanded .monthly-playlist__toggle{transform:rotate(180deg)}.monthly-playlist--expanded .monthly-playlist__toggle:hover{transform:rotate(180deg) scale(1.05)}.monthly-playlist__toggle-icon{width:18px;height:18px}.monthly-playlist__content{padding:0 var(--spacing-4) var(--spacing-4);animation:slideDown .3s cubic-bezier(.4,0,.2,1)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.monthly-playlist__songs{display:flex;flex-direction:column;gap:var(--spacing-1);background-color:transparent;border-radius:var(--radius-md);padding:0}@media(min-width:768px){.monthly-playlist__header{padding:var(--spacing-5)}.monthly-playlist__title{font-size:1.25rem}.monthly-playlist__count{font-size:.8125rem}.monthly-playlist__content{padding:0 var(--spacing-5) var(--spacing-5)}.monthly-playlist__toggle{width:40px;height:40px}.monthly-playlist__toggle-icon{width:20px;height:20px}}@media(min-width:1024px){.monthly-playlist__header{padding:var(--spacing-6)}.monthly-playlist__title{font-size:1.5rem}.monthly-playlist__content{padding:0 var(--spacing-6) var(--spacing-6)}}.spotify-auth-notification{position:fixed;bottom:var(--spacing-6);left:50%;transform:translate(-50%);z-index:1000;animation:slideInUp .4s cubic-bezier(.4,0,.2,1);width:calc(100% - var(--spacing-8));max-width:320px}@keyframes slideInUp{0%{opacity:0;transform:translate(-50%) translateY(100%)}to{opacity:1;transform:translate(-50%) translateY(0)}}.spotify-auth-notification__content{display:flex;align-items:center;gap:var(--spacing-2);background:linear-gradient(135deg,#1ed760,#1db954);color:#fff;padding:var(--spacing-3);border-radius:var(--radius-lg);box-shadow:0 8px 32px #1ed7604d,0 2px 8px #00000026;width:100%;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.spotify-auth-notification__icon{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#fff3;border-radius:var(--radius-md)}.spotify-auth-notification__icon svg{width:20px;height:20px}.spotify-auth-notification__text{flex:1;min-width:0}.spotify-auth-notification__title{font-size:.875rem;font-weight:700;line-height:1.3;margin-bottom:2px}.spotify-auth-notification__subtitle{font-size:.75rem;opacity:.9;line-height:1.2}.spotify-auth-notification__button{flex-shrink:0;padding:7px 14px;background:#fff;color:#1db954;border:none;border-radius:var(--radius-md);font-size:.8125rem;font-weight:700;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #00000026;white-space:nowrap;line-height:1.2}.spotify-auth-notification__button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0003;background:#fff}.spotify-auth-notification__button:active{transform:translateY(0);box-shadow:0 1px 4px #00000026}.spotify-auth-notification__close{flex-shrink:0;width:24px;height:24px;padding:0;background:#ffffff26;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1)}.spotify-auth-notification__close svg{width:12px;height:12px}.spotify-auth-notification__close:hover{background:#ffffff40;transform:scale(1.1)}.spotify-auth-notification__close:active{transform:scale(.95)}.spotify-auth-notification__error{position:absolute;bottom:-20px;right:0;font-size:.75rem;color:#ff6b6b;background:#000c;padding:4px 8px;border-radius:var(--radius-sm);white-space:nowrap}@media(min-width:768px){.spotify-auth-notification{bottom:var(--spacing-8);left:auto;right:var(--spacing-8);transform:none;width:auto;max-width:400px}@keyframes slideInUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.spotify-auth-notification__content{padding:var(--spacing-4) var(--spacing-6);gap:var(--spacing-4)}.spotify-auth-notification__text{max-width:none}.spotify-auth-notification__icon{width:44px;height:44px}.spotify-auth-notification__title{font-size:1rem}.spotify-auth-notification__subtitle{font-size:.875rem}.spotify-auth-notification__button{padding:9px 18px;font-size:.9375rem}.spotify-auth-notification__close{width:32px;height:32px}}.mobile-playback-info{position:fixed;top:80px;left:var(--spacing-4);right:var(--spacing-4);z-index:1000;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.mobile-playback-info__content{display:flex;align-items:flex-start;gap:var(--spacing-3);background:linear-gradient(135deg,#1db954,#1ed760);color:#fff;padding:var(--spacing-3);border-radius:var(--radius-lg);box-shadow:0 4px 12px #00000026;max-width:600px;margin:0 auto}.mobile-playback-info__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px}.mobile-playback-info__text{flex:1;font-size:.875rem;line-height:1.5}.mobile-playback-info__text strong{font-weight:600;display:block;margin-bottom:2px}.mobile-playback-info__dismiss{flex-shrink:0;background:none;border:none;color:#fff;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:background-color .2s}.mobile-playback-info__dismiss:hover{background-color:#ffffff1a}.mobile-playback-info__dismiss:active{background-color:#fff3}@media(min-width:768px){.mobile-playback-info{top:100px;left:50%;right:auto;transform:translate(-50%);width:90%;max-width:600px}}.historical-jams{width:100%;padding-bottom:120px}.historical-jams__hero{padding:var(--spacing-8) 0;background:linear-gradient(135deg,var(--color-bg-primary) 0%,var(--color-bg-secondary) 100%);text-align:center}.historical-jams__title{font-size:2rem;font-weight:800;margin-bottom:var(--spacing-4);line-height:1.1;background:linear-gradient(135deg,var(--color-primary-dark),var(--color-primary-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.historical-jams__subtitle{font-size:1rem;color:var(--color-text-secondary);margin-bottom:var(--spacing-6)}.historical-jams__search{position:relative;max-width:500px;margin:var(--spacing-6) auto 0}.historical-jams__search-input{width:100%;padding:var(--spacing-3) var(--spacing-4);padding-right:var(--spacing-10);font-size:1rem;border:2px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-primary);color:var(--color-text-primary);transition:all .2s ease;outline:none}.historical-jams__search-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-alpha)}.historical-jams__search-input::placeholder{color:var(--color-text-tertiary)}.historical-jams__search-clear{position:absolute;right:var(--spacing-3);top:50%;transform:translateY(-50%);background:var(--color-bg-secondary);border:none;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-secondary);transition:all .2s ease;font-size:.875rem}.historical-jams__search-clear:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.historical-jams__no-results{text-align:center;padding:var(--spacing-12) var(--spacing-4);color:var(--color-text-secondary);font-size:1.125rem}.historical-jams__content{padding:var(--spacing-10) 0 var(--spacing-16)}.historical-jams__playlists{display:flex;flex-direction:column;gap:var(--spacing-6)}@media(min-width:768px){.historical-jams__hero{padding:var(--spacing-10) 0}.historical-jams__title{font-size:2.25rem}.historical-jams__subtitle{font-size:1.125rem}.historical-jams__playlists{gap:var(--spacing-8)}}@media(min-width:1024px){.historical-jams__hero{padding:var(--spacing-12) 0}.historical-jams__title{font-size:2.5rem}.historical-jams__subtitle{font-size:1.25rem}.historical-jams__content{padding:var(--spacing-12) 0 var(--spacing-24)}.historical-jams__playlists{gap:var(--spacing-10)}}.nf{--bg: #0e1114;--surface: #161a1f;--ink: #e7eaee;--ink-soft: #a2aab3;--ink-faint: #7c858e;--line: #262c33;--accent: #ff7a3d;--sans: "Geist", "Inter", system-ui, sans-serif;--mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;position:fixed;inset:0;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;touch-action:manipulation}.nf__canvas{position:absolute;inset:0;width:100%;height:100%}.nf__bar{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;gap:18px;height:52px;padding:env(safe-area-inset-top,0px) max(20px,env(safe-area-inset-right,0px)) 0 max(20px,env(safe-area-inset-left,0px));border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.nf__brand{flex:none;white-space:nowrap;font-weight:600;font-size:15px;color:var(--ink);text-decoration:none}.nf__bar nav{display:flex;gap:14px}.nf__bar nav a{font-size:14px;color:var(--ink-soft);text-decoration:none}.nf__bar nav a:hover,.nf__brand:hover{color:var(--accent)}@media(max-width:560px){.nf__bar{gap:12px;padding-left:16px;padding-right:10px}.nf__bar nav{gap:10px}.nf__bar .np__track,.nf__bar .np__pos{display:none}}.nf :focus-visible{outline:2px solid var(--accent);outline-offset:3px}.nf__hud{position:absolute;top:64px;left:max(20px,env(safe-area-inset-left,0px));font-family:var(--mono);font-size:13px;letter-spacing:.04em;color:var(--ink-soft);white-space:pre;pointer-events:none}.nf--over .nf__hud{opacity:0}.nf__content{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center;pointer-events:none;transition:opacity .4s ease}.nf--over .nf__content{opacity:0}.nf__code{font-family:var(--mono);font-weight:600;font-size:clamp(96px,22vw,200px);line-height:.9;letter-spacing:-.04em;color:var(--ink);text-shadow:0 0 40px rgba(255,122,61,.25)}.nf__code.is-hit{animation:nf-hit .26s ease-out}@keyframes nf-hit{20%{transform:translate(-6px,2px);text-shadow:4px 0 #ff5f57,-4px 0 #84b6ff}45%{transform:translate(5px,-2px);text-shadow:-3px 0 #ff5f57,3px 0 #84b6ff}70%{transform:translate(-2px,1px)}}.nf__integrity{width:min(280px,60vw);height:4px;border-radius:2px;background:var(--line);overflow:hidden}.nf__integrity-bar{height:100%;background:var(--accent);transform-origin:left}.nf__title{margin:12px 0 0;color:var(--ink);font-size:clamp(24px,4vw,34px);font-weight:600;letter-spacing:-.025em}.nf__message{margin:0;max-width:46ch;color:var(--ink-soft);line-height:1.55}.nf__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:8px;pointer-events:auto}.nf__btn{display:inline-flex;align-items:center;min-height:44px;padding:0 20px;font:inherit;font-size:15px;font-weight:500;color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:999px;text-decoration:none;cursor:pointer}.nf__btn:hover{border-color:var(--ink-faint)}.nf__btn--solid{background:var(--accent);border-color:var(--accent);color:#1a0c04}.nf__btn--solid:hover{filter:brightness(1.08)}.nf__over{position:absolute;left:0;right:0;top:58%;display:flex;flex-direction:column;align-items:center;gap:14px;padding:0 24px;animation:nf-in .5s .6s ease-out both}@keyframes nf-in{0%{opacity:0;transform:translateY(8px)}}.nf__score{margin:0;font-family:var(--mono);font-size:15px;color:var(--ink-soft);display:flex;gap:16px;align-items:baseline}.nf__score strong{font-size:28px;color:var(--ink);font-weight:600;margin-left:6px}.nf__best{color:var(--accent)}@media(prefers-reduced-motion:reduce){.nf__code.is-hit,.nf__over{animation:none}.nf__content{transition:none}}
