:root{color-scheme:dark;--bg:#101820;--surface:#202732;--surface-deep:#0d1118;--text:#d9e1e2;--text-muted:#a3abb7;--border:#353d4a;--accent:#bfced6;--focus:#a6cef0;--success:#9ec6a5;--warning:#d9bc8b;--error:#d6a968;--font-display:"Iowan Old Style", "Noto Serif SC", "Songti SC", SimSun, Georgia, serif;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-section:72px;--gutter:clamp(20px, 4vw, 48px);--content-width:1120px;--reading-width:720px;--grid-columns:12;--radius-sm:3px;--ease:cubic-bezier(.22, 1, .36, 1)}@media (width>=768px) and (width<=1199px){:root{--gutter:32px;--space-section:64px;--grid-columns:8}}@media (width<=767px){:root{--gutter:20px;--space-section:48px;--grid-columns:4}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:24px}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.8}body:before{content:"";pointer-events:none;z-index:-1;opacity:.04;background:url(/_astro/atmosphere.022mjuHJ.webp) 50%/cover no-repeat;position:fixed;inset:0}body{isolation:isolate}h1,h2,h3,p,figure{margin:0}h1,h2{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;font-weight:400;line-height:1.3}h3{font-weight:500;line-height:1.5}h1,h2,h3,p,figcaption,dd,strong{overflow-wrap:anywhere}a{color:inherit;text-decoration:none}button,input{font:inherit}button{color:inherit;cursor:pointer}img,video{max-width:100%;height:auto;display:block}svg{max-width:100%}button,a{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--focus);outline-offset:5px}::selection{color:#fff;background:#48546b}.container{width:calc(100% - var(--gutter) * 2);max-width:var(--content-width);margin-inline:auto}.section{padding-block:var(--space-section)}.reading{max-width:var(--reading-width)}.eyebrow{font:11px/1.6 var(--font-mono);letter-spacing:.13em;color:var(--accent)}.meta{font:11px/1.7 var(--font-mono);letter-spacing:.08em;color:var(--text-muted)}.muted{color:var(--text-muted)}.prose{font-size:16px;line-height:1.85}.prose>*+*{margin-top:20px}.prose h2{margin-top:40px;font-size:30px}.prose a:not([data-interaction]){text-underline-offset:4px;text-decoration:underline}.section-heading{justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:48px;display:flex}.section-heading h2{margin-top:20px;font-size:48px}.skip-link{z-index:100;background:var(--text);color:var(--bg);padding:12px 20px;position:absolute;top:-100px;left:20px}.skip-link:focus{top:12px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=767px){body:before{opacity:.035;height:780px;position:absolute}.section-heading{flex-direction:column;align-items:flex-start;gap:24px;margin-bottom:32px}.section-heading h2{margin-top:16px;font-size:34px}.eyebrow{font-size:10px}}[data-interaction]{--interaction-lift:-2px;--interaction-press-scale:.97;touch-action:manipulation;transition:transform .18s var(--ease), color .18s ease, background-color .18s ease, border-color .18s ease, opacity .1s ease;position:relative}[data-interaction=line]{text-decoration:none}[data-interaction-label]{display:inline-block;position:relative}[data-interaction=line]:not([data-interaction-scope=label]):after,[data-interaction=line] [data-interaction-label]:after{content:"";inset:auto 0 var(--interaction-line-bottom,4px);pointer-events:none;transform-origin:0;height:1px;transition:transform .18s var(--ease);background:currentColor;position:absolute;transform:scaleX(0)}[data-interaction=line][aria-current]:after,[data-interaction=line][aria-pressed=true]:after{transform:scaleX(.35)}[data-interaction=line]:is(:focus-visible,:active,[data-feedback=pressed]):after,[data-interaction=line]:is(:focus-visible,:active,[data-feedback=pressed]) [data-interaction-label]:after{transform:scaleX(1)}[data-interaction=line]:is(:active,[data-feedback=pressed]){opacity:.8;transition-duration:90ms;transform:translateY(1px)}[data-interaction=lift]:is(:active,[data-feedback=pressed]):not(:disabled):not([aria-disabled=true]){transform:translateY(1px) scale(var(--interaction-press-scale));transition-duration:.1s}[data-interaction=fill]{isolation:isolate;overflow:hidden}[data-interaction=fill]:before{content:"";z-index:-1;background:var(--interaction-fill,var(--text));pointer-events:none;transform-origin:0;transition:transform .24s var(--ease);position:absolute;inset:0;transform:scaleX(0)}[data-interaction=fill]:is(:focus-visible,:active,[data-feedback=pressed]){color:var(--interaction-ink,var(--bg))}[data-interaction=fill]:is(:focus-visible,:active,[data-feedback=pressed]):before{transform:scaleX(1)}[data-interaction=fill]:is(:active,[data-feedback=pressed]){transition-duration:.1s;transform:scale(.985)}[data-interaction=fill]>svg{transition:transform .18s var(--ease)}[data-interaction=fill][data-feedback=pressed]>svg{transform:translate(2px,-2px)}.project-card>[data-interaction=lift]{--interaction-press-scale:.995}.wordmark[data-interaction=lift]{--interaction-lift:-1px;--interaction-press-scale:.99}[data-gallery-item][data-interaction=lift]{--interaction-lift:0px;--interaction-press-scale:1}[data-gallery-item][data-interaction=lift] :is(.image-hint,.poster-hint){transition:transform .18s var(--ease), opacity .16s ease}[data-gallery-item][data-interaction=lift][data-feedback=pressed] :is(.image-hint,.poster-hint){transform:translateY(1px)scale(.97)}[data-interaction]:is(:disabled,[aria-disabled=true]){transform:none}@media (hover:hover) and (pointer:fine){[data-interaction=line]:hover{color:var(--accent)}[data-interaction=line]:hover:after,[data-interaction=line]:hover [data-interaction-label]:after{transform:scaleX(1)}[data-interaction=lift]:hover:not(:disabled):not([aria-disabled=true]):not([data-feedback=pressed]):not(:active){transform:translateY(var(--interaction-lift))}[data-interaction=fill]:hover{color:var(--interaction-ink,var(--bg))}[data-interaction=fill]:hover:before{transform:scaleX(1)}[data-gallery-item][data-interaction=lift]:hover:not([data-feedback=pressed]) :is(.image-hint,.poster-hint){transform:translateY(-2px)}}
