@layer reset, defaults, components;@layer reset{*,:after,:before{box-sizing:border-box}*{margin:0}}@media (prefers-reduced-motion:no-preference){html{interpolate-size:allow-keywords}}@layer reset{canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}}@layer defaults{@font-face{font-family:alright;font-style:normal;font-weight:700;src:url(https://files.jameslittle.me/webfonts/2023/Alright-v2-Narrow-Bold.woff2) format("woff2")}@font-face{font-family:alright;font-style:italic;font-weight:400;src:url(https://files.jameslittle.me/webfonts/2023/Alright-v2-Normal-Ultra-Italic.woff2) format("woff2")}@font-face{font-family:equity;font-style:italic;font-weight:700;src:url(https://files.jameslittle.me/webfonts/2023/equity_a_bold_italic.woff2) format("woff2");text-transform:uppercase}@font-face{font-family:equity;font-style:normal;font-weight:700;src:url(https://files.jameslittle.me/webfonts/2023/equity_a_bold.woff2) format("woff2")}@font-face{font-family:equity;font-style:italic;font-weight:400;src:url(https://files.jameslittle.me/webfonts/2023/equity_a_italic.woff2) format("woff2")}@font-face{font-family:equity;font-style:normal;font-weight:400;src:url(https://files.jameslittle.me/webfonts/2023/equity_a_regular.woff2) format("woff2")}@font-face{font-family:berkeley-mono;font-style:normal;font-weight:400;src:url(https://files.jameslittle.me/webfonts/berkeley-mono/BerkeleyMono-Medium.woff2) format("woff2")}@font-face{font-family:berkeley-mono;font-style:italic;font-weight:400;src:url(https://files.jameslittle.me/webfonts/berkeley-mono/BerkeleyMono-Medium-Oblique.woff2) format("woff2")}@font-face{font-family:berkeley-mono;font-style:normal;font-weight:700;src:url(https://files.jameslittle.me/webfonts/berkeley-mono/BerkeleyMono-Bold.woff2) format("woff2")}@font-face{font-family:berkeley-mono;font-style:italic;font-weight:700;src:url(https://files.jameslittle.me/webfonts/berkeley-mono/BerkeleyMono-Bold-Oblique.woff2) format("woff2")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(https://rsms.me/inter/font-files/Inter-Regular.woff2?v=4.1) format("woff2")}@font-face{font-display:swap;font-family:Inter;font-style:italic;font-weight:400;src:url(https://rsms.me/inter/font-files/Inter-Italic.woff2?v=4.1) format("woff2")}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(https://rsms.me/inter/font-files/Inter-Bold.woff2?v=4.1) format("woff2")}@font-face{font-display:swap;font-family:Inter;font-style:italic;font-weight:700;src:url(https://rsms.me/inter/font-files/Inter-BoldItalic.woff2?v=4.1) format("woff2")}}@layer defaults{:root{--hue-gray-25:#fafafa;--hue-gray-50:oklch(96.94% 0.001 197.14);--hue-gray-100:oklch(93.93% 0.001 197.14);--hue-gray-200:oklch(87.93% 0.004 157.17);--hue-gray-300:oklch(80.01% 0.006 170.4);--hue-gray-400:oklch(71.43% 0.011 164.74);--hue-gray-500:oklch(58.32% 0.014 164.5);--hue-gray-600:oklch(54.31% 0.012 167.47);--hue-gray-700:oklch(48.79% 0.012 164.5);--hue-gray-800:oklch(43.22% 0.009 164.58);--hue-gray-900:oklch(34.39% 0.006 164.64);--hue-gray-950:oklch(27.3% 0.006 156.84);--hue-green-50:oklch(97.55% 0.013 167.18);--hue-green-100:oklch(94.09% 0.033 165.14);--hue-green-200:oklch(87.63% 0.068 162.45);--hue-green-300:oklch(80.42% 0.109 160.82);--hue-green-400:oklch(71.49% 0.148 157.1);--hue-green-500:oklch(61.57% 0.126 157.28);--hue-green-600:oklch(57.18% 0.116 157.34);--hue-green-700:oklch(52.43% 0.105 157.75);--hue-green-800:oklch(45.37% 0.09 157.4);--hue-green-900:oklch(35.42% 0.067 158.21);--hue-green-950:oklch(30.03% 0.054 159.32);--hue-blue-50:oklch(95.55% 0.014 254.61);--hue-blue-100:oklch(91.31% 0.029 252.95);--hue-blue-200:oklch(82.59% 0.06 253.17);--hue-blue-300:oklch(73.94% 0.091 253.54);--hue-blue-400:oklch(65.2% 0.124 254.68);--hue-blue-500:oklch(57.25% 0.154 255.04);--hue-blue-600:oklch(48.63% 0.13 255.66);--hue-blue-700:oklch(40.03% 0.102 254.95);--hue-blue-800:oklch(30.72% 0.074 254.68);--hue-blue-900:oklch(20.64% 0.042 254.09);--hue-blue-950:oklch(15.15% 0.023 252.18);--hue-red-50:oklch(95.08% 0.02 25.17);--hue-red-100:oklch(89.18% 0.047 22.99);--hue-red-200:oklch(78.83% 0.099 24.14);--hue-red-300:oklch(69.51% 0.154 26.06);--hue-red-400:oklch(62.09% 0.203 28.58);--hue-red-500:oklch(54.74% 0.204 29.38);--hue-red-600:oklch(46.63% 0.171 29.52);--hue-red-700:oklch(38.01% 0.137 29.21);--hue-red-800:oklch(29.01% 0.099 28.99);--hue-red-900:oklch(19.19% 0.058 28.23);--hue-red-950:oklch(14.46% 0.038 27.87);--hue-purple-50:oklch(93.79% 0.036 313.05);--hue-purple-100:oklch(88.45% 0.066 312.36);--hue-purple-200:oklch(77.19% 0.134 311.63);--hue-purple-300:oklch(66.54% 0.201 310.53);--hue-purple-400:oklch(57.72% 0.25 308.22);--hue-purple-500:oklch(50.05% 0.244 306.7);--hue-purple-600:oklch(42.74% 0.206 306.83);--hue-purple-700:oklch(35.09% 0.165 307.34);--hue-purple-800:oklch(26.82% 0.121 307.47);--hue-purple-900:oklch(18.03% 0.072 309.29);--hue-purple-950:oklch(12.38% 0.045 313.85)}html.dark{--hue-gray-25:oklch(22% 0.006 256.84);--hue-gray-50:oklch(28% 0.006 264.64);--hue-gray-100:oklch(35% 0.009 264.58);--hue-gray-200:oklch(42% 0.012 264.5);--hue-gray-300:oklch(48% 0.012 267.47);--hue-gray-400:oklch(52% 0.014 264.5);--hue-gray-500:oklch(56% 0.011 264.74);--hue-gray-600:oklch(63% 0.006 270.4);--hue-gray-700:oklch(75% 0.004 257.17);--hue-gray-800:oklch(87% 0.001 297.14);--hue-gray-900:oklch(94% 0.001 297.14);--hue-gray-950:#eaeaea;--hue-green-50:oklch(30.03% 0.054 159.32);--hue-green-100:oklch(35.42% 0.067 158.21);--hue-green-200:oklch(45.37% 0.09 157.4);--hue-green-300:oklch(52.43% 0.105 157.75);--hue-green-400:oklch(57.18% 0.116 157.34);--hue-green-500:oklch(61.57% 0.126 157.28);--hue-green-600:oklch(71.49% 0.148 157.1);--hue-green-700:oklch(80.42% 0.109 160.82);--hue-green-800:oklch(87.63% 0.068 162.45);--hue-green-900:oklch(94.09% 0.033 165.14);--hue-green-950:oklch(97.55% 0.013 167.18);--hue-blue-50:oklch(15.15% 0.023 252.18);--hue-blue-100:oklch(20.64% 0.042 254.09);--hue-blue-200:oklch(30.72% 0.074 254.68);--hue-blue-300:oklch(40.03% 0.102 254.95);--hue-blue-400:oklch(48.63% 0.13 255.66);--hue-blue-500:oklch(57.25% 0.154 255.04);--hue-blue-600:oklch(65.2% 0.124 254.68);--hue-blue-700:oklch(73.94% 0.091 253.54);--hue-blue-800:oklch(82.59% 0.06 253.17);--hue-blue-900:oklch(91.31% 0.029 252.95);--hue-blue-950:oklch(95.55% 0.014 254.61);--hue-red-50:oklch(14.46% 0.038 27.87);--hue-red-100:oklch(19.19% 0.058 28.23);--hue-red-200:oklch(29.01% 0.099 28.99);--hue-red-300:oklch(38.01% 0.137 29.21);--hue-red-400:oklch(46.63% 0.171 29.52);--hue-red-500:oklch(54.74% 0.204 29.38);--hue-red-600:oklch(62.09% 0.203 28.58);--hue-red-700:oklch(69.51% 0.154 26.06);--hue-red-800:oklch(78.83% 0.099 24.14);--hue-red-900:oklch(89.18% 0.047 22.99);--hue-red-950:oklch(95.08% 0.02 25.17);--hue-purple-50:oklch(12.38% 0.045 313.85);--hue-purple-100:oklch(18.03% 0.072 309.29);--hue-purple-200:oklch(26.82% 0.121 307.47);--hue-purple-300:oklch(35.09% 0.165 307.34);--hue-purple-400:oklch(42.74% 0.206 306.83);--hue-purple-500:oklch(50.05% 0.244 306.7);--hue-purple-600:oklch(57.72% 0.25 308.22);--hue-purple-700:oklch(66.54% 0.201 310.53);--hue-purple-800:oklch(77.19% 0.134 311.63);--hue-purple-900:oklch(88.45% 0.066 312.36);--hue-purple-950:oklch(93.79% 0.036 313.05)}:root{--color-text:var(--hue-gray-950);--color-text-subdued:var(--hue-gray-600);--color-heading:var(--hue-gray-900);--color-heading-subdued:var(--hue-gray-600);--color-text-success:var(--hue-green-600);--color-text-warning:var(--hue-orange-600);--color-text-error:var(--hue-red-600);--color-text-brand:var(--hue-green-600);--color-link:var(--hue-gray-800);--color-link-visited:var(--hue-gray-600);--color-border:var(--hue-gray-800);--color-border-subdued:var(--hue-gray-300);--color-background-surface:var(--hue-gray-50);--color-background-offset:var(--hue-gray-100);--color-background-raised:var(--hue-gray-25);--color-background-brand:var(--hue-green-800);--font-stack-inter:"Inter",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;--font-stack-alright:"alright",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;--font-stack-equity:"equity",Cambria,Cochin,Georgia,Times,"Times New Roman",serif;--font-stack-jetbrains:"berkeley-mono",monospace;--font-display:italic 700 1em var(--font-stack-alright);--font-heading:1.25rem/1.2 var(--font-stack-alright);--font-text-large:1.2rem var(--font-stack-inter);--font-text:1em/1.4 var(--font-stack-inter);--font-text-small:0.85rem/1.4 var(--font-stack-inter);--font-text-xsmall:0.7rem/1.4 var(--font-stack-inter);--font-prose:1.175rem/1.5 var(--font-stack-equity);--font-monospace:0.8em var(--font-stack-jetbrains);--util-font-feature-alternatives:"cv06" 1,"cv02" 1,"cv03" 1,"cv04" 1,"cv09" 1,"cv10" 1,"cv11" 1,"cv12" 1,"cv13" 1,"tnum" 1;--border-standard:1px solid var(--color-border);--border-subdued:1px solid var(--color-border-subdued);--radius-small:3px;--radius-medium:5px;--radius-large:7px;--radius-pill:99999px;--shadow-well:inset 0px 0px 8px rgba(3,7,18,.18);--shadow-small:0px 1px 1px rgba(3,7,18,.08),2px 4px 4px rgba(3,7,18,.06),4px 9px 9px rgba(3,7,18,.05),8px 15px 15px rgba(3,7,18,.03),12px 24px 24px rgba(3,7,18,.02);--shadow-medium:1px 2px 2px rgba(3,7,18,.08),4px 8px 8px rgba(3,7,18,.06),9px 17px 19px rgba(3,7,18,.05),15px 31px 33px rgba(3,7,18,.03),24px 48px 52px rgba(3,7,18,.02);--shadow-large:2px 4px 3px rgba(3,7,18,.08),8px 15px 12px rgba(3,7,18,.06),17px 35px 26px rgba(3,7,18,.05),31px 61px 46px rgba(3,7,18,.03),48px 96px 72px rgba(3,7,18,.02);--space-50:0.125rem;--space-100:0.25rem;--space-200:0.5rem;--space-300:0.75rem;--space-400:1rem;--space-500:1.25rem;--space-600:1.5rem;--space-700:1.75rem;--space-800:2rem;--transition-small:0.1s ease-out;--transition-medium:0.2s ease-out;--transition-large:0.35s ease-out}html.dark{--color-background-brand:var(--hue-green-200);--color-background-raised:var(--hue-gray-100)}:root{--vw:1vw;--content-width:min(42rem,calc(var(--vw)*95));overflow-x:hidden}body{background-color:var(--color-background-surface);color:var(--color-text);margin:0 auto;padding:.7em;width:var(--content-width)}main h1{font:var(--font-display);font-size:3.1rem;font-synthesis:none}:root{font:var(--font-text);font-feature-settings:"liga" 1,"calt" 1;line-height:1.4}}@layer defaults{}@layer defaults{@media only screen and (max-width:600px){:root{font-size:14px}}html.dark{letter-spacing:1%}h1,h2,h3,h4,h5,h6{color:var(--color-heading);font:var(--font-heading);font-size:revert;margin:1.5em 0 .5em}h1:first-child,h1:first-of-type,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}p{margin:1em 0}hr{border:none;border-bottom:var(--border-subdued);margin:var(--space-400) 0}ol,ul{padding-left:var(--space-600)}li::marker{color:var(--color-text-subdued);font-feature-settings:var(--util-font-feature-alternatives)}.tnum{font-feature-settings:var(--util-font-feature-alternatives)}a:link{color:var(--color-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}a:active{opacity:.7}a:visited{color:var(--color-link-visited);text-decoration:underline}a:hover{text-decoration:none}blockquote{background-color:var(--hue-gray-25);border:var(--border-subdued);border-left:4px solid var(--hue-gray-400);font-size:.9em;margin:0;padding:1em}blockquote,img{border-radius:var(--radius-medium)}img{height:auto;max-width:100%}code,pre{font:var(--font-monospace)}:not(pre)>code{background-color:var(--color-background-offset);border-radius:var(--radius-medium);padding:var(--space-50) var(--space-100)}pre{font-size:.7em;line-height:1.6}small{color:var(--color-text-subdued);font:var(--font-text-small);font-feature-settings:var(--util-font-feature-alternatives);text-transform:uppercase}.blog-post-content article{font:var(--font-prose)}.blog-post-content article>*+*{margin-top:var(--space-600)}.blog-post-content article a:link,.blog-post-content article a:visited{color:var(--color-text-brand)}.blog-post-content article p:last-child{margin-bottom:0}.blog-post-content article p:first-child{margin-top:0}.blog-post-content article>h1{margin-bottom:.8em;margin-top:0}.blog-post-content article>h2,.blog-post-content article>h3,.blog-post-content article>h4{margin-bottom:.8em;margin-top:1.5em}.blog-post-content article li{margin-bottom:.25em;margin-top:.25em}.blog-post-content article ol li>p,.blog-post-content article ul li>p{margin-bottom:.5em;margin-top:.5em}.blog-post-content article ol li>:first-child,.blog-post-content article ul li>:first-child{margin-top:1.25em}.blog-post-content article ol li>:last-child,.blog-post-content article ul li>:last-child{margin-bottom:1.25em}.blog-post-content article ol ol,.blog-post-content article ol ul,.blog-post-content article ul ol,.blog-post-content article ul ul{margin-bottom:.25em;margin-top:.25em}.blog-post-content article ol ul,.blog-post-content article ul ul{list-style-type:disc}.blog-post-content article h1+*,.blog-post-content article h2+*,.blog-post-content article h3+*,.blog-post-content article h4+*{margin-top:0}.heading{margin-left:-.75em;padding-left:.75em;position:relative;scroll-margin-top:6rem}.heading:hover .heading-anchor,.heading:target .heading-anchor{opacity:1}.heading:target .heading-anchor{background-color:var(--hue-gray-200);border-radius:var(--radius-small);padding-left:.1em;padding-right:.1em}.heading-anchor{font-size:.8em;left:0;opacity:0;position:absolute;text-decoration:none;top:.12em;transition:opacity var(--transition-medium)}.heading-anchor:hover{text-decoration:underline}a.heading-anchor{color:var(--color-text-subdued);text-decoration:none}}@layer defaults{}@layer components{.fence-wrapper{position:relative}.fence-wrapper pre{background-color:var(--bg);border-left:none;border:1px solid var(--color-border-subdued);border-radius:var(--radius-medium);color:var(--fg);color-scheme:dark;max-height:24rem;overflow-x:auto;overflow-y:auto;padding:.5em 1em .5em 0;position:relative}.fence-wrapper pre .line:hover .line-number{background-color:var(--bg);filter:brightness(1.2)}.fence-wrapper pre .line-number{background:var(--bg);color:hsla(0,0%,100%,.4);display:inline-block;left:0;padding-right:1rem;position:sticky;text-align:right;-moz-user-select:none;user-select:none;-webkit-user-select:none;width:3rem}.fence-header{background-color:var(--bg);border:1px solid hsla(0,0%,100%,.05);border-radius:var(--radius-large);color:var(--fg);filter:brightness(1.6);font:var(--font-text-small);padding:.25rem .75rem;position:absolute;right:1.25em;top:-.75em;z-index:3}table{border-collapse:collapse;font:var(--font-text);font-feature-settings:var(--util-font-feature-alternatives);font-size:.9rem;line-height:1.25;width:100%}table th{border-bottom:var(--border-standard);font-weight:700;text-align:left}table td,table th{padding:.5em .75em}table td{border-bottom:var(--border-subdued)}.note{--vertical-padding:0.66rem;--horizontal-padding:1rem;border:1px solid var(--color-background-brand);border-radius:8px;font-size:.85em;padding:0 var(--horizontal-padding) var(--vertical-padding) var(--horizontal-padding)}.note-title{background-color:var(--color-background-brand);border-radius:var(--radius-large) var(--radius-large) 0 0;color:#fff;font-size:1rem;font-style:normal;font-weight:400;margin:0 -1rem var(--vertical-padding) -1rem;padding:.5rem 1rem}figure{margin-left:0;margin-right:0}figure.wide{margin-left:max(-15%,calc((100vw - var(--content-width))/-2 - .6em));max-width:100vw;width:130%}figure.half-middle{margin:1em auto;width:50%}figure.half-left{float:left;margin-bottom:1em;margin-right:1em;margin-top:1em;width:50%}figure.half-right{float:right;margin-bottom:1em;margin-left:1em;width:50%}figure>p{margin:0}figcaption{color:var(--color-text-subdued);font:var(--font-text-small);font-feature-settings:var(--util-font-feature-alternatives);margin-top:0;text-align:center}header{align-items:center;border:1px solid transparent;border-radius:var(--radius-large);color:var(--hue-gray-900);display:flex;gap:2em;margin-bottom:.5rem;overflow:auto;padding-bottom:1rem;padding-top:1rem;position:sticky;top:1rem;transition:backdrop-filter .2s ease-in-out,background-color .2s ease-in-out,box-shadow .2s ease-in-out,border .2s ease-in-out;z-index:10}.scrolled header,header,header:hover{backdrop-filter:blur(8px);background-color:oklch(from var(--color-background-surface) l c h/.5)}.scrolled header,header:hover{border:var(--border-subdued);box-shadow:var(--shadow-medium)}}@layer components{}@layer components{}@layer components{}@layer components{@media screen and (max-width:500px){header{align-items:start;flex-direction:column;gap:0}}header h1{color:inherit;display:inline;font:var(--font-text);font-weight:700;margin-bottom:0}header h1 a:hover{color:var(--color-brand)}.home header h1{display:none}header nav ul{display:flex;font:var(--font-text);gap:1em;list-style:none;margin:0;padding:0;text-transform:lowercase}header nav li{display:inline}header a:active,header a:link,header a:visited,header a:visited:active{color:inherit;text-decoration:none}header a:active:hover,header a:link:hover,header a:visited:active:hover,header a:visited:hover{text-decoration:underline}footer{background-color:var(--color-background-brand);border-radius:var(--radius-large);color:#fafafa;font:var(--font-text-small);margin-top:5rem;padding-bottom:2rem;padding-top:2rem}footer a:link,footer a:visited{color:currentColor}footer p:first-child{margin-top:0}footer p:last-child{margin-bottom:0}footer code{background-color:transparent;border-radius:4px;color:inherit;padding:0}footer button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;cursor:pointer;display:inline;margin:0;padding:0;text-decoration:underline}footer button:hover{text-decoration:none}footer div{display:flex;font:var(--font-monospace);font-size:.9em;justify-content:space-between;margin-top:2em}footer div p{margin:0}.full-width-capsule{--full-width-padding:calc(var(--vw)*50 - var(--content-width)/2);margin-left:calc(var(--full-width-padding)*-1);margin-right:calc(var(--full-width-padding)*-1);padding-left:max(var(--full-width-padding),1rem);padding-right:max(var(--full-width-padding),1rem)}.headshot{border-radius:var(--radius-large);max-width:100%}}@layer components{}@layer components{}@layer components{@media screen and (max-width:32rem){.headshot{display:none}}.home-lead{display:grid;gap:1em;grid-template-columns:2fr 1fr}@media screen and (max-width:32rem){.home-lead{grid-template-columns:auto}}.home-lead .content{grid-area:1}.home-lead h1{font-size:2.6rem;margin-bottom:0}.home-lead p.deck{font-size:1.25rem;line-height:1.15;margin-top:.25rem}.home-body>h2,.home-lead>:last-child{margin-bottom:1.5rem}.home-body>h2{margin-top:6rem}.home-body>h2:first-of-type{margin-top:3rem}h2.arrow-link{display:inline-block;font-family:var(--font-stack-inter);font-weight:700;position:relative}h2.arrow-link a{background:linear-gradient(90deg,var(--color-background-surface) 0,var(--color-background-surface) 94%,#ffffff00 100%);color:currentColor;padding-right:8px;position:relative;z-index:3}h2.arrow-link a,h2.arrow-link a:hover{text-decoration:none}h2.arrow-link:after{content:" →";font-size:.9em;opacity:0;position:inline-block;position:absolute;right:0;top:1px;transform:translateX(0);transition:all var(--transition-medium)}h2.arrow-link:hover:after{opacity:1;transform:translateX(80%)}.home-photo-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.home-photo-grid img{height:200px;-o-object-fit:cover;object-fit:cover;transition:all var(--transition-medium);width:100%}.home-photo-grid img:hover{box-shadow:var(--shadow-medium);transform:rotate(1deg) scale(1.02);z-index:2}.guestbook-grid{align-items:start;display:grid;gap:1rem;grid-template-columns:1fr 1fr;margin-left:-10%;width:120%}}@layer components{@media (max-width:52rem){.guestbook-grid{grid-template-columns:1fr;margin-left:0;width:100%}}.guestbook-grid input,.guestbook-grid textarea{background-color:var(--color-background-raised);border:var(--border-subdued);border-radius:var(--radius-small);font-family:inherit;padding:.25em}.guestbook-grid input{font-size:1em}.guestbook-grid textarea{font-size:.9rem}.guestbook-grid button[type=submit]{align-self:start;background:var(--color-background-brand);border:none;border-radius:var(--radius-pill);color:#fff;cursor:pointer;font-size:1.1rem;font-weight:700;padding:.25em .75em}.guestbook-grid button[type=submit]:hover:not([disabled]){background:var(--color-brand-dark)}.guestbook-grid button[type=submit][disabled]{opacity:.5}.guestbook-grid button[type=submit][disabled]:hover{cursor:not-allowed}.guestbook-form{background-color:var(--color-background-surface);border:var(--border-subdued);border-radius:var(--radius-medium);display:flex;flex-direction:column;gap:1em;padding:1rem;position:sticky;top:6rem}@media (max-width:52rem){.guestbook-form{position:static}}.guestbook-form-field{display:flex;flex-direction:column}.guestbook-form-field label{font-size:.75em;font-weight:700;margin-top:1rem;padding-left:.25em;text-transform:uppercase}.guestbook-form-field label:first-child{margin-top:0}.actions-row{align-items:center;display:flex;flex-direction:row;gap:1em;justify-content:start;margin-top:1rem}.success{border:1px solid var(--hue-green-500)}.error{border:1px solid var(--hue-red-500)}.form-message-success{color:var(--hue-green-700)}.form-message-error{color:var(--hue-red-600)}.form-message{display:none;margin-top:.5rem}.error .form-message-error,.success .form-message-success{display:block}.guestbook-entries ul{list-style-type:none;margin:0;padding:0}.guestbook-entry{border:var(--border-subdued);border-radius:var(--radius-medium);list-style-type:none;margin:1em 0;padding:.5em}.guestbook-entry:first-of-type{margin-top:0}.guestbook-entry .guestbook-metadata{background-color:var(--color-background-offset);border-radius:.5em .5em 0 0;display:flex;justify-content:space-between;margin:-.5em -.5em .5em;padding:.5em}.guestbook-entry .guestbook-metadata div{align-items:flex-end;display:flex;flex-direction:column;justify-content:space-between}.guestbook-entry .name{font-weight:700}.guestbook-entry .url{font-size:.8em}.guestbook-entry .message p,.guestbook-entry .response p{margin-top:.5em}.guestbook-entry .message p:first-child,.guestbook-entry .response p:first-child{margin-top:0}.guestbook-entry .message p:last-child,.guestbook-entry .response p:last-child{margin-bottom:0}.guestbook-entry .response{background-color:var(--color-background-offset);border-radius:0 0 .5rem .5rem;font-size:.8em;margin:.5rem -.5rem -.5rem;padding:.5em}.htmx-indicator{display:none}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{display:inline-block}.guestbook-loading-more-indicator{font:var(--font-text-xsmall);position:absolute;text-transform:uppercase;transform:translateY(-110%);transition:opacity var(--transition-small)}.admin-actions{background-color:var(--color-background-offset);border-bottom:var(--border-subdued);font-size:.8em;margin:.5rem -.5rem -.5rem;padding:.5em}.admin-actions:last-child{border-bottom:none;border-radius:0 0 .5rem .5rem}.admin-actions button{background-color:var(--hue-gray-200);border:none;border-radius:var(--radius-pill);cursor:pointer}.admin-actions button:active{background-color:var(--hue-gray-300)}}@layer components{ul:has(>.blog-post-preview){margin:0;padding:0}.blog-post-preview{display:flex;flex-direction:row-reverse;justify-content:space-between}.blog-post-preview .tnum{flex-shrink:0}.blog-post-preview a{color:inherit;text-decoration:none}.blog-post-preview a:hover{text-decoration:underline}.blog-post-preview.development.outdated{color:var(--hue-gray-300);text-decoration:line-through}.blog-post-preview.development.draft{color:var(--hue-red-400)}.blog-post-preview.development.draft a:before{content:"(DRAFT) ";font-weight:700}@media screen and (max-width:52rem){.blog-post-preview{flex-direction:column;list-style-type:none;margin-bottom:.8rem}.blog-post-preview .tnum{display:block;font-size:.8em}}}@layer components{.blog-post-meta{margin-bottom:var(--space-800)}.blog-post-meta h1{color:var(--color-heading);font:var(--font-display);font-size:2.75rem;line-height:1.1;margin-bottom:.1rem;text-wrap:pretty}.blog-post-meta .date{color:var(--color-text-subdued);font:var(--font-text-large)}.blog-post-meta .outdated{border:var(--border-subdued);border-radius:var(--radius-medium);font:var(--font-text-small);padding:var(--space-200) var(--space-400)}.blog-post-aside{border-top:var(--border-subdued);font:var(--font-text-small);margin-top:var(--space-800);padding-top:var(-space-400)}.blog-post-content article{position:relative}:root{--max-photoset-width:92rem;--dynamic-photoset-width:95vw;--photoset-gutter:10px;--photoset-width:clamp(100%,var(--dynamic-photoset-width),var(--max-photoset-width))}.wide-box{margin-left:calc(var(--photoset-width)*-1/2 + 50%);width:var(--photoset-width)}.photoset{margin-bottom:8rem}}@layer components{main:has(>.photoset){margin-trim:block-end}.photogrid{-moz-column-gap:var(--photoset-gutter);column-gap:var(--photoset-gutter);display:flex;flex-wrap:wrap;min-height:300px;margin-trim:block-end}.photogrid,.photogrid a{border-radius:var(--radius-large)}.photogrid a{display:block;height:auto;margin-bottom:var(--photoset-gutter);position:relative;width:calc(25% - 7.5px)}@media screen and (max-width:1100px){.photogrid a{width:calc(33.33333% - 6.66667px)}}@media screen and (max-width:700px){.photogrid a{width:calc(50% - 5px)}}@media screen and (max-width:400px){.photogrid a{width:100%}}.photogrid.photogrid-3 a{width:calc(33.33333% - 6.66667px)}.photogrid.photogrid-2 a{width:calc(50% - 5px)}.photogrid.photogrid-1 a{width:100%}.photogrid img{display:block;height:auto;-o-object-fit:cover;object-fit:cover;transition:all .2s ease-in-out;width:100%}.photogrid img:hover{box-shadow:var(--shadow-large);transform:scale(1.02)}.photogrid-loading{margin-bottom:1rem}.photogrid-loading img{background-color:#000;filter:brightness(0);opacity:.1}.photogrid-loading img:not(.is-loaded){height:200px}.photoset-more a{background-color:var(--hue-gray-200);border-radius:var(--radius-large);color:var(--hue-gray-950);display:flex;display:block;font:var(--font-text);margin:0 0 1rem;padding:.5rem 1rem;text-align:center;text-decoration:none;transition:background-color var(--transition-medium)}.photoset-more a:hover{background-color:var(--hue-gray-300)}.photo-lightbox{align-items:center;display:flex;flex-direction:column;gap:1rem;justify-content:center}.photo-lightbox img{background-color:rgba(0,0,0,.1);max-height:calc(100vh - 8rem);min-height:25vh}.photo-links{display:flex;font:var(--font-text-small);justify-content:space-between;margin-bottom:.5rem;text-transform:uppercase;width:100%}.photo-links a,.photo-links a:visited{color:#000}.photo-links>div{display:flex;gap:2em}.disabled-link{color:#888;cursor:not-allowed}.project-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1em;margin-top:0;padding:0}}@layer components{@media (max-width:52rem){.project-preview-grid{grid-template-columns:1fr}}.project-preview{background-color:var(--color-background-raised);border:var(--border-subdued);border-radius:var(--radius-large);font:var(--font-text-small);list-style-type:none;padding:.7em;position:relative;transition:box-shadow var(--transition-small),transform var(--transition-small),border-color var(--transition-small)}.project-preview a{color:var(--color-text)}.project-preview a,.project-preview a:hover{text-decoration:none}.project-preview p:first-child{margin-top:0}.project-preview p:last-child{margin-bottom:0}.project-preview img{margin-bottom:.5em}@media (max-width:52rem){.project-preview img{float:left;margin-right:1em;max-width:33%}}.project-preview h2{margin-bottom:0;margin-top:0}.project-preview h2+p{margin-top:.5em}.project-preview:has(>a):hover{box-shadow:var(--shadow-medium);transform:rotate(-1deg) scale(1.02)}.project-preview:not(:has(>a)):hover{box-shadow:var(--shadow-well);cursor:not-allowed;opacity:.75;transform:scale(.98)}.project-preview:not(:has(>a)):hover:after{opacity:1}.project-preview:not(:has(>a)):after{background-color:var(--hue-gray-800);border-radius:var(--radius-medium);bottom:0;color:var(--hue-gray-25);content:"Stripe-internal only, sorry!";font:var(--font-text-xsmall);left:10%;opacity:0;padding:.5em;position:absolute;text-align:center;transform:translateY(calc(100% + 5px));transition:opacity .3s ease-in-out;width:calc(80% - .75em)}@supports not selector(:has(a,b)){.project-preview a:hover{text-decoration:underline}}}@layer components{.footnote-marker{border-radius:var(--radius-small);cursor:pointer}.footnote-marker.hover,.footnote-marker:hover{background-color:var(--color-background-offset);outline:var(--border-subdued)}.footnote-marker.hover+.footnote-content,.footnote-marker:hover+.footnote-content{outline:var(--border-subdued)}@media screen and (max-width:calc(42rem + 36rem)){.footnote-marker{display:none}}.footnote-content{background-color:var(--color-background-offset);border-radius:var(--radius-large);display:inline;font:var(--font-text-small);font-feature-settings:var(--util-font-feature-alternatives);margin-top:0;padding:1em;position:absolute;right:0;top:0;width:14rem}.footnote-content:hover{z-index:10}@media screen and (max-width:calc(42rem + 36rem)){.footnote-content{display:inline;margin:0 .25em;outline:var(--border-subdued);padding:.25em .5em;position:static;width:100%}.footnote-content:before{content:"Footnote: ";font-weight:700}}}