/*!Fonts licensed under SIL OFL 1.1:
/fonts/spacegrotesk-OFL.txt
/fonts/lora-OFL.txt
/fonts/jetbrainsmono-OFL.txt*/@font-face{font-family:jetbrains mono;font-style:italic;font-weight:400 700;font-display:optional;src:url(/fonts/jetbrains-mono-italic-latin.89d4f8e433fee8bccca552bda7cbeefd44c2406f454d17593811344088bbeabb.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:400 700;font-display:optional;src:url(/fonts/jetbrains-mono-normal-latin.83c005d49d8a6a50474c73a5a36ac0468076e9c4a29da7bdb14995d80560a5be.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:lora;font-style:italic;font-weight:400 700;font-display:optional;src:url(/fonts/lora-italic-latin.d824d807d4d832d12c87932d0b8ec1314dcfd502157a56dee6bb04cf8a3768ae.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:lora;font-style:normal;font-weight:400 700;font-display:optional;src:url(/fonts/lora-normal-latin.ddb8c66035104e233fc024669183aad3738b6daa16deee2ebb1241bd0f98ace1.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:space grotesk;font-style:normal;font-weight:400 700;font-display:optional;src:url(/fonts/space-grotesk-normal-latin.0640890476fc1198ab4de571fb658de443c4d85b66466ec09534a8737ab1ce9d.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--surface:#060814;--surface-dim:#020307;--card-blur:blur(12px);--primary:#5c8dff;--primary-dim:#2c60df;--primary-glow:rgba(92, 141, 255, 0.18);--secondary:#00f2fe;--tertiary:#00f5a0;--on-surface:#e4e1e8;--on-surface-dim:#9b9aa5;--on-surface-faint:#888499;--border:rgba(255, 255, 255, 0.08);--border-hover:rgba(255, 255, 255, 0.25);--danger:#ff6b6b;--font-headline:"Space Grotesk", system-ui, sans-serif;--font-body:system-ui, -apple-system, sans-serif;--font-reading:"Lora", Georgia, serif;--font-code:"JetBrains Mono", "Fira Code", monospace;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--sp-24:96px;--gutter:24px;--margin-mobile:16px;--max-width:720px;--nav-height:48px;--ease-out:cubic-bezier(0.16, 1, 0.3, 1);--duration:0.25s;--grid-color:rgba(92, 141, 255, 0.05);--grid-size:24px;--scanline-color:rgba(92, 141, 255, 0.025);color-scheme:dark}[data-theme=light]{--surface:#f7f6f3;--surface-dim:#edebe6;--primary:#0a47d6;--primary-dim:#0735a3;--primary-glow:rgba(10, 71, 214, 0.08);--secondary:#1a8a9e;--tertiary:#1a9e4a;--on-surface:#1e1e24;--on-surface-dim:#605f6b;--on-surface-faint:#706f7c;--border:rgba(0, 0, 0, 0.07);--border-hover:rgba(0, 0, 0, 0.18);--danger:#d94040;--grid-color:rgba(10, 71, 214, 0.055);--scanline-color:rgba(10, 71, 214, 0.03);color-scheme:light}@media(max-width:768px){:root{--card-blur:none}}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;border-radius:0}a,button,summary{-webkit-tap-highlight-color:transparent}::selection{background:rgba(92,141,255,.35)}[data-theme=light] ::selection{background:rgba(10,71,214,.2)}:focus-visible{outline:2px solid var(--primary);outline-offset:3px}html{scroll-behavior:smooth;scrollbar-gutter:stable;background-color:var(--surface);scrollbar-width:thin;scrollbar-color:var(--border)var(--surface-dim);transition:background-color var(--duration)var(--ease-out)}body{display:flex;flex-direction:column;min-height:100vh;font-family:var(--font-body);font-size:.875rem;line-height:1.65;color:var(--on-surface);background:0 0;transition:background-color var(--duration)var(--ease-out),color var(--duration)var(--ease-out)}body::before{content:"";position:fixed;inset:0;z-index:-2;background-image:linear-gradient(to right,var(--grid-color) 1px,transparent 1px),linear-gradient(to bottom,var(--grid-color) 1px,transparent 1px);background-size:var(--grid-size)var(--grid-size);background-attachment:fixed;pointer-events:none;opacity:0;transition:opacity .5s var(--ease-out)}@media(hover:hover){html:hover body::before{opacity:1}body::before{mask-image:radial-gradient( circle 350px at var(--mouse-x,-9999px) var(--mouse-y,-9999px),#000 0%,rgba(0,0,0,.15) 50%,transparent 100% );-webkit-mask-image:radial-gradient( circle 350px at var(--mouse-x,-9999px) var(--mouse-y,-9999px),#000 0%,rgba(0,0,0,.15) 50%,transparent 100% )}}body::after{content:"";position:fixed;inset:0;z-index:-1;background-image:repeating-linear-gradient( 0,transparent,transparent 4px,var(--scanline-color) 4px,var(--scanline-color) 5px );background-size:100% 5px;pointer-events:none}nav:not(.breadcrumb){position:sticky;top:var(--sp-4);z-index:100;width:calc(100% - 2 * var(--margin-mobile));max-width:var(--max-width);margin:var(--sp-4)auto;padding:0 var(--gutter);display:flex;justify-content:space-between;align-items:center;min-height:var(--nav-height);background:linear-gradient( 180deg,rgba(13,19,39,.65) 0%,rgba(6,8,20,.8) 100% );backdrop-filter:blur(16px)saturate(1.2);-webkit-backdrop-filter:blur(16px)saturate(1.2);border:1px solid rgba(255,255,255,8%);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.25);transition:background var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out),box-shadow var(--duration)var(--ease-out)}[data-theme=light] nav:not(.breadcrumb){background:linear-gradient( 180deg,rgba(255,255,255,.8) 0%,rgba(247,246,243,.9) 100% );border:1px solid rgba(0,0,0,8%);box-shadow:0 8px 32px rgba(0,0,0,5%)}nav .site-title{font-family:var(--font-code);font-weight:600;font-size:.75rem;text-decoration:none;color:var(--primary);letter-spacing:.04em;transition:color var(--duration)var(--ease-out)}nav .site-title:hover{color:var(--secondary);text-shadow:0 0 12px var(--primary-glow)}.nav-links{display:flex;align-items:center;gap:var(--sp-5)}nav:not(.breadcrumb) a:not(.site-title):not(.theme-toggle){text-decoration:none;color:var(--on-surface-dim);font-family:var(--font-headline);font-size:.75rem;font-weight:500;text-transform:lowercase;letter-spacing:.03em;padding:var(--sp-1)0;position:relative;transition:color var(--duration)var(--ease-out)}nav:not(.breadcrumb) a:not(.site-title):not(.theme-toggle):focus-visible{outline:2px solid var(--primary);outline-offset:2px}nav:not(.breadcrumb) a:not(.site-title):not(.theme-toggle)::after{content:"";position:absolute;bottom:-2px;left:0;width:100%;height:1px;background:var(--primary);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}nav:not(.breadcrumb) a:not(.site-title):not(.theme-toggle):hover{color:var(--primary);text-shadow:0 0 8px var(--primary-glow)}nav:not(.breadcrumb) a:not(.site-title):not(.theme-toggle):hover::after{transform:scaleX(1)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:0 0;color:var(--on-surface-dim);font-size:.875rem;cursor:pointer;flex-shrink:0;position:relative;line-height:0;transition:color var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out),background var(--duration)var(--ease-out)}.theme-toggle:hover{border:none;color:var(--primary);background:var(--surface)}.theme-toggle .icon-sun,.theme-toggle .icon-moon{border:none;width:18px;height:18px;position:absolute;inset:0;margin:auto;transition:opacity var(--duration)var(--ease-out),transform var(--duration)var(--ease-out),color var(--duration)var(--ease-out)}:root .theme-toggle .icon-sun{opacity:1;transform:scale(1)rotate(0);color:var(--on-surface)}:root .theme-toggle .icon-moon{opacity:0;transform:scale(.7)rotate(-90deg);color:var(--on-surface)}[data-theme=light] .theme-toggle .icon-sun{opacity:0;transform:scale(.7)rotate(90deg)}[data-theme=light] .theme-toggle .icon-moon{opacity:1;transform:scale(1)rotate(0)}main{flex-grow:1;padding:var(--sp-10)var(--gutter)var(--sp-24);width:100%;max-width:var(--max-width);margin:0 auto}header{margin-top:var(--sp-8);margin-bottom:var(--sp-6)}main>header:empty{display:none}h1,h2,h3,h4,h5,h6{font-family:var(--font-headline);font-weight:700;color:var(--on-surface);margin-top:2em;margin-bottom:.6em;line-height:1.15;letter-spacing:-.03em;text-wrap:balance;transition:color var(--duration)var(--ease-out)}h1.display-lg{font-size:1.69rem;line-height:1;letter-spacing:-.04em;margin-top:0;margin-bottom:var(--sp-6);text-shadow:0 0 40px var(--primary-glow)}h1.display-lg::after{content:"_";color:var(--secondary);animation:cursor-blink 1.2s step-end infinite;margin-left:var(--sp-1)}@keyframes cursor-blink{from,to{opacity:0}50%{opacity:1}}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-4)}.section-head .headline-md{margin-bottom:var(--sp-6)}.section-head-all{font-family:var(--font-headline);font-size:.6875rem;font-weight:500;text-transform:lowercase;letter-spacing:.03em;color:var(--on-surface-faint);text-decoration:none;white-space:nowrap;transition:color var(--duration)var(--ease-out)}.section-head-all:hover{color:var(--primary)}h1.headline-md{font-size:1.69rem;margin-top:0;margin-bottom:var(--sp-6)}h2.headline-md{font-family:var(--font-headline);font-size:.8125rem;font-weight:600;text-transform:lowercase;letter-spacing:.03em;color:var(--on-surface-dim);margin-bottom:var(--sp-6);margin-top:0;border-bottom:none;padding-bottom:0}h2.headline-md::before{content:"## ";font-family:var(--font-code);color:var(--on-surface-faint);font-weight:500}.label-sm,.photo-date,.masthead-label{font-family:var(--font-code);font-size:.6875rem;font-weight:500;text-transform:lowercase;letter-spacing:.02em;transition:color var(--duration)var(--ease-out)}.label-sm,.photo-date{color:var(--on-surface-faint)}.masthead-label{font-weight:600;color:var(--secondary)}ul.article-list{list-style:none;padding:0;margin:0}ul.article-list>li{position:relative;display:flex;align-items:baseline;gap:var(--sp-5);padding:var(--sp-3)var(--sp-1);border-bottom:1px dotted var(--border);transition:border-color var(--duration)var(--ease-out)}ul.article-list>li br{display:none}ul.article-list>li>.label-sm:first-of-type{flex-shrink:0;width:7em;color:var(--on-surface-faint);transition:color var(--duration)var(--ease-out)}ul.article-list>li a{text-decoration:underline;text-decoration-color:rgba(255,255,255,.3);text-underline-offset:3px;color:var(--on-surface);font-family:var(--font-headline);font-size:.9375rem;font-weight:600;letter-spacing:-.01em;transition:color var(--duration)var(--ease-out),text-decoration-color var(--duration)var(--ease-out)}[data-theme=light] ul.article-list>li a{text-decoration-color:rgba(0,0,0,.25)}ul.article-list>li a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}ul.article-list>li a::after{content:"";position:absolute;inset:0;z-index:1}ul.article-list>li:hover a{color:#fff;text-decoration-color:#fff}[data-theme=light] ul.article-list>li:hover a{color:#000;text-decoration-color:#000}ul.article-list>li:hover>.label-sm:first-of-type{color:var(--on-surface-dim)}ul.article-list time{display:inline}table{width:100%;margin:var(--sp-10)0;border-collapse:separate;border-spacing:0;border:1px solid var(--border);overflow:hidden;font-size:.8125rem;transition:border-color var(--duration)var(--ease-out)}th,td{padding:var(--sp-3)var(--sp-4);border-bottom:1px solid var(--border);transition:background-color var(--duration)var(--ease-out),color var(--duration)var(--ease-out)}th{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--on-surface-dim);background:var(--surface-dim);text-align:left}td{color:var(--on-surface)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface-dim);transition:background var(--duration)var(--ease-out)}pre,code{font-family:var(--font-code);font-size:.8125rem;line-height:1.5}pre{background:#020307!important;color:#e4e1e8!important;padding:var(--sp-6);overflow-x:auto;border:1px solid rgba(255,255,255,8%);border-radius:12px;margin:var(--sp-8)0;position:relative;transition:background-color var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out),box-shadow var(--duration)var(--ease-out)}.highlight{max-width:100%;margin:var(--sp-8)0}.highlight pre{margin:0}pre:hover{border-color:rgba(92,141,255,.35);box-shadow:0 6px 24px rgba(92,141,255,8%)}[data-theme=light] pre:hover{box-shadow:0 8px 30px rgba(0,0,0,.12)}code{color:var(--secondary);transition:color var(--duration)var(--ease-out)}pre code{background:0 0;padding:0;color:#e4e1e8}img,video{max-width:100%;height:auto;border-radius:8px}video{aspect-ratio:16/9;display:block}img[src$=".gif"],img[src*="/gifs/"],.portfolio-projects img,.project-card img{border-radius:0}.hero-content img[src*="/gifs/"]{image-rendering:pixelated;vertical-align:middle;margin-right:var(--sp-1)}article iframe{width:100%;aspect-ratio:16/9;border:1px solid var(--border);border-radius:8px;margin:var(--sp-6)0}article details{margin:var(--sp-6)0}article summary{font-family:var(--font-headline);font-size:.75rem;font-weight:500;text-transform:lowercase;letter-spacing:.03em;color:var(--on-surface-dim);cursor:pointer;transition:color var(--duration)var(--ease-out)}article summary:hover{color:var(--primary)}.inline-icon-svg,.inline-icon{height:1em;width:1em;aspect-ratio:1/1;vertical-align:-.1em;border:none;border-radius:0;margin-right:var(--sp-2)}.inline-icon-svg{filter:invert(1)}svg.inline-icon-svg{filter:none}[data-theme=light] .inline-icon-svg{filter:invert(0)}[data-theme=light] svg.inline-icon-svg{filter:none}article a{color:var(--primary);text-decoration:underline;text-decoration-color:rgba(92,141,255,.4);text-underline-offset:3px;text-decoration-thickness:1px;overflow-wrap:break-word;transition:color var(--duration)var(--ease-out),text-decoration-color var(--duration)var(--ease-out),text-underline-offset var(--duration)var(--ease-out)}[data-theme=light] article a{text-decoration-color:rgba(10,71,214,.35)}article a:focus-visible,article summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px}article a:hover{color:var(--secondary);text-decoration-color:var(--secondary);text-underline-offset:4px}article{overflow-wrap:break-word}article p,article ul,article ol{font-family:var(--font-reading);font-size:1.03125rem;line-height:1.5;margin-bottom:1.25em;color:var(--on-surface-dim);text-wrap:pretty}article ul,article ol{padding-left:1.5rem}article li{margin-bottom:.4em}article li::marker{color:var(--on-surface-faint)}article h2{font-size:1.45rem;margin-top:2.2em;margin-bottom:.8em;padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}article h3{font-size:1.2rem;font-weight:600;margin-top:1.8em;margin-bottom:.6em}article em{color:var(--on-surface);font-style:italic}blockquote{margin:2em 0;padding:var(--sp-4)var(--sp-8);border-left:3px solid var(--primary);background:linear-gradient( 135deg,rgba(13,19,39,.45) 0%,rgba(6,8,20,.55) 100% );backdrop-filter:var(--card-blur);-webkit-backdrop-filter:var(--card-blur);border-radius:0 16px 16px 0;box-shadow:inset 0 1px rgba(255,255,255,5%);font-family:var(--font-reading);font-size:1.15rem;line-height:1.7;font-style:italic;color:var(--on-surface-dim);transition:background var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out),color var(--duration)var(--ease-out)}blockquote>*:last-child{margin-bottom:0}[data-theme=light] blockquote{background:linear-gradient( 135deg,rgba(255,255,255,.55) 0%,rgba(247,246,243,.65) 100% );border-left:3px solid var(--primary);box-shadow:inset 0 1px rgba(255,255,255,.6)}code:not(pre code){background:var(--surface-dim);padding:.15em .4em;font-size:.85em;line-height:1;color:var(--secondary);border:1px solid var(--border);border-radius:4px;display:inline;vertical-align:baseline;white-space:normal;overflow-wrap:break-word;box-decoration-break:clone;-webkit-box-decoration-break:clone;transition:background-color var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out),color var(--duration)var(--ease-out)}article strong,.hero-content strong{color:var(--primary);font-weight:600}.portfolio-wrapper{margin-top:var(--sp-2)}.portfolio-hero{margin-bottom:var(--sp-16);position:relative;transition:border-color var(--duration)var(--ease-out);animation:fadeInUp .5s var(--ease-out)both}.portfolio-hero .display-lg{margin-left:0;margin-bottom:var(--sp-5)}.hero-subtext{color:var(--primary);font-weight:400;font-size:.875rem;letter-spacing:.04em;text-transform:none}.hero-content{font-size:.875rem;line-height:1.75;color:var(--on-surface-dim)}.hero-content a{display:inline-flex;align-items:center;gap:var(--sp-2);margin-right:var(--sp-3);margin-top:var(--sp-3);font-family:var(--font-headline);font-size:.75rem;font-weight:500;text-transform:lowercase;letter-spacing:.03em;color:var(--on-surface-dim);text-decoration:none;border:1px solid var(--border);padding:var(--sp-2)var(--sp-4);background:0 0;transition:color var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out),background var(--duration)var(--ease-out)}.hero-content a:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-glow)}.hero-content a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.project-list{display:flex;flex-direction:column;gap:var(--sp-4)}.project-card{padding:var(--sp-5)var(--sp-6);border:1px solid var(--border);border-radius:12px;background:linear-gradient( 180deg,rgba(255,255,255,.025) 0%,rgba(255,255,255,0) 55% );transition:border-color var(--duration)var(--ease-out),background var(--duration)var(--ease-out),box-shadow var(--duration)var(--ease-out)}[data-theme=light] .project-card{background:linear-gradient( 180deg,rgba(255,255,255,.6) 0%,rgba(255,255,255,0) 55% )}.project-card:hover{box-shadow:0 4px 20px rgba(0,0,0,.2)}.project-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-4)}.project-card-head h3{margin:0;font-size:1.0625rem;font-weight:600;letter-spacing:-.01em}.project-card-head h3 a{color:var(--on-surface);text-decoration:none;transition:color var(--duration)var(--ease-out)}.project-card:hover .project-card-head h3 a,.project-card-head h3 a:hover{color:var(--primary)}.project-year{font-family:var(--font-code);font-size:.625rem;color:var(--on-surface-faint);white-space:nowrap}.project-summary{margin:var(--sp-2)0 0;font-family:var(--font-reading);font-size:.9375rem;color:var(--on-surface-dim);line-height:1.6}.project-card-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--sp-2)var(--sp-4);margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--border);transition:border-color var(--duration)var(--ease-out)}.project-tech{font-family:var(--font-code);font-size:.625rem;color:var(--on-surface-faint);letter-spacing:.02em}.project-links{display:flex;flex-wrap:wrap;gap:var(--sp-5)}.project-links a{display:inline-flex;align-items:center;font-family:var(--font-headline);font-size:.75rem;font-weight:500;text-transform:lowercase;letter-spacing:.03em;color:var(--on-surface-dim);text-decoration:none;transition:color var(--duration)var(--ease-out)}.project-links a:hover{color:var(--primary)}.project-links a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.project-links .inline-icon-svg{width:13px;height:13px;margin-right:6px;opacity:.7}.project-links a:hover .inline-icon-svg{opacity:1}.home-hero{margin-bottom:var(--sp-12);animation:fadeInUp .5s var(--ease-out)both}.home-hero-intro{display:flex;align-items:center;gap:var(--sp-6);margin-bottom:var(--sp-8)}.home-avatar{width:80px;height:80px;border-radius:50%;border:2px solid var(--border);box-shadow:0 0 24px var(--primary-glow);transition:border-color var(--duration)var(--ease-out),box-shadow var(--duration)var(--ease-out);flex-shrink:0}.home-avatar:hover{border-color:var(--primary);box-shadow:0 0 32px rgba(92,141,255,.35)}.home-hero-text{min-width:0}.home-name{font-family:var(--font-headline);font-size:clamp(1.5rem,3vw + .5rem,2.25rem);font-weight:700;letter-spacing:-.03em;line-height:1.1;margin:0 0 var(--sp-2);color:var(--on-surface);text-wrap:balance}.home-name .cursor{color:var(--secondary);animation:cursor-blink 1.2s step-end infinite;margin-left:2px}.home-tagline{font-size:.8125rem;color:var(--on-surface-dim);margin:0;line-height:1.5;min-height:1.5em}.home-bio{font-size:.875rem;line-height:1.75;color:var(--on-surface-dim);margin-bottom:var(--sp-8)}.home-bio p{line-height:1.65;margin-bottom:1em}.home-bio p:last-child{margin-bottom:0}.home-bio p,.home-bio ul,.home-bio ol{font-family:var(--font-reading);font-size:.9375rem;color:var(--on-surface-dim)}.home-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-4)}.home-link{display:inline-flex;align-items:center;gap:var(--sp-2);font-family:var(--font-headline);font-size:.75rem;font-weight:500;text-transform:lowercase;letter-spacing:.03em;color:var(--on-surface-dim);text-decoration:none;border:1px solid var(--border);padding:var(--sp-2)var(--sp-4);background:0 0;transition:color var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out),background var(--duration)var(--ease-out)}.home-link:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-glow)}.home-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.home-link .inline-icon-svg{width:12px;height:12px;margin-right:0}.notfound{margin-top:var(--sp-16)}.notfound-msg{font-family:var(--font-code);font-size:.875rem;color:var(--danger);margin-bottom:var(--sp-2)}.notfound-sub{font-size:.875rem;color:var(--on-surface-dim);margin-bottom:var(--sp-8)}footer.editorial-footer{margin-top:var(--sp-12);background:0 0;content-visibility:auto;contain-intrinsic-size:auto 60px}.footer-inner{max-width:var(--max-width);margin:0 auto;padding:var(--sp-2)var(--gutter);display:flex;justify-content:space-between;align-items:center;font-family:var(--font-body);font-size:.5875rem;color:var(--on-surface-faint);letter-spacing:.08em}.footer-inner a{display:inline-flex;align-items:center;color:var(--on-surface-faint);text-decoration:none;transition:color var(--duration)var(--ease-out)}.footer-inner a:hover{color:var(--primary)}.footer-left{white-space:nowrap}.footer-right{display:flex;align-items:center;gap:var(--sp-4)}.footer-right img{width:11px;height:11px;opacity:.5;border-radius:0;transition:opacity var(--duration)var(--ease-out),transform var(--duration)var(--ease-out);filter:invert(1)}.footer-right a:hover img{opacity:.95;transform:translateY(-.5px)}[data-theme=light] .footer-right img{filter:none}.taglist{text-align:left}.taglist ul{list-style:none;display:flex;flex-direction:column;gap:var(--sp-3)}.taglist a{display:inline-flex;align-items:center;text-decoration:none;font-size:.625rem;font-weight:500;text-transform:uppercase;color:var(--tertiary);letter-spacing:.12em;transition:color var(--duration)var(--ease-out)}.taglist a::before{content:"→";margin-right:var(--sp-2);color:var(--on-surface-faint);transition:color var(--duration)var(--ease-out)}.taglist a:hover,.taglist a:hover::before{color:var(--primary)}.taglist a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.footer-nav{display:flex;flex-direction:column;gap:var(--sp-8)}.footer-nav .nav-item{display:flex;flex-direction:column;align-items:flex-start}.footer-nav .nav-item a.display-md{font-family:var(--font-headline);font-size:1.75rem;font-weight:700;line-height:1.15;color:var(--on-surface);text-decoration:none;margin-top:var(--sp-2);letter-spacing:-.03em;text-transform:uppercase;transition:color var(--duration)var(--ease-out)}.footer-nav .nav-item a.display-md:hover{color:var(--primary)}.breadcrumb{position:relative;z-index:1;margin:0 0 var(--sp-3);min-width:0;max-width:100%;overflow:hidden}.breadcrumb ol{list-style:none;display:flex;flex-wrap:nowrap;align-items:center;max-width:100%;overflow:hidden;font-size:.5625rem;font-weight:500;text-transform:uppercase;letter-spacing:.15em}nav.breadcrumb a{margin:var(--sp-2);color:var(--on-surface-dim);text-decoration:none;font-size:inherit;letter-spacing:inherit;transition:color var(--duration)var(--ease-out);white-space:nowrap;flex-shrink:0}nav.breadcrumb a:hover{color:var(--primary)}.breadcrumb li{display:inline-flex;align-items:center;min-width:0}.breadcrumb li:not(.active){flex-shrink:0}.breadcrumb li.active{flex:auto;min-width:0;overflow:hidden}.breadcrumb li.active span[aria-current]{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;margin:var(--sp-2);font-size:inherit;letter-spacing:inherit}.breadcrumb li+li::before{content:"/";margin:0;flex-shrink:0;opacity:.3;color:var(--on-surface-dim)}.breadcrumb li.active span[aria-current]{color:var(--on-surface-faint)}.now-page{margin-top:var(--sp-2)}.now-page>*{animation:fadeInUp .5s var(--ease-out)both}.now-page>*:nth-child(2){animation-delay:.06s}.now-page>*:nth-child(3){animation-delay:.12s}.now-page>*:nth-child(4){animation-delay:.18s}.now-page>*:nth-child(5){animation-delay:.24s}.now-page>*:nth-child(6){animation-delay:.3s}.now-hero{margin-bottom:var(--sp-10)}.now-prose{font-family:var(--font-reading);font-size:.9375rem;color:var(--on-surface-dim);line-height:1.65}.now-prose p{margin-bottom:1em}.now-prose a{color:var(--primary);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color var(--duration)var(--ease-out)}.now-prose a:hover{color:var(--secondary)}.now-manual{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-10);padding:var(--sp-5)var(--sp-6);border:1px solid var(--border);border-radius:12px;background:linear-gradient(180deg,rgba(255,255,255,.025) 0%,rgba(255,255,255,0) 55%);transition:border-color var(--duration)var(--ease-out)}[data-theme=light] .now-manual{background:linear-gradient(180deg,rgba(255,255,255,.6) 0%,rgba(255,255,255,0) 55%)}.now-field{display:flex;align-items:baseline;gap:var(--sp-4)}.now-field-label{font-family:var(--font-code);font-size:.625rem;font-weight:600;text-transform:lowercase;letter-spacing:.08em;color:var(--on-surface-faint);min-width:6em;flex-shrink:0}.now-field-label::before{content:"› ";color:var(--primary)}.now-field-value{font-family:var(--font-body);font-size:.8125rem;color:var(--on-surface)}.now-section{margin-bottom:var(--sp-10)}.now-section>.headline-md{margin-bottom:var(--sp-3)}.now-card{padding:var(--sp-4)var(--sp-5);border:1px solid var(--border);border-radius:12px;min-height:48px;background:linear-gradient(180deg,rgba(255,255,255,.025) 0%,rgba(255,255,255,0) 55%);transition:border-color var(--duration)var(--ease-out),box-shadow var(--duration)var(--ease-out)}.now-card:hover{box-shadow:0 4px 20px rgba(0,0,0,.2)}[data-theme=light] .now-card{background:linear-gradient(180deg,rgba(255,255,255,.6) 0%,rgba(255,255,255,0) 55%)}.now-loading{font-family:var(--font-code);font-size:.6875rem;color:var(--on-surface-faint);animation:cursor-blink 1.2s step-end infinite}.now-empty{font-family:var(--font-code);font-size:.75rem;color:var(--on-surface-faint)}#now-commit{display:flex;align-items:baseline;gap:var(--sp-4)}.now-commit-time{flex-shrink:0;width:5.5em;white-space:nowrap;color:var(--on-surface-faint);font-family:var(--font-code);font-size:.6875rem;font-weight:500;transition:color var(--duration)var(--ease-out)}.now-commit-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.now-commit-msg{font-family:var(--font-headline);font-size:.9375rem;font-weight:600;letter-spacing:-.01em;color:var(--on-surface);text-decoration:none;line-height:1.4;word-break:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color var(--duration)var(--ease-out)}#now-commit:hover .now-commit-msg,a.now-commit-msg:hover{color:var(--primary)}#now-commit:hover .now-commit-time{color:var(--on-surface-dim)}.now-commit-sha{font-family:var(--font-code);font-size:.6875rem;color:var(--secondary);flex-shrink:0;background:0 0;border:none;padding:0;text-decoration:none;transition:color var(--duration)var(--ease-out)}.now-commit-sha:hover{text-decoration:underline;color:var(--primary)}.now-commit-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);font-family:var(--font-code);font-size:.6875rem;color:var(--on-surface-faint);margin-top:2px}.now-commit-meta .meta-sep{color:var(--on-surface-faint);opacity:.45;user-select:none}.now-commit-repo{color:var(--primary-dim);text-decoration:none;transition:color var(--duration)var(--ease-out)}.now-commit-repo:hover{color:var(--primary);text-decoration:underline}.now-commit-branch{color:var(--on-surface-dim)}.now-commit-branch::before{content:"› ";color:var(--primary-dim)}.now-wt-hero{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-4)}.now-wt-total{font-family:var(--font-headline);font-size:1.25rem;font-weight:700;color:var(--on-surface);letter-spacing:-.02em}.now-wt-os{font-family:var(--font-code);font-size:.5625rem;color:var(--on-surface-faint);text-transform:lowercase}.now-wt-projects{display:flex;flex-direction:column;gap:var(--sp-1)}.now-wt-project{display:flex;justify-content:space-between;align-items:baseline}.now-wt-pname{font-family:var(--font-code);font-size:.6875rem;font-weight:500;color:var(--on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-wt-ptime{font-family:var(--font-code);font-size:.6875rem;color:var(--on-surface-faint);flex-shrink:0;margin-left:var(--sp-4)}.now-wt-editors{font-family:var(--font-code);font-size:.5625rem;color:var(--on-surface-faint);margin-top:var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--border)}.now-lang-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;gap:2px}.now-lang-seg{flex-shrink:0;flex-basis:0;min-width:3px;cursor:pointer;border-radius:2px;transition:opacity var(--duration)var(--ease-out)}.now-lang-bar:hover .now-lang-seg:not(:hover){opacity:.35}.now-lang-legend{display:flex;flex-wrap:wrap;gap:var(--sp-2)var(--sp-5);margin-top:var(--sp-3);font-family:var(--font-code);font-size:.6875rem}.now-lang-item{display:inline-flex;align-items:center;gap:6px;color:var(--on-surface)}.now-lang-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.now-lang-pct{color:var(--on-surface-faint);font-size:.625rem}.now-footer{font-family:var(--font-code);font-size:.5625rem;color:var(--on-surface-faint);letter-spacing:.04em;text-transform:lowercase;padding-top:var(--sp-4);border-top:1px solid var(--border)}#now,.home-hero~section+section{margin-top:var(--sp-12)}hr{border:none;height:1px;background:linear-gradient( to right,transparent,var(--border-hover) 20%,var(--border-hover) 80%,transparent );margin:var(--sp-12)0}@media(max-width:700px){main{padding:var(--sp-6)var(--margin-mobile)var(--sp-20)}blockquote{padding:var(--sp-4)}pre{padding:var(--sp-4);margin:var(--sp-6)0}nav:not(.breadcrumb){padding:var(--sp-2)var(--margin-mobile)}.nav-links{gap:var(--sp-3)}nav:not(.breadcrumb) a:not(.site-title):not(.theme-toggle){font-size:.625rem}h1.display-lg{font-size:1.69rem;letter-spacing:-.03em}.project-card{padding:var(--sp-4)}ul.article-list>li{flex-direction:row;flex-wrap:wrap;row-gap:2px;column-gap:var(--sp-2);padding:var(--sp-3)var(--sp-1)}ul.article-list>li>.label-sm:first-of-type{width:auto;font-size:.625rem;order:1}ul.article-list>li>.article-list-meta{font-size:.625rem;order:2}ul.article-list>li>a{flex-basis:100%;order:3}#now-commit{flex-direction:column;gap:2px}.now-commit-time{width:auto;font-size:.625rem}.home-hero{margin-bottom:var(--sp-8)}#now,.home-hero~section+section{margin-top:var(--sp-8)}footer.editorial-footer{margin-top:var(--sp-8)}.hero-content a{margin-right:var(--sp-2);padding:var(--sp-2)var(--sp-3);font-size:.75rem}.home-hero-intro{gap:var(--sp-4)}.home-avatar{width:56px;height:56px}.home-link{padding:var(--sp-2)var(--sp-3);font-size:.625rem}.home-actions{gap:var(--sp-2)}.now-field{flex-direction:column;gap:2px}}@media(max-width:600px){.footer-inner{flex-direction:column;gap:var(--sp-2);text-align:center}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--surface-dim)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}@keyframes fadeInUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.portfolio-projects{animation:fadeInUp .5s var(--ease-out).15s both}ul.article-list{animation:fadeInUp .4s var(--ease-out).1s both}.scroll-reveal{opacity:0;transform:translateY(10px);transition:opacity .45s var(--ease-out),transform .45s var(--ease-out)}.scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.photo-header-desc{font-family:var(--font-reading);color:var(--on-surface-dim);font-size:.9375rem;margin-top:var(--sp-2)}.exif-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--sp-2)var(--sp-4)}.exif-item{display:flex;flex-direction:column}.exif-label{font-family:var(--font-code);font-size:.5625rem;text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-faint)}.exif-value{font-family:var(--font-code);font-size:.6875rem;color:var(--on-surface);margin-top:1px}.exif-single-box{margin-top:var(--sp-6);padding:var(--sp-4);border:1px solid var(--border);border-radius:8px}.exif-single-box summary{cursor:pointer}.exif-single-box .exif-grid{margin-top:var(--sp-3)}.photo-embed{margin:var(--sp-8)0}.photo-embed img{width:100%;height:auto;display:block;border-radius:8px}.photo-embed figcaption,.photo-single>.photo-caption{margin-top:var(--sp-2)}.photo-embed .photo-caption,.photo-single>.photo-caption{font-family:var(--font-reading);font-size:.8125rem;color:var(--on-surface-dim)}.exif-inline{margin-top:var(--sp-2)}.exif-inline summary{cursor:pointer;font-size:.75rem;color:var(--on-surface-faint)}.exif-inline .exif-grid{margin-top:var(--sp-2)}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}ul.article-list>li:hover a,.footer-right a:hover img,.theme-toggle .icon-sun,.theme-toggle .icon-moon{transform:none!important}body::before{display:none}}.cmd-trigger{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:0 0;color:var(--on-surface-dim);font-family:var(--font-code);font-size:.75rem;font-weight:600;cursor:pointer;line-height:1;transition:color var(--duration)var(--ease-out)}.cmd-trigger:hover{color:var(--primary);text-shadow:0 0 8px var(--primary-glow)}.ts-backdrop[hidden],.vim-chord[hidden]{display:none!important}.ts-backdrop{position:fixed;inset:0;z-index:999;background:rgba(2,3,7,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:flex-start;justify-content:center;padding:10vh var(--margin-mobile)var(--sp-6)}[data-theme=light] .ts-backdrop{background:rgba(30,30,36,.35)}.ts-modal{width:100%;max-width:860px;max-height:calc(100dvh - var(--sp-4) - var(--sp-4));background:var(--surface-dim);border:1px solid var(--border-hover);border-radius:12px;box-shadow:0 24px 64px rgba(0,0,0,.65),0 0 40px var(--primary-glow);overflow:hidden;display:flex;flex-direction:column;font-family:var(--font-code);animation:fadeInUp .16s var(--ease-out)both}[data-theme=light] .ts-modal{background:var(--surface);box-shadow:0 24px 64px rgba(0,0,0,.18)}.ts-body{display:grid;grid-template-columns:1.05fr 1fr;height:min(400px,calc(100dvh - 6rem));min-height:0}.ts-left,.ts-right{display:flex;flex-direction:column;min-width:0;min-height:0}.ts-left{border-right:1px solid var(--border)}.ts-pane-title{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2)var(--sp-4);font-size:.625rem;text-transform:uppercase;letter-spacing:.08em;color:var(--primary);border-bottom:1px solid var(--border);background:rgba(92,141,255,4%)}.ts-counter{color:var(--on-surface-faint)}.ts-prompt-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3)var(--sp-4);border-bottom:1px solid var(--border)}.ts-prompt-char{color:var(--secondary);font-weight:700;font-size:.875rem;user-select:none}.ts-input{width:100%;background:0 0;border:none;outline:none;color:var(--on-surface);font-family:var(--font-code);font-size:.8125rem}.ts-input::placeholder{color:var(--on-surface-faint);opacity:.7}.ts-results{list-style:none;margin:0;padding:var(--sp-1)0;overflow-y:auto;flex:1}.ts-item{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-4);cursor:pointer;font-size:.75rem;border-left:2px solid transparent;transition:background .1s ease}.ts-item.is-selected{background:var(--primary-glow);border-left-color:var(--secondary)}.ts-item-badge{font-size:.5625rem;text-transform:uppercase;letter-spacing:.06em;padding:1px 5px;border:1px solid var(--border);color:var(--on-surface-faint);flex-shrink:0;width:46px;text-align:center}.ts-badge-cmd{color:var(--tertiary);border-color:rgba(0,245,160,.25)}.ts-badge-proj{color:var(--primary);border-color:rgba(92,141,255,.25)}.ts-badge-post{color:var(--secondary);border-color:rgba(0,242,254,.25)}.ts-item-title{color:var(--on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.ts-item-path{margin-left:auto;color:var(--on-surface-faint);font-size:.625rem;white-space:nowrap;flex-shrink:0}mark.ts-match{background:0 0;color:var(--secondary);font-weight:700;text-decoration:underline}.ts-empty-item,.ts-empty{padding:var(--sp-6)var(--sp-4);color:var(--on-surface-faint);font-size:.75rem}.ts-preview{padding:var(--sp-3);overflow-y:auto;flex:1;font-size:.65rem;line-height:1.5;color:var(--on-surface-dim)}.bat-code{display:flex;flex-direction:column}.bat-line{display:flex;gap:var(--sp-3);white-space:pre-wrap;word-break:break-word}.bat-code.is-cmd .bat-line{white-space:pre;word-break:normal}.bat-ln{width:2ch;text-align:right;color:var(--on-surface-faint);opacity:.45;user-select:none;flex-shrink:0}.bat-txt{flex:1;min-width:0}.bat-delim{color:var(--on-surface-faint)}.bat-key{color:var(--primary)}.bat-str{color:var(--tertiary)}.bat-comment{color:var(--on-surface-faint);font-style:italic}.ts-preview-img-wrap{margin-top:var(--sp-3);padding-left:3ch}.ts-preview-img{max-height:150px;width:auto;border-radius:6px;border:1px solid var(--border)}.ts-statusline{display:flex;justify-content:space-between;align-items:center;padding:5px var(--sp-3);background:var(--surface);border-top:1px solid var(--border);font-size:.625rem;color:var(--on-surface-faint)}.ts-status-left,.ts-status-right{display:flex;align-items:center;gap:var(--sp-3);min-width:0}.ts-mode{background:var(--primary);color:#020307;font-weight:700;padding:1px 6px;letter-spacing:.05em}.ts-branch{color:var(--secondary)}.ts-status-msg{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ts-status-msg.ts-error{color:var(--danger);font-weight:600}.ts-status-right kbd{font-family:var(--font-code);color:var(--on-surface);background:var(--surface-dim);border:1px solid var(--border);padding:0 4px;border-radius:2px}.vim-chord{position:fixed;bottom:var(--sp-4);right:var(--sp-4);z-index:900;background:var(--surface-dim);border:1px solid var(--primary);color:var(--on-surface);font-family:var(--font-code);font-size:.6875rem;padding:var(--sp-2)var(--sp-3);border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.45);pointer-events:none}@media(max-width:700px){.ts-backdrop{padding:var(--sp-4)var(--margin-mobile)}.ts-body{grid-template-columns:1fr;grid-template-rows:minmax(0,1.2fr)minmax(0,.8fr);height:min(68vh,560px)}.ts-left{border-right:none;border-bottom:1px solid var(--border)}.ts-status-right{display:none}}@media(max-height:560px){.ts-backdrop{padding-block:var(--sp-4)}.ts-body{height:calc(100dvh - 6rem)}}.flashbang{position:fixed;inset:0;z-index:9999;pointer-events:none;background:#fff;animation:flashbang 3s cubic-bezier(.2,0,.1,1)forwards}@keyframes flashbang{0%{opacity:0}3%{opacity:1}25%{opacity:1}100%{opacity:0}}body.stunned>*{animation:stunned 2.6s ease-out}@keyframes stunned{0%{filter:blur(6px)saturate(0);transform:translate(0,0)}8%{transform:translate(-3px,2px)}14%{transform:translate(3px,-2px)}20%{transform:translate(-2px,1px)}30%{filter:blur(4px)saturate(.3);transform:translate(0,0)}100%{filter:none}}.flashbang{display:grid;place-items:center}.flashbang span{font-family:var(--font-headline);font-weight:700;font-size:clamp(3rem,12vw,8rem);letter-spacing:-.02em;color:#060814;animation:flashbang-text 1.2s cubic-bezier(.2,1.6,.4,1)both}@keyframes flashbang-text{0%{transform:scale(.4)rotate(-6deg);opacity:0}20%{transform:scale(1.15)rotate(2deg);opacity:1}100%{transform:scale(1)rotate(0);opacity:1}}#hex-logo{font-variant-numeric:tabular-nums}@view-transition{navigation: auto;
}@media(prefers-reduced-motion:reduce){@view-transition{navigation: none; }}nav:not(.breadcrumb){view-transition-name:site-nav}.editorial-footer{view-transition-name:site-footer}.home-tagline{cursor:pointer;user-select:none;width:fit-content;transition:color var(--duration)var(--ease-out)}.home-tagline:hover{color:var(--on-surface)}.home-tagline.is-typing::after{content:"▍";color:var(--secondary);margin-left:1px}.has-yank{position:relative}.yank{position:absolute;top:var(--sp-2);right:var(--sp-2);font-family:var(--font-code);font-size:.6875rem;color:#9b9aa5;background:rgba(255,255,255,4%);border:1px solid rgba(255,255,255,8%);border-radius:6px;padding:2px var(--sp-2);cursor:pointer;opacity:0;transition:opacity var(--duration)var(--ease-out),color var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out)}.has-yank:hover .yank,.yank:focus-visible,.yank.is-done{opacity:1}.yank:hover{color:#e4e1e8;border-color:rgba(92,141,255,.5)}.yank.is-done{color:#00f5a0;border-color:rgba(0,245,160,.4)}@media(hover:none){.yank{opacity:1}}@supports(animation-timeline:scroll()){body:has(article.h-entry) nav:not(.breadcrumb)::after{content:"";position:absolute;left:16px;right:16px;bottom:-1px;height:.5px;border-radius:.5px;background:linear-gradient(90deg,var(--primary),var(--secondary),var(--tertiary));transform-origin:left;transform:scaleX(0);animation:read-progress linear both;animation-timeline:scroll(root)}@keyframes read-progress{to{transform:scaleX(1)}}}.photo-feed{display:block;columns:2;column-gap:var(--sp-4)}@media(max-width:480px){.photo-feed{columns:1}}.photo-item{break-inside:avoid;margin:0 0 var(--sp-6)}.photo-link{display:block;position:relative;overflow:hidden;text-decoration:none;border-radius:6px;outline:1px solid var(--border);outline-offset:3px;transition:outline-color var(--duration)var(--ease-out)}.photo-link:hover{outline-color:var(--border-hover)}.photo-img{width:100%;height:auto;display:block;border-radius:6px}.photo-item .photo-img{min-height:180px;background:var(--surface-dim);transition:filter 1.6s var(--ease-out),transform .6s var(--ease-out)}.photo-feed.can-develop .photo-item:not(.is-developed) .photo-img{filter:brightness(.25)sepia(1)hue-rotate(-30deg)saturate(2.5)blur(6px);transform:scale(1.03)}.photo-link:hover .photo-img{transform:scale(1.025)}.photo-stamp{position:absolute;right:10px;bottom:8px;font-family:var(--font-code);font-size:.75rem;font-weight:600;letter-spacing:.06em;color:#ff8a1f;text-shadow:0 0 4px rgba(255,110,0,.8),0 0 10px rgba(255,90,0,.45);opacity:.9;pointer-events:none;transition:opacity 1.6s var(--ease-out)}.photo-feed.can-develop .photo-item:not(.is-developed) .photo-stamp{opacity:0}.photo-meta{display:flex;flex-direction:column;gap:2px;margin-top:var(--sp-3)}.photo-meta-title{font-family:var(--font-reading);font-size:.8125rem;color:var(--on-surface);line-height:1.35}.photo-meta-exif{font-family:var(--font-code);font-size:.625rem;color:var(--on-surface-faint);letter-spacing:.02em}.photo-single-frame{position:relative}.photo-single-frame .photo-stamp{font-size:.9375rem;right:14px;bottom:12px}.lightbox{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(2,3,7,.94);color:#e4e1e8;overflow:hidden}.lightbox[open]{display:grid;grid-template-columns:56px 1fr 56px;align-items:center}.lightbox::backdrop{background:0 0}.lb-figure{grid-column:2;height:100%;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);padding:var(--sp-10)0 var(--sp-6);min-width:0}.lb-frame{position:relative;min-height:0;display:flex;max-width:100%}.lb-img{max-width:100%;max-height:calc(100dvh - 180px);width:auto;height:auto;object-fit:contain;border-radius:4px;box-shadow:0 30px 80px rgba(0,0,0,.6)}.lb-img.is-in{animation:lb-in .35s var(--ease-out)}@keyframes lb-in{from{opacity:0;transform:scale(.98)}}.lb-meta{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;max-width:560px}.lb-title{font-family:var(--font-reading);font-size:1rem}.lb-caption{font-family:var(--font-reading);font-size:.8125rem;color:#9b9aa5}.lb-caption:empty{display:none}.lb-exif,.lb-row{font-family:var(--font-code);font-size:.6875rem;color:#888499}.lb-row{display:flex;gap:var(--sp-4);margin-top:var(--sp-1)}.lb-open{color:#5c8dff;text-decoration:none}.lb-open:hover{color:#00f2fe}.lb-nav,.lb-close{font-family:var(--font-code);color:#9b9aa5;background:0 0;border:1px solid rgba(255,255,255,8%);border-radius:8px;cursor:pointer;transition:color var(--duration)var(--ease-out),border-color var(--duration)var(--ease-out)}.lb-nav:hover,.lb-close:hover{color:#e4e1e8;border-color:rgba(92,141,255,.5)}.lb-nav{justify-self:center;width:40px;height:40px;font-size:1rem}.lb-close{position:absolute;top:var(--sp-4);right:var(--sp-4);padding:4px var(--sp-3);font-size:.6875rem;z-index:1}@media(max-width:600px){.lightbox[open]{grid-template-columns:0 1fr 0}.lb-nav{display:none}.lb-figure{padding-inline:var(--sp-3)}}::view-transition-group(photo-hero){animation-duration:.45s;animation-timing-function:var(--ease-out)}.post-meta{display:flex;align-items:center;gap:var(--sp-2);margin-top:calc(-1 * var(--sp-3));margin-bottom:var(--sp-8);color:var(--on-surface-faint)}.post-meta .meta-sep{opacity:.45;user-select:none}ul.article-list>li{border-radius:6px;padding-inline:var(--sp-2);margin-inline:calc(-1 * var(--sp-2));transition:border-color var(--duration)var(--ease-out)}.article-list-meta{margin-left:auto;flex-shrink:0;font-variant-numeric:tabular-nums;opacity:.55;transition:opacity var(--duration)var(--ease-out),color var(--duration)var(--ease-out)}.article-list-meta.is-dir::before{content:"dir · ";color:var(--on-surface-faint)}ul.article-list>li:hover .article-list-meta{opacity:.95;color:var(--on-surface-dim)}@media(hover:hover){.project-card,.now-card,.now-manual,nav:not(.breadcrumb){background-image:radial-gradient( 220px circle at var(--card-x,-999px) var(--card-y,-999px),rgba(195,215,255,.045),transparent 70% ),linear-gradient( 180deg,rgba(255,255,255,.025) 0%,rgba(255,255,255,0) 55% )}nav:not(.breadcrumb){background-image:radial-gradient( 200px circle at var(--card-x,-999px) var(--card-y,-999px),rgba(195,215,255,.055),transparent 70% ),linear-gradient( 180deg,rgba(13,19,39,.65) 0%,rgba(6,8,20,.8) 100% )}[data-theme=light] .project-card,[data-theme=light] .now-card,[data-theme=light] .now-manual{background-image:radial-gradient( 220px circle at var(--card-x,-999px) var(--card-y,-999px),rgba(10,71,214,3%),transparent 70% ),linear-gradient( 180deg,rgba(255,255,255,.6) 0%,rgba(255,255,255,0) 55% )}[data-theme=light] nav:not(.breadcrumb){background-image:radial-gradient( 200px circle at var(--card-x,-999px) var(--card-y,-999px),rgba(10,71,214,.035),transparent 70% ),linear-gradient( 180deg,rgba(255,255,255,.8) 0%,rgba(247,246,243,.9) 100% )}}img.is-zoomable{cursor:zoom-in}.is-prose-lb .lb-figure{cursor:zoom-out;padding-inline:var(--sp-6)}