@import "https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,300&display=swap";:root{--ink:#0f1117;--ink-mid:#3a3d4a;--ink-light:#6b6f80;--ink-xlight:#9a9eae;--rule:#e2e3e8;--rule-strong:#c8c9d0;--bg:#fafaf8;--bg-warm:#f4f3ef;--bg-card:#f0efeb;--accent:#c8392b;--accent-dark:#a32e22;--f-display:"DM Serif Display", Georgia, serif;--f-body:"DM Sans", system-ui, sans-serif;--nav-h:60px;--max-w:960px;--ease:cubic-bezier(.4, 0, .2, 1);font-family:var(--f-body);color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-h);font-size:15px}body{background:var(--bg);min-width:320px;min-height:100vh;color:var(--ink);font-family:var(--f-body);line-height:1.6}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{border:0}img{max-width:100%;display:block}#root{min-height:100vh}.nav{z-index:100;height:var(--nav-h);border-bottom:1px solid var(--rule);-webkit-backdrop-filter:blur(12px);background:#fafaf8eb;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.nav-inner{max-width:var(--max-w);justify-content:space-between;align-items:center;width:100%;margin:0 auto;padding:0 32px;display:flex}.nav-logo{font-family:var(--f-display);color:var(--ink);letter-spacing:-.01em;font-size:1.15rem}.nav-logo span{color:var(--accent);font-style:italic}.nav-links{align-items:center;gap:32px;list-style:none;display:flex}.nav-links a,.nav-cv{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-light);font-size:.82rem;font-weight:500;transition:color .15s;position:relative}.nav-links a:after{content:"";background:var(--accent);height:1px;transition:transform .2s var(--ease);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.nav-links a:hover{color:var(--ink)}.nav-links a:hover:after{transform:scaleX(1)}.nav-cv{color:var(--accent);border:1px solid var(--accent);letter-spacing:.08em;cursor:pointer;background:0 0;border-radius:2px;padding:6px 16px;font-size:.78rem;font-weight:600;transition:background .15s,color .15s;display:inline-block}.nav-cv:hover{background:var(--accent);color:#fff}.nav-menu-btn{cursor:pointer;background:0 0;flex-direction:column;gap:5px;padding:4px;display:none}.nav-menu-btn span{background:var(--ink);width:22px;height:1.5px;transition:transform .2s,opacity .2s;display:block}.nav-menu-btn.open span:first-child{transform:translateY(6.5px)rotate(45deg)}.nav-menu-btn.open span:nth-child(2){opacity:0}.nav-menu-btn.open span:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}.hero{min-height:100vh;padding-top:var(--nav-h);border-bottom:1px solid var(--rule);align-items:center;display:flex}.hero-inner{max-width:var(--max-w);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:64px;width:100%;margin:0 auto;padding:80px 32px;display:grid}.hero-label{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:16px;font-size:.72rem;font-weight:600}.hero-name{font-family:var(--f-display);letter-spacing:-.02em;color:var(--ink);margin-bottom:8px;font-size:clamp(3rem,6vw,4.8rem);line-height:1}.hero-name em{color:var(--ink-mid);font-style:italic}.hero-sub{color:var(--ink-mid);max-width:460px;margin-top:20px;margin-bottom:36px;font-size:1rem;font-weight:300;line-height:1.65}.hero-actions{flex-wrap:wrap;gap:16px;display:flex}.btn{letter-spacing:.06em;text-transform:uppercase;min-height:44px;transition:all .15s var(--ease);cursor:pointer;border-radius:2px;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:.78rem;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;border:1px solid var(--accent)}.btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark);transform:translateY(-1px)}.btn-secondary{color:var(--ink);border:1px solid var(--ink);background:0 0}.btn-secondary:hover{background:var(--ink);color:var(--bg)}.hero-social{gap:20px;margin-top:8px;display:flex}.social-link{width:36px;height:36px;color:var(--ink-light);justify-content:center;align-items:center;transition:color .15s;display:flex}.social-link:hover{color:var(--accent)}.social-link svg{width:20px;height:20px}.hero-avatar{flex-shrink:0;width:280px;height:280px;position:relative}.hero-avatar:before{content:"";border:2px solid var(--accent);opacity:.35;z-index:0;border-radius:4px;width:100%;height:100%;position:absolute;top:14px;left:14px}.hero-avatar img{z-index:1;object-fit:cover;object-position:center top;border:1px solid var(--rule);width:100%;height:100%;transition:transform .4s var(--ease), box-shadow .4s var(--ease);border-radius:4px;position:relative;box-shadow:0 24px 56px #00000021}.hero-avatar:hover img{transform:translate(-4px,-4px);box-shadow:0 32px 64px #0000002e}.container{max-width:var(--max-w);margin:0 auto;padding:0 32px}.section{border-bottom:1px solid var(--rule);padding:120px 0}.section-label{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;font-size:.72rem;font-weight:600}.section-title{font-family:var(--f-display);letter-spacing:-.02em;color:var(--ink);margin-bottom:16px;font-size:clamp(2.4rem,4vw,3.2rem);line-height:1.1}.section-title em{color:var(--ink-mid);font-style:italic}.section-rule{background:var(--accent);width:120px;height:2px;margin-bottom:64px}.section-rule-muted{background:#ffffff1f}.fade-in{opacity:0;transition:opacity .8s var(--ease), transform .8s var(--ease);transform:translateY(20px)}.fade-in.visible{opacity:1;transform:translateY(0)}.sobre-grid{grid-template-columns:minmax(0,1fr) 300px;align-items:center;gap:80px;display:grid}.sobre-text{flex-direction:column;gap:20px;display:flex}.sobre-text p{color:var(--ink-mid);font-size:.95rem;line-height:1.7}.sobre-text p strong,.project-desc strong{color:var(--ink);font-weight:600}.sobre-cards{flex-direction:column;gap:16px;display:flex}.sobre-card{background:var(--bg-card);border:1px solid var(--rule);border-radius:4px;padding:24px}.sobre-card-label{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-xlight);margin-bottom:8px;font-size:.72rem;font-weight:600}.sobre-card-value{font-family:var(--f-display);color:var(--ink);font-size:1.8rem}.sobre-card-desc{color:var(--ink-light);margin-top:4px;font-size:.82rem}.skills-block{margin-top:80px}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:48px;display:grid}.skill-cat{flex-direction:column;gap:12px;display:flex}.skill-label{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-xlight);margin-bottom:4px;font-size:.72rem;font-weight:600}.skill-items{flex-wrap:wrap;gap:10px;display:flex}.skill-item{color:var(--ink);background:var(--bg-card);border:1px solid var(--rule);border-radius:2px;align-items:center;gap:6px;padding:6px 12px;font-size:.82rem;font-weight:500;display:inline-flex}.skill-dot{background:var(--ink-xlight);border-radius:50%;flex-shrink:0;width:6px;height:6px}.skill-dot.highlight{background:var(--ink)}.skill-dot.accent{background:var(--accent)}.skill-dot.python{background:#3776ab}.skill-dot.postgres{background:#336791}.skill-dot.mysql{background:#00758f}.skill-dot.react{background:#149eca}.skill-dot.javascript{background:#d6a900}.skill-dot.docker{background:#2496ed}.skill-dot.git{background:#f05032}.projects-list{flex-direction:column;gap:48px;display:flex}.project-item{background:var(--bg-card);border:1px solid var(--rule);border-radius:4px;grid-template-columns:80px minmax(0,1fr) auto;align-items:start;gap:32px;padding:40px;transition:border-color .2s;display:grid}.project-item:hover{border-color:var(--rule-strong)}.project-num{font-family:var(--f-display);color:var(--ink-xlight);font-size:2rem}.project-body{flex-direction:column;gap:12px;display:flex}.project-name{font-family:var(--f-display);color:var(--ink);font-size:1.4rem;line-height:1.2}.project-desc{color:var(--ink-mid);font-size:.88rem;line-height:1.65}.project-tags{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.project-tag{color:var(--ink-light);border:1px solid var(--rule);background:#00000008;border-radius:2px;padding:4px 10px;font-size:.72rem;font-weight:500}.project-meta{flex-direction:column;align-items:flex-end;gap:16px;display:flex}.project-badge{letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:2px;padding:5px 12px;font-size:.7rem;font-weight:600}.project-badge.live{color:#2e7d32;background:#e8f5e9;border:1px solid #a5d6a7}.project-badge.dev{color:#e65100;background:#fff3e0;border:1px solid #ffcc80}.project-badge.internal{color:#1565c0;background:#e3f2fd;border:1px solid #90caf9}.project-links{gap:12px;display:flex}.project-link-icon{width:32px;height:32px;color:var(--ink-light);border:1px solid var(--rule);border-radius:2px;justify-content:center;align-items:center;transition:all .15s;display:flex}.project-link-icon:hover{color:var(--accent);border-color:var(--accent)}.project-link-icon svg{width:16px;height:16px}.contato-section{color:#fff;background:linear-gradient(135deg,#1a1a2e 0%,#2d2d44 100%)}.contato-section .section-label{color:#fff9}.contato-section .section-title{color:#fff}.contato-section .section-title em{color:#ffffffb3}.contato-grid{grid-template-columns:repeat(2,minmax(220px,320px));justify-content:start;gap:20px;display:grid}.contact-card{transition:all .2s var(--ease);background:#ffffff0d;border:1px solid #ffffff14;border-radius:4px;flex-direction:column;gap:8px;padding:28px 24px;display:flex}.contact-card:hover{background:#ffffff14;border-color:#ffffff26;transform:translateY(-2px)}.contact-icon{width:40px;height:40px;color:var(--accent);justify-content:center;align-items:center;margin-bottom:4px;display:flex}.contact-icon svg{width:24px;height:24px}.contact-label{letter-spacing:.1em;text-transform:uppercase;color:#ffffff80;font-size:.7rem;font-weight:600}.contact-value{color:#fff;overflow-wrap:anywhere;font-size:.88rem;font-weight:400}.footer{background:var(--bg-warm);border-top:1px solid var(--rule);padding:32px 0}.footer-inner{max-width:var(--max-w);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:0 auto;padding:0 32px;display:flex}.footer-name{font-family:var(--f-display);color:var(--ink);font-size:.95rem}.footer-note{color:var(--ink-light);font-size:.78rem}@media (width<=768px){.nav-links{top:var(--nav-h);background:var(--bg);border-bottom:1px solid var(--rule);opacity:0;pointer-events:none;transition:transform .3s var(--ease), opacity .3s var(--ease);flex-direction:column;gap:0;padding:24px 32px;position:fixed;left:0;right:0;transform:translateY(-100%)}.nav-links.open{opacity:1;pointer-events:all;transform:translateY(0)}.nav-links li{text-align:center;border-bottom:1px solid var(--rule);width:100%;padding:12px 0}.nav-links li:last-child{border-bottom:none}.nav-cv{width:100%}.nav-menu-btn{display:flex}.hero-inner{grid-template-columns:1fr;gap:40px}.hero-avatar{width:200px;height:200px;margin:0 auto}.sobre-grid{grid-template-columns:1fr;gap:48px}.skills-grid{grid-template-columns:1fr}.project-item{grid-template-columns:1fr;gap:20px}.project-num{font-size:1.5rem}.project-meta{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.contato-grid{grid-template-columns:1fr}}@media (width<=520px){html{font-size:14px}.nav-inner,.hero-inner,.footer-inner,.container{padding-left:22px;padding-right:22px}.hero{min-height:auto}.hero-inner{padding-top:64px;padding-bottom:64px}.hero-name{font-size:3rem}.hero-actions{flex-direction:column;align-items:stretch}.hero-social{justify-content:center}.section{padding:84px 0}.section-rule{margin-bottom:44px}.project-item{padding:28px}.project-meta{flex-direction:column;align-items:flex-start}.footer{padding:28px 0}}.cv-page{--cv-tag-bg:#ededeb;--cv-tag-text:var(--ink-mid);--cv-s1:4px;--cv-s2:8px;--cv-s3:12px;--cv-s4:16px;--cv-s5:24px;--cv-s6:32px;--cv-s7:48px;max-width:900px;padding:var(--cv-s7) var(--cv-s6);margin:0 auto;font-size:15px}.cv-header{gap:var(--cv-s5);padding-bottom:var(--cv-s6);border-bottom:2px solid var(--ink);margin-bottom:var(--cv-s6);grid-template-columns:1fr auto;align-items:end;display:grid}.cv-label{font-family:var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--cv-s2);font-size:.72rem;font-weight:500}.cv-name{font-family:var(--f-display);letter-spacing:-.01em;color:var(--ink);font-size:3.4rem;line-height:1}.cv-name em{color:var(--ink-mid);font-style:italic}.cv-tagline{margin-top:var(--cv-s3);color:var(--ink-mid);max-width:440px;font-size:.95rem;font-weight:300;line-height:1.55}.cv-header-right{text-align:right}.cv-contact-list{gap:var(--cv-s1);flex-direction:column;align-items:flex-end;list-style:none;display:flex}.cv-contact-list li{color:var(--ink-light);font-size:.82rem;font-weight:400}.cv-contact-list li a{color:var(--ink-light);border-bottom:1px solid var(--rule);padding-bottom:1px;transition:color .15s,border-color .15s}.cv-contact-list li a:hover{color:var(--accent);border-color:var(--accent)}.cv-body{gap:var(--cv-s7);grid-template-columns:1fr 220px;align-items:start;display:grid}.cv-section{margin-bottom:var(--cv-s7)}.cv-section:last-child{margin-bottom:0}.cv-section-label{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-xlight);margin-bottom:var(--cv-s4);padding-bottom:var(--cv-s2);border-bottom:1px solid var(--rule);font-size:.68rem;font-weight:600}.cv-exp-item{margin-bottom:var(--cv-s6)}.cv-exp-item:last-child{margin-bottom:0}.cv-exp-header{justify-content:space-between;align-items:baseline;gap:var(--cv-s3);margin-bottom:var(--cv-s2);flex-wrap:wrap;display:flex}.cv-exp-role{font-family:var(--f-display);color:var(--ink);font-size:1.25rem;line-height:1.15}.cv-exp-period{color:var(--ink-xlight);white-space:nowrap;letter-spacing:.02em;font-size:.78rem;font-weight:400}.cv-exp-company{color:var(--accent);margin-bottom:var(--cv-s3);font-size:.88rem;font-weight:500}.cv-exp-desc{color:var(--ink-mid);margin-bottom:var(--cv-s3);font-size:.88rem;font-weight:300;line-height:1.65}.cv-bullets{gap:var(--cv-s2);flex-direction:column;list-style:none;display:flex}.cv-bullets li{color:var(--ink-mid);padding-left:var(--cv-s4);font-size:.875rem;line-height:1.6;position:relative}.cv-bullets li:before{content:"—";color:var(--rule-strong);font-size:.8rem;position:absolute;left:0}.cv-bullets li strong{color:var(--ink);font-weight:600}.cv-exp-divider{border:none;border-top:1px dashed var(--rule);margin:var(--cv-s5) 0}.cv-sidebar .cv-section{margin-bottom:var(--cv-s6)}.cv-sidebar-item{margin-bottom:var(--cv-s4)}.cv-sidebar-item:last-child{margin-bottom:0}.cv-sidebar-item-title{color:var(--ink);margin-bottom:var(--cv-s1);font-size:.8rem;font-weight:600}.cv-sidebar-item-sub{color:var(--ink-light);font-size:.78rem;font-weight:300;line-height:1.55}.cv-tags{gap:var(--cv-s2);flex-wrap:wrap;margin-top:6px;display:flex}.cv-tag{background:var(--cv-tag-bg);color:var(--cv-tag-text);letter-spacing:.01em;border-radius:3px;padding:3px 9px;font-size:.74rem;font-weight:500}.cv-tag-highlight{background:var(--ink);color:#fff}.cv-footer{margin-top:var(--cv-s7);padding-top:var(--cv-s4);border-top:1px solid var(--rule);justify-content:space-between;align-items:center;display:flex}.cv-footer-note{color:var(--ink-xlight);letter-spacing:.04em;font-size:.72rem}.cv-btn-download{background:var(--ink);color:#fff;font-family:var(--f-body);letter-spacing:.04em;cursor:pointer;z-index:100;border:none;border-radius:4px;align-items:center;gap:8px;padding:10px 20px;font-size:.8rem;font-weight:500;transition:background .15s,transform .1s;display:flex;position:fixed;bottom:28px;right:28px;box-shadow:0 2px 12px #0000002e}.cv-btn-download:hover{background:var(--accent);transform:translateY(-1px)}.cv-btn-download:active{transform:translateY(0)}.cv-btn-download:disabled{opacity:.7;cursor:default;transform:none}.cv-btn-download svg{flex-shrink:0}@media print{.cv-btn-download{display:none}body{background:#fff;font-size:13px}.cv-page{padding:24px 28px}.cv-header{margin-bottom:20px;padding-bottom:20px}.cv-body{gap:32px}.cv-name{font-size:2.6rem}.cv-page a{color:inherit!important}}@media (width<=680px){.cv-header{grid-template-columns:1fr}.cv-header-right{text-align:left}.cv-contact-list{align-items:flex-start}.cv-body{grid-template-columns:1fr}.cv-name{font-size:2.4rem}}
