@layer reset,base,layout,prose,code;:root{--indigo:oklch(0.59 0.2 277);--teal:oklch(0.62 0.11 188);--cyan:oklch(0.72 0.13 215);--sky:oklch(0.68 0.15 237);--slate-700:oklch(0.37 0.03 260);--slate-900:oklch(0.21 0.03 265);--green:oklch(0.6 0.17 150);--red:oklch(0.58 0.22 27);--bg:white;--surface:white;--text:var(--slate-700);--heading:var(--slate-900);--muted:color-mix(in oklch, var(--text), var(--bg) 40%);--link:var(--cyan);--link-hover:var(--sky);--border:color-mix(in oklch, var(--text), var(--bg) 85%);--shadow:rgb(0 0 0 / 0.25);--tint:color-mix(in oklch, var(--cyan), var(--bg) 90%);--tint-strong:color-mix(in oklch, var(--cyan), var(--bg) 75%);color-scheme:light dark;--font-body:system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--measure:56rem;--gutter:1rem;--radius:0.375rem}@media(prefers-color-scheme:dark){:root{--bg:oklch(0.19 0.02 265);--surface:oklch(0.23 0.02 265);--text:oklch(0.86 0.01 260);--heading:oklch(0.96 0.005 260);--link:oklch(0.8 0.11 215);--link-hover:oklch(0.86 0.09 237);--shadow:rgb(0 0 0 / 0.5);--tint:color-mix(in oklch, var(--cyan), var(--bg) 80%);--tint-strong:color-mix(in oklch, var(--cyan), var(--bg) 65%)}}@layer reset{*,*::before,*::after{box-sizing:border-box}html{overscroll-behavior:none;-webkit-text-size-adjust:none}body{margin:0}img,video{display:block;max-width:100%;height:auto}}@layer base{body{font-family:var(--font-body);line-height:1.75;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--link);&:hover{color:var(--link-hover)}}code,kbd,pre{font-family:var(--font-mono)}}@layer layout{.site-header{margin-bottom:3rem;padding:1rem var(--gutter)clamp(1.5rem,4vw,2.5rem);color:#fff;text-shadow:0 2px 4px var(--shadow);background:linear-gradient(45deg in oklch,var(--indigo),var(--teal));box-shadow:0 20px 25px -5px rgb(0 0 0/.1);a{color:inherit}h1{margin:0;font-size:clamp(1.875rem,4vw + 1rem,3rem);font-weight:600;line-height:1.3;text-wrap:balance}}.site-header-content{max-width:64rem;margin:1.5rem auto 0;text-align:center}.site-header-home .site-header-content{margin-top:.5rem}.tagline{max-width:40rem;margin:.75rem auto 0;font-size:1.125rem;font-weight:500;text-wrap:balance;text-shadow:0 1px 2px rgb(0 0 0/.4)}.site-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;max-width:64rem;margin-inline:auto;font-weight:600;a{text-decoration:none;text-underline-offset:.3em;&:hover, &[aria-current]{text-decoration:underline}}.site-nav-home{display:inline-flex;align-items:center;gap:.6rem}ul{display:flex;gap:1.25rem;margin:0 0 0 auto;padding:0;list-style:none}}.avatar{--size:8rem;display:inline-block;width:var(--size);aspect-ratio:1;margin-bottom:1rem;border:1px solid var(--link);border-radius:50%;box-shadow:0 25px 50px -12px var(--shadow);&.avatar-nav{--size:2rem;margin:0;border-color:rgb(255 255 255/.6);box-shadow:0 2px 6px var(--shadow)}}.post-date{margin:0 0 .5rem;font-size:.875rem;font-weight:600;font-variant:small-caps}.site-footer{max-width:var(--measure);margin:4rem auto 2rem;padding:1.5rem var(--gutter)0;border-top:1px solid var(--border);font-size:.875rem;text-align:center;p{margin:.25em 0}}.site-footer-credit{color:var(--muted)}.tag-list{display:inline-flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;font-size:.8rem;line-height:1.5;a{display:block;padding:.05em .6em;text-decoration:none;color:var(--text);background:var(--tint);border-radius:1em;&:hover{background:var(--tint-strong)}}}.tag-count{color:var(--muted)}.button{display:inline-block;padding:.5em 1.1em;font-weight:600;text-decoration:none;color:#fff;background:linear-gradient(45deg in oklch,var(--indigo),var(--teal));border-radius:var(--radius);box-shadow:0 4px 10px -4px var(--shadow);&:hover{color:#fff;filter:brightness(1.1)}}.card{padding:1.5rem;background:linear-gradient(90deg in oklch,var(--indigo),var(--teal))top/100% 4px no-repeat,var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 10px 30px -15px var(--shadow);h2{margin:0;font-size:1.5rem;line-height:1.2;color:var(--heading);a{color:inherit;text-decoration:none}}p{margin-block:.5em}}.books{display:grid;gap:1.5rem;max-width:var(--measure);margin-inline:auto;padding-inline:var(--gutter)}.book{display:grid;grid-template-columns:180px 1fr;gap:2rem;align-items:start;@media(width < 40rem){grid-template-columns: 1fr; .book-cover{justify-self:center}}}.book-cover img{border-radius:.25rem;box-shadow:0 10px 30px -10px var(--shadow);transition:transform .2s}.book-cover:hover img{transform:translateY(-3px)}.book-subtitle,.project-tagline{font-weight:500;color:var(--heading)}.book-meta,.book-note,.project-stat{font-size:.875rem;color:var(--muted)}.book-note{font-style:italic}.book-links{padding-inline-start:1.25em;font-size:.95rem}.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));gap:1.5rem;max-width:var(--measure);margin:2.5rem auto;padding-inline:var(--gutter)}.project{display:flex;flex-direction:column}.project-links{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin:auto 0 0;padding:1rem 0 0;list-style:none;font-weight:600}}@layer prose{.prose{max-width:var(--measure);margin-inline:auto;padding-inline:var(--gutter);> *{margin-block:1.25em} :is(h2, h3) { color: var(--heading); line-height: 1.3; text-wrap: balance; } .heading-anchor { margin-left: 0.5rem; text-decoration: none; opacity: 0; :is(h2, h3):hover &, &:focus-visible { opacity: 1; } } h2 { margin-block: 2em 1em; font-size: clamp(1.5rem, 1vw + 1.25rem, 1.875rem); font-weight: 600; } h3 { margin-block: 1.6em 0.6em; font-size: 1.25rem; font-weight: 600; } :is(ul, ol):not([class]) { padding-inline-start: 1.6em; li { margin-block: 0.5em; } li::marker { color: var(--muted); } } blockquote { margin-inline: 0; padding-inline-start: 1em; border-inline-start: 0.25rem solid var(--border); font-style: italic; color: var(--heading); } hr { margin-block: 3em; border: 0; border-top: 1px solid var(--border); } :is(img, video) { margin-inline: auto; } figure { margin-inline: 0; } figcaption { margin-top: 0.5em; font-size: 0.875rem; font-style: italic; text-align: center; color: var(--muted); } strong { color: var(--heading); } .post-year h2 { margin-block: 1.5em 0.5em; } .post-list { padding: 0; list-style: none; > li { display: grid; grid-template-columns: 3.5rem 1fr; align-items: baseline; gap: 0.75rem; margin-block: 1.25em; } time { font-size: 0.875rem; font-variant-numeric: tabular-nums; color: var(--muted); } > li > div > a { font-weight: 600; } .tag-list { margin-top: 0.4em; } } .post-description { margin: 0.2em 0 0; font-size: 0.95rem; line-height: 1.6; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; } .appearances { padding: 0; list-style: none; > li { margin-block: 1.5em; padding-inline-start: 1em; border-inline-start: 3px solid var(--border); } h3 { margin-block: 0.1em 0.25em; } p { margin-block: 0.25em; } } .appearance-meta, .appearance-recording { font-size: 0.875rem; color: var(--muted); } .appearance-recording a { font-weight: 600; } .social-links { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; padding: 0; list-style: none; } .post-footer { margin-top: 3em; padding-top: 1em; border-top: 1px solid var(--border); color: var(--muted); }}}@layer code{:not(pre)>code{padding:.15em .35em;font-size:.9em;color:var(--code-fg);background:var(--code-bg);border:1px solid var(--code-highlight);border-radius:.25rem;overflow-wrap:break-word}a>code{color:inherit}.site-header code{color:inherit;background:rgb(255 255 255/.18);border-color:rgb(255 255 255/.35);box-shadow:inset 0 1px rgb(255 255 255/.25),0 2px 6px rgb(0 0 0/8%);backdrop-filter:blur(6px)saturate(1.4);text-shadow:inherit}kbd{padding:.1em .4em;font-size:.875em;background:var(--tint);border:1px solid var(--tint-strong);border-bottom-width:2px;border-radius:var(--radius)}.code-block{position:relative}.copy-button{position:absolute;top:.5rem;right:.5rem;padding:.2em .6em;font:600 .75rem var(--font-body);color:var(--code-fg);background:var(--code-bg);border:1px solid var(--code-highlight);border-radius:.25rem;cursor:pointer;opacity:0;transition:opacity .15s;.code-block:hover &, &:focus-visible{opacity:1}@media(hover:none){opacity: 1;}&:hover{background:var(--code-highlight)}}.highlight pre{margin:0;padding-block:1rem;overflow-x:auto;font-size:.875rem;line-height:1.7;border-radius:var(--radius)}.highlight code{display:grid;min-width:100%;width:max-content}.highlight .line{--marker:transparent;position:relative;padding-inline:1.5rem 1rem;&.ins{--marker:var(--green);--sign:"+"}&.del{--marker:var(--red);--sign:"-"}&:is(.ins, .del){background:color-mix(in oklch,var(--marker) 15%,transparent);box-shadow:inset 3px 0 var(--marker);&::before{content:var(--sign);position:absolute;left:.5rem;color:var(--marker);user-select:none}}}}:root{--code-fg:#383a42;--code-bg:#fafafa;--code-keyword:#a626a4;--code-function:#4078f2;--code-string:#50a14f;--code-constant:#986801;--code-module:#c18401;--code-variable:#e45649;--code-symbol:#0184bc;--code-operator:#0184bc;--code-comment:#a0a1a7;--code-surface:#f0f0f1;--code-highlight:#e5e5e6}@media(prefers-color-scheme:dark){:root{--code-fg:#abb2bf;--code-bg:#282c34;--code-keyword:#c678dd;--code-function:#61afef;--code-string:#98c379;--code-constant:#d19a66;--code-module:#e5c07b;--code-variable:#e06c75;--code-symbol:#56b6c2;--code-operator:#56b6c2;--code-comment:#5c6370;--code-surface:#2c313c;--code-highlight:#3e4451}}.chroma{color:var(--code-fg);background-color:var(--code-bg);-webkit-text-size-adjust:none; :is(.k, .kd, .kn, .kp, .kr, .sa) { color: var(--code-keyword); } :is(.nf, .fm, .nd, .nb, .bp) { color: var(--code-function); } :is(.s, .sb, .sc, .s2, .s1, .sh, .sd, .sx, .si, .dl) { color: var(--code-string); } :is(.kc, .no, .na, .m, .mb, .mf, .mh, .mi, .il, .mo) { color: var(--code-constant); } :is(.nc, .nn, .ne, .kt) { color: var(--code-module); } :is(.nv, .vc, .vg, .vi, .vm, .py, .nt, .nl, .ni) { color: var(--code-variable); } :is(.ss, .sr, .se) { color: var(--code-symbol); } :is(.o, .ow, .or) { color: var(--code-operator); } :is(.c, .c1, .cm, .cs, .cp, .cpf, .ch) { color: var(--code-comment); font-style: italic; } .gd { color: var(--code-variable); background-color: var(--code-surface); } .gi { color: var(--code-string); background-color: var(--code-surface); } :is(.gh, .gu) { color: var(--code-function); font-weight: bold; } .gs { font-weight: bold; } .ge { font-style: italic; } .gl { text-decoration: underline; } .hl { background-color: var(--code-highlight); } :is(.ln, .lnt) { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em; color: var(--code-comment); } .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } .lnlinks { outline: none; text-decoration: none; color: inherit; }}