:root{--bg: #0f0f0f;--bg-surface: #161616;--bg-hover: rgba(97, 218, 251, .04);--border: #242424;--border-hover: #333;--border-accent: rgba(97, 218, 251, .22);--text: #e0e0e0;--text-muted: #888;--text-dim: #4e4e4e;--accent: #61dafb;--accent-low: rgba(97, 218, 251, .08);--accent-mid: rgba(97, 218, 251, .18);--accent-glow: rgba(97, 218, 251, .28);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--font-mono: "Courier New", Courier, monospace;--radius-sm: 4px;--radius-md: 8px;--radius-full: 999px;--ease: .2s ease;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;font-family:var(--font-sans);background:var(--bg);color:var(--text);line-height:1.6;font-weight:400}h1,h2,h3,h4,h5,h6{margin:0;line-height:1.2;font-weight:700}p{margin:0}a{text-decoration:none;color:inherit}ul{list-style:none;padding:0;margin:0}button{font-family:inherit;cursor:pointer}.App{max-width:960px;margin:0 auto;padding:0 1.5rem}.site-header{display:flex;align-items:center;justify-content:space-between;padding:1.2rem 0;border-bottom:1px solid var(--border)}.site-logo{font-size:1.05rem;font-weight:700;color:var(--accent);letter-spacing:.03em}.site-header nav a{margin-left:1.5rem;color:var(--text-muted);font-size:.88rem;transition:color var(--ease)}.site-header nav a:hover{color:var(--text)}.hero{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:center;padding:5rem 0 4rem}.hero-greeting{margin:0 0 .3rem;color:var(--accent);font-size:.95rem;font-weight:400}.hero-name{margin:0 0 .75rem;font-size:2.75rem;font-weight:700;color:#fff}.hero-aka{display:block;font-size:.88rem;font-weight:400;color:var(--text-dim);letter-spacing:.02em;margin-top:.3rem}.hero-tagline{margin:0 0 .85rem;font-family:var(--font-mono);font-size:1.1rem;color:var(--accent)}.hero-bio{margin:0 0 1.75rem;color:var(--text-muted);line-height:1.65;font-size:.95rem}.hero-cta{display:inline-block;padding:.6rem 1.4rem;background:var(--accent);color:var(--bg);font-weight:700;font-size:.88rem;border-radius:var(--radius-sm);transition:background var(--ease),transform var(--ease)}.hero-cta:hover{background:#89e8fd}.terminal{background:#111827;border-radius:var(--radius-md);overflow:hidden;border:1px solid #1f2937;font-family:var(--font-mono);font-size:.82rem}.terminal-bar{display:flex;align-items:center;gap:.4rem;padding:.6rem .9rem;background:#0f172a;border-bottom:1px solid #1f2937}.dot{width:11px;height:11px;border-radius:50%}.dot-red{background:#ff5f57}.dot-yellow{background:#febc2e}.dot-green{background:#28c840}.terminal-title{margin-left:auto;color:var(--text-dim);font-size:.72rem}.terminal-body{padding:1rem 1.2rem;line-height:1.75}.terminal-body p{margin:0}.t-prompt{color:var(--accent)}.t-output{color:var(--text)}.t-indent{padding-left:1.2rem}.t-string{color:#98c379}.t-key{color:var(--accent)}.t-punct{color:var(--text-muted)}.t-brace{color:var(--text)}.t-cursor{color:var(--accent);animation:blink 1.1s step-end infinite}@keyframes blink{50%{opacity:0}}.section{padding:2.75rem 0;border-bottom:1px solid var(--border)}.section h2{font-size:1.3rem;font-weight:700;color:#fff;margin-bottom:1.5rem}.project-list{display:flex;flex-direction:column;gap:.85rem}.project-list li{padding:1rem 1.1rem 1rem 1.25rem;background:var(--bg-surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:0 var(--radius-md) var(--radius-md) 0;transition:background var(--ease),border-right-color var(--ease),border-top-color var(--ease),border-bottom-color var(--ease)}.project-list li:hover{background:var(--bg-hover);border-color:var(--border-hover);border-left-color:var(--accent)}.project-list li strong{font-size:.95rem;color:#fff}.project-list li p{margin:.3rem 0 .6rem;color:var(--text-muted);font-size:.9rem;line-height:1.6}.project-list a{font-size:.82rem;font-weight:600;color:var(--accent);transition:opacity var(--ease)}.project-list a:hover{opacity:.75}#contact p{margin-bottom:.5rem}#contact a{font-size:.9rem;font-weight:600;color:var(--text-muted);transition:color var(--ease)}#contact a:hover{color:var(--accent)}.site-footer{text-align:center;padding:1.5rem 0;font-size:.82rem;color:var(--text-dim);border-top:1px solid var(--border)}@media(max-width:640px){.hero{grid-template-columns:1fr;padding:3rem 0 2rem}.hero-name{font-size:2rem}.terminal{display:none}}.resume-section-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem}.resume-section-top h2{margin:0}.resume-download-btn{display:inline-flex;align-items:center;gap:.4rem;background:transparent;color:var(--accent);border:1px solid var(--border-accent);padding:.45rem 1.1rem;font-size:.82rem;font-weight:600;border-radius:var(--radius-sm);letter-spacing:.03em;transition:background var(--ease),border-color var(--ease),color var(--ease)}.resume-download-btn:hover{background:var(--accent-low);border-color:var(--accent);color:#fff}.resume-block{padding:1.75rem 0;border-bottom:1px solid var(--border)}.resume-block:last-child{border-bottom:none;padding-bottom:0}.resume-section-title{display:flex;align-items:center;gap:.75rem;margin:0 0 1.25rem;font-size:.65rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.resume-section-title:after{content:"";flex:1;height:1px;background:linear-gradient(to right,var(--border-accent),transparent)}.resume-summary{margin:0;padding:.9rem 1.1rem;background:var(--accent-low);border-left:3px solid rgba(97,218,251,.45);border-radius:0 var(--radius-md) var(--radius-md) 0;color:silver;line-height:1.7;font-size:.9rem}.resume-company-header{display:flex;align-items:baseline;gap:.75rem;margin-bottom:1.25rem}.resume-company-name{font-size:1rem;font-weight:700;color:#fff}.resume-location{font-size:.78rem;color:var(--text-dim)}.resume-timeline{position:relative;padding-left:1.6rem;border-left:1px solid var(--border-accent)}.resume-role{position:relative;margin-bottom:1rem;padding:1rem 1.1rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--ease),background var(--ease)}.resume-role:last-child{margin-bottom:0}.resume-role:hover{border-color:var(--border-hover);background:var(--bg-hover)}.resume-role:before{content:"";position:absolute;left:-1.95rem;top:1.2rem;width:9px;height:9px;border-radius:50%;background:var(--bg);border:1.5px solid var(--accent);transition:background var(--ease)}.resume-role:first-child:before{background:var(--accent);box-shadow:0 0 0 3px var(--accent-low),0 0 10px var(--accent-glow)}.resume-role-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:.4rem;margin-bottom:.65rem}.resume-role-title{font-size:.875rem;font-weight:600;color:var(--text)}.resume-period{display:inline-block;padding:.15rem .6rem;background:var(--accent-low);border:1px solid var(--accent-mid);border-radius:var(--radius-full);font-size:.7rem;color:var(--accent);white-space:nowrap;font-family:var(--font-mono);flex-shrink:0}.resume-bullets{margin:0;padding-left:1.1rem;color:var(--text-muted);font-size:.86rem;line-height:1.7}.resume-bullets li{margin-bottom:.35rem}.resume-bullets li:last-child{margin-bottom:0}.resume-skills-grid{display:flex;flex-direction:column;gap:.8rem}.resume-skill-group{display:flex;align-items:flex-start;gap:1rem}.resume-skill-label{min-width:160px;padding-top:.2rem;font-size:.72rem;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}.resume-skill-pills{display:flex;flex-wrap:wrap;gap:.35rem}.resume-pill{display:inline-block;padding:.22rem .7rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full);font-size:.78rem;color:var(--text-muted);opacity:0;transition:border-color var(--ease),color var(--ease),background var(--ease);cursor:default}.resume-pill:hover{border-color:var(--border-accent);background:var(--accent-low);color:var(--accent)}.resume-projects{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}.resume-project{padding:.9rem 1rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--ease),background var(--ease)}.resume-project:hover{border-color:var(--border-accent);background:var(--bg-hover)}.resume-project-name{display:inline-block;font-size:.875rem;font-weight:600;color:var(--text);transition:color var(--ease);margin-bottom:.3rem}.resume-project-name:hover{color:var(--accent)}.resume-project-desc{margin:0 0 .5rem;font-size:.8rem;color:var(--text-muted);line-height:1.55}.resume-project-stack{display:block;font-size:.72rem;color:#61dafb73;font-family:var(--font-mono)}.print-only,.print-resume-document{display:none}.resume-name{font-size:2rem;font-weight:700;color:#fff;margin-bottom:.2rem}.resume-headline{font-size:.95rem;color:var(--accent);font-family:var(--font-mono);margin-bottom:.75rem}.resume-header{padding-bottom:1.25rem;border-bottom:2px solid var(--accent)}.resume-contacts{display:flex;flex-wrap:wrap;font-size:.85rem;color:var(--text-muted);gap:0}.resume-contacts a{color:var(--text-muted)}.resume-sep{color:var(--text-dim);margin:0 .5rem}.resume-contact-plain{color:var(--text-muted)}@media print{@page{size:A4;margin:10mm}.no-print,.site-header,.site-footer,.hero,#projects,#hobbies,#contact,.resume-section-top,.resume-screen-content{display:none!important}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.print-only,.print-resume-document{display:block!important}body,html,#root,main{background:#fff!important;color:#111!important}body{min-width:0!important;min-height:0!important;line-height:1.28!important}.App{max-width:100%!important;padding:0!important}#resume{display:block!important;border:none!important;padding:0!important;opacity:1!important;transform:none!important}.print-resume-document{width:100%;color:#111;font-family:Arial,Helvetica,sans-serif;font-size:8.7pt;line-height:1.28}.print-resume-document a{color:#111!important;text-decoration:none}.print-resume-header{margin-bottom:.7rem}.print-resume-header h1{color:#111!important;font-size:26pt;font-weight:800;line-height:1;margin:0 0 .25rem}.print-resume-headline{color:#3d6698!important;font-size:13pt;font-weight:700;margin:0 0 .42rem}.print-resume-intro{color:#111!important;font-size:9.6pt;line-height:1.32;margin:0 0 .75rem}.print-resume-contact-row{display:flex;align-items:center;justify-content:space-between;gap:.55rem;color:#111;font-size:9pt;line-height:1.2;white-space:nowrap}.print-resume-layout{display:grid;grid-template-columns:minmax(0,1fr) 35.5%;gap:.38in;align-items:start}.print-resume-main,.print-resume-sidebar{min-width:0}.print-resume-sidebar{background:#efefef;padding:.15in .13in .1in}.print-resume-section{break-inside:avoid;page-break-inside:avoid;margin-bottom:.58rem}.print-resume-section h2{display:flex;align-items:center;gap:.32rem;color:#111!important;font-size:12.3pt;font-weight:800;letter-spacing:0;line-height:1.15;text-transform:uppercase;border-bottom:3px solid #111;padding-bottom:.18rem;margin:0 0 .45rem}.print-resume-section h2:before{content:"";display:inline-block;width:.36rem;height:.36rem;border-radius:50%;background:#3d6698;box-shadow:0 .28rem #3d6698,.28rem .28rem #3d6698,-.28rem .28rem #3d6698;margin:-.22rem .25rem 0}.print-resume-section h2:after{content:none}.print-resume-summary-list,.print-resume-role ul,.print-resume-skill-list{margin:0;padding-left:1rem}.print-resume-summary-list li,.print-resume-role li,.print-resume-skill-list li{margin-bottom:.22rem;color:#111}.print-resume-role{break-inside:avoid;page-break-inside:avoid;margin-bottom:.62rem}.print-resume-role h3{display:block;background:#3d6698;color:#fff!important;font-size:9.4pt;font-weight:800;line-height:1.15;margin:0 0 .12rem;padding:.14rem .22rem}.print-resume-meta{color:#111;font-size:8.5pt;margin:0 0 .24rem}.print-resume-role ul{color:#111}.print-resume-single-line{color:#222;font-size:8.3pt;line-height:1.24;margin:0}.print-resume-featured-project{break-inside:avoid;page-break-inside:avoid}.print-resume-featured-project h3{display:block;background:#3d6698;color:#fff!important;font-size:9.4pt;font-weight:800;line-height:1.15;margin:0 0 .14rem;padding:.14rem .22rem}.print-resume-featured-project p{color:#222;font-size:8.3pt;line-height:1.24;margin:0 0 .06rem}.print-resume-featured-project span{color:#3d6698;font-size:7.8pt;font-weight:700;line-height:1.15}.print-resume-projects{display:flex;flex-direction:column;gap:.24rem}.print-resume-project{break-inside:avoid;page-break-inside:avoid}.print-resume-project h3{color:#111!important;font-size:8.9pt;font-weight:800;line-height:1.15;margin:0 0 .05rem}.print-resume-project p{color:#222;font-size:7.85pt;line-height:1.2;margin:0 0 .03rem}.print-resume-project span{color:#3d6698;font-size:7.35pt;font-weight:700;line-height:1.15}.print-resume-competencies{display:flex;flex-direction:column;gap:.14rem}.print-resume-competencies span{display:block;background:#3d6698;color:#fff;font-size:8.8pt;line-height:1.2;padding:.28rem .46rem}.print-resume-skill-list{color:#111;font-size:8.5pt}.print-resume-skill-list strong{color:#111}.print-resume-education{display:flex;flex-direction:column;gap:.12rem;color:#111;font-size:8.7pt}.print-resume-education strong{font-size:9.3pt}}@media(max-width:640px){.resume-projects{grid-template-columns:1fr}.resume-skill-group{flex-direction:column;gap:.4rem}.resume-skill-label{min-width:unset}.resume-role-header{flex-direction:column}.resume-company-header{flex-direction:column;gap:.15rem}}
