html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}@font-face{font-family:JetBrains Mono;src:url(../fonts/JetBrainsMono%5Bwght%5D.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(../fonts/JetBrainsMono-Italic%5Bwght%5D.ttf) format("truetype");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:Iosevka Aile;src:url(../fonts/IosevkaAile-Regular.ttc) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Iosevka Aile;src:url(../fonts/IosevkaAile-Bold.ttc) format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{--font-family: "JetBrains Mono", monospace;--font-serif: "IBM Plex Serif", serif;--font-sans: "Iosevka Aile", sans-serif;--line-height: 1.2rem;--border-thickness: 2px;--text-color: #fff;--text-color-alt: #aaa;--background-color: #000;--background-color-alt: #111;--font-weight-normal: 500;--font-weight-medium: 600;--font-weight-bold: 800;font-family:var(--font-family);font-optical-sizing:auto;font-weight:var(--font-weight-normal);font-style:normal;font-variant-numeric:tabular-nums lining-nums;font-size:16px}*{box-sizing:border-box}*+*{margin-top:var(--line-height)}html{display:flex;width:100%;margin:0;padding:0;flex-direction:column;align-items:center;background:var(--background-color);color:var(--text-color);scrollbar-gutter:stable;--scrollbar-gutter: calc(100vw - 100%) }body{position:relative;width:100%;margin:0;padding:var(--line-height) 2ch;max-width:min(80ch,round(down,100%,1ch));line-height:var(--line-height)}@media screen and (max-width: 480px){:root{font-size:14px}body{padding:var(--line-height) 1ch}}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-bold);margin:calc(var(--line-height) * 2) 0 var(--line-height);line-height:var(--line-height)}h1,h2{font-family:var(--font-serif);font-weight:400}h3,h4,h5,h6{font-family:var(--font-sans);font-weight:700;text-transform:none}h1{font-size:2rem;line-height:calc(2 * var(--line-height));margin-bottom:calc(var(--line-height) * 2);text-transform:uppercase}h2{font-size:1rem;text-transform:uppercase}hr{position:relative;display:block;height:var(--line-height);margin:calc(var(--line-height) * 1.5) 0;border:none;color:var(--text-color)}hr:after{display:block;content:"";position:absolute;top:calc(var(--line-height) / 2 - var(--border-thickness));left:0;width:100%;border-top:calc(var(--border-thickness) * 3) double var(--text-color);height:0}a{text-decoration-thickness:var(--border-thickness)}a:link,a:visited{color:var(--text-color)}p{margin-bottom:var(--line-height);word-break:break-word;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}strong{font-weight:var(--font-weight-bold)}em{font-style:italic}sub{position:relative;display:inline-block;margin:0;vertical-align:sub;line-height:0;width:calc(1ch / .75);font-size:.75rem}table{position:relative;top:calc(var(--line-height) / 2);width:round(down,100%,1ch);border-collapse:collapse;margin:0 0 calc(var(--line-height) * 2)}th,td{border:var(--border-thickness) solid var(--text-color);padding:calc((var(--line-height) / 2)) calc(1ch - var(--border-thickness) / 2) calc((var(--line-height) / 2) - (var(--border-thickness)));line-height:var(--line-height);vertical-align:top;text-align:left}table tbody tr:first-child>*{padding-top:calc((var(--line-height) / 2) - var(--border-thickness))}th{font-weight:700}.width-min{width:0%}.width-auto{width:100%}.header{margin-bottom:calc(var(--line-height) * 2)}.header h1{margin:0}.header tr td:last-child{text-align:right}img,video{display:block;width:100%;object-fit:contain;overflow:hidden}img{font-style:italic;color:var(--text-color-alt)}details{border:var(--border-thickness) solid var(--text-color);padding:calc(var(--line-height) - var(--border-thickness)) 1ch;margin-bottom:var(--line-height)}summary{font-weight:var(--font-weight-medium);cursor:pointer}details[open] summary{margin-bottom:var(--line-height)}details ::marker{display:inline-block;content:"▶";margin:0}details[open] ::marker{content:"▼"}details :last-child{margin-bottom:0}pre{white-space:pre;overflow-x:auto;margin:var(--line-height) 0;overflow-y:hidden}figure pre{margin:0}pre,code{font-family:var(--font-family)}code{font-weight:var(--font-weight-medium)}figure{margin:calc(var(--line-height) * 2) 3ch;overflow-x:auto;overflow-y:hidden}figcaption{display:block;font-style:italic;margin-top:var(--line-height)}ul,ol{padding:0;margin:0 0 var(--line-height)}ul{list-style-type:square;padding:0 0 0 2ch}ol{list-style-type:none;counter-reset:item;padding:0}ol ul,ol ol,ul ol,ul ul{padding:0 0 0 3ch;margin:0}ol li:before{content:counters(item,".") ". ";counter-increment:item;font-weight:var(--font-weight-medium)}li{margin:0;padding:0}li::marker{line-height:0}::-webkit-scrollbar{height:var(--line-height)}input,button,textarea{border:var(--border-thickness) solid var(--text-color);padding:calc(var(--line-height) / 2 - var(--border-thickness)) calc(1ch - var(--border-thickness));margin:0;font:inherit;font-weight:inherit;height:calc(var(--line-height) * 2);width:auto;overflow:visible;background:var(--background-color);color:var(--text-color);line-height:normal;-webkit-font-smoothing:inherit;-moz-osx-font-smoothing:inherit;-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-grid;place-content:center;vertical-align:top;width:2ch;height:var(--line-height);cursor:pointer}input[type=checkbox]:checked:before,input[type=radio]:checked:before{content:"";width:1ch;height:calc(var(--line-height) / 2);background:var(--text-color)}input[type=radio],input[type=radio]:before{border-radius:100%}button:focus,input:focus{--border-thickness: 3px;outline:none}input{width:round(down,100%,1ch)}::placeholder{color:var(--text-color-alt);opacity:1}::-ms-input-placeholder{color:var(--text-color-alt)}button::-moz-focus-inner{padding:0;border:0}button{text-transform:uppercase;font-weight:var(--font-weight-medium);cursor:pointer}button:hover{background:var(--background-color-alt)}button:active{transform:translate(2px,2px)}label{display:block;width:round(down,100%,1ch);height:auto;line-height:var(--line-height);font-weight:var(--font-weight-medium);margin:0}label input{width:100%}.header h1.title{font-family:var(--font-serif);font-weight:600;letter-spacing:.02em}.subtitle{font-family:var(--font-sans);font-weight:400}.term-link{background:none;border:none;padding:0;margin:0;font:inherit;color:var(--text-color);text-decoration:underline;text-decoration-style:dotted;text-decoration-thickness:var(--border-thickness);cursor:pointer;height:auto;text-transform:none;font-weight:inherit;display:inline}.term-link:hover{background:none;text-decoration-style:solid}.term-link:active{transform:none}.home-about{margin-top:0;margin-bottom:calc(var(--line-height) * 1.5)}.home-about>*+*{margin-top:var(--line-height)}.home-section-title{font-family:var(--font-sans);font-weight:700;font-size:1.25rem;line-height:calc(var(--line-height) * 1.5);text-transform:none;letter-spacing:normal;margin:0 0 var(--line-height)}.home-about p{margin-top:0;margin-bottom:var(--line-height)}.home-about p:last-of-type{margin-bottom:0}.about-more{margin-top:var(--line-height)}.about-more-trigger{display:inline-flex;align-items:center;gap:.5ch;cursor:pointer;list-style:none;font-family:var(--font-sans);font-size:.75rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--text-color);-webkit-user-select:none;user-select:none;height:auto;margin:0;padding:0;transition:opacity .15s ease}.about-more-trigger::-webkit-details-marker{display:none}.about-more-trigger:before{content:"▶";font-size:.55em;transition:transform .15s ease}details.about-more[open] .about-more-trigger{opacity:.5}details.about-more[open] .about-more-trigger:before{transform:rotate(90deg)}.about-more-trigger:hover{opacity:1}.about-more-label--open{display:none;font-variant:small-caps;text-transform:lowercase;letter-spacing:.05em}.about-more-label--closed{display:inline}details.about-more[open] .about-more-label--closed{display:none}details.about-more[open] .about-more-label--open{display:inline}details.about-more[open]{border-color:color-mix(in srgb,var(--text-color) 50%,transparent)}.about-more-content{margin-top:var(--line-height);padding-left:0;animation:about-more-show .2s ease;overflow:hidden}.about-more-content p{margin-top:0;margin-bottom:var(--line-height)}.about-more-content p:last-child{margin-bottom:0}.about-portrait{float:left;width:16ch;height:calc(var(--line-height) * 14);object-fit:cover;object-position:center top;display:block;margin-right:2ch;margin-bottom:var(--line-height);opacity:.9}@keyframes about-more-show{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.action-btn{display:inline-block;background:none;border:var(--border-thickness) solid var(--text-color);color:var(--text-color);cursor:pointer;font:inherit;font-weight:var(--font-weight-medium);height:calc(var(--line-height) * 2);line-height:calc(var(--line-height) * 2);padding:0 1ch;text-transform:uppercase;text-decoration:none;white-space:nowrap;margin-top:0}.action-btn:hover{background:var(--background-color-alt)}.action-btn-rose:hover{background:#fa1e4e;color:#000}.action-btn-lime:hover{background:#c2fe0b;color:#000}.action-btn-orange:hover{background:#ff5c00;color:#000}.header-links-cell{vertical-align:middle;padding:0 0 0 2ch}.header-links{position:relative;display:flex;flex-direction:column;align-items:flex-end}.header-icons{display:flex;align-items:center;gap:.75ch;padding:0 .5ch}.header-icon-btn{position:relative;background:none;border:none;padding:2px;margin:0;height:auto;width:auto;cursor:pointer;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:2px}.header-icon-btn:hover{background:none}.header-icon-btn:active{transform:none}.header-icon-img{display:block;width:20px;height:20px;object-fit:contain;position:relative;z-index:1;filter:invert(1) brightness(.85);transition:filter .15s ease}.header-icon-btn:hover .header-icon-img{filter:invert(1) brightness(1.15)}.header-icon-btn:after{content:"";position:absolute;top:-50%;left:-80%;width:40%;height:200%;background:linear-gradient(to right,#fff0,#ffffff8c,#fff0);transform:skew(-20deg);opacity:0;pointer-events:none;z-index:2}.header-icon-btn:hover:after{opacity:1;animation:icon-glint .5s ease forwards}@keyframes icon-glint{0%{left:-80%}to{left:130%}}.header-icon-tooltip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--background-color);border:var(--border-thickness) solid var(--text-color);color:var(--text-color);font-family:var(--font-family);font-size:.7rem;font-weight:var(--font-weight-normal);text-transform:uppercase;letter-spacing:.05em;padding:1px .6ch;white-space:nowrap;pointer-events:none;z-index:200;opacity:0;transition:opacity .1s ease;transition-delay:0s}.header-icon-btn:hover .header-icon-tooltip{opacity:1;transition-delay:.5s}.header-dropdown{position:absolute;top:calc(100% + 2px);right:0;min-width:max-content;background:var(--background-color);border:var(--border-thickness) solid var(--text-color);z-index:150;padding:calc(var(--line-height) * .5) 1ch;animation:dropdown-show .1s ease}@keyframes dropdown-show{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.header-dropdown-header{display:flex;justify-content:flex-end;margin-bottom:calc(var(--line-height) * .5);margin-top:0}.header-dropdown-close{margin-left:0}.header-dropdown-list{list-style:none;padding:0;margin:0}.header-dropdown-list li{margin:0;padding:calc(var(--line-height) * .25) 0;border-top:var(--border-thickness) solid var(--text-color-alt)}.header-dropdown-list li:first-child{border-top:none}.header-dropdown-list li+li{margin-top:0}.footer{margin-top:calc(var(--line-height) * 4)}.footer .header-dropdown{top:auto;bottom:calc(100% + 2px)}.footer .header-icon-tooltip{bottom:auto;top:calc(100% + 6px)}.action-btn.action-btn-resume{background:#c0fd03;border-color:#c0fd03;color:#000;padding:0 4ch;display:inline-flex;align-items:center;gap:.6ch}.action-btn.action-btn-resume:hover{background:#000;border-color:#c0fd03;color:#c0fd03}.resume-icon{color:inherit;flex-shrink:0;display:block}.action-btn:active{transform:translate(2px,2px)}.home-action-row{display:flex;flex-wrap:wrap;gap:1ch;margin-top:var(--line-height)}.page-tabs{margin-top:calc(var(--line-height) * 2)}.page-tab-bar{display:flex;align-items:flex-end}.page-tab-btn{font:inherit;font-family:var(--font-sans);font-size:.8rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;padding:0 2ch;height:calc(var(--line-height) * 1.5);background:var(--background-color-alt);color:var(--text-color-alt);border:var(--border-thickness) solid var(--text-color);white-space:nowrap}.page-tab-btn+.page-tab-btn{margin-left:calc(-1 * var(--border-thickness))}.page-tab-btn--active{background:var(--background-color);color:var(--text-color);font-weight:600;height:calc(var(--line-height) * 2);position:relative;z-index:1;margin-bottom:calc(-1 * var(--border-thickness));border-bottom-color:var(--background-color)}.page-tab-btn:not(.page-tab-btn--active):hover{background:var(--background-color);color:var(--text-color)}.page-tab-panel{position:relative;border:var(--border-thickness) solid var(--text-color);padding:calc(var(--line-height) * 2) 2ch}.page-tab-panel>nav#TOC,.page-tab-panel>nav#TOC>.home-about{margin-top:0}.page-tab-panel .services-page{margin-top:0}.sparkle-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;z-index:-1;pointer-events:none;display:block}.toc-projects-header{display:flex;justify-content:space-between;align-items:center;margin:calc(var(--line-height) * 1.5) 0 0;padding:calc(var(--line-height) * .5) 0;border-top:var(--border-thickness) solid var(--text-color-alt);border-bottom:var(--border-thickness) solid var(--text-color-alt)}.toc-projects-label{font-family:var(--font-sans);font-weight:400;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-color-alt)}.toc-role-list{list-style:none;padding:0;margin:0}.toc-role-item{border-bottom:var(--border-thickness) solid var(--text-color-alt)}.toc-role-item+.toc-role-item{margin-top:0}.toc-role-row{display:flex;align-items:baseline;gap:1ch;width:100%;padding:calc(var(--line-height) * .5) 0}.role-trigger{white-space:nowrap;font-weight:var(--font-weight-medium)}.role-arrow{font-size:.65em;vertical-align:middle;opacity:.7}.toc-row-silent-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}.role-dropdown-content{padding:calc(var(--line-height) * 1.5) 0 calc(var(--line-height) * 2);border-top:var(--border-thickness) solid var(--text-color-alt)}.role-dropdown-text p{margin-top:0;margin-bottom:var(--line-height)}.role-dropdown-text p:last-child{margin-bottom:var(--line-height)}nav#TOC ul{list-style-type:none;padding:0}nav#TOC ul li{margin:0;padding:0}nav#TOC ul li+li{margin-top:0}nav#TOC a{text-decoration:none;display:block;padding:0;line-height:var(--line-height)}nav#TOC a:hover{text-decoration:underline;text-decoration-thickness:var(--border-thickness)}.toc-header-item{padding:calc(var(--line-height) * .5) 0}.toc-separator{display:flex;align-items:center;gap:1ch;margin:calc(var(--line-height) * 1.5) 0 var(--line-height);color:var(--text-color-alt);font-family:var(--font-sans);font-size:.75rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em}.toc-separator:after{content:"";flex:1;border-top:var(--border-thickness) solid var(--text-color-alt);position:relative;top:1px}nav#TOC a.toc-role-link{display:flex;align-items:baseline;gap:1ch;width:100%;text-decoration:none;color:var(--text-color);padding:calc(var(--line-height) * .25) 0}nav#TOC a.toc-role-link:hover .toc-role-name{text-decoration:underline;text-decoration-thickness:var(--border-thickness)}.toc-role-name{white-space:nowrap;font-weight:var(--font-weight-medium)}.toc-role-dashes{flex:1;color:var(--text-color-alt);overflow:hidden;white-space:nowrap;text-align:center}.toc-role-project{white-space:nowrap;color:var(--text-color-alt);margin-left:auto;text-align:right}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000000bf;z-index:100;animation:overlayShow .12s ease}@keyframes overlayShow{0%{opacity:0}to{opacity:1}}.modal-content{position:fixed;top:50%;left:calc(50% - var(--scrollbar-gutter, 0px) / 2);transform:translate(-50%,-50%);z-index:101;background:var(--background-color);color:var(--text-color);border:var(--border-thickness) solid var(--text-color);width:min(80ch,round(down,98vw,1ch));max-height:80vh;overflow-y:auto;padding:calc(var(--line-height) * 2) 2ch calc(var(--line-height)) 2ch;animation:contentShow .15s ease}@keyframes contentShow{0%{opacity:0;transform:translate(-50%,-48%)}to{opacity:1;transform:translate(-50%,-50%)}}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--line-height);margin-top:0}.modal-title{font-family:var(--font-sans);font-weight:700;font-size:1rem;text-transform:uppercase;margin:0;line-height:var(--line-height)}.modal-close{background:none;border:var(--border-thickness) solid var(--text-color);color:var(--text-color);cursor:pointer;font:inherit;font-weight:var(--font-weight-medium);height:calc(var(--line-height) * 2);padding:0 1ch;flex-shrink:0;margin-top:0;margin-left:2ch;text-transform:uppercase}.modal-close:hover{background:var(--background-color-alt)}.modal-body{margin-top:0}.modal-body>*+*{margin-top:var(--line-height)}.modal-link-list{list-style:none;padding:0;margin:0}.modal-link-list li{margin:0;padding:0;line-height:var(--line-height);border-top:var(--border-thickness) solid var(--text-color)}.modal-link-list li:last-child{border-bottom:var(--border-thickness) solid var(--text-color)}.modal-link-list li+li{margin-top:0}.modal-link-row{display:flex;justify-content:space-between;align-items:baseline;padding:calc(var(--line-height) / 2) 0;width:100%;gap:1ch}.modal-link-name{font-weight:var(--font-weight-medium);white-space:nowrap}.modal-link-arrow{flex:1;color:var(--text-color-alt);white-space:nowrap;overflow:hidden;text-align:right}.modal-link-row a{display:inline-flex;align-items:baseline;gap:1ch;width:100%;text-decoration:none;color:var(--text-color)}.modal-link-row a:hover .modal-link-name{text-decoration:underline;text-decoration-thickness:var(--border-thickness)}.modal-link-row.unavailable{color:var(--text-color-alt);cursor:default}.modal-link-row.unavailable .modal-link-arrow{color:var(--text-color-alt)}.modal-summary-text p{margin-top:0;margin-bottom:var(--line-height)}.modal-summary-text p:last-child{margin-bottom:0}.modal-editorial-header{display:flex;gap:2ch;align-items:flex-start;margin-top:0}.modal-editorial-header>*{margin-top:0}.modal-photo{flex-shrink:0;width:16ch;height:calc(var(--line-height) * 14);object-fit:cover;object-position:center top;display:block}.modal-editorial-intro{flex:1;min-width:0}.modal-editorial-intro p{margin-top:0;margin-bottom:var(--line-height)}.modal-editorial-intro p:last-child{margin-bottom:0}.modal-editorial hr{margin-top:var(--line-height);margin-bottom:0}.contact-section{margin-top:calc(var(--line-height) * 4)}.contact-form{display:flex;flex-direction:column;gap:var(--line-height);margin-top:var(--line-height)}.contact-row{display:flex;flex-direction:column;gap:calc(var(--line-height) * .25)}.contact-label{font-family:var(--font-sans);font-size:.75rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--text-color-alt)}.contact-input{background:none;border:var(--border-thickness) solid var(--text-color-alt);color:var(--text-color);font:inherit;height:calc(var(--line-height) * 2);padding:0 1ch;width:100%;outline:none;transition:border-color .15s ease}.contact-input:focus{border-color:var(--text-color)}.contact-textarea{height:calc(var(--line-height) * 6);max-height:calc(var(--line-height) * 10);padding:calc(var(--line-height) * .5) 1ch;resize:vertical;line-height:var(--line-height)}.contact-label-row{display:flex;justify-content:space-between;align-items:baseline}.contact-char-count{font-family:var(--font-sans);font-size:.7rem;color:var(--text-color-alt);letter-spacing:.05em}.contact-char-count--warn{color:#fa1e4e}.role-cta-row{padding:calc(var(--line-height) * .5) 0;display:flex;justify-content:center}.contact-cta-row{margin-top:calc(var(--line-height) * 2)}.action-btn.contact-cta-btn{height:auto!important;line-height:var(--line-height)!important;padding:calc(var(--line-height) * 1.5) 6ch!important;font-size:1rem;display:inline-block;vertical-align:middle}.contact-blurb{margin-top:calc(var(--line-height) * 1.5);margin-bottom:calc(var(--line-height) * 2)}.contact-blurb p{margin-top:0;margin-bottom:var(--line-height)}.contact-blurb p:last-child{margin-bottom:0}.contact-stats{color:var(--text-color-alt);font-size:.85em}.contact-actions{display:flex}.contact-form-divider{margin-top:calc(var(--line-height) * 3)}.contact-form--inactive{opacity:.45;pointer-events:none}.contact-sent{margin-top:var(--line-height);margin-bottom:0;color:var(--text-color-alt)}.header-nav-row{display:flex;align-items:center;gap:1ch;justify-content:flex-end}.services-page{margin-top:calc(var(--line-height) * 2);margin-bottom:calc(var(--line-height) * 4)}.services-lede{margin:0 0 calc(var(--line-height) * 2);padding:calc(var(--line-height) * 1.5) 2ch;border-left:calc(var(--border-thickness) * 2) solid var(--text-color);font-family:var(--font-serif);font-size:1.05rem;line-height:calc(var(--line-height) * 1.4);color:var(--text-color)}.services-list{list-style:none;padding:0;margin:0}.services-list li:before{content:none;counter-increment:none}.service-block{border:var(--border-thickness) solid var(--text-color-alt);padding:calc(var(--line-height) * 1.5) 2ch;margin-top:calc(var(--line-height) * 1.5);transition:border-color .15s ease}.service-block:hover{border-color:var(--text-color)}.service-block-header{display:flex;align-items:baseline;gap:1.5ch;margin-bottom:calc(var(--line-height) * .5)}.service-number{font-family:var(--font-sans);font-size:.7rem;font-weight:400;letter-spacing:.1em;color:var(--text-color-alt);flex-shrink:0;text-transform:uppercase}.service-title{font-family:var(--font-sans);font-weight:700;font-size:1rem;margin:0;line-height:var(--line-height);text-transform:none;letter-spacing:normal}.service-tagline{font-family:var(--font-sans);font-size:.85rem;font-style:italic;color:var(--text-color-alt);margin:0 0 var(--line-height);font-weight:400}.service-description{margin:0 0 var(--line-height);font-size:.95rem;line-height:calc(var(--line-height) * 1.1)}.service-meta{border-top:var(--border-thickness) solid var(--text-color-alt);padding-top:calc(var(--line-height) * .75);display:flex;flex-direction:column;gap:calc(var(--line-height) * .25)}.service-meta-row{display:grid;grid-template-columns:13ch 1fr;column-gap:2ch;font-family:var(--font-sans);font-size:.78rem;line-height:var(--line-height)}.service-meta-label{font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-color-alt);white-space:nowrap}.service-meta-value{color:var(--text-color)}.service-meta-row--urgent .service-meta-label,.service-meta-row--urgent .service-meta-value{color:#ff5c00}.services-cta-section{margin-top:calc(var(--line-height) * 2)}.services-cta-text{margin:0 0 calc(var(--line-height) * 1.5);font-size:.95rem;max-width:60ch}.services-cta-actions{display:flex;gap:1ch}.projects-page{margin-top:calc(var(--line-height) * 2);margin-bottom:calc(var(--line-height) * 4)}.client-projects-header{margin-bottom:calc(var(--line-height) * .5)}.client-projects-title{font-family:var(--font-sans);font-weight:700;font-size:1.35rem;text-transform:none;letter-spacing:normal;margin:0;line-height:var(--line-height)}.client-projects-footnote{font-family:var(--font-sans);font-size:.68rem;color:var(--text-color-alt);margin-top:calc(var(--line-height) * 1.5);margin-bottom:0;letter-spacing:.02em}.client-project-inline-link{color:inherit;text-decoration:underline;text-decoration-style:dotted;text-decoration-thickness:var(--border-thickness)}.client-project-inline-link:hover{text-decoration-style:solid}.projects-list{list-style:none;padding:0;margin:0}.projects-list li:before{content:none;counter-increment:none}.project-block{border:var(--border-thickness) solid var(--text-color-alt);padding:calc(var(--line-height) * 1.5) 2ch;margin-top:calc(var(--line-height) * 1.5);transition:border-color .15s ease}.project-block:hover{border-color:var(--text-color)}.project-block-top{margin-bottom:calc(var(--line-height) * .75)}.project-block-header{display:flex;align-items:baseline;gap:1.5ch;margin-bottom:calc(var(--line-height) * .25)}.project-number{font-family:var(--font-sans);font-size:.7rem;font-weight:400;letter-spacing:.1em;color:var(--text-color-alt);flex-shrink:0;text-transform:uppercase}.project-role{font-family:var(--font-sans);font-size:.72rem;font-weight:500;color:var(--text-color-alt);text-transform:uppercase;letter-spacing:.08em}.project-period{font-family:var(--font-sans);font-size:.68rem;font-weight:400;color:var(--text-color-alt);letter-spacing:.05em;margin-left:auto}.project-title{font-family:var(--font-sans);font-weight:700;font-size:1.05rem;margin:0;line-height:var(--line-height);text-transform:none;letter-spacing:normal}.project-block-body{display:flex;gap:2ch;margin-bottom:calc(var(--line-height) * 1)}.project-image-slot{flex-shrink:0;width:5rem;height:5rem;overflow:hidden}.project-image{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.project-image-placeholder{width:100%;height:100%;border:var(--border-thickness) dashed var(--text-color-alt);display:flex;align-items:center;justify-content:center;opacity:.35}.project-image-label{font-family:var(--font-sans);font-size:.6rem;color:var(--text-color-alt);text-transform:uppercase;letter-spacing:.12em}.project-description{flex:1}.project-description p{font-size:.9rem;line-height:calc(var(--line-height) * 1.15);margin:0 0 calc(var(--line-height) * .5)}.project-description p:last-child{margin-bottom:0}.project-meta{border-top:var(--border-thickness) solid var(--text-color-alt);padding-top:calc(var(--line-height) * .75);display:flex;align-items:center;justify-content:space-between;gap:2ch}.project-meta-left{display:flex;flex-direction:column;gap:calc(var(--line-height) * .35)}.project-tags{display:flex;flex-wrap:wrap;gap:.75ch}.project-tag{font-family:var(--font-sans);font-size:.62rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--text-color-alt);border:1px solid var(--text-color-alt);padding:.1em .7ch}.project-status{display:flex;align-items:center;gap:.75ch}.project-status-dot{width:.45rem;height:.45rem;border-radius:50%;flex-shrink:0}.project-status-dot--live{background:#4ade80}.project-status-dot--soon,.project-status-dot--closed{background:var(--text-color-alt)}.project-status-label{font-family:var(--font-sans);font-size:.7rem;color:var(--text-color-alt);text-transform:uppercase;letter-spacing:.08em}.resume-modal-body{display:flex;flex-direction:column;gap:calc(var(--line-height) * 1.5)}.resume-cta-bar{display:flex;justify-content:flex-start}.resume-cta-bar--bottom{margin-top:calc(var(--line-height) * .5);padding-top:var(--line-height);border-top:var(--border-thickness) solid var(--text-color)}.resume-header-block{display:flex;flex-direction:column;gap:calc(var(--line-height) * .25);padding-bottom:var(--line-height);border-bottom:var(--border-thickness) solid var(--text-color)}.resume-name{font-family:var(--font-sans);font-weight:var(--font-weight-bold);font-size:1.1rem;text-transform:uppercase}.resume-role{font-size:.9rem;color:var(--text-color-alt)}.resume-location{font-size:.85rem;color:var(--text-color-alt)}.resume-section{display:flex;flex-direction:column;gap:calc(var(--line-height) * .75)}.resume-section-heading{font-family:var(--font-sans);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-color-alt);margin:0}.resume-section>p{margin:0;font-size:.9rem;line-height:calc(var(--line-height) * 1.2)}.resume-exp-list{list-style:none;padding:0;margin:0}.resume-exp-item{border-top:var(--border-thickness) solid var(--text-color)}.resume-exp-item:last-child{border-bottom:var(--border-thickness) solid var(--text-color)}.resume-exp-trigger{display:flex;align-items:baseline;gap:1ch;width:100%;background:none;border:none;color:var(--text-color);font:inherit;font-size:.875rem;cursor:pointer;padding:calc(var(--line-height) * .5) 0;text-align:left;flex-wrap:wrap}.resume-exp-trigger:hover .resume-exp-company{text-decoration:underline;text-decoration-thickness:var(--border-thickness)}.resume-exp-company{font-weight:var(--font-weight-medium);white-space:nowrap}.resume-exp-meta{flex:1;color:var(--text-color-alt);font-size:.8rem}.resume-exp-arrow{margin-left:auto;color:var(--text-color-alt);font-size:.75rem;flex-shrink:0}.resume-exp-bullets{list-style:disc;padding:0 0 calc(var(--line-height) * .5) 2ch;margin:0;font-size:.875rem;line-height:calc(var(--line-height) * 1.2)}.resume-exp-bullets li+li{margin-top:calc(var(--line-height) * .25)}.resume-edu-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:calc(var(--line-height) * .5)}.resume-edu-item{display:flex;flex-wrap:wrap;gap:.5ch 1.5ch;font-size:.875rem;align-items:baseline}.resume-edu-school{font-weight:var(--font-weight-medium)}.resume-edu-degree{color:var(--text-color-alt)}.resume-edu-dates{color:var(--text-color-alt);margin-left:auto;white-space:nowrap}.resume-skills-table{margin:0;display:flex;flex-direction:column;gap:calc(var(--line-height) * .5)}.resume-skills-row{display:grid;grid-template-columns:max-content 1fr;gap:1.5ch;font-size:.875rem}.resume-skills-row dt{font-weight:var(--font-weight-medium);color:var(--text-color-alt);white-space:nowrap}.resume-skills-row dd{margin:0}.resume-form-intro{margin:0;color:var(--text-color-alt);font-size:.9rem}.resume-form{display:flex;flex-direction:column;gap:var(--line-height)}.resume-field{display:flex;flex-direction:column;gap:calc(var(--line-height) * .25)}.resume-label{font-family:var(--font-sans);font-size:.75rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--text-color-alt)}.resume-input,.resume-textarea{background:none;border:var(--border-thickness) solid var(--text-color-alt);color:var(--text-color);font:inherit;font-size:.9rem;padding:calc(var(--line-height) * .5) 1ch;width:100%;box-sizing:border-box;resize:vertical}.resume-input:focus,.resume-textarea:focus{outline:none;border-color:var(--text-color)}.resume-input--error{border-color:#fa1e4e}.resume-field-error{font-size:.8rem;color:#fa1e4e}.resume-char-count{font-size:.75rem;color:var(--text-color-alt);text-align:right}.resume-data-notice{margin:0;font-size:.78rem;color:var(--text-color-alt);line-height:calc(var(--line-height) * 1.1)}.resume-form-or{margin-top:calc(var(--line-height) * .25);text-align:center;color:var(--text-color-alt);font-size:.85rem}.resume-state-center{display:flex;flex-direction:column;align-items:flex-start;gap:var(--line-height);padding:var(--line-height) 0}.resume-state-center p{margin:0}.resume-error-msg{color:#fa1e4e}.resume-back-btn{background:none;border:none;color:var(--text-color-alt);font:inherit;font-size:.85rem;cursor:pointer;padding:0;text-decoration:none}.resume-back-btn:hover{color:var(--text-color)}
