@font-face{font-family:Plex;src:url(/assets/IBMPlexMono-Thin-DbeflJtK.ttf) format("truetype");font-weight:200;font-display:swap}:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#dde4d9;background:#111712;font-synthesis:none;--muted: #919e92;--faint: #647768;--accent: #b6dba1;--border: #303d32;--panel: #19201a;--mono: Consolas, "Courier New", monospace;color-scheme:dark}*{box-sizing:border-box;cursor:default}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;font-size:15px;line-height:1.6;background:radial-gradient(ellipse at 80% 0,rgba(64,94,57,.12),transparent 50%)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}input:focus,input:focus-visible,select:focus,select:focus-visible{outline:none;box-shadow:none}select:focus-visible,.pdf-controls input:focus-visible{border-color:#78966b}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}button,input,select{color:inherit}button{display:inline-flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border);border-radius:5px;min-height:36px;padding:8px 12px;font:11px/1 var(--mono)}button:hover:not(:disabled){background:#2a372b;border-color:#587451}a:hover{color:var(--accent)}input,select{min-width:0}input{background:transparent;border:0;outline:none}h1,h2,h3,p{margin:0}[hidden]{display:none!important}.accent{color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;top:-80px;left:16px;z-index:20;background:var(--accent);color:#172115;padding:10px}.skip-link:focus{top:16px}.eyebrow{font:10px var(--mono);letter-spacing:1.6px;color:var(--muted)}.site-shell{max-width:1256px;margin:0 auto;padding:0 42px}.site-header{height:100px;display:flex;align-items:center;border-bottom:1px solid var(--border);gap:24px}.wordmark{display:inline-flex;font:700 31px var(--mono);letter-spacing:-3px}.wordmark-cursor{color:var(--accent)}.header-path{font:12px var(--mono);color:var(--faint)}.site-header nav{margin-left:auto;display:flex;gap:28px;font-size:12px}.site-header nav a:last-child{color:var(--muted)}.layout{display:grid;grid-template-columns:264px minmax(0,1fr);gap:48px;margin-top:40px}.profile{align-self:start}.portrait-stage{height:248px;position:relative;border:1px solid var(--border);border-radius:8px 8px 0 0;background:#202d23;overflow:hidden}.portrait-stage img{display:block;height:224px;width:224px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.portrait-label{position:absolute;z-index:1;left:18px;top:13px;font:9px var(--mono);letter-spacing:2px;color:#b0c4ab}.portrait-coordinate{position:absolute;z-index:1;bottom:10px;right:12px;font:9px var(--mono);color:#78927d}.profile-copy{padding:24px 21px;border:1px solid var(--border);border-top:0;border-radius:0 0 8px 8px;background:linear-gradient(130deg,#1d251e,#181f19)}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:5px}.profile h1{font-size:37px;font-weight:600;letter-spacing:-1.5px;line-height:1.08;margin:17px 0}.profile h1 span{color:var(--accent)}.profile-tagline{font-size:14px;line-height:1.6;color:#c7d1c2}.profile-bio{color:var(--muted);font-size:12px;margin-top:13px;line-height:1.85}.interest-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:19px}.interest-tags span{font:10px var(--mono);color:#b1bfb0;border:1px solid #3c493c;padding:4px 7px;border-radius:3px}.profile-links{display:flex;gap:10px;border-top:1px solid var(--border);padding-top:20px;margin-top:22px}.profile-links a{display:flex;justify-content:space-between;gap:10px;flex:1;font-size:11px}.profile-links a:first-child{color:var(--accent)}.profile-timeline{list-style:none;margin:27px 8px 8px;padding:0 0 0 21px;border-left:1px solid #40533b}.timeline-item{position:relative;padding-bottom:23px}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:"";position:absolute;left:-26px;top:5px;width:9px;height:9px;border:1px solid #78916a;border-radius:50%;background:#111712}.timeline-item.current:before{background:var(--accent);border-color:var(--accent)}.timeline-period{font:10px/1.8 var(--mono);color:var(--muted)}.timeline-title{margin-top:4px;font-size:14px;font-weight:500}.timeline-description{font-size:12px;color:#b3c0ac;line-height:1.6;margin-top:3px}.main-column{min-width:0}.terminal-window{border:1px solid #43563e;border-radius:8px;overflow:hidden;background:#151c15;box-shadow:0 12px 45px #080e0822}.window-bar{height:43px;display:flex;align-items:center;gap:14px;padding:0 18px;background:#212b20;border-bottom:1px solid #34432f}.window-dots{display:flex;gap:6px}.window-dots i{display:block;width:7px;height:7px;border-radius:50%;background:#a77d6a}.window-dots i:nth-child(2){background:#ad9d6b}.window-dots i:nth-child(3){background:#77976b}.window-bar h2{font:11px var(--mono);color:#a9b7a2}.terminal-body{padding:23px 25px 17px;font:12px/1.8 var(--mono)}#terminal-output{min-height:206px;max-height:var(--terminal-output-limit, 540px);overflow-y:auto;overflow-wrap:anywhere;scrollbar-width:thin;scrollbar-color:#44523d transparent}.terminal-row{margin:0 0 6px;white-space:pre-wrap}.terminal-row.muted{color:var(--muted)}.terminal-row.success{color:var(--accent)}.terminal-row.error{color:#e7a897}.terminal-row.command-line{color:#c7d5c0;margin-top:12px}.terminal-row.welcome{font-size:22px;letter-spacing:-1px;margin:13px 0 9px;color:var(--accent)}.terminal-result{display:block;text-align:left;width:100%;font:11px var(--mono);padding:8px;margin:4px 0;color:var(--accent);white-space:normal}button.terminal-result{display:flex;justify-content:flex-start;line-height:1.5}.terminal-input-line{display:flex;gap:11px;align-items:center;margin-top:15px;border-top:1px solid #283426;padding-top:13px}.terminal-input-line label{white-space:nowrap}.terminal-input-line:focus-within{border-top-color:#617654}.prompt-user{color:var(--accent)}.prompt-path{color:#b3c4a8}.prompt-symbol{color:#819374;margin-left:6px}.terminal-input-line input{font:12px var(--mono);width:100%;padding:5px 0}.terminal-input-line input::placeholder{color:#607059}.workspace{margin-top:38px;scroll-margin-top:20px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:19px}.section-heading h2{font-size:23px;font-weight:500;letter-spacing:-.6px}.section-heading h2 span{font-weight:200;color:#68805c;margin-left:8px}.section-heading .eyebrow{font-size:9px}.section-description{font-size:12px;color:var(--muted);margin:21px 0}.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.project-card{position:relative;display:flex;flex-direction:column;padding:20px 17px;min-height:249px;border:1px solid var(--border);border-radius:6px;background:#1a221b;transition:border-color .2s,transform .2s}.project-card:hover{border-color:#738b60;transform:translateY(-3px)}.project-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.project-symbol{font:23px var(--mono);letter-spacing:-2px;color:#accb96}.project-arrow{font:18px var(--mono);color:#79916c}.project-category{font:9px var(--mono);letter-spacing:1.1px;color:#839a78}.project-card h3{font-size:21px;font-weight:500;margin:5px 0 9px;letter-spacing:-.4px}.project-description{font-size:11px;color:var(--muted);line-height:1.8;flex:1}.project-tags{display:flex;gap:8px;font:9px var(--mono);color:#829577;margin-top:18px}.search-summary{margin-bottom:15px;color:var(--accent);font:11px/1.7 var(--mono);overflow-wrap:anywhere}.filters{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:10px;margin:18px 0}.filters label{display:flex;flex-direction:column;gap:6px;font:9px var(--mono);color:var(--muted)}.filters select{padding:8px 25px 8px 8px;border:1px solid var(--border);border-radius:4px;background:#1a221b;width:100%;font:11px var(--mono);color:#c1cdbb}.results-meta{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border);padding:15px 0;font:10px var(--mono);color:var(--muted)}.text-button{border-color:transparent;color:var(--muted)}.document-list{border:1px solid var(--border);border-radius:6px;overflow:hidden}.folder-navigation{display:flex;align-items:center;padding:4px 0 14px}.folder-breadcrumbs{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font:10px/1.8 var(--mono);color:var(--accent)}.breadcrumb-separator{color:var(--faint)}.breadcrumb-item{font:inherit;color:inherit;overflow-wrap:anywhere}a.breadcrumb-item:hover{color:inherit;text-decoration:underline;text-underline-offset:3px}.folder-badge{display:grid;place-items:center;width:34px;height:34px;color:#a7bb91}.folder-badge svg{width:28px;height:28px}.folder-badge svg path:last-child{fill:#a7bb9112}.folder-title{color:#cbd8b7}.file-path{color:#829077}.document-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;padding:14px 15px;align-items:center;background:#182019;border-bottom:1px solid #2b382c}.document-row:last-child{border-bottom:0}.document-row:hover{background:#202a1e}.file-badge{display:flex;align-items:center;justify-content:center;width:34px;height:39px;font:9px var(--mono);color:#a6c993;background:#283b24;border:1px solid #4c6441;border-radius:3px}.file-badge.pdf{background:#3a2e27;border-color:#695441;color:#d4b49b}.document-title{display:block;border:0;padding:0;min-height:0;border-radius:0;font-size:12px;text-align:left;color:#d8e2d2;line-height:1.5;overflow-wrap:anywhere}.document-title:hover:not(:disabled){background:none;color:var(--accent);text-decoration:underline}.document-meta{font:9px/1.7 var(--mono);color:var(--muted);margin-top:5px;overflow-wrap:anywhere}.document-open{border-color:#3c5035;color:var(--accent)}.empty-state{padding:35px 20px;text-align:center;font-size:12px;color:var(--muted);border:1px dashed var(--border);border-radius:6px}.empty-state button{margin-top:15px;font-size:11px}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:17px;font:10px var(--mono);color:var(--muted)}.pagination button{font:10px/1 var(--mono)}.site-footer{display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--border);margin-top:53px;padding:23px 0 29px;color:#73826e;font:10px var(--mono)}.noscript{margin:20px;padding:20px;border:1px solid var(--border)}dialog{width:min(1100px,calc(100vw - 48px));max-width:none;height:min(900px,calc(100dvh - 48px));max-height:none;margin:auto;padding:0;border:1px solid #4b6141;border-radius:9px;background:#19221a;color:#dde4d9;overflow:hidden;box-shadow:0 25px 90px #0009}dialog[open]{display:flex;flex-direction:column}dialog::backdrop{background:#050a06cf;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}body:has(dialog[open]){overflow:hidden}.viewer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:19px 22px;border-bottom:1px solid var(--border)}.viewer-header h2{font-size:17px;line-height:1.4;overflow-wrap:anywhere;margin-top:5px;font-weight:500}.viewer-header .eyebrow{font-size:9px}#viewer-close{flex-shrink:0;color:var(--muted)}.viewer-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:10px 22px;border-bottom:1px solid var(--border);font-size:11px}#viewer-download{display:inline-flex;align-items:center;justify-content:center;gap:9px}#viewer-download svg{width:15px;height:15px}.viewer-actions a{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:5px;min-height:36px;padding:8px 12px;font:11px/1 var(--mono);color:var(--accent)}.viewer-actions a:hover{background:#2a372b;border-color:#587451}#viewer-action-status{font-size:10px;color:var(--muted)}.pdf-controls{display:grid;grid-template-columns:auto auto minmax(250px,1fr);align-items:center;gap:14px;padding:14px 22px;border-bottom:1px solid var(--border);background:#172018;font:11px/1.5 var(--mono)}.pdf-control-group{display:flex;align-items:center;gap:6px;min-width:0}.pdf-controls :is(button,input){height:36px;min-height:36px;border:1px solid #3c5035;border-radius:5px;background:#1c271d;padding:8px 10px;font:inherit;color:#cbd8c3}.pdf-controls button{min-width:36px;flex-shrink:0;line-height:1}.pdf-controls button:disabled{opacity:.4;background:#172018}.pdf-controls input{background:#101a12}.pdf-controls :is(button,input):focus-visible{outline:none;box-shadow:inset 0 0 0 1px var(--accent);border-color:var(--accent)}#pdf-page-number{width:48px;text-align:center}#pdf-page-count,#pdf-zoom-label{display:inline-flex;align-items:center;justify-content:center;height:36px;width:48px;flex-shrink:0;font-variant-numeric:tabular-nums}#pdf-find{width:100%;flex:1;min-width:80px}.pdf-search-group{padding-left:14px;border-left:1px solid var(--border)}@media (max-width: 1000px){.pdf-controls{grid-template-columns:auto 1fr}.pdf-search-group{grid-column:1 / -1;padding-left:0;border-left:0}}.viewer-status{font:11px var(--mono);color:#abc599;min-height:25px;padding:7px 22px;line-height:1.6}.viewer-content{flex:1;min-height:0;overflow:auto;background:#0f1610;padding:18px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#415439 #152015}.pdf-page{position:relative;margin:0 auto;background:#fff;color:#000;flex-shrink:0;--scale-factor: 1}.pdf-page canvas{display:block;max-width:none}.pdf-page .textLayer{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;z-index:2;transform-origin:0 0}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:default;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer ::selection{background:#80bbf477}.textLayer mark{color:transparent;background:#fc09}.textLayer{--min-font-size: 1;--text-scale-factor: calc(var(--scale-factor) * var(--min-font-size));--min-font-size-inv: calc(1 / var(--min-font-size))}.textLayer>:not(.markedContent),.textLayer .markedContent span:not(.markedContent){z-index:1;font-size:calc(var(--text-scale-factor) * var(--font-height));transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv))}.download-dialog{width:min(500px,calc(100vw - 32px));height:fit-content;max-height:calc(100dvh - 32px);border:1px solid #3c4c38;border-radius:10px;background:#182019}.download-dialog .viewer-header{order:0;padding:24px 25px 0;border:0}.download-dialog .viewer-header .eyebrow{color:#92aa80;font-size:8px}.download-dialog .viewer-header h2{font-size:19px;font-weight:500;margin-top:9px}.download-dialog .viewer-content{order:1;flex:0 1 auto;padding:23px 25px;background:transparent}.download-dialog .viewer-actions{order:2;gap:10px;padding:0 25px 25px;border-top:0;border-bottom:0}.download-dialog #viewer-download{background:#b5cda2;border-color:#b5cda2;color:#182019}.download-dialog #viewer-download:hover:not(:disabled){background:#c7dfb5}.download-dialog .preview-link{order:-1;border-color:#45563d;color:#c4d4b9}.download-dialog .preview-link:hover{background:#263322}.download-dialog #viewer-action-status{width:100%;line-height:1.7}.download-dialog #viewer-action-status:empty{display:none}.download-summary{text-align:left}.download-details{display:flex;align-items:center;gap:14px;padding:15px 16px;background:#202a1e;border:1px solid #303e2b;border-radius:6px}.download-details svg{width:26px;height:26px;flex-shrink:0;color:#a9bd96}.download-kind{font-size:12px;color:#d0dbc8}.download-size{margin-top:5px;color:var(--muted);font:10px var(--mono)}.download-description{margin-top:15px;color:var(--muted);font-size:12px}.download-file-path{margin-top:16px;color:#85907e;font:10px/1.8 var(--mono);overflow-wrap:anywhere}.viewer-error{color:#e7a897}.web-page-picker{display:grid;gap:8px;margin-top:18px;color:var(--muted);font:11px/1.5 var(--mono)}.web-page-picker select{width:100%;min-height:36px;padding:8px 12px;background:#202a1e;border:1px solid var(--border);border-radius:5px;color:#dde4d9}.project-resources{margin-top:18px;font:11px/1.8 var(--mono);color:var(--muted)}.project-resources ul{padding-left:18px;max-height:170px;overflow:auto}.project-resources a{color:var(--accent);text-decoration:underline;overflow-wrap:anywhere}.file-badge.web{color:#b5ccdc;background:#26343e;border-color:#455b6b}.image-preview,.media-preview{display:block;max-width:100%;max-height:100%;margin:auto;object-fit:contain}.media-preview{width:100%}.text-preview{margin:0;padding:8px;white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.8 var(--mono);color:#dde4d9}.markdown-preview{max-width:800px;margin:0 auto;padding:12px;color:#dde4d9;font:14px/1.8 Segoe UI,Arial,sans-serif;overflow-wrap:anywhere}.markdown-preview>*+*{margin-top:18px}.markdown-preview :is(h1,h2,h3,h4,h5,h6){margin:24px 0 12px;line-height:1.4}.markdown-preview h1{font-size:26px}.markdown-preview h2{font-size:21px}.markdown-preview a{color:var(--accent);text-decoration:underline}.markdown-preview :is(pre,blockquote){margin:18px 0;padding:14px 18px;background:#1c271c;border-left:2px solid #567b48;overflow:auto}.markdown-preview code{font:12px/1.7 var(--mono);background:#223022;padding:2px 4px;border-radius:3px}.markdown-preview pre code{background:none;padding:0}.markdown-preview :is(img,table){max-width:100%}.markdown-preview table{display:block;overflow:auto;border-collapse:collapse}.markdown-preview :is(th,td){padding:8px 12px;border:1px solid var(--border)}.textLayer>:not(.markedContent),.textLayer .markedContent span:not(.markedContent){--font-height: 0;--scale-x: 1;--rotate: 0deg}.textLayer .markedContent{display:contents}@media (min-width: 1450px){.site-shell{padding:0 32px}.layout{gap:56px;grid-template-columns:280px minmax(0,1fr)}.profile h1{font-size:40px}.portrait-stage{height:260px}}@media (max-width: 1000px){.site-shell{padding:0 26px}.layout{grid-template-columns:230px minmax(0,1fr);gap:28px}.projects-grid{grid-template-columns:1fr}.project-card{min-height:0;padding:16px 19px}.project-top{margin-bottom:10px}.project-card h3{font-size:20px}.project-description{max-width:420px}.project-tags{margin-top:12px}.terminal-body{padding:18px}.profile-copy{padding:20px 17px}.profile h1{font-size:34px}}@media (max-width: 700px){.site-shell{padding:0 18px}.site-header{height:73px;gap:15px}.site-header nav{gap:17px;font-size:11px}.header-path{display:none}.layout{display:flex;flex-direction:column;gap:29px;margin-top:24px}.profile{display:grid;grid-template-columns:114px minmax(0,1fr);border:1px solid var(--border);border-radius:7px;background:#19211a;width:100%}.portrait-stage{height:100%;min-height:229px;border:0;border-radius:6px 0 0 6px}.portrait-stage img{width:150px;height:150px;bottom:25px}.portrait-label{font-size:8px;left:10px;top:14px;letter-spacing:1px}.portrait-coordinate{display:none}.profile-copy{padding:17px;border:0;background:none}.profile h1{font-size:29px;margin:11px 0;line-height:1.05}.profile h1 br{display:none}.profile h1 br:after{content:" "}.profile .eyebrow{font-size:8px;letter-spacing:1px}.profile-tagline{font-size:12px}.profile-bio{font-size:11px;margin-top:10px}.interest-tags{margin-top:12px;gap:4px}.interest-tags span{font-size:9px;padding:3px 5px}.profile-links{padding-top:12px;margin-top:14px}.profile-timeline{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;border:0;border-top:1px solid var(--border);margin:0;padding:18px 20px 18px 33px}.timeline-item{padding-bottom:0}.timeline-item:before{left:-17px}.timeline-description{font-size:11px}.terminal-body{padding:17px 15px}.terminal-row.welcome{font-size:20px}#terminal-output{min-height:174px}.workspace{margin-top:28px}.section-heading .eyebrow{font-size:8px}.section-heading h2{font-size:22px}.projects-grid{gap:10px}.site-footer{font-size:8px;margin-top:35px;flex-wrap:wrap}.document-row{padding:12px 10px;gap:9px;grid-template-columns:30px minmax(0,1fr) auto}.file-badge{width:28px;height:34px;font-size:8px}.folder-badge{width:28px;height:28px}.folder-badge svg{width:25px;height:25px}.download-dialog .viewer-header{padding:20px 20px 0}.download-dialog .viewer-header h2{font-size:17px}.download-dialog .viewer-content{padding:20px}.download-dialog .viewer-actions{padding:0 20px 20px}.document-title{font-size:11px}.document-meta{font-size:8px}.filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.filters label:last-child{grid-column:1 / -1}.filters select{font-size:10px}dialog{width:100vw;height:100dvh;border-radius:0;border:0}.viewer-header{padding:14px 15px}.viewer-header h2{font-size:14px}.viewer-actions{padding:9px 15px;gap:10px}.pdf-controls{grid-template-columns:1fr;padding:12px 15px;gap:9px}.pdf-controls form{width:100%}#pdf-find{flex:1;width:auto}.viewer-content{padding:10px}.viewer-status{padding:6px 13px}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.project-card{transition:none}.project-card:hover{transform:none}}
