@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4ba802ed8e67eac5-s.0fuxtgzazslqx.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d7a0600e467cf0bd-s.451yigaaz_4mg.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/dc0d9adbac686440-s.p.3cik_s2si-ft-.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8f2b92a9960dd69-s.0we3rzhp_h228.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28e60ca39c9ae554-s.44izq0ia6orkf.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8d05cfa5faa8406c-s.p.1s123piy9_v1m.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono Fallback;src:local(Arial);ascent-override:81.58%;descent-override:26.3%;line-gap-override:0.0%;size-adjust:137.28%}.space_mono_fdf5de47-module__aex0MW__className{font-family:Space Mono,Space Mono Fallback;font-style:normal}.space_mono_fdf5de47-module__aex0MW__variable{--font-space-mono:"Space Mono", "Space Mono Fallback"}
:root{--bg-color:#fdf5e6;--paper-color:#ffffffa6;--text-main:#2c3e50;--text-muted:#576574;--text-soft:#8395a7;--link-color:#2980b9;--grid-color:#f3ebdb;--rule-color:#d1ccc0;--banner-bg:#2b4c7e;--focus-color:#3498db;--mono:var(--font-space-mono), "Courier New", Courier, monospace, "Segoe UI Symbol", "Segoe UI Emoji", "Apple Color Emoji"}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--bg-color);background-image:linear-gradient(var(--grid-color) 1px, transparent 1px), linear-gradient(90deg, var(--grid-color) 1px, transparent 1px);color:var(--text-main);font-family:var(--mono);text-rendering:optimizelegibility;background-size:20px 20px;margin:0;padding:0;line-height:1.7}a{color:var(--link-color);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;transition:color .2s,text-decoration-thickness .2s}a:hover{text-decoration-thickness:2px}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--focus-color);outline-offset:3px}.skip-link{background:var(--bg-color);color:var(--text-main);border:1px solid var(--text-main);z-index:10;font-family:var(--mono);padding:8px 10px;font-size:.85rem;text-decoration:none;position:absolute;top:12px;left:12px;transform:translateY(-140%)}.skip-link:focus{transform:translateY(0)}.architectural-banner{background-color:var(--banner-bg);border-bottom:2px solid var(--text-main);background-image:url(/manuscripts/Codice_Volo_01R_mod.webp);background-position:50% 30%;background-size:cover;width:100%;height:180px}main{max-width:840px;margin:0 auto;padding:20px 20px 32px}header.site-header{border-bottom:1px solid var(--rule-color);justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px;padding-bottom:12px;display:flex}header.site-header .site-wordmark{letter-spacing:-.04em;margin:0;font-family:inherit;font-size:1.35rem;font-weight:700}header.site-header .site-wordmark a{transition:opacity .2s}header.site-header .site-wordmark a:hover{opacity:.7}header.site-header .site-wordmark span.formula{font-size:.95rem!important}h1,h2,h3,.role,.date,nav,.tag,.button-link,.blog-meta,footer,.filter-btn{font-family:var(--mono)}h1,h2,h3{color:var(--text-main);margin:0;font-weight:700;line-height:1.25}h1{letter-spacing:-.06em;font-size:clamp(1.75rem,4vw,2.25rem)}h2{letter-spacing:-.04em;border-bottom:1px dashed var(--rule-color);margin-top:24px;margin-bottom:24px;padding-bottom:8px;font-size:1.35rem}h3{margin-bottom:8px;font-size:1.05rem}nav{text-transform:uppercase;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:20px;font-size:.86rem;display:flex}nav a{color:var(--text-muted);border-bottom:1px solid #0000;text-decoration:none}nav a:hover,nav a.active{color:var(--text-main);border-bottom-color:var(--text-main)}p{margin:0 0 12px;font-size:1.05rem}.intro{margin-bottom:24px}.intro p{max-width:760px}.muted{color:var(--text-muted)}.small{font-size:.94rem}.work-entry{border-bottom:1px dashed var(--rule-color);margin-bottom:20px;padding-bottom:16px}.work-entry:last-child{border-bottom:0}.work-header{justify-content:space-between;align-items:baseline;gap:18px;margin-bottom:8px;display:flex}.role{font-size:1.05rem;font-weight:700}.date{color:var(--text-muted);white-space:nowrap;font-size:.9rem}.tech-stack,.blog-tags{flex-wrap:wrap;gap:12px;margin:12px 0 0;padding:0;list-style:none;display:flex}.tag{color:var(--text-muted);font-size:.78rem}.tag:before{content:"• "}.build-log{border:1px solid var(--rule-color);background:var(--paper-color);border-radius:4px;margin-bottom:20px;padding:16px}.commits-container{margin-top:12px;padding-bottom:10px;overflow-x:auto}.commits-graph-wrapper{gap:8px;display:flex}.weekday-labels{font-family:var(--mono);color:var(--text-muted);grid-template-rows:repeat(7,12px);align-items:center;gap:3px;padding-top:18px;font-size:8px;display:grid}.graph-cols-wrapper{flex-direction:column;display:flex}.month-labels{font-family:var(--mono);color:var(--text-muted);justify-content:space-between;margin-bottom:4px;padding-left:4px;font-size:9px;display:flex}.commits-grid{grid-template-rows:repeat(7,12px);grid-auto-columns:12px;grid-auto-flow:column;gap:3px;display:grid}.commit-cell{background-color:#0000000f;border-radius:2px;width:12px;height:12px;transition:transform .1s}.commit-cell:hover{z-index:1;transform:scale(1.2)}.commit-cell[data-level="1"]{background-color:#c6e48b}.commit-cell[data-level="2"]{background-color:#7bc96f}.commit-cell[data-level="3"]{background-color:#239a3b}.commit-cell[data-level="4"]{background-color:#196127}.build-log-text{border-top:1px dashed var(--rule-color);margin-top:24px}.log-row{border-bottom:1px dashed var(--grid-color);grid-template-columns:110px 1fr;gap:16px;padding:8px 0;display:grid}.log-row:last-child{border-bottom:0}.log-date{color:var(--text-muted);font-family:var(--mono);font-size:.85rem;font-weight:700}.log-text{margin:0;font-size:1rem}.blog-filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.filter-btn{background:var(--paper-color);border:1px solid var(--rule-color);color:var(--text-muted);cursor:pointer;border-radius:20px;padding:6px 14px;font-size:.78rem;transition:all .2s}.filter-btn:hover{border-color:var(--text-main);color:var(--text-main)}.filter-btn.active{background:var(--text-main);color:var(--bg-color);border-color:var(--text-main)}.blog-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:24px;display:grid}.blog-card{border:1px solid var(--rule-color);background:var(--paper-color);border-radius:4px;flex-direction:column;transition:transform .2s,box-shadow .2s;display:flex;overflow:hidden}.blog-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000d}.blog-cover{background-color:var(--banner-bg);border-bottom:1px solid var(--rule-color);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='1.2' stroke-opacity='0.22'%3E%3Cpath d='M40 0 C 45 20, 35 40, 40 80 M0 40 C 20 45, 40 35, 80 40'/%3E%3Cpath d='M40 20 C 30 25, 25 35, 20 40 C 25 45, 30 55, 40 60 C 50 55, 55 45, 60 40 C 55 35, 50 25, 40 20 Z'/%3E%3Ccircle cx='40' cy='40' r='6' fill='%23ffffff' fill-opacity='0.12'/%3E%3Cpath d='M20 40 C 20 30, 30 20, 40 20 M40 60 C 30 60, 20 50, 20 40'/%3E%3Cpath d='M60 40 C 60 30, 50 20, 40 20 M40 60 C 50 60, 60 50, 60 40'/%3E%3C/g%3E%3C/svg%3E");height:112px}.blog-content{flex-direction:column;flex-grow:1;padding:14px 16px;display:flex}.blog-card h3{margin-bottom:8px;font-size:1.1rem;line-height:1.35}.blog-meta{color:var(--text-muted);margin-bottom:12px;font-size:.78rem}.button-row{flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:16px;display:flex}.button-link,button.button-link{border:1px solid var(--rule-color);color:var(--link-color);cursor:pointer;background:#fff6;padding:6px 10px;font-size:.75rem;text-decoration:none;transition:all .2s}.button-link:hover{background:var(--text-main);color:var(--bg-color);border-color:var(--text-main);text-decoration:none}.button-link.primary{color:var(--text-main);border-color:var(--text-main)}.button-link.primary:hover{background:var(--text-main);color:var(--bg-color)}.button-link.disabled,button.button-link:disabled{color:var(--text-soft);cursor:not-allowed;opacity:.55;border-color:var(--rule-color)}.button-link.disabled:hover,button.button-link:disabled:hover{color:var(--text-soft);border-color:var(--rule-color);background:#fff6}details.article{border-top:1px dashed var(--rule-color);margin-top:16px;padding-top:12px}details.article>summary{cursor:pointer;color:var(--link-color);font-family:var(--mono);font-size:.85rem}.article-body{color:var(--text-main);margin-top:16px;font-size:.95rem}.article-body h4{font-family:var(--mono);margin:20px 0 8px;font-size:.9rem}.article-body ul{margin-top:8px;padding-left:20px}.contact-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-bottom:40px;display:grid}.contact-card{border:1px solid var(--rule-color);background:var(--paper-color);border-radius:4px;min-height:96px;padding:16px;transition:transform .2s}.contact-card:hover{transform:translateY(-1px)}.contact-card strong{font-family:var(--mono);margin-bottom:8px;font-size:.86rem;display:block}.contact-center{border:1px solid var(--rule-color);background:var(--paper-color);border-radius:4px;margin-top:40px;padding:28px}.contact-center h3{font-size:1.25rem;font-family:var(--mono);border-bottom:1px dashed var(--rule-color);margin-bottom:20px;padding-bottom:8px}.contact-form{gap:20px;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (max-width:600px){.form-row{grid-template-columns:1fr}}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{font-family:var(--mono);text-transform:uppercase;color:var(--text-muted);font-size:.8rem}.form-group input,.form-group textarea{border:1px solid var(--rule-color);color:var(--text-main);font-family:var(--sans);background:#fffc;border-radius:4px;padding:10px 14px;font-size:.95rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group textarea:focus{border-color:var(--text-main);outline:none;box-shadow:0 0 0 3px #2c3e501a}.form-group textarea{resize:vertical;min-height:120px}.submit-btn{background:var(--text-main);color:var(--bg-color);border:1px solid var(--text-main);font-family:var(--mono);text-transform:uppercase;cursor:pointer;border-radius:4px;justify-self:start;padding:12px 24px;font-size:.85rem;transition:all .2s}.submit-btn:hover{color:var(--text-main);background:0 0}.markdown-content{font-size:1.05rem}.markdown-content h2{border-bottom:1px dashed var(--rule-color);font-size:1.25rem;font-family:var(--mono);margin:32px 0 16px;padding-bottom:6px}.markdown-content h3{font-size:1.1rem;font-family:var(--mono);margin:24px 0 12px}.markdown-content h4{font-size:1.05rem;font-family:var(--mono);margin:20px 0 10px}.markdown-content p{margin-bottom:18px}.markdown-content pre{border:1px solid var(--rule-color);background:#00000008;border-radius:4px;margin:20px 0;padding:16px;position:relative;overflow-x:auto}.copy-code-btn{background:var(--paper-color);border:1px solid var(--rule-color);font-family:var(--mono);color:var(--text-muted);cursor:pointer;opacity:1;border-radius:4px;padding:4px 8px;font-size:.7rem;transition:opacity .2s,background .2s;position:absolute;top:8px;right:8px}.markdown-content pre:hover .copy-code-btn{opacity:1}.copy-code-btn:hover{background:var(--text-main);color:var(--bg-color);border-color:var(--text-main)}.markdown-content pre code{background:0 0;border:none;padding:0;font-size:.9rem;line-height:1.5}.markdown-content code{font-family:var(--mono);background:#0000000d;border-radius:3px;padding:2px 6px;font-size:.92rem}.markdown-content blockquote{border-left:3px solid var(--text-soft,#888);color:var(--text-muted,inherit);background:#00000008;border-radius:0 4px 4px 0;margin:20px 0;padding:14px 18px;font-size:.95rem}.markdown-content blockquote p{margin-bottom:0}.markdown-content blockquote strong{color:var(--text-main,inherit)}.clap-btn{background:var(--paper-color,transparent);border:1px solid var(--rule-color);font-family:var(--mono);color:var(--text-main);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:.85rem;transition:transform .15s,border-color .15s,background .15s;display:inline-flex}.clap-btn:hover:not(:disabled){border-color:var(--text-main)}.clap-btn:disabled{cursor:default;opacity:.6}.clap-btn .clap-icon{font-size:1.05rem;line-height:1}.clap-btn-pop{transform:scale(1.15)}.share-btn{background:var(--paper-color,transparent);border:1px solid var(--rule-color);font-family:var(--mono);color:var(--text-main);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:.85rem;transition:border-color .15s;display:inline-flex}.share-btn:hover{border-color:var(--text-main)}.share-modal-overlay{z-index:10000;background:#00000073;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.share-modal{background:var(--bg-color,#fcfbf7);border:1px solid var(--rule-color);width:100%;max-width:420px;font-family:var(--mono);border-radius:6px;padding:24px;box-shadow:0 12px 40px #0003}.share-modal-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.share-modal-title{letter-spacing:.08em;color:var(--text-muted);font-size:.8rem}.share-modal-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:4px;font-size:1rem;line-height:1}.share-modal-close:hover{color:var(--text-main)}.share-modal-blurb{color:var(--text-main);margin:0 0 18px;font-size:.9rem;line-height:1.5}.share-modal-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px;display:grid}.share-modal-target{text-align:center;border:1px solid var(--rule-color);color:var(--text-main);border-radius:4px;padding:10px 8px;font-size:.82rem;text-decoration:none;transition:border-color .15s,background .15s;display:block}.share-modal-target:hover{border-color:var(--text-main);background:#00000008}.share-modal-copy{gap:8px;display:flex}.share-modal-copy input{border:1px solid var(--rule-color);min-width:0;font-family:var(--mono);color:var(--text-muted);background:#00000005;border-radius:4px;flex:1;padding:8px 10px;font-size:.75rem}.share-modal-copy button{border:1px solid var(--rule-color);background:var(--paper-color,transparent);font-family:var(--mono);cursor:pointer;white-space:nowrap;color:var(--text-main);border-radius:4px;padding:8px 12px;font-size:.75rem}.share-modal-copy button:hover{background:var(--text-main);color:var(--bg-color)}.share-modal-native{width:100%;font-family:var(--mono);color:var(--text-muted);cursor:pointer;background:0 0;border:none;margin-top:12px;padding:4px;font-size:.75rem;text-decoration:underline;display:block}.share-modal-native:hover{color:var(--text-main)}.markdown-content table{border-collapse:collapse;width:100%;margin:24px 0}.markdown-content th,.markdown-content td{border:1px solid var(--rule-color);text-align:left;padding:10px 14px}.markdown-content th{font-family:var(--mono);background:#00000005;font-size:.9rem;font-weight:700}.blog-post-layout{grid-template-columns:1fr 220px;align-items:start;gap:48px;display:grid}.blog-toc-sidebar{border-left:1px dashed var(--rule-color);padding:8px 0 8px 24px;position:sticky;top:40px}.blog-toc-title{font-family:var(--mono);text-transform:uppercase;color:var(--text-muted);letter-spacing:.05em;margin-bottom:16px;font-size:.8rem;font-weight:700}.blog-toc-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.blog-toc-item{font-family:var(--mono);font-size:.8rem;line-height:1.4}.blog-toc-item a{color:var(--text-muted);border-bottom:none;text-decoration:none;transition:color .2s}.blog-toc-item a:hover{color:var(--text-main);border-bottom:1px solid var(--text-main)}@media (max-width:860px){.blog-post-layout{grid-template-columns:1fr}.blog-toc-sidebar{display:none}}.site-footer{border-top:1px solid var(--rule-color);max-width:840px;color:var(--text-soft);margin:80px auto 0;padding:24px 20px 48px;font-size:.85rem}.site-footer-content{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}@media (max-width:680px){.site-footer-content{text-align:center;flex-direction:column;align-items:center}.architectural-banner{height:150px}main{padding-top:30px}header.site-header{margin-bottom:34px;display:block}nav{justify-content:flex-start;gap:14px;margin-top:14px}.work-header{display:block}.date{margin-top:4px;display:block}.log-row{grid-template-columns:1fr;gap:4px}.contact-grid{grid-template-columns:1fr}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
