:root{--accent-primary: hsla(39, 90%, 70%, 1);--accent-secondary: hsla(158, 38%, 75%, 1);--bg-main: hsla(0, 0%, 96%, 1);--bg-surface: hsla(40, 9%, 93%, 1);--bg-card: hsla(0, 0%, 100%, 1);--text-main: hsla(0, 0%, 10%, 1);--text-secondary: hsla(0, 0%, 10%, 1);--ui-stroke: hsla(0, 0%, 0%, 1);--accent-error: hsla(0, 70%, 60%, 1);--code-string: hsla(95, 38%, 75%, 1);--ui-grid: hsla(0, 0%, 0%, .1);--ff-primary: "Google Sans", "Product Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--ff-secondary: "Google Sans Code", monospace, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--fs-4xl: 6.5rem;--fs-xl: 2rem;--fs-lg: 1.25rem;--fs-md: 1.125rem;--fs-base: 1rem;--fs-sm: .875rem;--fs-xs: .75rem;--fs-xxs: .58rem;--fw-light: 300;--fw-reg: 400;--fw-medium: 500;--fw-bold: 700;--fw-black: 800;--fw-x-black: 900;--code-bg: hsla(0, 0%, 10%, 1);--code-text: hsla(0, 0%, 96%, 1);--code-comment: hsla(0, 0%, 50%, 1);--border-main: 2px solid var(--ui-stroke);--radius-brutal: 8px;--shadow-main: 4px 3px 0px 0px var(--ui-stroke);--shadow-hover: 5px 5px 0px 0px var(--ui-stroke);--shadow-pressed: 2px 2px 0px 0px var(--ui-stroke);--gap-standard: 2rem;--transition-snappy: all .25s cubic-bezier(.16, 1, .3, 1);--transition-normal: all .8s cubic-bezier(.16, 1, .3, 1);--theme-transition: background-color .8s ease, color .8s ease, border-color .8s ease, box-shadow .8s ease}body.dark-mode{--bg-main: hsla(0, 0%, 7%, 1);--bg-surface: hsla(0, 0%, 12%, 1);--bg-card: hsla(0, 0%, 15%, 1);--text-main: hsla(0, 0%, 90%, 1);--text-secondary: hsla(0, 0%, 10%, 1);--ui-stroke: hsla(0, 0%, 100%, 1);--ui-grid: hsla(0, 0%, 100%, .1);--accent-primary: hsla(39, 90%, 70%, 1);--accent-secondary: hsla(158, 38%, 75%, 1);--accent-error: hsla(0, 70%, 60%, 1);--code-string: hsla(95, 38%, 75%, 1);--border-main: 1px solid var(--ui-stroke);--radius-brutal: 8px;--shadow-main: 4px 3px 0px 0px var(--ui-stroke);--shadow-hover: 4px 4px 0px 0px var(--ui-stroke);--shadow-pressed: 1px 1px 0px 0px var(--ui-stroke);--code-bg: hsla(0, 0%, 8%, 1);--code-text: hsla(0, 0%, 92%, 1);--code-comment: hsla(0, 0%, 55%, 1);--accent-primary: hsla(39, 90%, 75%, 1);--accent-secondary: hsla(158, 38%, 80%, 1);--code-string: hsla(95, 38%, 80%, 1)}.sidebar,.card,.box,.cta-btn,input,textarea{transition:var(--theme-transition)}::selection{background-color:var(--accent-primary);color:var(--ui-stroke)}body{position:relative;min-height:100vh;font-family:var(--ff-primary);background-color:var(--bg-main);color:var(--text-main)}body:before{content:"";position:fixed;inset:0;z-index:99;background-image:url(/img/grain-asfalt-dark.png);background-repeat:repeat;background-size:200px;-webkit-user-select:none;user-select:none;pointer-events:none;-webkit-user-drag:none}.wrap{width:96%;margin:0 auto;max-width:960px}.app-grid{min-height:100vh;grid-template-columns:minmax(350px,460px) 1fr}.sidebar{position:sticky;top:0;height:100dvh;border-right:var(--border-main);padding:12px 2rem}.hero-title{font-size:var(--fs-4xl);text-transform:uppercase;letter-spacing:-5px;font-weight:var(--fw-bold);display:inline-block;position:relative;transform:rotate(-3deg);color:var(--text-secondary)}.hero-title:after{content:"";position:absolute;width:105%;height:98px;top:32px;z-index:-1;left:-1px;background-color:var(--accent-primary);box-shadow:var(--shadow-main)}.desc-tag{line-height:2rem;font-weight:var(--fw-medium);font-size:var(--fs-md);transform:translate(11px,-19px)}.drag-drop-block{flex-direction:column;gap:3px;padding:.7rem .8rem;width:91%;position:relative;background-color:var(--bg-card);z-index:9999;cursor:pointer;border-radius:.25rem;transform:translateY(-17px)}.drag-drop-block:hover .icon-block{transform:scale(1.08)}.block{width:1.8rem;height:1.8rem;background-color:var(--bg-card);border:var(--border-main)}.block-alt{width:2.5rem;height:2.5em;background-color:var(--ui-stroke);border-radius:12px;align-self:flex-end}.icon-block{justify-content:center;align-self:center;width:4rem;height:4rem;margin-bottom:24px;z-index:20;background-color:var(--accent-primary);border-radius:12px;transition:var(--transition-snappy);color:var(--text-secondary)}.bio{margin-top:10px}.bio-desc{line-height:1.6;max-width:400px;font-size:var(--fs-xs);font-weight:var(--fw-medium)}.bio-desc .highlight{font-weight:var(--fw-medium)}.btns{margin-top:2rem;gap:1.5rem}.social-btns{gap:14px}.social-btn{justify-content:center;padding:4px;border:var(--border-main);border-radius:6px;box-shadow:2px 2px 0 0 var(--ui-stroke);position:relative;transition:var(--transition-snappy)}.social-btn .tooltip{position:absolute;background-color:var(--ui-stroke);color:var(--bg-card);font-size:var(--fs-xxs);font-weight:var(--fw-medium);padding:2px 4px;border-radius:4px;top:-22px;right:-11px;display:none;transition:var(--transition-snappy)}.social-btn:hover .tooltip{display:block}.social-btn:hover span,.social-btn:hover i{color:var(--accent-primary);font-weight:var(--fw-bold)}.social-btn span,.social-btn i{font-size:14px}.cta-btn{padding:10px 28px 10px 24px;font-weight:var(--fw-medium);border-radius:4px;transition:var(--transition-snappy);position:relative}.cta-btn:hover{transform:scale(1.02)}.cta-btn>span{transform:translate(3px)}main{padding:48px}.section-mark{gap:1rem;margin-bottom:2rem}.line{width:2rem;height:2px;background-color:var(--ui-stroke)}.line+p{text-transform:uppercase;color:var(--ui-stroke);letter-spacing:2px;opacity:.6;font-size:var(--fs-xs)}.cards{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem}.card{cursor:pointer;transition:var(--transition-normal);border-radius:.25rem;z-index:999}.card:focus,a:focus,button:focus{transform:scale(1.04)}.card-alt{z-index:90;padding:24px;border-radius:.25rem}.card-alt,.cta-btn{cursor:pointer;color:var(--bg-card);transition:var(--transition-normal);background-color:var(--ui-stroke);box-shadow:4px 3px 0 0 var(--ui-stroke)}.cta-btn{transform:translateY(-9px)}.card h3,.card-alt h3{font-size:var(--fs-lg);line-height:1.4rem;font-weight:var(--fw-medium);margin-bottom:4px;text-transform:uppercase;font-weight:var(--fw-x-black)}.card-title-desc{font-size:var(--fs-xs);opacity:.6}.text-box{padding:24px;border:var(--border-main)}body.dark-mode .text-box{background-color:var(--bg-card)}.card-icon{justify-content:center;padding:.5rem;border-radius:10px;border:2px solid var(--ui-stroke);background-color:var(--accent-primary);color:var(--text-secondary)}.code-window-header{height:180px;background-color:var(--code-bg);padding:1rem;display:flex;flex-direction:column;border-bottom:var(--border-main);overflow:hidden}.window-controls{display:flex;gap:8px;margin-bottom:1rem}.dot{width:12px;height:12px;border-radius:50%;border:1px solid rgba(0,0,0,.2)}.dot.red{background-color:var(--accent-error)}.dot.yellow{background-color:var(--accent-primary)}.dot.green{background-color:var(--accent-secondary)}.code-block.scrollable{font-size:var(--fs-sm);color:var(--code-text);line-height:1.5;overflow:auto;scrollbar-gutter:stable}.code-block.scrollable::-webkit-scrollbar{display:none}#projects:hover .code-block.scrollable::-webkit-scrollbar{display:block}code{font-family:var(--ff-secondary);scrollbar-gutter:stable}.keyword{color:var(--accent-primary);font-weight:var(--fw-bold)}.function{color:var(--accent-secondary)}.string{color:var(--code-string)}.open-icon,.card:hover .card-icon .close-icon{display:none}.card:hover .card-icon .open-icon{display:block}.card-tags{margin-top:1rem;grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:.5rem}.card-tag{border:1px solid var(--ui-stroke);padding:4px 8px;font-weight:var(--fw-medium);font-size:var(--fs-xs);text-transform:uppercase}.tools .card-tag:nth-last-child(1 of.card-tag){text-transform:none}#certifications{grid-template-columns:1fr 2fr}#certifications .card-title-desc{margin-bottom:10px}.icon-tag{justify-content:center;background-color:var(--accent-primary)}.icon-tag span{font-size:calc(var(--fs-xl) + 1.7rem);font-weight:var(--fw-medium);color:var(--text-secondary)}.certif-btn{font-size:var(--fs-sm);line-height:1.25;text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:2px;text-decoration-color:var(--accent-primary);transition:var(--transition-snappy)}.certif-btn:hover{color:var(--accent-primary)}.tools{padding:24px;position:relative;overflow:hidden;background-color:var(--bg-card);z-index:100}.tools:after{content:"";position:absolute;width:4rem;height:4rem;top:-1rem;right:-1rem;border-radius:.75rem;opacity:.8;filter:blur(24px);background-color:var(--accent-primary)}.tools .line{opacity:.4;margin-right:10px}.tools .card-tags{grid-template-columns:repeat(auto-fill,minmax(66px,1fr))}.tools .card-tag{text-align:center}#about{position:relative;overflow:hidden;grid-template-rows:1fr auto 1fr}.about-icon{position:absolute;font-size:6rem;top:-.4rem;right:-1.2rem;filter:blur(4px);opacity:.6;color:var(--bg-card)}#about h3{margin-bottom:8px}#about .card-title-desc{opacity:1}.about-footer{margin-top:1rem;border-top:1px solid;border-color:rgb(from var(--accent-primary) r g b / .4);padding-top:.4rem}.about-footer p{font-size:var(--fs-sm);color:var(--accent-primary);font-weight:var(--fw-medium)}#contact{padding:24px;text-align:center;background-color:var(--accent-primary)}#contact h3{font-size:var(--fs-xl);margin:1rem 0;color:var(--text-secondary)}.contact-desc{max-width:320px;margin:0 auto;margin-bottom:2rem;color:var(--text-secondary);background-color:rgb(from var(--accent-primary) r g b / .5)}.contact-cta{text-transform:uppercase;background-color:var(--bg-card);padding:12px 32px;transition:var(--transition-snappy);margin-bottom:2rem;letter-spacing:.025em;font-weight:var(--fw-bold)}footer{margin-top:4rem}footer p{font-size:var(--fs-sm);opacity:.8}.tablet-code-decoration{display:none}.reveal{opacity:0;transition:opacity 1s ease-out,transform 1s cubic-bezier(.17,.55,.55,1)!important;will-change:opacity,transform}.reveal.from-bottom{transform:translateY(45px)}.reveal.from-top{transform:translateY(-45px)}.reveal.active{opacity:1;transform:translateY(0)}*{-webkit-tap-highlight-color:transparent}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}img,picture,video,canvas,svg{display:block;max-width:100%}body{line-height:1.6}input,button,textarea,select{font-family:inherit;outline:none}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}button{background:none;outline:none;border:none;cursor:pointer;color:inherit}ul,ol{list-style:none}a{text-decoration:none;color:inherit}.flex{display:flex}.sp-btwn{justify-content:space-between}.al-center{align-items:center}.grid{display:grid}.full-width{grid-column:1 / -1}.span-two{grid-column:span 2}.highlight{color:var(--accent-primary)}.box{border:var(--border-main);box-shadow:var(--shadow-main)}.hover-lift:hover{box-shadow:var(--shadow-hover);transform:scale(1.03)}.click-press:active{transform:scale(.91);opacity:.9;transition:var(--transition-snappy);box-shadow:var(--shadow-pressed)}.check-bg{background-image:linear-gradient(to right,var(--ui-grid) 1px,transparent 1px),linear-gradient(to bottom,var(--ui-grid) 1px,transparent 1px);background-size:20px 20px}body.dark-mode #contact.check-bg{background-image:linear-gradient(to right,hsla(0,0%,7%,.1) 1px,transparent 1px),linear-gradient(to bottom,hsla(0,0%,7%,.1) 1px,transparent 1px)}*::-webkit-scrollbar{width:4px;height:1px;border-left:1px solid var(--ui-stroke)}*::-webkit-scrollbar-thumb{background:var(--accent-primary);border-radius:10px}.blueprint-header{height:180px;background-color:var(--bg-card);position:relative;overflow:hidden;border-bottom:var(--border-main);background-image:linear-gradient(to right,var(--ui-grid) 1px,transparent 1px),linear-gradient(to bottom,var(--ui-grid) 1px,transparent 1px);background-size:20px 20px}.measurement-line{position:absolute;top:50%;left:10%;right:10%;height:2px;background:var(--accent-primary)}.measurement-line:before,.measurement-line:after{content:"";position:absolute;top:-5px;width:2px;height:12px;background:var(--accent-primary)}.measurement-line:before{left:0}.measurement-line:after{right:0}.tech-label{position:absolute;bottom:10px;right:10px;font-family:var(--ff-secondary);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-main);background:var(--bg-card);padding:4px 8px;border:2px solid var(--text-main)}body.modal-open{overflow:hidden;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;pointer-events:none}body.modal-open .app-grid{filter:blur(20px)}body .focus{-webkit-user-select:text;user-select:text;pointer-events:auto}.app-modal{width:90%;max-width:800px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:9999;background-color:var(--bg-surface);box-shadow:var(--shadow-main);border-radius:8px;overflow:hidden}.modal-header,.modal-footer{padding:10px 1rem 4px}.modal-header{border-bottom:1px solid var(--ui-grid);position:relative}.header-alt{background-color:var(--accent-primary);color:var(--ui-stroke)}.my-mail{opacity:.6;gap:5px;color:var(--ui-stroke);font-size:var(--fs-xxs)}.my-mail>span{font-size:var(--fs-xs)}.modal-content{max-height:68vh;padding:1rem 2.2rem 3rem;font-size:var(--fs-sm);overflow-y:auto}.modal-content .highlight{display:inline;color:var(--ui-stroke);background-color:var(--accent-primary)}.bio-texts{margin-top:1rem}.bio .bio-texts:first-letter{margin-left:1.5rem;margin-right:1px;font-weight:var(--fw-medium);font-family:var(--ff-secondary);font-size:var(--fs-base)}.bio-intro{font-weight:var(--fw-bold);position:relative;margin-bottom:2rem;margin-top:2rem;font-size:var(--fs-base)}.bio-intro .quotes{position:absolute;top:-1rem;left:-2rem;font-size:5rem;font-style:var(--fs-base);opacity:.6;filter:blur(6px);color:var(--ui-stroke)}.bio-texts .highlight{font-weight:var(--fw-medium);color:var(--text-secondary)}.form-wrap{flex-direction:column;gap:1.5rem}.input-wrap textarea,.input-wrap input{display:block;width:100%;padding:.75rem 1rem;border:var(--border-main);background:transparent;color:var(--ui-stroke);transition:var(--transition-snappy)}.input-wrap textarea.error,.input-wrap input.error{background-color:var(--accent-error)}.input-wrap textarea.error::placeholder,.input-wrap input.error::placeholder{color:var(--ui-stroke)}.input-wrap textarea{width:100%;height:200px;resize:none;overflow:hidden auto}.input-wrap textarea::placeholder,.input-wrap input::placeholder{font-weight:var(--fw-bold);font-size:var(--fs-sm);opacity:.8}.input-wrap textarea:focus,.input-wrap input:focus{border:3px solid var(--ui-stroke);box-shadow:var(--shadow-hover)}.input-wrap label{font-size:var(--fs-sm);font-weight:var(--fw-bold);letter-spacing:.05em;text-transform:uppercase}.form-wrap .cta-btn{text-transform:uppercase;padding:1rem;font-weight:700;font-size:var(--fs-md)}.error-msg{display:none;margin:2px 0;color:var(--accent-error);font-size:var(--fs-xs)}.status-btn{font-weight:var(--fw-bold);margin-top:2rem}.loading-text{font-weight:var(--fw-medium);gap:10px;justify-content:center}.loading-text>*{font-size:var(--fs-md)}.contact-footer{padding:10px 0}.contact-footer .status{gap:5px;text-transform:uppercase;font-size:var(--fs-xs);font-weight:var(--fw-medium)}.contact-footer .status .dot{display:inline-block;width:10px;height:10px}.cancel-btn{position:absolute;top:10px;right:2rem;width:20px;height:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:3px 1px 0 0 var(--ui-stroke);background-color:var(--bg-surface)}.modal-footer{border-top:2px solid var(--ui-grid);min-height:14px}.footer-icon{justify-content:center;padding:2px;border:var(--border-main);box-shadow:2px 2px 0 0 var(--ui-stroke);position:relative;transition:var(--transition-snappy)}.tablet-code-decoration{border-radius:2rem;display:none}.toggle-btn{justify-content:center;background-color:var(--bg-surface);border:var(--border-main);box-shadow:var(--shadow-main);color:var(--text-main);width:28px;height:28px;position:absolute;top:1.5rem;right:1.5rem;z-index:100}.moon,.sun{font-size:var(--fs-md)}.toggle-btn .moon{display:none}.toggle-btn.off .moon,.toggle-btn .sun{display:block}.toggle-btn.off .sun{display:none}.svg-header{height:180px;background-color:var(--bg-card);border-bottom:var(--border-main);overflow:hidden}.svg-header svg{display:block;width:100%;height:100%}.material-symbols-outlined{opacity:0;transition:opacity .3s ease-in .1s}.fonts-loaded .material-symbols-outlined{opacity:1}@media(max-width:980px){.app-grid{grid-template-columns:1fr}.sidebar{position:relative;border:none;height:auto;padding:1rem}.hero-title{text-transform:none;letter-spacing:-7px}main{padding-left:1rem;padding-right:1rem}.drag-drop-block,.code-window-header-alt{display:none}.blueprint-header{display:block}#certifications{grid-template-columns:1fr}.icon-tag{padding:20px 0}.btns{flex-direction:column;align-items:flex-start}.btns button{align-self:flex-end}.toggle-btn{position:fixed;top:6%;right:8%;z-index:1000}}@media(min-width:981px){.blueprint-header{display:none}.social-btns{gap:14px;align-self:flex-start}}@media screen and (min-width:560px)and (max-width:980px){.tablet-code-decoration{display:block;border-radius:12px;overflow:hidden;position:absolute;right:5%;top:22%;width:50%;max-width:340px;height:138px;border:1px solid var(--text-main)}.tablet-code-decoration pre{white-space:pre-wrap!important;word-break:break-word!important;font-size:.75rem;padding:1rem}.blueprint{display:none}#certifications{grid-template-columns:1fr 2fr}}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:#ffffff80}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.token.string{color:var(--accent-secondary)}.token.keyword{color:var(--accent-primary)}.token.comment{color:#999;font-style:italic}
