:root{--desktop:#008080;--desktop-dark:#006d6d;--win:#c0c0c0;--white:#ffffff;--light:#dfdfdf;--mid:#808080;--dark:#404040;--black:#080808;--navy:#000080;--navy-light:#1084d0;--green:#008000;--yellow:#ffff00;--font:"Courier New",Courier,monospace}*{box-sizing:border-box}html{min-width:320px;background:var(--desktop)}body{margin:0;overflow:hidden;color:var(--black);font-family:var(--font);font-size:15px;line-height:1.5}a{color:var(--navy);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{background:var(--navy);color:var(--white)}a:focus-visible,button:focus-visible{outline:2px dotted var(--black);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.15}::selection{color:var(--white);background:var(--navy)}.desktop{height:100vh;height:100dvh;overflow:hidden;padding:32px 32px 68px 132px;background-color:var(--desktop);background-image:radial-gradient(rgba(255,255,255,.09) 1px,transparent 0);background-size:4px 4px;position:relative}.desktop:before{content:"e10null.local";position:fixed;right:34px;top:52px;color:rgba(255,255,255,.4);font-weight:700;font-size:22px;text-shadow:1px 1px rgba(0,0,0,.3)}.skip-link{position:fixed;z-index:99;left:8px;top:-50px;padding:7px 12px;color:#000;background:#fff;border:2px solid #000}.skip-link:focus{top:8px}.desktop-workspace{width:100%;height:100%;margin:0 auto;position:relative;z-index:1;overflow:hidden}.desktop-icons{position:fixed;z-index:2;left:18px;top:20px;bottom:52px;width:88px;display:flex;flex-direction:column;gap:13px;align-items:center}.desktop-icon{width:92px;color:var(--white);font-size:12px;font-weight:700;text-align:center;text-decoration:none;text-shadow:1px 1px #000,-1px -1px rgba(0,0,0,.35);line-height:1.1}.desktop-icon:focus-visible,.desktop-icon:hover{color:#fff;background:transparent}.desktop-icon:focus-visible .desktop-icon__label,.desktop-icon:hover .desktop-icon__label{background:var(--navy);outline:1px dotted #fff}.desktop-icon__image{display:grid;place-items:center;margin:0 auto 4px;width:42px;height:40px;text-shadow:none;background:transparent}.desktop-icon__label{display:inline;padding:2px 4px;background:rgba(0,62,62,.78);box-decoration-break:clone;-webkit-box-decoration-break:clone}.pixel-icon{display:block;position:relative;flex:0 0 auto;image-rendering:pixelated}.pixel-icon__glyph,.pixel-icon__glyph:after,.pixel-icon__glyph:before{position:absolute;content:"";image-rendering:pixelated}.pixel-icon--home .pixel-icon__glyph{left:3px;top:13px;width:26px;height:17px;background:#c0c0c0;border:2px solid #000;box-shadow:inset 2px 2px #fff,inset -2px -2px #808080}.pixel-icon--home .pixel-icon__glyph:before{left:2px;top:-11px;width:19px;height:17px;background:#000080;border:2px solid #000;transform:rotate(45deg)}.pixel-icon--home .pixel-icon__glyph:after{left:10px;bottom:0;width:7px;height:11px;background:#008080;border:2px solid #000}.pixel-icon--projects .pixel-icon__glyph{left:2px;top:8px;width:29px;height:22px;background:#ffff00;border:2px solid #000;box-shadow:inset 2px 2px #fff,inset -2px -2px #808000,3px 3px #404040}.pixel-icon--projects .pixel-icon__glyph:before{left:1px;top:-6px;width:13px;height:7px;background:#ffff00;border:2px solid #000;border-bottom:0}.pixel-icon--projects .pixel-icon__glyph:after{left:5px;top:7px;width:17px;height:2px;background:#808000;box-shadow:0 5px #808000,0 10px #808000}.pixel-icon--blog .pixel-icon__glyph,.pixel-icon--resume .pixel-icon__glyph{left:6px;top:2px;width:23px;height:29px;background:#fff;border:2px solid #000;box-shadow:inset 2px 2px #dfdfdf,3px 3px #404040}.pixel-icon--blog .pixel-icon__glyph:before{left:-5px;top:3px;width:3px;height:3px;background:#000080;box-shadow:0 6px #000080,0 12px #000080,0 18px #000080}.pixel-icon--blog .pixel-icon__glyph:after{left:5px;top:6px;width:12px;height:2px;background:#000080;box-shadow:0 5px #000080,0 10px #000080,0 15px #000080}.pixel-icon--resume .pixel-icon__glyph:before{right:-2px;top:-2px;border-color:transparent transparent #808080;border-style:solid;border-width:0 0 8px 8px}.pixel-icon--resume .pixel-icon__glyph:after{left:4px;top:7px;width:13px;height:3px;background:#000;box-shadow:0 6px #000,0 12px #000}.pixel-icon--certifications .pixel-icon__glyph{left:5px;top:2px;width:23px;height:25px;background:#fff;border:2px solid #000;box-shadow:inset 2px 2px #dfdfdf,3px 3px #404040}.pixel-icon--certifications .pixel-icon__glyph:before{left:5px;top:5px;width:9px;height:9px;background:#ffff00;border:2px solid #000;border-radius:50%;box-shadow:0 0 0 2px #ff8000}.pixel-icon--certifications .pixel-icon__glyph:after{left:7px;top:16px;width:5px;height:10px;background:#000080;-webkit-clip-path:polygon(0 0,100% 0,100% 100%,50% 70%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,50% 70%,0 100%)}.pixel-icon--lab .pixel-icon__glyph{left:2px;top:3px;width:13px;height:11px;background:#c0c0c0;border:2px solid #000;box-shadow:inset 2px 2px #fff,inset -2px -2px #808080,15px 12px 0 #c0c0c0,15px 12px 0 2px #000}.pixel-icon--lab .pixel-icon__glyph:before{left:3px;top:3px;width:7px;height:4px;background:#00ffff;box-shadow:15px 12px #00ffff}.pixel-icon--lab .pixel-icon__glyph:after{left:11px;top:11px;width:11px;height:3px;background:#000;box-shadow:-7px 7px #000,7px 7px #000}.pixel-icon--about .pixel-icon__glyph{left:3px;top:18px;width:27px;height:13px;background:#000080;border:2px solid #000;border-radius:50% 50% 0 0}.pixel-icon--about .pixel-icon__glyph:before{left:7px;top:-17px;width:11px;height:13px;background:#ffff00;border:2px solid #000;border-radius:50%}.pixel-icon--about .pixel-icon__glyph:after{left:10px;top:-12px;width:2px;height:2px;background:#000;box-shadow:5px 0 #000,2px 5px #000,3px 5px #000,4px 5px #000}.mobile-nav{display:none}.utility-links{position:fixed;z-index:5;right:24px;top:18px;display:flex;gap:8px;padding:3px 7px;color:#fff;background:rgba(0,70,70,.86);border:1px dotted #fff;font-size:12px}.utility-links a{color:#fff}.window{background:var(--win);padding:3px;border:2px solid;border-color:var(--white) var(--black) var(--black) var(--white);box-shadow:2px 2px 0 rgba(0,0,0,.28)}.managed-window{position:relative;transform:translate(var(--window-x,0),var(--window-y,0))}.window--minimized{display:none!important}.window--maximized{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;transform:none!important}.window--dragging{-webkit-user-select:none;-moz-user-select:none;user-select:none}.window--inactive .titlebar{color:#e9e9e9;background:linear-gradient(90deg,#666,#999)}.titlebar{min-height:26px;padding:3px 3px 3px 6px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:#fff;background:linear-gradient(90deg,var(--navy),var(--navy-light));font-family:Arial,sans-serif;font-weight:700;font-size:13px;letter-spacing:0}.managed-window .titlebar{cursor:move;touch-action:none}.managed-window .titlebar:focus-visible{outline:2px dotted #fff;outline-offset:-4px}.titlebar__title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.titlebar__controls{display:flex;flex:0 0 auto;gap:3px;color:#000}.titlebar__controls a,.titlebar__controls button{width:19px;height:18px;display:grid;place-items:center;padding:0;color:#000;line-height:1;text-decoration:none;text-shadow:none;background:var(--win);border:2px outset var(--white);border-radius:0;font:700 13px Arial,sans-serif;cursor:default}.titlebar__controls a:hover,.titlebar__controls button:hover{color:#000;background:var(--light)}.titlebar__controls a:active,.titlebar__controls button:active{border-style:inset}.menubar{min-height:28px;padding:4px 8px;border-bottom:1px solid var(--mid);font-family:Arial,sans-serif;font-size:13px}.menubar a{color:#000;text-decoration:none}.window__body{margin:2px 0;border:2px solid;border-color:var(--mid) var(--white) var(--white) var(--mid);background:#fff}.statusbar{display:flex;align-items:center;min-height:25px;padding:2px 7px;border:1px solid;border-color:var(--mid) var(--white) var(--white) var(--mid);font:12px Arial,sans-serif}.statusbar a{margin-left:auto}.taskbar{position:fixed;z-index:20;left:0;right:0;bottom:0;height:43px;gap:5px;padding:4px 6px;border-top:2px solid var(--white);box-shadow:0 -1px var(--light);font:700 13px Arial,sans-serif}.start,.taskbar{display:flex;align-items:center;background:var(--win)}.start{min-width:86px;height:33px;justify-content:center;gap:7px;color:#000;text-decoration:none;border:2px outset var(--white)}.start span{color:#e00000;font-size:23px}.start:hover{color:#000;background:var(--light)}.start:active{border-style:inset}.taskbar__divider{width:3px;align-self:stretch;border-left:1px solid var(--mid);border-right:1px solid #fff}.taskbar__windows{min-width:0;flex:1 1 auto;display:flex;gap:4px;overflow-x:auto}.taskbar__app{width:min(220px,25vw);height:33px;flex:0 1 220px;display:flex;align-items:center;gap:8px;padding:0 10px;color:#000;background:var(--win);border:2px outset #eee;border-radius:0;overflow:hidden;white-space:nowrap;font:700 12px Arial,sans-serif}.taskbar__app>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis}.taskbar__app--active{background:#dedede;border-style:inset}.taskbar__app span{color:var(--navy)}.taskbar__link{height:29px;display:grid;place-items:center;padding:0 9px;color:#000;background:var(--win);border:2px outset #fff;font-size:12px;text-decoration:none}.taskbar__link:hover{color:#fff}.tray{margin-left:auto;height:33px;min-width:91px;display:grid;place-items:center;border:2px inset #eee;font-weight:400}.home-layout{width:min(1020px,100%);display:grid;grid-template-rows:minmax(0,1.75fr) minmax(0,.85fr);grid-gap:12px;gap:12px;overflow:visible}.hero-window,.home-layout{height:100%;min-height:0;margin:0 auto}.hero-window{width:min(790px,100%);display:flex;flex-direction:column}.hero-window>.menubar,.hero-window>.statusbar,.hero-window>.titlebar{flex:0 0 auto}.hero-window>.window__body{min-height:0;flex:1 1 auto;overflow-y:auto;scrollbar-gutter:stable}.terminal{min-height:100%;padding:24px 28px;color:#d7d7d7;background:#050505;box-shadow:inset 0 0 0 1px #222;cursor:text}.terminal p{margin-bottom:18px}.terminal__line{color:#8e8e8e}.terminal h1{margin:4px 0 13px 24px;color:#fff;font-size:clamp(28px,6vw,46px);letter-spacing:0}.terminal__output{margin-left:24px;max-width:650px;color:#fff;white-space:pre-line}.terminal__entry{margin:0 0 12px}.terminal__entry pre{margin:4px 0 0 24px;color:#fff;white-space:pre-wrap;font:inherit}.terminal__form{display:flex;align-items:baseline;gap:8px}.terminal__form label{flex:0 0 auto}.terminal__form input{min-width:0;flex:1 1;padding:0;color:#fff;caret-color:#fff;background:transparent;border:0;outline:0;font:inherit}.terminal__form:focus-within{outline:1px dotted #bfbfbf;outline-offset:4px}.terminal__completion{min-height:1.5em;margin:5px 0 0 24px!important;color:#bdbdbd;font-size:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.prompt{color:#53ff53;font-weight:700}.status-light{display:inline-block;width:9px;height:9px;background:#38e73b;border:1px solid #aaffaa;box-shadow:0 0 0 1px #075f09}.cursor{color:#fff;background:#bdbdbd}.home-grid{height:100%;min-height:0;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(290px,.7fr);grid-gap:12px;gap:12px;align-items:stretch}.home-grid>.window{height:100%;min-height:0;display:flex;flex-direction:column}.home-grid>.window>.statusbar,.home-grid>.window>.titlebar{flex:0 0 auto}.home-grid>.window>.window__body{min-height:0;flex:1 1 auto;overflow-y:auto;scrollbar-gutter:stable}.file-list,.link-list,.note-list,.tag-list{margin:0;padding:0;list-style:none}.file-list li{min-height:72px;padding:10px 12px;display:grid;grid-template-columns:36px 1fr auto;grid-gap:9px;gap:9px;align-items:center;border-bottom:1px dotted #999}.file-list li:last-child{border-bottom:0}.file-list small,.file-list strong{display:block}.file-list small{margin-top:3px;font-family:Arial,sans-serif}.file-list code,.file-list small{color:#505050;font-size:12px}.file-icon{width:28px;height:31px;display:grid;place-items:center;color:#001878;background:#ffffc4;border:1px solid #666}.note-list{padding:4px 13px}.note-list li{padding:12px 0;border-bottom:1px dotted #999}.note-list li:last-child{border:0}.note-list time{display:block;margin-bottom:3px;color:#555;font-size:12px}.draft-label{display:inline-block;margin-bottom:4px;padding:1px 5px;color:#000;background:#ffff77;border:1px solid #777;font-size:10px;font-weight:700;text-transform:uppercase}.page-window{width:min(1020px,100%);height:100%;margin:0 auto;display:flex;flex-direction:column}.page-window>.menubar,.page-window>.statusbar,.page-window>.titlebar{flex:0 0 auto}.page-window>.window__body{min-height:0;flex:1 1 auto;overflow-y:auto;scrollbar-gutter:stable}.page-header{min-height:190px;display:flex;align-items:center;gap:28px;padding:30px clamp(22px,5vw,58px);background:#f0f0f0;border-bottom:1px solid #999}.page-header h1{margin-bottom:8px;font-size:clamp(30px,5vw,48px);letter-spacing:0}.page-header p:last-child{max-width:650px;margin:0}.eyebrow{margin-bottom:8px;color:#545454;font-size:12px;font-weight:700;text-transform:uppercase}.folder-art,.lab-art{flex:0 0 auto;width:88px;height:70px;display:grid;place-items:center;color:#9a7200;background:#ffda37;border:3px outset #fff2a0;box-shadow:5px 5px #a0a0a0;font:700 49px Arial,sans-serif}.project-row{min-height:132px;padding:22px clamp(18px,4vw,40px);display:grid;grid-template-columns:46px 1fr;grid-gap:17px;gap:17px;border-bottom:1px dotted #777;scroll-margin-top:20px}.project-row--featured{padding-top:30px;padding-bottom:30px;background:#ffffdf;border:2px solid #000080;box-shadow:inset 4px 0 #000080}.project-row--featured .project-icon{background:#ffff00}.project-row:last-child{border-bottom:0}.project-icon{width:42px;height:48px;display:grid;place-items:center;color:#000070;background:#ffffd7;border:2px outset #fff;font-size:25px}.project-title{display:flex;align-items:center;flex-wrap:wrap;gap:9px}.project-title h2{margin:0;font-size:21px}.project-row p{margin:7px 0 10px}.project-subtitle{font-weight:700}.feature-list{margin-top:15px;padding:7px 10px;background:#f1f1f1;border:1px solid #999}.feature-list summary{cursor:pointer;font-weight:700}.feature-list ul{column-count:2;padding-left:20px}.project-link-row{display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin-top:16px!important}.project-link-row .button{margin:0}.case-study-window>.window__body{min-height:0}.case-study{background:#fff}.case-study__header{min-height:220px;display:flex;align-items:flex-end;justify-content:space-between;gap:30px;padding:clamp(30px,6vw,68px);color:#fff;background:#111;border-bottom:7px solid #000080}.case-study__header h1{max-width:780px;margin:0 0 9px;font-size:clamp(34px,7vw,62px)}.case-study__header .eyebrow{color:#bdbdbd}.case-study__subtitle{margin:0;color:#eee;font-size:17px;font-weight:700}.case-study__actions{min-width:180px;display:flex;flex-direction:column;gap:9px}.case-study__actions .button{margin:0;color:#000;text-align:center}.case-study__summary{padding:24px clamp(22px,6vw,68px);background:#ffffd8;border-bottom:1px solid #999;font-size:17px;font-weight:700}.case-study__summary p{max-width:80ch;margin:0}.case-study__role{background:#f0f0f0}.case-study__role p{margin:0;font-weight:700}.case-study>section,.case-study__split{padding:38px clamp(22px,6vw,68px);border-bottom:1px dotted #777;scroll-margin-top:20px}.case-study>section h2,.case-study__split h2{margin-bottom:17px;font-size:21px;text-transform:uppercase}.case-study>section>p,.case-study__split section>p{max-width:82ch}.case-study__columns{column-count:2;max-width:900px;padding-left:21px}.case-study__columns li{margin-bottom:6px;page-break-inside:avoid;break-inside:avoid}.architecture{display:flex;align-items:stretch;margin:24px 0;padding:0;list-style:none;overflow-x:auto}.architecture li{min-width:145px;flex:1 0 145px;display:flex;align-items:center}.architecture li span{min-height:78px;flex:1 1;display:grid;place-items:center;padding:10px;background:#e8e8e8;border-color:#fff #555 #555 #fff;border-style:solid;border-width:2px;text-align:center;font-size:12px;font-weight:700}.architecture li b{flex:0 0 28px;color:#000080;font-size:21px;text-align:center}.diagram-note{padding:9px 12px;color:#333;background:#f2f2f2;border-left:4px solid #808080}.case-study__tags li,.diagram-note{font-size:12px}.technology-groups{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.technology-groups>div{padding:13px;background:#f0f0f0;border-color:#fff #666 #666 #fff;border-style:solid;border-width:2px}.technology-groups h3{margin-bottom:9px;font-size:14px}.technology-groups ul{margin:0;padding-left:18px;font-size:12px}.case-study__split{display:grid;grid-template-columns:1fr 1fr;grid-gap:clamp(25px,6vw,70px);gap:clamp(25px,6vw,70px)}.case-study__split section{min-width:0}.case-study>section>ul,.case-study__split ul{padding-left:21px}.case-study>section>ul li,.case-study__split li{margin-bottom:8px}.screenshot-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.screenshot-slot{margin:0;background:#fff;border-color:#fff #555 #555 #fff;border-style:solid;border-width:2px;box-shadow:2px 2px #aaa}.screenshot-slot__placeholder{aspect-ratio:4/3;display:grid;place-items:center;color:#00ff66;background:repeating-linear-gradient(0deg,#090909,#090909 3px,#101010 0,#101010 4px);border:3px inset #ddd}.screenshot-slot__placeholder span{padding:4px 7px;border:1px solid #00aa44;font-size:12px}.screenshot-slot>a{display:block;color:inherit;background:#000;border:3px inset #ddd}.screenshot-slot>a:hover{background:#000}.screenshot-slot img{width:100%;height:auto;aspect-ratio:16/9;display:block;object-fit:contain}.screenshot-slot figcaption{min-height:82px;padding:10px;font:12px/1.4 Arial,sans-serif}.case-study__pager{display:grid;grid-template-columns:1fr auto 1fr;grid-gap:18px;gap:18px;padding:25px clamp(22px,6vw,68px);background:#ededed}.case-study__pager a:last-child{text-align:right}.badge,.process{display:inline-block;padding:1px 6px;border:1px solid #444;background:#ddd;font-size:10px;font-weight:700;text-transform:uppercase}.badge--active,.process--growing,.process--online{color:#004700;background:#baffba}.tag-list{display:flex;flex-wrap:wrap;gap:5px}.tag-list li{padding:1px 6px;color:#333;background:#eee;border:1px solid #aaa;font-size:11px}.text-header{min-height:180px}.blog-list article{min-height:138px;padding:25px clamp(20px,5vw,58px);display:grid;grid-template-columns:100px 1fr 28px;grid-gap:20px;gap:20px;border-bottom:1px dotted #777}.blog-list article>time{color:#555;font-size:12px}.blog-list h2{margin:0 0 7px;font-size:21px}.blog-list p{margin-bottom:12px}.arrow-link{align-self:center;font-size:24px;text-decoration:none}.article-window>.window__body{min-height:0}.prose{max-width:820px;min-height:650px;padding:clamp(30px,6vw,72px)}.prose header{margin-bottom:45px;padding-bottom:25px;border-bottom:2px solid #000}.prose header h1{margin-bottom:12px;font-size:clamp(30px,5vw,48px)}.prose header time{color:#555;font-size:13px}.prose h2{margin-top:42px;font-size:23px}.prose p{max-width:72ch}.prose pre{overflow-x:auto;padding:16px;color:#e5e5e5;background:#111;border:3px inset #bbb}.prose code{font-family:var(--font)}.prose blockquote{margin:28px 0;padding:12px 18px;background:#ffffd2;border-left:5px solid #9a7a00}.prose blockquote p{margin:0}.lab-art{color:#004b00;background:#bfffc4}.lab-grid{display:grid;grid-template-columns:1fr 1fr}.lab-item{min-height:230px;padding:20px;border-right:1px dotted #777;border-bottom:1px dotted #777}.lab-item:nth-child(2n){border-right:0}.lab-item__head{display:flex;justify-content:space-between;margin-bottom:14px;font-size:11px}.lab-output{min-height:63px;display:grid;place-items:center;margin-bottom:15px;padding:8px;color:#8cff8c;background:#080808;border:3px inset #ddd;font-weight:700;font-size:clamp(16px,3vw,26px)}.lab-item h2{margin-bottom:7px;font-size:19px}.lab-item p{margin:0}.resume-toolbar{gap:5px;padding:5px}.resume-actions,.resume-toolbar{display:flex;background:var(--win);border-bottom:1px solid #777}.resume-actions{gap:8px;padding:8px}.resume-download{font-weight:700}.resume-toolbar span{min-width:120px;padding:2px 7px;background:#fff;border:2px inset #ddd;font:12px Arial}.resume-toolbar b,.resume-toolbar i,.resume-toolbar u{width:27px;display:grid;place-items:center;border:2px outset #fff;font-family:serif}.resume-sheet{margin:26px auto;width:min(780px,calc(100% - 32px));padding:clamp(25px,6vw,65px);background:#fff;box-shadow:3px 3px 0 #777;border:1px solid #888}.resume-sheet>header{display:flex;justify-content:space-between;gap:25px;padding-bottom:28px;border-bottom:3px double #000}.resume-sheet h1{margin-bottom:5px;font-size:clamp(31px,6vw,46px)}.resume-summary{max-width:510px;margin:12px 0 0;font-size:13px;line-height:1.45}.resume-sheet address{font-style:normal;font-size:12px;text-align:right}.resume-sheet section{padding-top:27px}.resume-sheet section>h2{padding-bottom:5px;border-bottom:1px solid #000;font-size:17px;text-transform:uppercase}.resume-row{display:grid;grid-template-columns:105px 1fr;grid-gap:20px;gap:20px;margin:24px 0}.resume-row time{color:#555;font-size:11px}.resume-row h3{margin:0 0 2px;font-size:16px}.resume-row p{margin-bottom:5px}.org{color:#555;font-size:12px}.skills{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:22px;gap:22px}.resume-project{margin:17px 0}.resume-project h3{margin-bottom:4px}.resume-project p{margin:0}.resume-certification{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:14px 0;padding-bottom:10px;border-bottom:1px dotted #888}.resume-certification h3,.resume-certification p{margin:0}.resume-certification .button{flex:0 0 auto;margin:0}.resume-note{color:#555;font-size:12px}.education-entry{margin:10px 0}.education-entry p{margin:2px 0 0}.about-layout{width:min(820px,100%);height:100%;min-height:0;margin:0 auto;padding:0;display:grid;grid-template-columns:1fr 230px;grid-template-rows:1fr;grid-gap:18px;gap:18px;align-items:start;overflow:hidden}.about-window{height:100%;min-height:0;display:flex;flex-direction:column}.about-window>.statusbar,.about-window>.titlebar{flex:0 0 auto}.about-window>.window__body{min-height:0;flex:1 1 auto;overflow-y:auto;scrollbar-gutter:stable}.about-hero{display:flex;align-items:center;gap:24px;padding:28px;background:#efefef;border-bottom:1px solid #888}.about-hero h1{margin-bottom:4px;font-size:clamp(29px,5vw,42px)}.about-hero p:last-child{margin:0}.pixel-portrait{flex:0 0 auto;width:106px;height:93px;position:relative;display:grid;place-items:center;background:#aaa;border:5px outset #eee;image-rendering:pixelated}.pixel-portrait:before{content:"";position:absolute;width:70px;height:51px;top:10px;background:#002020;border:6px inset #ddd}.pixel-portrait:after{content:"";position:absolute;width:46px;height:14px;bottom:5px;background:#777;border:2px outset #ddd}.crt-face{z-index:1;margin-top:-11px;color:#5dff72;font-size:15px}.about-copy{padding:25px 28px 10px}.system-info{margin:0 28px 28px;border:1px solid #777}.system-info div{display:grid;grid-template-columns:110px 1fr;border-bottom:1px solid #aaa}.system-info div:last-child{border:0}.system-info dd,.system-info dt{margin:0;padding:6px 9px}.system-info dt{font-weight:700;background:#e7e7e7;border-right:1px solid #aaa}.link-list{padding:10px}.link-list li{display:flex;gap:8px;padding:8px;border-bottom:1px dotted #999}.dialog-window{width:min(470px,100%);margin:20vh auto 0}.dialog{min-height:180px;padding:30px;display:flex;gap:24px;align-items:flex-start;background:var(--win)}.dialog__icon{flex:0 0 auto;width:47px;height:47px;display:grid;place-items:center;color:#fff;background:#d10000;border-radius:50%;font:700 32px Arial}.dialog h1{font-size:20px}.button{display:inline-block;margin-top:10px;padding:5px 13px;color:#000;background:var(--win);border:2px outset #fff;text-decoration:none}.button:hover{color:#000;background:#ddd}.plain-view{width:min(800px,100%);height:100%;margin:0 auto;padding:clamp(25px,6vw,65px);overflow-y:auto;scrollbar-gutter:stable;background:#fff;border:2px solid #000}.plain-view>nav{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:55px;padding-bottom:12px;border-bottom:1px solid #000}.plain-view>header{margin-bottom:45px}.plain-view h1{margin-bottom:7px;font-size:clamp(34px,7vw,56px)}.plain-role{font-weight:700}.plain-view>section{margin-top:42px;scroll-margin-top:20px}.plain-view section h2{padding-bottom:7px;border-bottom:2px solid #000}.plain-view section article{margin:27px 0}.certificate-art{flex:0 0 auto;width:82px;height:88px;display:grid;place-items:center;color:#000080;background:#fff;border:3px outset #fff;box-shadow:5px 5px #888;font:700 40px Arial,sans-serif}.certificate-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px;padding:clamp(22px,5vw,48px)}.certificate-card{min-width:0;background:#f0f0f0;border-color:#fff #555 #555 #fff;border-style:solid;border-width:2px;box-shadow:2px 2px #999}.certificate-card__preview{display:block;color:inherit;background:#222;border-bottom:2px inset #ddd}.certificate-card__preview:hover{background:#222}.certificate-card__preview img{width:100%;height:auto;aspect-ratio:792/612;display:block;object-fit:contain}.certificate-card__body{padding:17px}.certificate-card__body h2{min-height:2.3em;margin-bottom:8px;font-size:19px}.certificate-card__actions{display:flex;align-items:center;flex-wrap:wrap;gap:13px;margin-top:15px}.certificate-card__actions .button{margin:0}.verification-note{margin:0;padding:13px clamp(22px,5vw,48px);color:#333;background:#ffffd4;border-top:1px solid #999;font-size:12px}.credential-window>.window__body{min-height:0;display:flex;flex-direction:column;overflow:hidden}.credential-toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 22px;background:#ededed;border-bottom:1px solid #777}.credential-toolbar h1{margin-bottom:4px;font-size:clamp(21px,4vw,30px)}.credential-toolbar p{margin-bottom:0}.credential-toolbar>div:last-child{display:flex;flex:0 0 auto;gap:8px}.credential-toolbar .button{margin:0}.credential-viewer{min-height:0;flex:1 1 auto;padding:18px;background:#5d5d5d}.credential-viewer object{width:100%;height:100%;display:block;background:#fff;border:3px inset #ddd}.credential-viewer object img{width:100%;height:100%;object-fit:contain}.credential-privacy{margin:0;padding:10px 16px;color:#333;background:#ffffd4;border-top:1px solid #777;font-size:12px}.system-effect{position:fixed;z-index:1000;inset:0;pointer-events:all}.system-effect pre{margin:0;white-space:pre-wrap;font:15px/1.55 var(--font)}.system-effect--deleting{display:flex;align-items:flex-end;padding:28px 28px 65px;color:#fff;background:transparent}.system-effect--deleting pre{padding:13px 16px;background:rgba(0,0,0,.9);border:1px solid #777}.system-effect--panic{display:grid;place-items:start;padding:clamp(25px,7vw,90px);color:#cfcfcf;background:#000}.system-effect--panic pre{color:#fff}.system-effect--restoring{display:grid;place-items:center;padding:20px;background:#000}.restore-dialog{width:min(430px,100%);padding:3px;color:#000;background:var(--win);border-color:#fff #000 #000 #fff;border-style:solid;border-width:2px;box-shadow:3px 3px #222}.restore-dialog__title{padding:4px 6px;color:#fff;background:linear-gradient(90deg,var(--navy),var(--navy-light));font:700 13px Arial,sans-serif}.restore-dialog__body{display:flex;gap:17px;padding:25px 22px;border-color:#808080 #fff #fff #808080;border-style:solid;border-width:2px}.restore-dialog__body>span{color:var(--navy);font-size:38px}.restore-dialog__body p{margin:4px 0 13px;font:12px Arial,sans-serif}.restore-progress{width:100%;height:19px;padding:2px;background:#fff;border:2px inset #ddd}.restore-progress span{width:100%;height:100%;display:block;background:repeating-linear-gradient(90deg,#000080 0 12px,transparent 12px 15px);animation:restore-progress 1s steps(8) both;transform-origin:left}.system-wipe--deleting .desktop-icon{animation:system-delete 80ms step-end forwards}.system-wipe--deleting .desktop-icon:first-child{animation-delay:.1s}.system-wipe--deleting .desktop-icon:nth-child(2){animation-delay:.23s}.system-wipe--deleting .desktop-icon:nth-child(3){animation-delay:.36s}.system-wipe--deleting .desktop-icon:nth-child(4){animation-delay:.49s}.system-wipe--deleting .desktop-icon:nth-child(5){animation-delay:.62s}.system-wipe--deleting .desktop-icon:nth-child(6){animation-delay:.75s}.system-wipe--deleting .desktop-icon:nth-child(7){animation-delay:.88s}.system-wipe--deleting .desktop-workspace{animation:system-delete 80ms step-end 1.05s forwards}.system-wipe--deleting .mobile-nav,.system-wipe--deleting .utility-links{animation:system-delete 80ms step-end 1.23s forwards}.system-wipe--deleting .taskbar{animation:system-delete 80ms step-end 1.41s forwards}@keyframes system-delete{to{opacity:0;visibility:hidden}}@keyframes restore-progress{0%{transform:scaleX(.08)}to{transform:scaleX(1)}}@media (max-width:760px){body{overflow:auto;font-size:14px}.desktop{height:auto;min-height:100vh;min-height:100dvh;overflow:visible;padding:72px 10px 58px}.desktop-icons,.desktop:before,.utility-links{display:none}.mobile-nav{position:fixed;z-index:15;left:0;right:0;top:0;height:60px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 8px;background:var(--win);border-bottom:2px outset #fff;font:11px Arial,sans-serif}.mobile-brand{display:none}.mobile-nav nav{width:100%;display:flex;justify-content:space-between;gap:2px;overflow-x:auto}.mobile-nav nav a{flex:0 0 auto;padding:7px 6px;color:#000;border:2px outset #fff;text-decoration:none}.desktop-workspace{height:auto;overflow:visible}.about-layout,.home-grid,.home-layout{height:auto;display:block;padding:0;overflow:visible}.about-window,.hero-window,.home-grid>.window{height:auto;display:block}.about-window>.window__body,.hero-window>.window__body,.home-grid>.window>.window__body{overflow:visible}.managed-window{transform:none!important;z-index:auto!important}.window--maximized{position:relative!important;inset:auto!important;width:auto!important;height:auto!important}.managed-window .titlebar{cursor:default;touch-action:auto}.titlebar__controls button{display:none}.about-layout>.window,.home-grid>.window{margin-top:14px}.hero-window{margin-top:0}.terminal{min-height:390px;padding:19px 16px}.terminal h1,.terminal__output{margin-left:12px}.page-window{height:auto;margin:0;display:block}.page-window>.window__body{min-height:0;overflow:visible}.page-header{min-height:160px;padding:22px 18px}.folder-art,.lab-art{width:60px;height:51px;font-size:33px}.project-row{grid-template-columns:34px 1fr;padding:18px 13px}.project-icon{width:32px;height:38px;font-size:19px}.blog-list article{grid-template-columns:1fr 24px;gap:8px;padding:20px 17px}.blog-list article>time{grid-column:1/-1}.lab-grid{display:block}.lab-item{min-height:205px;border-right:0}.resume-toolbar{overflow:hidden}.resume-sheet{margin:12px auto;width:calc(100% - 16px);padding:22px 16px}.resume-sheet>header{display:block}.resume-sheet address{margin-top:16px;text-align:left}.resume-row{gap:4px}.resume-row,.skills{grid-template-columns:1fr}.skills{gap:2px}.resume-certification{align-items:flex-start}.feature-list ul{column-count:1}.case-study__header{min-height:0;display:block;padding:32px 19px}.case-study__actions{margin-top:24px}.case-study>section,.case-study__split,.case-study__summary{padding:25px 18px}.case-study__columns{column-count:1}.architecture{display:block;overflow:visible}.architecture li{display:block}.architecture li span{min-height:58px}.architecture li b{display:block;height:30px;transform:rotate(90deg)}.case-study__split,.screenshot-grid{grid-template-columns:1fr}.technology-groups{grid-template-columns:1fr 1fr}.case-study__pager{grid-template-columns:1fr;padding:20px 18px}.case-study__pager a,.case-study__pager a:last-child{text-align:left}.about-hero{padding:21px 16px;gap:15px}.pixel-portrait{width:83px;height:76px}.pixel-portrait:before{width:55px;height:42px}.system-info{margin:0 15px 18px}.system-info div{grid-template-columns:90px 1fr}.taskbar__link,.taskbar__windows{display:none}.plain-view{height:auto;padding:28px 18px;overflow:visible;border:0}.plain-view>nav{margin-bottom:35px}.certificate-grid{grid-template-columns:1fr;padding:16px}.certificate-card__body h2{min-height:0}.credential-toolbar{display:block;padding:15px}.credential-toolbar>div:last-child{margin-top:14px;flex-wrap:wrap}.credential-viewer{padding:7px}.credential-window>.window__body{display:block;overflow:visible}.credential-viewer object{height:62vh}}@media (max-width:430px){.technology-groups{grid-template-columns:1fr}}@media (max-width:400px){.page-header .folder-art,.page-header .lab-art{display:none}.about-hero{align-items:flex-start}.titlebar__controls a,.titlebar__controls button{width:17px}}@media print{.desktop{padding:0;background:#fff}.desktop-icons,.menubar,.mobile-nav,.statusbar,.taskbar,.titlebar{display:none}.resume-sheet,.window,.window__body{padding:0;border:0;box-shadow:none}.resume-sheet{width:100%;margin:0}}@media (prefers-contrast:more){a{text-decoration-thickness:2px}.window{border-width:3px}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition:none!important;animation:none!important}}