@font-face{font-family:eb garamond;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/eb-garamond-400.woff2)format("woff2")}@font-face{font-family:eb garamond;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/eb-garamond-400-italic.woff2)format("woff2")}@font-face{font-family:eb garamond;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/eb-garamond-500.woff2)format("woff2")}@font-face{font-family:eb garamond;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/eb-garamond-600.woff2)format("woff2")}@font-face{font-family:eb garamond;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/eb-garamond-700.woff2)format("woff2")}:root{--color-bg:#FFFCF0;--color-bg-2:#F2F0E5;--color-ui:#E6E4D9;--color-ui-2:#DAD8CE;--color-ui-3:#CECDC3;--color-tx:#100F0F;--color-tx-2:#575653;--color-tx-3:#6F6E69;--color-re:#AF3029;--color-or:#BC5215;--color-ye:#AD8301;--color-gr:#66800B;--color-cy:#24837B;--color-bl:#205EA6;--color-pu:#5E409D;--color-ma:#A02F6F}@media(prefers-color-scheme:dark){:root{--color-bg:#100F0F;--color-bg-2:#1C1B1A;--color-ui:#282726;--color-ui-2:#343331;--color-ui-3:#403E3C;--color-tx:#CECDC3;--color-tx-2:#B7B5AC;--color-tx-3:#878580;--color-re:#D14D41;--color-or:#DA702C;--color-ye:#D0A215;--color-gr:#879A39;--color-cy:#3AA99F;--color-bl:#4385BE;--color-pu:#8B7EC8;--color-ma:#CE5D97}}[data-theme=dark]{--color-bg:#100F0F;--color-bg-2:#1C1B1A;--color-ui:#282726;--color-ui-2:#343331;--color-ui-3:#403E3C;--color-tx:#CECDC3;--color-tx-2:#B7B5AC;--color-tx-3:#878580;--color-re:#D14D41;--color-or:#DA702C;--color-ye:#D0A215;--color-gr:#879A39;--color-cy:#3AA99F;--color-bl:#4385BE;--color-pu:#8B7EC8;--color-ma:#CE5D97}[data-theme=light]{--color-bg:#FFFCF0;--color-bg-2:#F2F0E5;--color-ui:#E6E4D9;--color-ui-2:#DAD8CE;--color-ui-3:#CECDC3;--color-tx:#100F0F;--color-tx-2:#575653;--color-tx-3:#6F6E69;--color-re:#AF3029;--color-or:#BC5215;--color-ye:#AD8301;--color-gr:#66800B;--color-cy:#24837B;--color-bl:#205EA6;--color-pu:#5E409D;--color-ma:#A02F6F}:root{--content-width:750px;--space-xs:0.25rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--text-xs:0.64rem;--text-sm:0.8rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.563rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-4xl:3.052rem;--fw-normal:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--lh-tight:1.25;--lh-normal:1.7;--lh-relaxed:1.8;--radius-sm:3px;--radius-md:6px;--radius-lg:12px}*,*::before,*::after{box-sizing:border-box}*{margin:0}html{font-size:22px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);font-size:1rem;line-height:var(--lh-normal);color:var(--color-tx);background:var(--color-bg);font-feature-settings:"kern" 1,"liga" 1}h1,h2,h3,h4,h5,h6{color:var(--color-tx);font-weight:var(--fw-semibold);line-height:var(--lh-tight);margin-top:var(--space-xl);margin-bottom:var(--space-md)}h1{font-size:var(--text-3xl);margin-top:0}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}h5,h6{font-size:var(--text-md)}p{margin-bottom:var(--space-md)}strong,b{font-weight:var(--fw-bold)}em,i{font-style:italic}small{font-size:var(--text-sm)}code{font-family:var(--font-code);font-size:.75em;background:var(--color-bg-2);padding:.125em .375em;border-radius:var(--radius-sm);border:1px solid var(--color-ui)}pre{font-family:var(--font-code);font-size:.75rem;line-height:1.5;background:var(--color-bg-2);border:1px solid var(--color-ui);border-radius:var(--radius-md);padding:var(--space-lg);overflow-x:auto;margin:var(--space-lg)0}pre code{background:0 0;padding:0;border:none;font-size:inherit}kbd{font-family:var(--font-code);font-size:.875em;background:var(--color-bg-2);border:1px solid var(--color-ui-2);border-bottom-width:2px;border-radius:var(--radius-sm);padding:.125em .375em}abbr[title]{text-decoration:underline dotted;cursor:help}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}::selection{background:color-mix(in srgb,var(--color-cy) 30%,transparent);color:var(--color-tx)}::-moz-selection{background:color-mix(in srgb,var(--color-cy) 30%,transparent);color:var(--color-tx)}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px solid var(--color-cy);outline-offset:3px}img{max-width:100%;height:auto;display:block}nav ul{list-style:none;padding:0;margin:0}.container{max-width:var(--content-width);margin-left:auto;margin-right:auto;padding-left:var(--space-md);padding-right:var(--space-md)}.site-header{border-bottom:1px solid var(--color-ui);padding:var(--space-lg)0;margin-bottom:var(--space-xl)}.site-nav{max-width:var(--content-width);margin-left:auto;margin-right:auto;padding-left:var(--space-md);padding-right:var(--space-md);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-md)}.nav-header{display:flex;justify-content:space-between;align-items:center;width:100%}.site-title{font-size:var(--text-lg);font-weight:var(--fw-semibold);color:var(--color-tx);text-decoration:none}.site-title:hover{color:var(--color-cy)}.nav-links{display:flex;gap:var(--space-lg)}.nav-links li{margin:0}.nav-links a{color:var(--color-tx-2);text-decoration:none;font-size:var(--text-md);transition:color 150ms ease}.nav-links a:hover{color:var(--color-cy)}.nav-links a[aria-current=page]{color:var(--color-tx);font-weight:var(--fw-medium)}.site-main{max-width:var(--content-width);margin-left:auto;margin-right:auto;padding-left:var(--space-md);padding-right:var(--space-md);min-height:60vh}.site-footer{border-top:1px solid var(--color-ui);padding:var(--space-xl)0;margin-top:var(--space-2xl);max-width:var(--content-width);margin-left:auto;margin-right:auto;padding-left:var(--space-md);padding-right:var(--space-md)}.site-footer p{color:var(--color-tx-2);font-size:var(--text-sm);margin-bottom:var(--space-xs)}.site-footer a{color:var(--color-cy)}article{margin-bottom:var(--space-2xl)}article header{margin-bottom:var(--space-xl)}article header h1{margin-bottom:var(--space-sm)}article header time{color:var(--color-tx-2);display:block;font-size:var(--text-sm)}.content{margin-bottom:var(--space-xl)}.content>*:first-child{margin-top:0}.content>*:last-child{margin-bottom:0}.home h1{margin-bottom:var(--space-md)}.home>p:first-of-type{font-size:var(--text-lg);color:var(--color-tx-2);margin-bottom:var(--space-xl)}.home h2{margin-top:var(--space-2xl);margin-bottom:var(--space-lg)}.posts{display:flex;flex-direction:column;gap:var(--space-md)}@media(max-width:640px){html{font-size:16px}.site-nav{flex-direction:column;align-items:flex-start}.nav-links{gap:var(--space-md)}}@media(min-width:768px){.site-main{padding-left:var(--space-lg);padding-right:var(--space-lg)}}a{color:var(--color-cy);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:all 150ms ease}a:visited{color:var(--color-pu)}a:hover{color:var(--color-bl);text-decoration-thickness:2px}a:active{color:var(--color-or)}a:focus-visible{outline:2px solid var(--color-cy);outline-offset:3px;border-radius:2px}nav a,nav a:visited{color:inherit}a[href^=http]:not([href*="cdell.io"])::after{content:" \2197";font-size:.8em;color:var(--color-tx-3)}blockquote{margin:var(--space-lg)0;padding:var(--space-md);border-left:4px solid var(--color-cy);background:var(--color-bg-2);font-style:italic}blockquote p:last-child{margin-bottom:0}blockquote cite{display:block;margin-top:var(--space-sm);font-size:var(--text-sm);font-style:normal;color:var(--color-tx-2)}blockquote cite::before{content:"\2014\00a0"}ul,ol{margin:var(--space-md)0;padding-left:var(--space-lg)}ul li,ol li{margin-bottom:var(--space-sm);line-height:var(--lh-tight)}ul ul,ul ol,ol ul,ol ol{margin:var(--space-sm)0}ul{list-style-type:disc}ul ul{list-style-type:circle}ul ul ul{list-style-type:square}ul li::marker,ol li::marker{color:var(--color-tx-2)}table{width:100%;margin:var(--space-lg)0;border-collapse:collapse;font-size:var(--text-md)}@media(max-width:640px){table{display:block;overflow-x:auto}}thead{background:var(--color-bg-2);border-bottom:2px solid var(--color-ui-2)}th{padding:var(--space-sm)var(--space-md);text-align:left;font-weight:var(--fw-semibold);color:var(--color-tx)}td{padding:var(--space-sm)var(--space-md);border-bottom:1px solid var(--color-ui)}tbody tr:nth-child(even){background:color-mix(in srgb,var(--color-bg-2) 30%,transparent)}.content img{max-width:100%;height:auto;border-radius:var(--radius-md);box-shadow:0 2px 8px color-mix(in srgb,var(--color-tx) 10%,transparent)}figure{margin:var(--space-lg)0}figure img{display:block;margin:0 auto;border-radius:var(--radius-md);box-shadow:0 2px 8px color-mix(in srgb,var(--color-tx) 10%,transparent)}figure figcaption{margin-top:var(--space-sm);font-size:var(--text-sm);color:var(--color-tx-2);text-align:center;font-style:italic}.image-left{float:left;margin:0 var(--space-md)var(--space-md)0;max-width:50%}@media(max-width:640px){.image-left{float:none;max-width:100%;margin:var(--space-md)0}}.image-right{float:right;margin:0 0 var(--space-md)var(--space-md);max-width:50%}@media(max-width:640px){.image-right{float:none;max-width:100%;margin:var(--space-md)0}}.image-full{width:100vw;max-width:none;margin-left:50%;transform:translateX(-50%);border-radius:0}hr{margin:var(--space-xl)0;border:none;border-top:1px solid var(--color-ui)}hr.decorative{border:none;text-align:center}hr.decorative::before{content:"\A7";color:var(--color-tx-2);font-size:var(--text-lg)}details{margin:var(--space-md)0;padding:var(--space-md);background:var(--color-bg-2);border:1px solid var(--color-ui);border-radius:var(--radius-md)}details summary{cursor:pointer;font-weight:var(--fw-medium);color:var(--color-tx)}details summary:hover{color:var(--color-cy)}details[open] summary{margin-bottom:var(--space-md)}dl{margin:var(--space-md)0}dt{font-weight:var(--fw-semibold);color:var(--color-tx);margin-top:var(--space-md)}dd{margin-left:var(--space-lg);margin-top:var(--space-xs);color:var(--color-tx-2)}mark{background:color-mix(in srgb,var(--color-ye) 30%,transparent);color:var(--color-tx);padding:.125em .25em;border-radius:var(--radius-sm)}.post-summary{margin-bottom:0;padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-ui)}.post-summary:last-child{border-bottom:none;padding-bottom:0}.post-summary h2,.post-summary h3{margin-top:0;margin-bottom:var(--space-sm)}.post-summary h2 a,.post-summary h3 a{color:var(--color-tx);text-decoration:none}.post-summary h2 a:hover,.post-summary h3 a:hover{color:var(--color-cy)}.post-summary h2 a:visited,.post-summary h3 a:visited{color:var(--color-tx)}.post-summary time{display:block;color:var(--color-tx-2);font-size:var(--text-sm);margin-bottom:var(--space-sm)}.post-summary p{color:var(--color-tx-2);margin-bottom:var(--space-sm)}.post-summary .summary{position:relative;max-height:8em;overflow:hidden}.post-summary .summary::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3em;background:linear-gradient(to bottom,transparent,var(--color-bg));pointer-events:none}.post-summary .summary p{margin-bottom:var(--space-sm)}.post-summary .summary p:last-child{margin-bottom:0}.post-summary>a:last-child{font-size:var(--text-sm);color:var(--color-cy)}.post-summary>a:last-child:hover{text-decoration-thickness:2px}.tags{margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--color-ui)}.tags strong{color:var(--color-tx-2);font-weight:var(--fw-medium);margin-right:var(--space-sm)}.tags a{display:inline-block;padding:var(--space-xs)var(--space-sm);margin-right:var(--space-xs);margin-bottom:var(--space-xs);background:var(--color-bg-2);border:1px solid var(--color-ui);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-tx-2);text-decoration:none;transition:all 150ms ease}.tags a:hover{background:var(--color-ui);color:var(--color-tx);border-color:var(--color-ui-2)}.tags a:visited{color:var(--color-tx-2)}.tag{display:inline-block;padding:var(--space-xs)var(--space-sm);background:var(--color-bg-2);border:1px solid var(--color-ui);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-tx-2);text-decoration:none}.tag:hover{background:var(--color-ui);color:var(--color-tx)}.button{display:inline-block;padding:var(--space-sm)var(--space-md);background:var(--color-ui);color:var(--color-tx);border:1px solid var(--color-ui-2);border-radius:var(--radius-md);font-family:inherit;font-size:var(--text-md);font-weight:var(--fw-medium);text-decoration:none;cursor:pointer;transition:all 150ms ease}.button:hover{background:var(--color-ui-2);border-color:var(--color-ui-3)}.button:active{background:var(--color-ui-3)}.button:focus-visible{outline:2px solid var(--color-cy);outline-offset:2px}.button-primary{background:var(--color-cy);color:var(--color-bg);border-color:var(--color-cy)}.button-primary:hover{background:var(--color-bl);border-color:var(--color-bl)}.button-primary:visited{color:var(--color-bg)}.callout{margin:var(--space-lg)0;padding:var(--space-md);border-radius:var(--radius-md);border-left:4px solid}.callout p:last-child{margin-bottom:0}.callout.info{background:color-mix(in srgb,var(--color-bl) 10%,var(--color-bg));border-color:var(--color-bl)}.callout.warning{background:color-mix(in srgb,var(--color-or) 10%,var(--color-bg));border-color:var(--color-or)}.callout.success{background:color-mix(in srgb,var(--color-gr) 10%,var(--color-bg));border-color:var(--color-gr)}.callout.danger{background:color-mix(in srgb,var(--color-re) 10%,var(--color-bg));border-color:var(--color-re)}.post-meta{display:flex;flex-wrap:wrap;gap:var(--space-md);color:var(--color-tx-2);font-size:var(--text-sm);margin-bottom:var(--space-md)}.post-meta span{display:flex;align-items:center;gap:var(--space-xs)}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-cy);color:var(--color-bg);padding:var(--space-sm)var(--space-md);z-index:100;text-decoration:none}.skip-link:focus{top:0}.theme-toggle{display:flex;align-items:center;justify-content:center;background:0 0;border:none;padding:var(--space-xs);cursor:pointer}.theme-toggle:focus-visible{outline:2px solid var(--color-cy);outline-offset:2px;border-radius:var(--radius-md)}.theme-icon{width:20px;height:20px;fill:var(--color-tx-2);transition:fill 150ms ease}.theme-toggle:hover .theme-icon{fill:var(--color-tx)}.theme-icon-moon{display:none}.theme-icon-sun{display:block}[data-theme=dark] .theme-icon-sun{display:none}[data-theme=dark] .theme-icon-moon{display:block}body.section-about .site-main{max-width:1200px}.about-header{display:flex;gap:var(--space-xl);margin-bottom:var(--space-xl);align-items:center}@media(max-width:640px){.about-header{flex-direction:column}}.about-image{flex:0 0 calc(50% - 60px);display:flex;justify-content:flex-end}.about-image img{max-width:100%;max-height:450px;width:auto;height:auto;border-radius:var(--radius-md);box-shadow:0 2px 8px color-mix(in srgb,var(--color-tx) 10%,transparent);filter:brightness(1.36)}@media(max-width:640px){.about-image{flex-basis:100%;justify-content:center}.about-image img{max-width:100%;max-height:none}}.about-intro h1{margin-top:0;margin-bottom:var(--space-xs)}@keyframes rainbow-wave{0%,50%{color:var(--color-tx)}55%{color:var(--color-re)}62%{color:var(--color-or)}69%{color:var(--color-ye)}76%{color:var(--color-gr)}83%{color:var(--color-cy)}90%{color:var(--color-pu)}95%,100%{color:var(--color-tx)}}.rainbow-wave span{display:inline-block;white-space:pre}.rainbow-wave span.animate{animation:rainbow-wave 4s ease-in-out 3}.about-location{color:var(--color-tx-2);font-size:var(--text-md);margin-bottom:var(--space-lg)}.about-quote{margin:var(--space-sm)0;padding:var(--space-sm)var(--space-md)}.about-content{max-width:calc(1200px - 240px);margin-left:auto;margin-right:auto;margin-bottom:var(--space-xl)}.about-pages{margin-top:var(--space-2xl);border-top:1px solid var(--color-ui);padding-top:var(--space-xl)}.about-pages h2{margin-top:0;margin-bottom:var(--space-md)}.about-pages ul{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-md)}.about-pages li{margin:0}.about-pages a{display:block;padding:var(--space-sm)var(--space-lg);background:var(--color-bg-2);border:1px solid var(--color-ui);border-radius:var(--radius-md);text-decoration:none;transition:all 150ms ease}.about-pages a:hover{border-color:var(--color-cy);background:var(--color-bg)}.highlight{background:var(--color-bg-2);border:1px solid var(--color-ui);border-radius:var(--radius-md);padding:var(--space-sm);overflow-x:auto;margin:var(--space-lg)0}.highlight pre{background:0 0;border:none;padding:0;margin:0}.highlight code{background:0 0;border:none;color:var(--color-tx);font-size:inherit;padding:0}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs,.highlight .cp{color:var(--color-tx-3);font-style:italic}.highlight .o,.highlight .p{color:var(--color-tx-2)}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--color-gr);font-weight:600}.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sa{color:var(--color-cy)}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .il{color:var(--color-pu)}.highlight .nf,.highlight .fm,.highlight .nd,.highlight .ne{color:var(--color-or)}.highlight .nc,.highlight .nn{color:var(--color-or);font-weight:600}.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm,.highlight .na{color:var(--color-bl)}.highlight .no,.highlight .bp,.highlight .kc{color:var(--color-ye)}.highlight .nb{color:var(--color-or)}.highlight .nt{color:var(--color-ma)}.highlight .n,.highlight .nl,.highlight .nx,.highlight .py{color:var(--color-tx)}.highlight .err{color:var(--color-re);background:color-mix(in srgb,var(--color-re) 10%,var(--color-bg-2))}.highlight .gd{color:var(--color-re);background:color-mix(in srgb,var(--color-re) 15%,var(--color-bg-2))}.highlight .gi{color:var(--color-gr);background:color-mix(in srgb,var(--color-gr) 15%,var(--color-bg-2))}.highlight .gh,.highlight .gu{color:var(--color-bl);font-weight:600}.highlight .ge{font-style:italic}.highlight .gs{font-weight:600}.highlight .go,.highlight .gp{color:var(--color-tx-2)}.highlight .gr,.highlight .gt{color:var(--color-re)}.highlight .g,.highlight .w{color:var(--color-tx)}.highlight .ln,.highlight .lnt{color:var(--color-tx-3);margin-right:var(--space-md);user-select:none}.highlight .hl{background:var(--color-ui);display:block;margin:0 calc(-1 * var(--space-lg));padding:0 var(--space-lg)}.highlight .lntable{width:100%;border:none;margin:0}.highlight .lntable td{border:none;padding:0}.highlight .lntable td:first-child{width:2em;text-align:right;padding-right:var(--space-md)}.highlight .lntable td pre{margin:0}.highlight{position:relative}.copy-button{position:absolute;top:var(--space-sm);right:var(--space-sm);padding:var(--space-xs)var(--space-sm);font-family:var(--font-code);font-size:var(--text-xs);color:var(--color-tx-2);background:var(--color-bg);border:1px solid var(--color-ui-2);border-radius:var(--radius-sm);cursor:pointer;opacity:0;transition:opacity 150ms ease,background 150ms ease,color 150ms ease;z-index:10}.copy-button:hover{background:var(--color-ui);color:var(--color-tx)}.copy-button:focus-visible{opacity:1;outline:2px solid var(--color-cy);outline-offset:2px}.copy-button.copied{color:var(--color-gr);border-color:var(--color-gr)}.highlight:hover .copy-button,.highlight:focus-within .copy-button{opacity:1}@media print{nav,.site-header,.site-footer,.theme-toggle,.share-buttons,.tags,.skip-link{display:none !important}*{background:0 0 !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}html{font-size:12pt}body{line-height:1.5;font-family:Georgia,times new roman,Times,serif}.site-main,.container{max-width:100%;padding:0;margin:0}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-inside:avoid}h1{font-size:24pt}h2{font-size:18pt}h3{font-size:14pt}p{orphans:3;widows:3}a[href]::after{content:" (" attr(href)")";font-size:.8em;color:#666 !important}a[href^="#"]::after,a[href^="/"]::after{content:""}a[href^=http]::after{content:" (" attr(href)")" !important}img,pre,blockquote,table,figure{page-break-inside:avoid}img{max-width:100% !important}pre,code{font-family:courier new,Courier,monospace;font-size:10pt}pre{border:1px solid #ccc;padding:.5em;white-space:pre-wrap;word-wrap:break-word}.highlight{border:1px solid #ccc;padding:.5em}table{border-collapse:collapse}th,td{border:1px solid #ccc;padding:.25em .5em}thead{display:table-header-group}tr{page-break-inside:avoid}blockquote{border-left:2px solid #666;padding-left:1em;margin-left:0}}:root{--font-body:"EB Garamond", Georgia, serif;--font-code:"SF Mono", Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace}[data-font-body=georgia]{--font-body:Georgia, "Times New Roman", Times, serif}[data-font-body=system-serif]{--font-body:ui-serif, Georgia, serif}[data-font-body=crimson]{--font-body:"Crimson Pro", Georgia, serif}[data-font-body=eb-garamond]{--font-body:"EB Garamond", Georgia, serif}[data-font-body=eb-garamond] body{font-size:1.05rem}@media(max-width:640px){[data-font-body=eb-garamond] body{font-size:1.3rem}}[data-font-body=charter]{--font-body:Charter, Georgia, serif}[data-font-body=system-sans]{--font-body:system-ui, -apple-system, sans-serif}[data-font-body=inter]{--font-body:Inter, system-ui, sans-serif}[data-font-code=sf-mono]{--font-code:"SF Mono", Consolas, Monaco, monospace}[data-font-code=jetbrains]{--font-code:"JetBrains Mono", monospace}[data-font-code=fira]{--font-code:"Fira Code", monospace}[data-font-code=system-mono]{--font-code:ui-monospace, monospace}.dev-modal{display:none;position:fixed;inset:0;z-index:9999}.dev-modal.is-open{display:block}.dev-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(2px)}.dev-modal-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:Min(400px,90vw);max-height:80vh;overflow-y:auto;background:var(--color-bg);border:1px solid var(--color-ui-2);border-radius:var(--radius-lg);box-shadow:0 8px 32px rgba(0,0,0,.2)}.dev-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md)var(--space-lg);border-bottom:1px solid var(--color-ui)}.dev-modal-header h2{margin:0;font-size:var(--text-lg)}.dev-modal-close{background:0 0;border:none;font-size:var(--text-xl);color:var(--color-tx-2);cursor:pointer;padding:var(--space-xs);line-height:1}.dev-modal-close:hover{color:var(--color-tx)}.dev-modal-body{padding:var(--space-lg)}.dev-modal-section{margin-bottom:var(--space-lg)}.dev-modal-section:last-child{margin-bottom:0}.dev-modal-section h3{margin:0 0 var(--space-sm);font-size:var(--text-md);font-weight:var(--fw-medium);color:var(--color-tx-2)}.dev-modal-options{display:flex;flex-direction:column;gap:var(--space-xs)}.dev-modal-option{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-md);cursor:pointer;transition:background 150ms ease}.dev-modal-option:hover{background:var(--color-bg-2)}.dev-modal-option input[type=radio]{accent-color:var(--color-cy)}.dev-modal-option span{font-size:var(--text-sm)}.dev-modal-slider{padding:var(--space-sm)}.dev-modal-slider input[type=range]{width:100%;height:6px;border-radius:3px;background:var(--color-ui);appearance:none;cursor:pointer}.dev-modal-slider input[type=range]::-webkit-slider-thumb{appearance:none;width:18px;height:18px;border-radius:50%;background:var(--color-cy);cursor:pointer;border:2px solid var(--color-bg);box-shadow:0 1px 3px rgba(0,0,0,.2)}.dev-modal-slider input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--color-cy);cursor:pointer;border:2px solid var(--color-bg);box-shadow:0 1px 3px rgba(0,0,0,.2)}.dev-modal-slider input[type=range]:focus{outline:none}.dev-modal-slider input[type=range]:focus-visible{outline:2px solid var(--color-cy);outline-offset:3px}.dev-modal-slider-labels{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-sm)}.dev-modal-slider-value{font-size:var(--text-sm);font-family:var(--font-code);color:var(--color-tx-2)}.dev-modal-reset{font-size:var(--text-sm);color:var(--color-tx-3);background:0 0;border:none;cursor:pointer;padding:var(--space-xs)var(--space-sm);border-radius:var(--radius-sm);transition:color 150ms ease,background 150ms ease}.dev-modal-reset:hover{color:var(--color-tx);background:var(--color-bg-2)}.dev-modal-footer{padding:var(--space-sm)var(--space-lg);border-top:1px solid var(--color-ui);text-align:center}.dev-modal-hint{font-size:var(--text-sm);color:var(--color-tx-3)}.dev-modal-hint kbd{font-size:.75em;padding:.125em .375em}