:root{--bg: #f5f1ea;--surface: #faf6ef;--surface-overlay: rgba(245, 241, 234, .92);--border: #e0d9cc;--ink: #1a1a1a;--muted: #6e6359;--accent: #c1410b;--accent-strong: #9a3309;--on-accent: #f5f1ea;--doc-bg: rgba(255, 255, 255, .96);--doc-bg-solid: #ffffff;--doc-ink: #1a1a1a;--shadow-soft: 0 0 20px rgba(0, 0, 0, .08);--nav-height: 68px;--sub-header-height: 51px;--font-sans: "Muli", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-serif: "Quattrocento Sans", Georgia, serif}:root[data-theme=dark]{--bg: #0c0c0c;--surface: #161616;--surface-overlay: rgba(18, 18, 18, .85);--border: #2a2a2a;--ink: #ededed;--muted: #8a8a8a;--accent: #ff6b3d;--accent-strong: #ff8c5e;--on-accent: #0c0c0c;--doc-bg: rgba(245, 241, 234, .97);--doc-bg-solid: #f5f1ea;--doc-ink: #1a1a1a;--shadow-soft: 0 0 24px rgba(0, 0, 0, .5)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0c0c0c;--surface: #161616;--surface-overlay: rgba(18, 18, 18, .85);--border: #2a2a2a;--ink: #ededed;--muted: #8a8a8a;--accent: #ff6b3d;--accent-strong: #ff8c5e;--on-accent: #0c0c0c;--doc-bg: rgba(245, 241, 234, .97);--doc-bg-solid: #f5f1ea;--doc-ink: #1a1a1a;--shadow-soft: 0 0 24px rgba(0, 0, 0, .5)}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:12px;font-weight:300;line-height:1.42857;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}body{-webkit-user-select:none;user-select:none}img{max-width:100%;border:0}a{color:var(--ink);text-decoration:none;background:transparent}a:hover{text-decoration:none}button{cursor:pointer;font:inherit;color:inherit;background:transparent;border:0;padding:0}hr{border:0;border-top:1px solid var(--border);margin:0 auto;display:block}::selection{color:var(--on-accent);background:var(--accent);text-shadow:none}::-moz-selection{color:var(--on-accent);background:var(--accent);text-shadow:none}h1,h2,h3,h4{font-family:var(--font-sans);font-weight:900;letter-spacing:.1em;text-transform:uppercase;line-height:1.1;margin:0 0 10px;color:inherit}h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:18px}p{margin:0 0 10px}.reg{font-family:var(--font-serif)!important}.container,.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;width:100%}@media (min-width: 768px){.container{max-width:750px}}@media (min-width: 992px){.container{max-width:970px}}@media (min-width: 1200px){.container{max-width:1170px}}.row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:30px;margin-left:-15px;margin-right:-15px;padding:0 15px}:where([class*=col-]){grid-column-end:span 12}.col-xs-1{grid-column-end:span 1}.col-xs-2{grid-column-end:span 2}.col-xs-3{grid-column-end:span 3}.col-xs-4{grid-column-end:span 4}.col-xs-5{grid-column-end:span 5}.col-xs-6{grid-column-end:span 6}.col-xs-7{grid-column-end:span 7}.col-xs-8{grid-column-end:span 8}.col-xs-9{grid-column-end:span 9}.col-xs-10{grid-column-end:span 10}.col-xs-11{grid-column-end:span 11}.col-xs-12{grid-column-end:span 12}@media (min-width: 768px){.col-sm-1{grid-column-end:span 1}.col-sm-2{grid-column-end:span 2}.col-sm-3{grid-column-end:span 3}.col-sm-4{grid-column-end:span 4}.col-sm-5{grid-column-end:span 5}.col-sm-6{grid-column-end:span 6}.col-sm-7{grid-column-end:span 7}.col-sm-8{grid-column-end:span 8}.col-sm-9{grid-column-end:span 9}.col-sm-10{grid-column-end:span 10}.col-sm-11{grid-column-end:span 11}.col-sm-12{grid-column-end:span 12}.col-sm-offset-1{grid-column-start:2}.col-sm-offset-2{grid-column-start:3}.col-sm-offset-3{grid-column-start:4}.col-sm-offset-4{grid-column-start:5}.col-sm-offset-6{grid-column-start:7}}@media (min-width: 992px){.col-md-1{grid-column-end:span 1}.col-md-2{grid-column-end:span 2}.col-md-3{grid-column-end:span 3}.col-md-4{grid-column-end:span 4}.col-md-6{grid-column-end:span 6}.col-md-8{grid-column-end:span 8}.col-md-12{grid-column-end:span 12}.col-md-offset-2{grid-column-start:3}.col-md-offset-4{grid-column-start:5}}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-uppercase{text-transform:uppercase}.pull-left{float:left}.pull-right{float:right}.relative{position:relative}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}@media (max-width: 767px){.hidden-xs{display:none!important}}.vert-cont{display:flex;width:100%;min-height:100%}.vert-center{width:100%;margin:auto}.btn,input[type=text],input[type=password]{height:50px;width:100%;font-size:24px;font-weight:900;letter-spacing:.1em;font-family:var(--font-sans);text-transform:uppercase;outline:0;display:block}.btn{position:relative;z-index:2;border:2px solid var(--ink);color:var(--ink);background:transparent;padding:8px 12px;transition:color .35s ease}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--ink);transform:scale(.5);opacity:0;transition:transform .35s ease,opacity .35s ease;z-index:-1}.btn:hover{color:var(--bg)}.btn:hover:after{transform:scale(1);opacity:1}input[type=text],input[type=password]{text-align:center;border:2px solid var(--ink);border-radius:0;line-height:50px;vertical-align:middle;background:transparent;color:var(--ink);padding-top:2px;margin-bottom:10px;transition:border-color .3s ease}input[type=text]:focus,input[type=password]:focus{background:transparent}::placeholder{color:var(--muted);transition:color .3s ease;opacity:1}:hover::placeholder{color:color-mix(in srgb,var(--muted) 50%,transparent)}@media (max-width: 768px){.btn,input[type=text],input[type=password]{height:35px;font-size:16px;line-height:35px;padding:0 10px}}#root,.main-view{position:relative;height:100%}.page-bg{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg);z-index:-1}.site-page{padding-top:100px;padding-bottom:100px}.site-page.with-subheader{padding-top:calc(var(--nav-height) + var(--sub-header-height) + 30px)}.page-nav{position:relative;z-index:3;overflow:hidden;height:var(--nav-height)}.page-nav.fixed{position:fixed;width:100%;top:0;left:0}.page-nav .nav-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--surface-overlay);border-bottom:.5px solid var(--border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.page-nav .nav a{float:left;padding:25px 15px;color:var(--muted);font-family:var(--font-sans);font-size:18px;font-weight:800;line-height:1;letter-spacing:2px;text-transform:uppercase;position:relative;transition:color .5s ease}.page-nav .nav a:before{content:"";position:absolute;bottom:18px;left:35px;right:35px;height:5px;opacity:0;background:var(--accent);transition:opacity .3s ease,bottom .3s ease,left .3s ease,right .3s ease}.page-nav .nav a.active,.page-nav .nav a:hover{color:var(--accent)}.page-nav .nav a.active:before,.page-nav .nav a:hover:before{opacity:1;bottom:12px;left:15px;right:15px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:999px;color:var(--muted);background:transparent;border:1px solid var(--border);cursor:pointer;transition:color .2s ease,border-color .2s ease,background .2s ease,transform .2s ease,box-shadow .2s ease}.theme-toggle:hover{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.theme-toggle:active{transform:scale(.94)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-toggle--fab{display:none;position:fixed;right:18px;bottom:18px;z-index:15;width:48px;height:48px;color:var(--ink);background:var(--surface);border-color:var(--border);box-shadow:0 10px 24px #0000002e,0 2px 6px #00000014}.theme-toggle--fab:hover{box-shadow:0 14px 30px #00000038,0 3px 8px #0000001a;transform:translateY(-1px)}.theme-toggle--fab:active{transform:translateY(0) scale(.95)}@supports (padding: max(0px)){.theme-toggle--fab{right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom))}}.nav-desktop-toggle{display:inline-flex;align-items:center;float:left;padding:15px 0 15px 8px;margin-left:8px;border-left:1px solid var(--border)}.page-nav .mobile-icon{display:none;position:absolute;right:0;top:0;width:30px;margin:22px;background:transparent;border:0;padding:0}.page-nav .mobile-icon .icon-bar{display:block;height:4px;margin-bottom:4px;background:var(--accent);border-radius:2px}@media (max-width: 768px){.page-nav{height:auto;transition:box-shadow .3s ease}.page-nav.open{box-shadow:0 0 20px #0000004d}.page-nav .mobile-icon{display:block}.nav-desktop-toggle{display:none}.theme-toggle--fab{display:inline-flex}.page-nav .col-xs-12>.pull-left{float:none}.page-nav .nav{float:none;text-align:center;max-height:0;overflow:hidden;transition:max-height .4s ease}.page-nav .nav.open{max-height:400px}.page-nav .nav a{float:none;display:block}.nav-logo{overflow:hidden}}.nav-logo{display:block;margin:6px 0 4px;outline:0;position:relative}.nav-logo .svg{width:58px;height:58px;float:left;color:var(--accent)}.nav-logo .logo-name{display:inline-block;float:left;height:18px;margin-top:20px;margin-left:10px;font-family:var(--font-sans);font-size:18px;font-weight:900;line-height:1;letter-spacing:2px;text-transform:uppercase;color:var(--ink);vertical-align:middle;transform-style:preserve-3d;position:relative;pointer-events:none}.nav-logo .logo-name span{display:inline-block;transform-origin:center}.sub-header{position:fixed;top:var(--nav-height);left:0;width:100%;z-index:2;padding:15px 0;background:color-mix(in srgb,var(--surface) 70%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:.5px solid var(--border);color:var(--ink);font-size:16px}.sub-header h1{margin:0;height:21px;line-height:21px;font-size:16px;letter-spacing:.2em;color:var(--ink);vertical-align:middle}.sub-header .btn,.sub-header a{height:auto;width:auto;display:inline-block;padding:0 15px;font-family:var(--font-sans);font-weight:800;font-size:16px;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;color:var(--muted);background:transparent;border:0;transition:color .3s ease}.sub-header .btn:after{content:none}.sub-header .btn.active,.sub-header .btn:hover,.sub-header a.active,.sub-header a:hover{color:var(--accent)}.portfolio-page .date-range-col{position:relative}.portfolio-page .date-range{position:fixed;padding-top:20px;font-family:var(--font-sans);font-size:18px;color:var(--muted)}.portfolio-page .date-range .date{display:block;transform-origin:center right;transform:scale(1.4);opacity:1;letter-spacing:.2em;font-weight:800;text-transform:uppercase;color:var(--muted);text-decoration:none;transition:transform .4s ease,opacity .4s ease,color .4s ease}.portfolio-page .date-range .date:hover,.portfolio-page .date-range .date:focus{color:var(--ink);text-decoration:underline;opacity:1}.portfolio-page .date-range .date.prev1,.portfolio-page .date-range .date.next1{transform:scale(1.2);opacity:.85;transition-duration:.6s}.portfolio-page .date-range .date.prev2,.portfolio-page .date-range .date.next2{transform:scale(1.05);opacity:.7;transition-duration:.8s}.portfolio-page .date-range .date.ps-hide{transform:scale(.9);opacity:.3;transition-duration:1s}@media (max-width: 992px){.portfolio-page .date-range{font-size:14px}}.portfolio-filter{position:fixed;top:calc(var(--nav-height) + var(--sub-header-height) + 1px);right:0;bottom:0;z-index:10;overflow-y:auto;background:var(--surface);color:var(--ink);border-left:.5px solid var(--border)}.portfolio-filter h2{margin:40px 50px 20px;font-size:18px;text-align:right;color:var(--ink)}.portfolio-filter .filter-content{position:relative;margin:0 40px 40px}.portfolio-filter .filter-toggle{position:absolute;right:0;display:block;width:auto;float:right;clear:right;font-family:var(--font-sans);font-size:16px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;background:transparent;border:0;border-radius:0;outline:0;color:var(--ink);transition:top .5s ease,color .3s ease}.portfolio-filter .filter-toggle.selected{color:var(--accent)}.portfolio-filter button.close{position:absolute;top:10px;right:10px;font-size:18px;font-weight:800;color:var(--ink);background:transparent;border:0;opacity:.75}.portfolio-filter button.close:hover{opacity:1}@media (max-width: 768px){.portfolio-filter h2{margin:20px 25px 10px;font-size:14px}.portfolio-filter .filter-toggle{font-size:14px}.portfolio-filter .filter-content{margin:0 20px 20px}.portfolio-filter button.close{top:5px;right:2px}}.project{margin-bottom:60px;color:var(--ink);opacity:.78;transition:opacity .3s ease,color .3s ease}.project:hover{color:var(--ink);opacity:1}.project h3{position:relative;float:left;max-width:35%;padding-right:15px;margin-right:-20px;word-wrap:break-word}.project .date{clear:left}.project .description{font-size:14px;line-height:1.4}.project .image{position:relative;float:right;margin-left:20px;max-width:65%}.project .image img{width:100%;border:1px solid var(--border);transition:opacity .7s ease}.project .demo,.project .tags{margin-top:20px}.project .demo a{color:var(--accent)}.project .demo a:hover{color:var(--accent-strong)}.project .tag,.project:hover .tag{display:block;float:left;padding:2px 7px;margin:2px;background:var(--ink);color:var(--bg);border:1px solid var(--ink);text-decoration:none;transition:background .2s ease,color .2s ease,border-color .2s ease}.project .tag.filtered,.project .tag:hover,.project:hover .tag.filtered,.project:hover .tag:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}@media (max-width: 992px){.project h3{float:none;margin-right:0;padding-right:0;max-width:100%}.project .image{margin-left:0;float:none;max-width:100%}}.scroll-icon-container{position:fixed;bottom:20px;width:100%;pointer-events:none}.mouse-scroll{display:inline-block;position:absolute;bottom:20px;left:50%;transform:translate(-50%);line-height:18px;font-size:13px;font-weight:400;letter-spacing:2px;text-decoration:none;color:var(--muted);overflow:hidden;transition:transform .4s ease,opacity .4s ease}.mouse-scroll.scroll-hide{transform:translate(-50%) translateY(10px);opacity:0}.mouse-scroll .mouse{position:relative;display:block;width:23px;height:38px;margin:0 auto;border:2px solid var(--muted);border-radius:23px}.mouse-scroll .mouse .mouse-movement{position:absolute;display:block;top:29%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;background:var(--muted);border-radius:50%;animation:scroll-ani 2s linear infinite}@keyframes scroll-ani{0%{top:29%;opacity:1}15%{top:50%;opacity:1}50%{top:50%;opacity:0}to{top:29%;opacity:0}}.resume-doc{background:var(--doc-bg);color:var(--doc-ink);max-width:8.5in;margin:0 auto;padding:.25in .15in;font-family:var(--font-sans);font-size:12px;font-weight:300;line-height:1.8;box-shadow:var(--shadow-soft);-webkit-user-select:text;user-select:text}.resume-doc h2{font-family:var(--font-sans);font-weight:800;font-size:16px;letter-spacing:2px;margin:10px 0}.resume-doc .my-name{margin:2px 0}.resume-doc .summary{font-weight:800;text-align:center;padding:10px 0 0;margin:10px 0;font-size:15px;line-height:1.35;letter-spacing:1px;border-top:1px solid #909090;text-transform:uppercase}.resume-doc .summary-points{border-top:1px solid #909090;padding-top:10px;margin-top:10px}.resume-doc .company-name{font-weight:700}.resume-doc .company-name,.resume-doc .company-title{text-indent:20px}.resume-doc .school{margin-left:20px}.resume-doc a,.resume-doc u{position:relative;z-index:1;color:var(--doc-ink);text-decoration:none;text-shadow:1px 1px 0 var(--doc-bg-solid),0 1px 0 var(--doc-bg-solid),-1px 1px 0 var(--doc-bg-solid),-1px -1px 0 var(--doc-bg-solid)}.resume-doc a:after,.resume-doc u:after{content:" ";position:absolute;z-index:-1;left:0;right:0;bottom:-3px;height:1px;background:var(--doc-ink);opacity:0;transition:bottom .3s ease,opacity .3s ease;pointer-events:none}.resume-doc a:hover:after{opacity:1;bottom:0}@media (max-width: 768px){.resume-doc{padding:30px 0}.resume-doc .summary{padding:10px}.resume-doc .text-right{text-align:left}.resume-doc .company-location,.resume-doc .title-dates{text-indent:20px}}.email-prompt-cont{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;text-align:center}.email-prompt-cont .bg{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073;transition:opacity .8s ease}.email-prompt{position:relative;display:inline-block;background:var(--doc-bg-solid);color:var(--doc-ink);padding:50px;text-align:left;font-family:var(--font-sans);-webkit-user-select:text;user-select:text}.email-prompt input,.email-prompt .btn{border-color:var(--doc-ink);color:var(--doc-ink)}.email-prompt .btn:after{background:var(--doc-ink)}.email-prompt .btn:hover{color:var(--doc-bg-solid)}.email-prompt ::placeholder{color:var(--muted)}button.close{position:absolute;top:10px;right:10px;color:var(--doc-ink);background:transparent;border:0;font-size:18px;font-weight:800;outline:0;opacity:.75}button.close:hover{opacity:1}.entry-page{min-height:100vh;padding-top:90px}.entry-page h1{color:var(--ink);font-size:48px}.entry-page h2{margin:0 auto 20px;font-family:var(--font-serif);font-size:13px;font-weight:300;line-height:1.4;text-transform:none;letter-spacing:0;color:var(--muted)}.entry-page #passwordForm{margin-bottom:40px}.entry-page .invalid-credentials{margin:15px 0 0;color:var(--accent)}.entry-page hr{width:80%}.entry-page .no-access-note{margin:25px auto;font-size:12px}.entry-page .no-access-note p{margin:0}.entry-page .no-access-note a{color:var(--ink);text-decoration:underline;text-underline-offset:2px;transition:color .2s ease}.entry-page .no-access-note a:hover{color:var(--accent)}.entry-page #requestForm{margin-top:20px}.entry-page #requestForm .cancel{margin:10px}.entry-page #requestForm .cancel a{color:var(--muted);text-decoration:underline;text-underline-offset:2px;transition:color .2s ease}.entry-page #requestForm .cancel a:hover{color:var(--ink)}.approval-page .header-row{margin-bottom:10px;font-size:14px}.approval-page .user-row{padding-top:10px;padding-bottom:10px;border-bottom:.5px solid var(--border)}.approval-page .btn{height:30px;font-size:14px;padding:4px 12px}.approval-page .insert-row{margin-bottom:20px}.loader-container{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;background:var(--bg);opacity:.85}.loader-container .loader,.page-loader>.pg-loader{position:absolute;top:50%;left:50%;width:8em;height:8em;margin:-4em 0 0 -4em;border-radius:50%;font-size:10px;text-indent:-9999em;border-top:1.1em solid var(--border);border-right:1.1em solid var(--border);border-bottom:1.1em solid var(--border);border-left:1.1em solid var(--accent);transform:translateZ(0);animation:loader-spin 1.1s infinite linear}.page-loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:var(--bg)}@keyframes loader-spin{to{transform:rotate(360deg)}}.contact-page{font-family:var(--font-sans)}.contact-wrap{max-width:760px;margin:0 auto;padding:0 15px}.contact-hero{text-align:left;margin-bottom:48px;padding-bottom:32px;border-bottom:.5px solid var(--border)}.contact-eyebrow{margin:0 0 12px;font-size:12px;font-weight:800;letter-spacing:.25em;text-transform:uppercase;color:var(--accent)}.contact-headline{margin:0 0 18px;font-size:38px;font-weight:900;letter-spacing:.04em;line-height:1.1;color:var(--ink);text-transform:none}.contact-lede{margin:0;max-width:560px;font-family:var(--font-serif);font-size:16px;line-height:1.6;color:var(--muted)}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-bottom:36px}.contact-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:22px 22px 20px;background:var(--surface);border:.5px solid var(--border);border-radius:4px;color:var(--ink);text-decoration:none;transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease,background .25s ease}.contact-card:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow-soft)}.contact-card--static{cursor:default}.contact-card--static:hover{transform:none;border-color:var(--border);box-shadow:none}.contact-card__icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;margin-bottom:8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.contact-card__label{font-size:11px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.contact-card__value{font-size:18px;font-weight:800;letter-spacing:.02em;color:var(--ink);word-break:break-word}.contact-card:hover .contact-card__value{color:var(--accent)}.contact-card--static:hover .contact-card__value{color:var(--ink)}.contact-card__hint{margin-top:4px;font-family:var(--font-serif);font-size:13px;color:var(--muted)}.contact-footnote{font-family:var(--font-serif);font-size:13px;font-style:italic;color:var(--muted);padding-top:18px;border-top:.5px solid var(--border)}@media (max-width: 768px){.contact-hero{margin-bottom:32px;padding-bottom:24px}.contact-headline{font-size:28px}.contact-grid{grid-template-columns:1fr}}.icon{display:inline-block;vertical-align:-.125em;flex-shrink:0}@page{margin:.25in .2in}@media print{html,body,.resume-doc{background:#fff;color:#000}.page-bg,.page-nav,.sub-header,.theme-toggle--fab{display:none}.site-page{padding:0!important}.resume-doc{padding:0;font-size:90%;box-shadow:none!important}.resume-doc .text-right{text-align:right!important}}@media (prefers-reduced-motion: reduce){.portfolio-page .project h3,.portfolio-page .project .date,.portfolio-page .project .image,.portfolio-page .project .description,.portfolio-page .project .demo,.portfolio-page .project .tags{opacity:1!important;transform:none!important;transition:none!important}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
