@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--bg: #ffffff;--fg: #14110f;--fg-soft: rgba(20, 17, 15, .56);--fg-faint: rgba(20, 17, 15, .3);--accent: #1c8c4e;--line: rgba(20, 17, 15, .14);--card: rgba(255, 255, 255, .55);--display: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--title: "Geist Pixel", "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--maxw: 940px;--pad-x: clamp(20px, 5vw, 40px)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font-family:var(--display);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(130% 100% at 50% 50%,rgba(255,255,255,.05),transparent 78%)}::selection{background:#1c8c4e2e}a{color:inherit}@media(prefers-reduced-motion:no-preference){[data-reveal]{opacity:0;transform:translateY(18px);animation:reveal .85s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:var(--d, 0s)}}@keyframes reveal{to{opacity:1;transform:none}}html.vt-nav [data-reveal]{opacity:1!important;transform:none!important;animation:none!important}.site-head{position:fixed;inset:0 0 auto;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:15px var(--pad-x);background:#ffffff8c;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4)}.site-head>*{pointer-events:auto}.brand{font-size:14px;font-weight:700;letter-spacing:.01em;color:var(--fg);text-decoration:none}.site-nav{position:relative;display:flex;gap:clamp(16px,3vw,28px)}.site-nav a{font-size:13px;font-weight:500;color:var(--fg-soft);text-decoration:none;transition:color .25s ease}.site-nav a:hover,.site-nav a.active{color:var(--fg)}.nav-underline{position:absolute;left:0;bottom:-5px;width:0;height:1.5px;background:var(--fg);transform:translate(0);opacity:0;pointer-events:none;view-transition-name:nk-underline}::view-transition-group(nk-underline){animation-duration:.45s;animation-timing-function:cubic-bezier(.65,0,.2,1)}@supports not (view-transition-name: none){.nav-underline{transition:transform .45s cubic-bezier(.65,0,.2,1),width .45s cubic-bezier(.65,0,.2,1),opacity .3s ease}}.site-head{inset:18px 0 auto;display:flex;align-items:initial;justify-content:center;padding:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;pointer-events:none}.site-head:not(.is-section-root){display:none}.site-nav{position:relative;display:grid;grid-template-columns:repeat(2,auto);gap:0;padding:4px;border:1px solid transparent;border-radius:16px;isolation:isolate;overflow:hidden;pointer-events:auto;background-color:#fff0;transition:backdrop-filter .35s ease,-webkit-backdrop-filter .35s ease}.site-nav:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(rgba(20,17,15,.75) .45px,transparent .6px);background-size:4px 4px;opacity:0;transition:opacity .35s ease}.site-head.is-floating .site-nav{backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2)}.site-head.is-floating .site-nav:before{opacity:.035}.site-nav a{position:relative;z-index:1;display:grid;place-items:center;min-width:68px;min-height:34px;padding:0 14px;font-size:13px;font-weight:500;color:var(--fg-soft);text-decoration:none;transition:color .2s ease}.site-nav a:hover,.site-nav a:focus-visible,.site-nav a.active{color:var(--fg)}.site-nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:10px}.nav-switch-indicator{position:absolute;z-index:0;top:4px;bottom:4px;left:0;width:0;border-radius:12px;pointer-events:none;background:#14110f14}@media(max-width:640px){.site-head{inset-block-start:12px}.site-nav a{min-width:62px;min-height:32px;padding-inline:12px}}.page{position:relative;z-index:1;flex:1 0 auto;width:100%}.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:clamp(118px,17vh,168px) var(--pad-x) clamp(72px,11vh,112px)}.wrap.wide{max-width:1120px}.eyebrow{font-size:13px;font-weight:600;color:var(--accent)}.page-title{margin-top:16px;font-family:var(--title);font-size:clamp(2.35rem,6vw,4.4rem);font-weight:400;line-height:1.08;letter-spacing:-.022em}.page-title{transform:scaleY(.9);transform-origin:center top}.lede{margin-top:22px;max-width:60ch;font-size:clamp(1.05rem,2vw,1.3rem);font-weight:400;line-height:1.55;color:var(--fg-soft)}.divider{height:1px;background:var(--line);border:0;margin:clamp(40px,6vh,64px) 0}.design-divider{height:1px;margin:clamp(36px,5vw,56px) 0 0;border:0;background:var(--line)}.back{display:inline-flex;align-items:center;gap:.5em;font-size:13px;font-weight:500;color:var(--fg-soft);text-decoration:none;transition:color .25s ease,gap .25s ease}.back:hover{color:var(--fg);gap:.75em}.back .ar{transition:transform .25s ease}.back:hover .ar{transform:translate(-3px)}.gallery-head{display:flex;justify-content:space-between;align-items:baseline;margin-top:clamp(46px,7vh,78px);padding-bottom:13px;border-bottom:1px solid var(--fg);font-size:13px;font-weight:500;color:var(--fg-soft)}.gallery{display:grid;grid-template-columns:repeat(2,1fr);column-gap:clamp(22px,3vw,48px);row-gap:clamp(40px,5vw,74px);margin-top:clamp(32px,4.5vw,52px)}.shot{display:block;text-decoration:none;color:inherit}.shot-frame{position:relative;overflow:hidden;aspect-ratio:16 / 10;background:#14110f0d}.shot-frame img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.92)}.shot-index{position:absolute;top:13px;left:14px;font-size:11px;font-weight:600;color:#fff;mix-blend-mode:difference}.shot-cap{display:grid;grid-template-columns:1fr auto;align-items:baseline;column-gap:18px;margin-top:16px;padding-top:15px;border-top:1px solid var(--line)}.shot-meta{grid-column:1 / -1;margin-bottom:6px;font-size:13px;font-weight:600;color:var(--accent)}.shot-title{font-family:var(--title);font-size:clamp(1.2rem,2vw,1.6rem);font-weight:600;line-height:1.18;letter-spacing:-.015em;color:var(--fg)}.shot-view{display:inline-flex;align-items:center;gap:.5em;white-space:nowrap;font-size:.82rem;font-weight:600;letter-spacing:.01em;color:var(--fg)}.shot-view .ar{display:inline-block;transition:transform .3s cubic-bezier(.16,1,.3,1)}.shot:hover .shot-view .ar{transform:translate(4px)}.shot-tagline{grid-column:1 / -1;margin-top:9px;font-size:.98rem;line-height:1.55;color:var(--fg-soft)}.shot:focus-visible{outline:2px solid var(--fg);outline-offset:5px}@media(max-width:680px){.gallery{grid-template-columns:1fr}}.hero-img{width:100%;aspect-ratio:16 / 8;object-fit:cover;border-radius:18px;margin:clamp(34px,5vh,52px) 0 0;filter:saturate(.92)}.prose{font-size:1.06rem;line-height:1.72;color:#14110fcc}.prose>*+*{margin-top:1.15em}.prose h1{font-size:clamp(2rem,4.5vw,2.9rem);font-weight:700;line-height:1.08;letter-spacing:-.02em;color:var(--fg)}.prose h2{margin-top:1.9em;font-size:clamp(1.4rem,3vw,1.85rem);font-weight:600;letter-spacing:-.01em;color:var(--fg)}.prose h3{margin-top:1.6em;font-size:1.22rem;font-weight:600;color:var(--fg)}.prose h4{margin-top:1.5em;font-size:1.06rem;font-weight:600;color:var(--fg)}.prose h5{margin-top:1.4em;font-size:.92rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--fg-soft)}.prose p{color:#14110fc7}.prose strong{color:var(--fg);font-weight:600}.prose em{font-style:italic}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin-top:.5em}.prose li::marker{color:var(--accent)}.prose a{color:var(--fg);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line);transition:text-decoration-color .25s ease}.prose a:hover{text-decoration-color:var(--accent)}.prose img{width:100%;border-radius:14px;margin-top:1.6em;filter:saturate(.92)}.prose img[data-preview]{cursor:zoom-in;transition:filter .28s ease,transform .28s cubic-bezier(.22,1,.36,1)}.prose img[data-preview]:hover{filter:saturate(1);transform:translateY(-2px)}.prose img[data-preview]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.prose video{display:block;width:100%;height:auto;border-radius:14px;margin-top:1.6em;background:#14110f0d}.prose video.portrait{width:auto;max-width:min(300px,100%);margin-inline:auto}.prose blockquote{border-left:2px solid var(--accent);padding-left:1.1em;color:var(--fg-soft);font-style:italic}.prose .callout{margin-top:1.7em;padding:.1em 0 .1em 1.1em;border-left:2px solid var(--accent)}.prose .callout>*+*{margin-top:.55em}.prose .callout p{color:var(--fg-soft);font-style:normal}.prose .callout .callout-label{font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.prose .callout-important,.prose .callout-warning,.prose .callout-caution{border-left-color:#b45309}.prose .callout-important .callout-label,.prose .callout-warning .callout-label,.prose .callout-caution .callout-label{color:#b45309}.prose hr{border:0;height:1px;background:var(--line);margin:2em 0}.prose code{font-family:Geist Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:#14110f0f;padding:.15em .4em;border-radius:6px}.prose .expressive-code{margin-top:1.6em}.prose .expressive-code code{background:none;padding:0;border-radius:0}.prose table{width:100%;border-collapse:collapse;table-layout:auto;margin-top:1.6em;font-size:.95rem;line-height:1.5}.prose thead th{text-align:left;font-weight:600;color:var(--fg);white-space:nowrap;border-bottom:2px solid var(--line);padding:.65em .9em;vertical-align:bottom}.prose tbody td{padding:.65em .9em;border-bottom:1px solid var(--line);color:#14110fc7;vertical-align:top}.prose tbody tr:hover{background:#14110f06}.prose tbody td:first-child{color:var(--fg);font-weight:500}.acb{--acb-bg: #fcfcfc;--acb-fg: 11, 11, 11;--acb-muted: 245, 245, 245;--acb-muted-fg: 99, 99, 99;--acb-ring: rgba(11, 11, 11, .12);--acb-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--acb-max: none;width:100%;overflow:hidden;border-radius:16px;background:rgba(var(--acb-muted),.8);font-size:14px}.prose .acb{margin-top:1.7em}.dark .acb,[data-theme=dark] .acb{--acb-bg: #151515;--acb-fg: 242, 242, 242;--acb-muted: 28, 28, 28;--acb-muted-fg: 134, 134, 134;--acb-ring: rgba(255, 255, 255, .1)}.acb-head{display:flex;height:40px;align-items:center;gap:10px;padding:0 12px}.acb-icon{display:block;flex-shrink:0}.acb-file-icon{width:15px;height:15px;color:rgba(var(--acb-muted-fg),.7)}.acb-meta{display:flex;align-items:baseline;gap:10px;min-width:0}.acb-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--acb-mono);font-size:12px;line-height:16px;color:rgba(var(--acb-fg),.8)}.acb-lang{flex-shrink:0;white-space:nowrap;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.025em;color:rgba(var(--acb-muted-fg),.55)}.acb-copy{margin-left:auto;display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;padding:0;border:0;border-radius:9999px;background:none;color:rgb(var(--acb-muted-fg));cursor:pointer;outline:none;transition:color .15s ease,background-color .15s ease,transform .15s ease}.acb-copy:hover{background:color-mix(in srgb,var(--acb-bg) 70%,transparent);color:rgb(var(--acb-fg))}.acb-copy:focus-visible{box-shadow:0 0 0 2px var(--acb-ring)}.acb-copy:active{transform:scale(.9)}.acb-copy .acb-icon{width:15px;height:15px}.acb-copy .acb-check-ico,.acb-copy.is-copied .acb-copy-ico{display:none}.acb-copy.is-copied .acb-check-ico{display:block}.acb-body{overflow:auto;max-height:var(--acb-max);padding:8px 0;border-top:1px solid rgba(var(--acb-fg),.06);scrollbar-width:none}.acb-body::-webkit-scrollbar{display:none}.acb-pre{margin:0;min-width:max-content;font-family:var(--acb-mono);font-size:12px;line-height:20px;color:rgba(var(--acb-fg),.85)}.acb-pre.is-wrap{min-width:100%}.acb-pre code{font:inherit;background:none;padding:0;border-radius:0}.acb-code span,.acb-code a{color:var(--acb-l)}.dark .acb-code span,.dark .acb-code a,[data-theme=dark] .acb-code span,[data-theme=dark] .acb-code a{color:var(--acb-d)}.acb-code a.acb-link{text-decoration:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer}.acb-code a.acb-link:hover{background:#3b82f61f;border-radius:3px}.acb-line{display:grid;grid-template-columns:2.75rem minmax(0,1fr);min-height:20px}.acb-line.no-ln{grid-template-columns:1fr}.acb-line.is-hl{background:#3b82f612}.acb-ln{user-select:none;padding-right:12px;text-align:right;font-variant-numeric:tabular-nums;color:rgba(var(--acb-muted-fg),.35)}.acb-code{padding-right:16px;padding-left:4px;white-space:pre}.no-ln .acb-code{padding-left:16px}.is-wrap .acb-code{white-space:pre-wrap;overflow-wrap:break-word}.empty{margin-top:clamp(32px,5vw,54px);padding:clamp(6px,2vw,14px) 0 clamp(40px,8vh,80px)}.empty h2{font-family:var(--title);font-size:clamp(1.3rem,3vw,1.7rem);font-weight:600;letter-spacing:-.01em}.empty p{margin-top:12px;color:var(--fg-soft);max-width:52ch}.meta{margin-top:18px;font-size:.86rem;color:var(--fg-faint);display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 14px}.meta-tags{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.tag{display:inline-flex;align-items:center;padding:.34rem .72rem;border:0;border-radius:8px;background:#14110f0e;font-size:.8rem;font-weight:500;line-height:1.2;letter-spacing:normal;text-transform:none;color:var(--fg-soft);white-space:nowrap;transition:background-color .25s ease,color .25s ease}.post-tags{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px}.post-row:hover .tag{color:var(--fg);background:#14110f17}.site-foot{position:relative;z-index:1;flex-shrink:0;border-top:1px solid var(--line);padding:38px var(--pad-x);display:flex;align-items:center;justify-content:center;font-size:12px;letter-spacing:.01em;color:var(--fg-soft)}.foot-social{display:flex;align-items:center;gap:20px}.foot-social a{display:inline-flex;align-items:center;text-decoration:none;color:var(--fg-soft);transition:color .25s ease;margin:-10px -4px;padding:10px 4px;border-radius:8px}.foot-social a:hover{color:var(--accent)}.foot-social a:focus-visible{outline:2px solid var(--accent);outline-offset:0}.foot-social .ico{width:18px;height:18px;display:block;transition:transform .25s ease}.foot-social a:hover .ico{transform:translateY(-1px)}@media(prefers-reduced-motion:reduce){.foot-social a:hover .ico,.prose img[data-preview]:hover{transform:none}}@media(max-width:360px){.foot-social{gap:14px}}.detail-head{max-width:64ch}.detail-title{font-size:clamp(1.9rem,4.4vw,3.1rem);line-height:1.08;text-wrap:balance;overflow-wrap:break-word}@media(max-width:640px){.detail-title{line-height:1.18}.detail-meta{margin-top:14px;flex-direction:column;align-items:flex-start;gap:12px}.detail-meta .tag{padding:.3rem .62rem;font-size:.78rem}.detail-meta .meta-tags{gap:7px}}.empty-cta{display:inline-flex;align-items:center;gap:.5em;margin-top:26px;font-size:.9rem;font-weight:600;color:var(--fg);text-decoration:none}.empty-cta .ar{transition:transform .3s ease}.empty-cta:hover .ar{transform:translate(4px)}.blog-list-divider{height:1px;margin:clamp(36px,5vw,56px) 0 0;border:0;background:var(--line)}.post-list{margin-top:clamp(28px,4vw,44px)}.post-row{display:grid;align-items:center;gap:clamp(22px,4vw,48px);padding:clamp(26px,3.4vw,40px) 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}.post-row:last-child{border-bottom:0}.post-row.is-landscape{grid-template-columns:minmax(0,42%) 1fr}.post-row.is-portrait{grid-template-columns:minmax(0,26%) 1fr}.post-row.no-img{grid-template-columns:1fr}.post-thumb{overflow:hidden;background:#14110f0d}.post-row.is-landscape .post-thumb{aspect-ratio:16 / 10}.post-row.is-portrait .post-thumb{aspect-ratio:3 / 4}.post-thumb img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.92)}.post-text time{font-size:.82rem;color:var(--fg-faint)}.post-title{margin-top:8px;font-family:var(--title);font-size:clamp(1.35rem,2.2vw,1.8rem);font-weight:400;line-height:1.25;letter-spacing:-.015em}.post-desc{margin-top:10px;color:var(--fg-soft);max-width:60ch;line-height:1.55}.pager{display:flex;align-items:center;justify-content:center;gap:clamp(16px,4vw,34px);margin-top:clamp(30px,4.5vw,50px);font-size:13px;font-weight:500}.pager-step{display:inline-flex;align-items:center;gap:.5em;color:var(--fg-soft);text-decoration:none;transition:color .25s ease,gap .25s ease}.pager-step:hover{color:var(--fg);gap:.75em}.pager-step .ar{transition:transform .25s ease}.pager-step[rel=prev]:hover .ar{transform:translate(-3px)}.pager-step[rel=next]:hover .ar{transform:translate(3px)}.pager-step.is-off{color:var(--fg-faint);opacity:.4;pointer-events:none}.pager-pages{display:flex;align-items:center;gap:6px;list-style:none}.pager-num{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 8px;border-radius:8px;text-decoration:none;color:var(--fg-soft);transition:background-color .25s ease,color .25s ease}.pager-num:hover{color:var(--fg);background:#14110f0e}.pager-num.is-current{color:var(--fg);background:#14110f17}.pager a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}@media(max-width:480px){.pager{gap:12px}.pager-pages{gap:4px}.pager-num{min-width:28px;height:28px;padding:0 6px}}@media(max-width:640px){.post-row,.post-row.is-landscape,.post-row.is-portrait{grid-template-columns:1fr}.post-thumb{display:none}.prose table{table-layout:fixed;font-size:.9rem}.prose thead th,.prose tbody td{white-space:normal;overflow-wrap:anywhere;word-break:break-word;padding:.6em .5em}.acb,.prose .expressive-code .frame{max-width:100%}}
