body{--token-8372458c-4712-41c5-b071-24c8268c2722:#161919;--token-a9d536c6-55c7-4586-b0e9-a2435948ff5b:#f5f7f5;--token-3b3bff06-b7a1-4ca2-8cab-460a49b7abb2:#161919;--token-d66ba2ab-aec6-4761-9cb0-51b44c10a568:#00bc68;--token-084c2e69-607e-4e75-9b47-3c9615b5d0bb:#00bc68;--token-115ff541-53b8-429a-8eab-e71082616850:#00bc68;--token-7f52ca94-2963-465e-be14-d5b3380b2da8:#00bc681f;--token-f3ad02c4-79fe-4db9-9ace-c0371699f9b0:#16191999;--token-2365c4c3-d502-4d86-a781-7464022330c5:#1619191f;--token-32a56475-347c-4e53-8728-5112b56732d8:#16191952;--token-ace2d697-3167-4d48-b176-de8dd65b2435:#fff;--token-2920b349-8ebd-44c8-b857-3256a91fcd68:#00bc683d;--token-9210c288-ba54-444b-b0ee-646878e92b6e:#1619190a;--token-cdb40cb3-a968-4811-b700-8083caea68ec:#00bc6814;--token-0eceff29-7a3b-4ca8-820d-b0aee279d497:#fff0;--token-14599a87-85a1-4ecc-a1e3-bd075f23ae7e:#1619192e;--token-ff96e311-f89f-47a0-902a-bb7ab66d2f2c:#99260f;--token-ff0322a9-5871-4eca-80d4-123f7dde1f22:#c73a1e40;--token-9f4da843-5f89-4b4e-aaa5-3306eeec2596:#1619193d;--token-33b7ed02-212b-46a2-81bc-94238a26f340:#000;--token-e043c0c0-ebad-4bdb-b317-dce3b9764ac6:#007f46;--token-64015782-8ffa-4af6-9665-e15e7a94276a:#fff;--token-84911b69-a76a-44a5-8d01-a1fc2d6a79fb:#1619193d;--token-0ccfd2ec-0c91-4209-8a64-6b99060f3f52:#0e0e0e33}body[data-framer-theme=dark]{--token-a9d536c6-55c7-4586-b0e9-a2435948ff5b:#0e0e0e;--token-3b3bff06-b7a1-4ca2-8cab-460a49b7abb2:#fff;--token-f3ad02c4-79fe-4db9-9ace-c0371699f9b0:#ffffff7a;--token-2365c4c3-d502-4d86-a781-7464022330c5:#ffffff1f;--token-32a56475-347c-4e53-8728-5112b56732d8:#ffffff80;--token-ace2d697-3167-4d48-b176-de8dd65b2435:#141414;--token-9210c288-ba54-444b-b0ee-646878e92b6e:#ffffff0a;--token-14599a87-85a1-4ecc-a1e3-bd075f23ae7e:#ffffff2e;--token-9f4da843-5f89-4b4e-aaa5-3306eeec2596:#ffffff3d;--token-e043c0c0-ebad-4bdb-b317-dce3b9764ac6:#00bc68;--token-64015782-8ffa-4af6-9665-e15e7a94276a:#161919;--token-84911b69-a76a-44a5-8d01-a1fc2d6a79fb:#f0ede87a;--token-0ccfd2ec-0c91-4209-8a64-6b99060f3f52:#0e0e0e66}
@font-face{font-family:Iosevka Custom Regular;src:url(/assets/eYjTV53T5gXREmMJwcK2eAb094.woff2);font-display:swap;font-style:normal;font-weight:400}@font-face{font-family:Iosevka Custom Bold Condensed;src:url(/assets/DT1VqTsYBNWvrQlTGkKV8Cz6xE.woff2);font-display:swap;font-style:normal;font-weight:700}@font-face{font-family:Iosevka Custom Bold Condensed Oblique;src:url(/assets/VfyadCx2PxOsGvgrrXA8N4RBtw.woff2);font-display:swap;font-style:italic;font-weight:700}@font-face{font-family:Iosevka Custom Oblique;src:url(/assets/cEYHjC6A4sx7mSqOw5MzaqudO4.woff2);font-display:swap;font-style:italic;font-weight:400}@font-face{font-family:Iosevka Custom Bold;src:url(/assets/PPWglUzajqdB1EVMzMpNEQEDC2w.woff2);font-display:swap;font-style:normal;font-weight:700}@font-face{font-family:Iosevka Custom Bold Oblique;src:url(/assets/qlTvrlwMUrC3sXdpzUBuz7QU4TM.woff2);font-display:swap;font-style:italic;font-weight:700}@font-face{font-family:Iosevka Custom Condensed;src:url(/assets/h3NFTC7674FzmywirbjgtiqPo.woff2);font-display:swap;font-style:normal;font-weight:400}
body{--text:var(--token-3b3bff06-b7a1-4ca2-8cab-460a49b7abb2);--muted:var(--token-f3ad02c4-79fe-4db9-9ace-c0371699f9b0);--surface:var(--token-a9d536c6-55c7-4586-b0e9-a2435948ff5b);--surface-top:var(--token-ace2d697-3167-4d48-b176-de8dd65b2435);--green:var(--token-d66ba2ab-aec6-4761-9cb0-51b44c10a568);--border:var(--token-2365c4c3-d502-4d86-a781-7464022330c5);--tint:var(--token-cdb40cb3-a968-4811-b700-8083caea68ec);--font-body:"Iosevka Custom Regular", monospace;--font-bold:"Iosevka Custom Bold", monospace;--font-oblique:"Iosevka Custom Oblique", monospace;--font-bold-oblique:"Iosevka Custom Bold Oblique", monospace;--font-size-body:14px;--font-size-small:12px;--font-size-tooltip:16px;--font-size-icon:24px;--line-height-body:1.6;--letter-spacing-body:-.02em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-small:2px;--radius-control:4px;--radius-media:8px;--duration-fast:.1s;--duration-ui:.25s;--duration-command:.4s;--duration-tooltip:.6s;--duration-entrance:1s;--ease-entrance:cubic-bezier(.16,1,.3,1);--duration-media:var(--duration-entrance);--ease-media:var(--ease-entrance);--on-accent:var(--token-8372458c-4712-41c5-b071-24c8268c2722);--surface-hover:var(--token-9210c288-ba54-444b-b0ee-646878e92b6e);--accent-hover:var(--token-7f52ca94-2963-465e-be14-d5b3380b2da8);--input-border:var(--token-32a56475-347c-4e53-8728-5112b56732d8);--scrollbar:var(--token-9f4da843-5f89-4b4e-aaa5-3306eeec2596);--error:var(--token-ff96e311-f89f-47a0-902a-bb7ab66d2f2c);--opacity-disabled:.48;--opacity-secondary:.72;--card-height:200px;--card-logo-size:40px;--card-logo-offset:calc((var(--card-height) - var(--card-logo-size) - var(--space-8) - 2 * var(--font-size-body) * var(--line-height-body)) / 2);--content-inset:16px;--content-width:640px;--video-aspect-ratio:3/2;--terminal-width:860px;--shadow-terminal:rgba(0,0,0,calc(.02 * var(--mspnw-shadow-strength,1))) 0px .48175px .55883px 0px, rgba(0,0,0,calc(.07 * var(--mspnw-shadow-strength,1))) 0px 1.83083px 2.12376px 0px, rgba(0,0,0,calc(.32 * var(--mspnw-shadow-strength,1))) 0px 8px 9.28px 0px;--shadow-terminal-secondary:rgba(0,0,0,calc(.01 * var(--mspnw-shadow-strength,1))) 0px .48175px .55883px 0px, rgba(0,0,0,calc(.05 * var(--mspnw-shadow-strength,1))) 0px 1.83083px 2.12376px 0px, rgba(0,0,0,calc(.24 * var(--mspnw-shadow-strength,1))) 0px 8px 9.28px 0px;--shadow-tooltip:0 10px 20px #0000000d;--media-white:#fff;--media-black:#000;--media-surface:#f5f5f5;--media-text:#222;--media-border:#dedede;--media-button-border:#d7d7d7;--media-default-border:#eee;--media-focus:var(--green);--media-backdrop:#0a0a0af0;--prototype-backdrop:#00000080;--youtube-control:#212121;--youtube-accent:red;--shadow-media-control:0 2px 4px #0000002e, 0 8px 24px #0000003d}
@property --media-scale-x{syntax:"<number>";inherits:false;initial-value:1}@property --media-scale-y{syntax:"<number>";inherits:false;initial-value:1}.cmsmv-root{display:flow-root}.portfolio-viewer-toggle:hover{--portfolio-viewer-icon:var(--green)}.cmsmv-root .cmsmv-grid{columns:var(--cmsmv-columns);column-gap:var(--cmsmv-gap);margin-bottom:calc(-1 * var(--cmsmv-gap))}.cmsmv-root .cmsmv-grid>figure{padding-bottom:var(--cmsmv-gap);break-inside:avoid;margin:0}.cmsmv-root .cmsmv-tile{break-inside:avoid;width:100%;margin:0 0 var(--cmsmv-gap);cursor:zoom-in;background:0 0;padding:0;display:block}.cmsmv-root .cmsmv-tile:disabled{cursor:default}.cmsmv-root button:focus-visible{outline:3px solid var(--media-focus);outline-offset:3px}.cmsmv-root .cmsmv-tile:focus-visible{outline-color:var(--green)}.portfolio-viewer-dialog::backdrop,.cmsmv-root .cmsmv-dialog::backdrop,.video-dialog::backdrop{-webkit-backdrop-filter:blur();backdrop-filter:blur();transition:background-color var(--duration-media) var(--ease-media), backdrop-filter var(--duration-media) var(--ease-media);background-color:#0000}.portfolio-viewer-dialog:modal:not([data-closing])::backdrop{background-color:var(--prototype-backdrop);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.video-dialog:modal:not([data-closing])::backdrop{background-color:var(--prototype-backdrop);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.cmsmv-root .cmsmv-dialog:modal:not([data-closing])::backdrop{background-color:var(--cmsmv-backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@starting-style{.portfolio-viewer-dialog:modal:not([data-closing])::backdrop{-webkit-backdrop-filter:blur();backdrop-filter:blur();background-color:#0000}.cmsmv-root .cmsmv-dialog:modal:not([data-closing])::backdrop{-webkit-backdrop-filter:blur();backdrop-filter:blur();background-color:#0000}.video-dialog:modal:not([data-closing])::backdrop{-webkit-backdrop-filter:blur();backdrop-filter:blur();background-color:#0000}}.cmsmv-root .cmsmv-dialog[open]{display:grid}.cmsmv-root .cmsmv-dialog:not([open]){pointer-events:none}.prototype-surface,.video-surface,.cmsmv-viewer-image{transform-origin:0 0}@media (prefers-reduced-motion:reduce){.portfolio-viewer-dialog::backdrop,.cmsmv-root .cmsmv-dialog::backdrop,.video-dialog::backdrop{transition:none}}@container (max-width:639px){.cmsmv-root .cmsmv-grid{columns:1}}.video-viewer{width:100%;max-width:var(--content-width)}.video-preview{position:relative}.video-expand{border-radius:var(--radius-media);cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;position:absolute;inset:0}.video-expand-icon,.video-close{border:1px solid var(--media-black);border-radius:var(--radius-media);background:var(--media-black);width:44px;height:44px;color:var(--media-white);box-shadow:var(--shadow-media-control);font-size:var(--font-size-icon);transition:color var(--duration-ui) ease;place-items:center;display:grid}.video-expand-icon{top:var(--space-4);right:var(--space-4);position:absolute}.video-expand:hover .video-expand-icon,.video-expand:focus-visible .video-expand-icon,.video-close:hover{color:var(--green)}.video-expand-control{inset:var(--space-4) var(--space-4) auto auto;width:44px;height:44px}.video-expand-control .video-expand-icon{inset:0}.video-dialog{width:calc(100vw - var(--space-8));max-width:1280px;max-height:calc(100dvh - var(--space-8));border-radius:var(--radius-media);color:var(--media-white);background:0 0;border:0;padding:0;overflow:visible}.video-surface{aspect-ratio:var(--video-aspect-ratio);max-height:calc(100dvh - var(--space-8));background:var(--media-black);border-radius:var(--radius-media);position:relative;overflow:hidden}.video-close{z-index:1;top:var(--space-4);right:var(--space-4);cursor:pointer;padding:0;position:absolute}.video-player{width:100%;height:100%;max-height:calc(100dvh - var(--space-8));object-fit:contain;display:block;position:absolute;inset:0}.cmsmv-root .cmsmv-control{width:44px;height:44px;color:var(--media-white);cursor:pointer;pointer-events:auto;opacity:var(--opacity-secondary);transition:opacity var(--duration-ui) ease;background:0 0;border:0;flex-shrink:0;place-items:center;padding:0;display:grid}.cmsmv-root .cmsmv-control:hover,.cmsmv-root .cmsmv-control:focus-visible{opacity:1}.video-preview{border-radius:var(--radius-media)}@media (prefers-reduced-motion:reduce){.cmsmv-root .cmsmv-control{transition:none}}.media-viewer-chrome{opacity:1;transition:opacity var(--duration-media) var(--ease-media)}.portfolio-viewer-toggle,.video-close{opacity:1;transition:color var(--duration-ui) ease, opacity var(--duration-media) var(--ease-media)}[data-closing]>.media-viewer-chrome,.portfolio-viewer-dialog[data-closing]>.portfolio-viewer-toggle,.video-dialog[data-closing]>.video-close{opacity:0;pointer-events:none}@media (prefers-reduced-motion:reduce){.media-viewer-chrome,.portfolio-viewer-toggle,.video-close{transition:none}}.cmsmv-tile[data-expanded=true],.video-preview[data-expanded=true]{visibility:hidden}
body[data-framer-theme=light]{--mspnw-shadow-strength:.5}body[data-framer-theme=dark]{--mspnw-shadow-strength:1}body[data-framer-theme] .framer-evvnc [data-framer-name=Terminal]{box-shadow:var(--shadow-terminal)}body[data-framer-theme] .framer-OmM6s [data-framer-name=Terminal]{box-shadow:var(--shadow-terminal-secondary)}[data-mspnw-theme-control]{--mspnw-theme-hover:0;color:color-mix(in srgb, var(--mspnw-theme-color) calc(100% - var(--mspnw-theme-hover) * 100%), var(--green));transition:--mspnw-theme-hover var(--duration-ui) ease}[data-mspnw-theme-control]:hover{--mspnw-theme-hover:1}[data-mspnw-theme-control]:focus-visible{outline-offset:2px;outline:2px solid}[data-mspnw-theme-track]{transition:transform var(--duration-ui) cubic-bezier(.048, 1, .3, 1)}@media (prefers-reduced-motion:reduce){[data-mspnw-theme-control],[data-mspnw-theme-track]{transition:none}}
*{box-sizing:border-box}html,body{-webkit-font-smoothing:antialiased;min-height:100%;margin:0;padding:0}body{background:var(--surface-top);color:var(--text);font:var(--font-size-body)/var(--line-height-body) var(--font-body);letter-spacing:var(--letter-spacing-body)}button,input,select,textarea{font:inherit;letter-spacing:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}button,a{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:4px}p,h1,h2,h3,h4,figure,blockquote{font-size:inherit;margin:0;font-weight:400}strong,b,.name,.section-title{font-family:var(--font-bold);font-weight:700}em{font-family:var(--font-oblique)}strong em,em strong{font-family:var(--font-bold-oblique)}::selection{background:var(--green);color:var(--on-accent)}.background-texture{pointer-events:none;z-index:1;position:fixed;inset:-50vh -50vw;overflow:hidden}.site-frame{z-index:2;padding:var(--space-8);justify-content:center;align-items:flex-start;min-height:100dvh;display:flex;position:relative}.terminal{width:100%;max-width:var(--terminal-width);padding:var(--space-1);border-radius:var(--radius-media);background:radial-gradient(100% 100% at 50% 0%,var(--surface-top) 0%,var(--surface) 100%);box-shadow:var(--shadow-terminal);outline:1px solid var(--border);outline-offset:-1px;border:0;overflow:hidden}.terminal-scroll{padding:var(--space-7);scrollbar-width:thin;scrollbar-color:var(--scrollbar) transparent;outline:none;max-height:calc(100dvh - 72px);overflow:hidden auto}.terminal-scroll::-webkit-scrollbar{width:8px}.terminal-scroll::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:12px}.site-header{gap:var(--space-2);margin-bottom:var(--space-8);width:calc(100% - var(--content-inset));flex-direction:column;display:flex}.command-row{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:22.4px;display:flex}.command-row>a{max-width:calc(100% - 40px)}.command-row [data-mspnw-theme-control]{flex-shrink:0}.identity{gap:var(--space-8);align-items:center;display:flex}.logo{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;width:81px;height:81px}.logo:active{cursor:grabbing}.logo img{width:100%;height:100%;image-rendering:pixelated;display:block}.identity-copy{gap:var(--space-1);min-width:0;color:var(--muted);flex-direction:column;display:flex}.name-row{gap:var(--space-4);align-items:center;display:flex}.name{color:var(--text)}.version{white-space:nowrap}.breadcrumb{flex-wrap:wrap;display:flex}.breadcrumb a:hover{text-decoration:underline}.command-display{padding:var(--space-1) var(--space-1) var(--space-2);margin-bottom:var(--space-6);border-bottom:0;min-height:40.4px;padding-bottom:5px;position:relative;overflow:clip}.command-display>div{gap:var(--space-2);background:var(--tint);border-radius:var(--radius-small);padding:var(--space-1);min-height:30.4px;display:flex}.prompt{color:var(--muted)}.tabs{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.tabs button,.tabs>a{padding:var(--space-2) var(--space-3);cursor:pointer;border-radius:var(--radius-small);transition:background-color var(--duration-ui) ease,color var(--duration-ui) ease;white-space:nowrap;background:0 0;border:0;display:block}.tabs button:hover,.tabs>a:hover{background:var(--accent-hover);color:var(--green)}.tabs button[aria-selected=true],.tabs>a[aria-current=page]{color:var(--on-accent);background:var(--green);font-family:var(--font-bold)}.tab-panel{animation:panel-in var(--duration-ui) ease both;margin-top:var(--space-12)}.project-grid{max-width:var(--content-width);grid-template-columns:repeat(3,minmax(0,1fr));gap:0;display:grid}.project-card{text-align:center;border-radius:var(--radius-control);transition:background-color var(--duration-ui) ease,color var(--duration-ui) ease;height:var(--card-height);min-height:var(--card-height);padding:var(--card-logo-offset) var(--space-6) var(--space-6);align-items:center;gap:var(--space-8);flex-direction:column;justify-content:flex-start;display:flex}.project-card:hover{background:var(--surface-hover)}.project-logo{max-width:100%;height:var(--card-logo-size);transition:color var(--duration-ui) ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.project-logo>svg{height:var(--card-logo-size);width:auto;max-width:160px;display:block}.project-title,.project-category{display:block}.project-category{color:var(--muted)}.section-title{padding:var(--space-1) var(--space-2);background:var(--tint);border-radius:var(--radius-small);color:var(--text);margin-bottom:var(--space-8)}.resume{gap:var(--space-8);flex-direction:column;display:flex}.resume>.section-title{margin:0}.resume-entry{padding:0 var(--space-2)}.resume-company,.resume-role{gap:var(--space-4);justify-content:space-between;align-items:baseline;display:flex}.resume-company h3{font-family:var(--font-bold);color:var(--text)}.resume-company>span,.resume-role>span{color:var(--muted);white-space:nowrap}.resume-role{justify-content:flex-start;gap:var(--space-4)}.resume-entry .rich-text{margin-top:var(--space-4)}.praise{gap:var(--space-10);flex-direction:column;display:flex}.praise figure{padding:0 var(--space-2)}.praise blockquote{border-left:2px solid var(--green);padding-left:var(--space-3);color:var(--text)}.praise figcaption{margin-top:var(--space-4);gap:var(--space-4);flex-direction:row;padding-left:14px;display:flex}.praise figcaption>span{color:var(--text);opacity:var(--opacity-disabled)}.contact-form{width:100%;max-width:624px;margin-left:var(--space-2)}.form-grid{gap:var(--space-6);grid-template-columns:1fr 1fr;display:grid}.form-grid label{min-width:0}.form-grid input,.form-grid select{border:1px solid var(--input-border);border-radius:var(--radius-control);width:100%;padding:7px var(--space-3);color:var(--text);background:0 0;height:40px}.form-grid input::placeholder,.form-grid select:invalid{color:var(--muted)}.form-grid option{color:var(--text);background:var(--surface)}.full-width{grid-column:1/-1}.submit{margin-top:var(--space-6);border-radius:var(--radius-control);background:var(--text);width:100%;color:var(--surface);padding:var(--space-2) var(--space-3);cursor:pointer;transition:background-color var(--duration-ui) ease;border:0}.submit:hover{background:var(--green);color:var(--on-accent)}.submit:disabled{opacity:.5;cursor:wait}.form-message{margin-top:var(--space-4)}.form-message.error{color:var(--error)}.honeypot,.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.case-study{color:var(--muted);margin-top:var(--space-12);--muted:color-mix(in srgb,var(--text) 72%,transparent);--token-f3ad02c4-79fe-4db9-9ace-c0371699f9b0:var(--muted)}.overview{margin-bottom:var(--space-12)}.case-section+.case-section{margin-top:var(--space-10);color:var(--text)}.project-role{gap:var(--space-4);margin:0 var(--space-2) var(--space-4);color:var(--muted);display:flex}.project-role strong{color:var(--text)}.rich-text{overflow-wrap:anywhere}.case-section>.rich-text{padding:0 var(--space-2)}.rich-text>.rich-paragraph+.rich-paragraph{margin-top:var(--space-4)}.rich-text ul,.rich-text ol{padding-left:var(--space-4);margin:0}.rich-text li .rich-paragraph{margin:0}.rich-text .media-table{margin:var(--space-6) 0}.rich-text .media-row{gap:var(--space-6);display:flex}.rich-text .media-cell{flex:1;min-width:0}.rich-text .media-row+.media-row{margin-top:var(--space-6)}.rich-text>.cmsmv-root,.rich-text>.content-image{margin:var(--space-6) 0}.case-study>.case-section:last-child>.rich-text:last-child>:last-child,.case-study>.case-section:last-child>.section-gallery:last-child>:last-child{margin-bottom:0}.rich-text .content-image{border-radius:var(--radius-media);max-width:100%;height:auto;display:block}.rich-text h2,.rich-text h2+.media-table,.rich-text h2+.cmsmv-root,.rich-text h2+.content-image,.rich-text h2+.portfolio-viewer{margin-top:0}.rich-text h3,.rich-text h4{font-family:var(--font-bold)}.rich-text h2{padding:var(--space-6) 0;margin:0}.rich-text h2+.media-table,.rich-text h2+.cmsmv-root,.rich-text h2+.content-image,.rich-text h2+.portfolio-viewer{margin-top:0}.rich-text h3,.rich-text h4{margin:var(--space-6) 0 var(--space-4)}.rich-text a{color:var(--green);text-decoration:underline}.section-gallery{margin-top:var(--space-6);gap:var(--space-6);flex-direction:column;display:flex}.portfolio-video{width:100%;aspect-ratio:var(--video-aspect-ratio);object-fit:cover;border-radius:var(--radius-media);background:0 0;display:block}.youtube{aspect-ratio:16/9;border-radius:var(--radius-media);border:0;width:100%;display:block}.rich-text>.portfolio-viewer{margin:var(--space-6) 0}.site-frame[data-entrance=initial]>.terminal{animation:terminal-in var(--duration-entrance) var(--ease-entrance) both}@keyframes terminal-in{0%{opacity:0;filter:blur(8px);transform:translateY(16px)}to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes panel-in{0%{opacity:0}to{opacity:1}}.home-content{width:calc(100% - var(--content-inset))}.project-card[href$=\/hopworks] .project-logo svg{width:158px;height:28px}.project-card[href$=\/cava] .project-logo svg{width:86px;height:28px}.project-card[href$=\/522productions] .project-logo svg{width:58px;height:33px}.command-display,.home-content{width:calc(100% - var(--content-inset))}.project-tabs{gap:var(--space-4)}.project-tabs,.case-study{width:calc(100% - var(--content-inset))}.command-display>.command-line{transition:background-color var(--duration-command) var(--ease-entrance);background:0 0}.command-display[data-settled=true]>.command-line{background:var(--tint)}.command-divider{background:var(--text);height:1px;transition:background-color var(--duration-command) ease,opacity var(--duration-command) ease;position:absolute;left:0;right:0}.command-divider-top{animation:command-top-in var(--duration-command) cubic-bezier(0,.68,0,1) 1s both;top:0}.command-divider-bottom{animation:command-bottom-in var(--duration-command) cubic-bezier(0,.68,0,1) 1s both;bottom:0}.command-display[data-settled=true]>.command-divider-top{background:0 0}.command-display[data-settled=true]>.command-divider-bottom{background:var(--green)}.command-copy{align-items:center;gap:2px;min-height:22.4px;display:inline-flex;position:relative}.command-cursor{background:var(--text);width:12px;height:24px;animation:1.06s step-end infinite command-cursor-blink;display:inline-block;position:absolute;top:50%;left:calc(100% + 2px);transform:translateY(-50%)}.command-display[data-settled=true] .command-cursor{display:none}@keyframes command-top-in{0%{opacity:0;transform:translateY(48px)}to{opacity:1;transform:translateY(0)}}@keyframes command-bottom-in{0%{opacity:0;transform:translateY(-48px)}to{opacity:1;transform:translateY(0)}}@keyframes command-cursor-blink{0%,49.99%{opacity:1}50%,to{opacity:0}}.side-project-trigger{min-width:0;display:block;position:relative}.side-project-trigger>.project-card{width:100%}.side-project-icon{width:var(--card-logo-size);height:var(--card-logo-size);background:currentColor;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-source-type:alpha;mask-mode:alpha}.project-card.disabled,.project-card.disabled:hover{color:var(--text);opacity:var(--opacity-disabled);cursor:not-allowed;background:0 0}.project-card.disabled:focus-visible{outline:2px solid var(--green);outline-offset:4px}.project-tooltip{z-index:100;pointer-events:none;filter:drop-shadow(var(--shadow-tooltip));animation:tooltip-in var(--duration-tooltip) cubic-bezier(0,.21,0,1) both;position:fixed}@keyframes tooltip-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.resume-entry .rich-text ul,.resume-entry .rich-text ol{opacity:var(--opacity-secondary)}.praise figcaption strong{font-family:var(--font-body);color:var(--text);opacity:var(--opacity-secondary);font-weight:400}.youtube-poster{aspect-ratio:16/9;border-radius:var(--radius-media);background:var(--media-black);cursor:pointer;border:0;width:100%;padding:0;display:block;position:relative;overflow:hidden}.youtube-poster>img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.youtube-play{width:68px;height:48px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.youtube-play-bg{fill:var(--youtube-control);fill-opacity:.8;transition:fill var(--duration-fast) cubic-bezier(.4,0,1,1),fill-opacity var(--duration-fast) cubic-bezier(.4,0,1,1)}.youtube-poster:hover .youtube-play-bg,.youtube-poster:focus-visible .youtube-play-bg{fill:var(--youtube-accent);fill-opacity:1}.command-display[data-animate=false]>.command-divider{animation:none}.project-card:not(.disabled):hover .project-logo{color:var(--green)}.project-card.disabled:hover .project-logo{color:var(--text)}@media (max-width:1024px) and (min-width:811px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:810px){body{--font-size-body:var(--font-size-small)}.terminal-scroll{padding:var(--space-4)}.identity{gap:var(--space-6)}.name-row{align-items:flex-start;gap:var(--space-1);flex-direction:column}.command-row{min-height:19.2px}.command-display>div{min-height:27.2px}.project-grid{grid-template-columns:minmax(0,1fr)}.project-logo>svg{max-width:150px}.resume-company,.resume-role,.project-role{flex-direction:column;gap:0}.resume-company>span,.resume-role>span{white-space:normal}.form-grid{gap:var(--space-4);grid-template-columns:1fr}.contact-form{margin-left:0}.rich-text .media-row{flex-direction:column}.project-tabs{gap:var(--space-1)}.project-tabs>a{padding:var(--space-2)}.praise figcaption{gap:var(--space-1) var(--space-4);flex-wrap:wrap}.command-display{min-height:37.2px}.command-copy{min-height:19.2px}.command-cursor{width:10px;height:19.2px}}@media (max-width:360px){.site-frame{padding:var(--space-5)}.terminal-scroll{max-height:calc(100dvh - 48px)}.identity{gap:var(--space-4)}.logo{width:64px;height:64px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.command-display>.command-line{background:var(--tint)}.command-divider-top,.command-cursor{display:none}.command-divider-bottom{background:var(--green)}.terminal,.project-tooltip,.command-divider{filter:none;animation:none!important}}
