:root{--ink: #4a3b52;--ink-soft: #84738c;--rosa: #ffd7ea;--rosa-sombra: #f3cfe4;--rosa-suave: #ffe4f0;--lilas: #e9d9ff;--lilas-sombra: #d9c8ff;--lilas-suave: #ece2ff;--pessego-sombra: #ffe3c9;--pessego-suave: #ffeede;--amarelo: #fff3b8;--amarelo-sombra: #f2e28e;--acento: #c583b8;--bg: #fff6fa;--card: #ffffff;--dashed: #eddcea}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Outfit,sans-serif;color:var(--ink);background:var(--bg);background-image:radial-gradient(#ffd7ea 1.2px,transparent 1.2px);background-size:26px 26px;min-height:100vh}a{color:inherit}.wrap{max-width:840px;margin:0 auto;padding:0 1.5rem}.hero{padding:6rem 0 4.5rem;text-align:center}.badge{display:inline-block;font-family:Sora,sans-serif;font-weight:600;font-size:.75rem;letter-spacing:.05em;background:#f3e3ff;color:#7a4b9e;padding:.45rem 1.1rem;border-radius:999px;border:2px solid var(--ink);transform:rotate(-2deg);margin-bottom:1.8rem;box-shadow:3px 3px 0 var(--lilas-sombra)}h1{font-family:Fraunces,serif;font-weight:500;font-size:clamp(2.5rem,6vw,3.9rem);line-height:1.1;letter-spacing:-.01em}h1 .hl{background:linear-gradient(120deg,#ffc9e2,#ffc9e2);background-repeat:no-repeat;background-size:100% 42%;background-position:0 80%;padding:0 .1em;font-style:italic}.tagline{margin:1.5rem auto 0;max-width:520px;font-weight:300;font-size:1.05rem;line-height:1.75;color:var(--ink-soft)}.tagline b{font-weight:500;color:#5d4f66}section{padding:2.5rem 0}h2{font-family:Fraunces,serif;font-weight:500;font-size:1.8rem;text-align:center;margin-bottom:2.2rem}h2 .mark{background:linear-gradient(120deg,var(--lilas),var(--lilas));background-repeat:no-repeat;background-size:100% 40%;background-position:0 82%;padding:0 .1em;font-style:italic}.about{text-align:center;max-width:620px;margin:0 auto}.about p{font-weight:300;font-size:1rem;line-height:1.8;color:var(--ink-soft);margin-bottom:1rem}.about p:last-child{margin-bottom:0}.about b{font-weight:500;color:#5d4f66}.about .location{display:inline-block;margin-top:1.5rem;font-family:Sora,sans-serif;font-weight:600;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;padding:.34rem .9rem;border-radius:999px;background:var(--pessego-suave);border:2px solid var(--ink)}.timeline-sub{text-align:center;font-weight:300;color:var(--ink-soft);margin:-1.6rem 0 3rem}.polaroids{display:grid;grid-template-columns:1fr 1fr;gap:2.6rem 2.2rem;justify-items:center}@media(max-width:640px){.polaroids{grid-template-columns:1fr;gap:2.4rem}}.pol{position:relative;width:min(330px,100%);background:#fff;border:2.5px solid var(--ink);border-radius:10px;padding:.85rem .85rem 1.15rem;transform:rotate(var(--tilt));transition:transform .45s cubic-bezier(.3,1.4,.5,1),box-shadow .45s;opacity:0;translate:0 26px}.pol.in{opacity:1;translate:0 0;transition:opacity .6s ease,translate .6s cubic-bezier(.3,1.3,.5,1),transform .45s cubic-bezier(.3,1.4,.5,1),box-shadow .45s}.pol:nth-child(1){--tilt: -2.4deg;box-shadow:7px 7px 0 var(--rosa-sombra)}.pol:nth-child(2){--tilt: 1.8deg;box-shadow:7px 7px 0 var(--lilas-sombra)}.pol:nth-child(3){--tilt: 2.1deg;box-shadow:7px 7px 0 var(--pessego-sombra)}.pol:nth-child(4){--tilt: -1.7deg;box-shadow:7px 7px 0 var(--amarelo-sombra)}.pol:hover{transform:rotate(0) translateY(-5px)}.pol:nth-child(1):hover{box-shadow:10px 10px 0 var(--rosa-sombra)}.pol:nth-child(2):hover{box-shadow:10px 10px 0 var(--lilas-sombra)}.pol:nth-child(3):hover{box-shadow:10px 10px 0 var(--pessego-sombra)}.pol:nth-child(4):hover{box-shadow:10px 10px 0 var(--amarelo-sombra)}.pol .shot{position:relative;border:2px solid var(--ink);border-radius:6px;height:150px;overflow:hidden;display:grid;place-items:center}.pol:nth-child(1) .shot{background:linear-gradient(135deg,#ffe3f0,#ffd0e6)}.pol:nth-child(2) .shot{background:linear-gradient(135deg,#eee4ff,#ddd0f7)}.pol:nth-child(3) .shot{background:linear-gradient(135deg,#fff0e0,#ffe2c6)}.pol:nth-child(4) .shot{background:linear-gradient(135deg,#fff7d6,#fdedad)}.pol .shot svg{width:74%;height:74%;overflow:visible}.pol .shot svg *{vector-effect:non-scaling-stroke}.pol .shot .doodle{fill:none;stroke:var(--ink);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.pol .shot .fill-soft{fill:#ffffff8c;stroke:var(--ink);stroke-width:2.4}.pol .cap{padding:.95rem .35rem 0}.pol .year{display:inline-block;font-family:Sora,sans-serif;font-weight:700;font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;border:2px solid var(--ink);border-radius:999px;padding:.24rem .68rem;margin-bottom:.55rem;background:#ffffffb8}.pol .cap h3{font-family:Fraunces,serif;font-weight:600;font-size:1.14rem;margin-bottom:.3rem}.pol .cap p{font-weight:300;font-size:.84rem;line-height:1.62;color:var(--ink-soft)}.pol .org{font-weight:500;color:#5d4f66}.pol .note{margin-top:.6rem;font-family:Fraunces,serif;font-style:italic;font-size:.86rem;color:var(--ink-soft)}.timeline-note{text-align:center;margin-top:2.6rem;font-family:Fraunces,serif;font-style:italic;color:var(--ink-soft)}.proj{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem}.proj article{background:var(--card);border:2.5px solid var(--ink);border-radius:20px;padding:1.7rem 1.6rem;box-shadow:6px 6px 0 var(--rosa-sombra);transition:transform .2s,box-shadow .2s}.proj article:nth-child(2){box-shadow:6px 6px 0 var(--lilas-sombra)}.proj article:nth-child(3){box-shadow:6px 6px 0 var(--pessego-sombra)}.proj article:hover{transform:translate(-3px,-3px);box-shadow:10px 10px 0 var(--rosa-sombra)}.proj article:nth-child(2):hover{box-shadow:10px 10px 0 var(--lilas-sombra)}.proj article:nth-child(3):hover{box-shadow:10px 10px 0 var(--pessego-sombra)}.tag{display:inline-block;font-family:Sora,sans-serif;font-size:.66rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:.34rem .9rem;border-radius:999px;margin-bottom:1rem;border:2px solid var(--ink)}.tag.rosa{background:var(--rosa-suave);color:var(--ink)}.tag.lilas{background:var(--lilas-suave);color:var(--ink)}.tag.pessego{background:var(--pessego-suave);color:var(--ink)}.proj h3{font-family:Fraunces,serif;font-weight:600;font-size:1.25rem;margin-bottom:.55rem}.proj p{font-weight:300;font-size:.88rem;line-height:1.68;color:var(--ink-soft)}.more{display:inline-block;margin-top:1.1rem;font-family:Sora,sans-serif;font-weight:600;font-size:.74rem;letter-spacing:.03em;color:var(--ink);background:var(--amarelo);border:2px solid var(--ink);border-radius:12px;padding:.48rem 1rem;cursor:pointer;box-shadow:3px 3px 0 var(--ink);transition:transform .15s,box-shadow .15s}.more:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.more:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.more:focus-visible{outline:3px solid var(--acento);outline-offset:3px}.more.deeper{background:var(--rosa-suave);font-size:.7rem;padding:.4rem .85rem;margin-top:.9rem;box-shadow:2px 2px 0 var(--ink)}.more.deeper:hover{box-shadow:3px 3px 0 var(--ink)}.more.deeper:active{box-shadow:1px 1px 0 var(--ink)}.lvl2,.lvl3{display:grid;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows .45s ease,visibility .45s}.lvl2.open,.lvl3.open{grid-template-rows:1fr;visibility:visible}.reveal{overflow:hidden;min-height:0}.lvl2 .inner{margin-top:1.1rem;padding-top:1rem;border-top:2px dashed var(--dashed);font-size:.85rem;line-height:1.7;color:var(--ink-soft)}.lvl2 .inner b{font-weight:500;color:#5d4f66}.lvl2 .inner p+p{margin-top:.85rem}.lvl3 .inner{margin-top:.9rem;padding:.9rem 1rem;background:#fbf3f8;border-radius:12px;border:1.5px dashed var(--dashed);font-size:.8rem;line-height:1.65;color:var(--ink-soft)}.lvl3 .inner .row{display:grid;grid-template-columns:96px 1fr;column-gap:.75rem;margin-bottom:.45rem}.lvl3 .inner .row:last-child{margin-bottom:0}.lvl3 .inner .k{font-family:Sora,sans-serif;font-weight:700;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);padding-top:.1em}@media(max-width:480px){.lvl3 .inner .row{grid-template-columns:1fr;row-gap:.15rem}}.lvl3 .inner a{color:#7a4b9e;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.built{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.built .item{border:2px solid var(--ink);border-radius:16px;padding:1.15rem 1.25rem;transition:transform .15s,box-shadow .15s}.built .item.featured{grid-column:1 / -1}.built .item:nth-child(3n+1){background:var(--rosa-suave);box-shadow:4px 4px 0 var(--rosa-sombra)}.built .item:nth-child(3n+2){background:var(--lilas-suave);box-shadow:4px 4px 0 var(--lilas-sombra)}.built .item:nth-child(3n){background:var(--pessego-suave);box-shadow:4px 4px 0 var(--pessego-sombra)}.built .item:hover{transform:rotate(-1deg) translate(-1px,-1px)}.built .item:nth-child(2n):hover{transform:rotate(1deg) translate(-1px,-1px)}.built .item.featured:hover{transform:translate(-1px,-1px)}.chip{display:inline-block;font-family:Sora,sans-serif;font-size:.6rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.28rem .7rem;border-radius:999px;border:2px solid var(--ink);background:#ffffffa6;margin-bottom:.7rem}.built h3{font-family:Fraunces,serif;font-weight:600;font-size:1.1rem;margin-bottom:.4rem}.built p{font-weight:300;font-size:.85rem;line-height:1.65;color:#6b5b74}.built .tech{margin-top:.65rem;font-family:Sora,sans-serif;font-size:.68rem;font-weight:600;color:var(--ink);opacity:.75}.built .src{display:inline-block;margin-top:.55rem;font-family:Sora,sans-serif;font-weight:600;font-size:.7rem;color:#7a4b9e;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}@media(max-width:560px){.built{grid-template-columns:1fr}}.toolbox{display:flex;flex-direction:column;gap:2.2rem;align-items:center}.certs{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;width:100%}.cert{background:var(--card);border:2.5px solid var(--ink);border-radius:16px;padding:1rem 1.1rem;box-shadow:4px 4px 0 var(--lilas-sombra);transition:transform .15s,box-shadow .15s;display:flex;flex-direction:column;gap:.35rem}.cert:nth-child(2){box-shadow:4px 4px 0 var(--rosa-sombra)}.cert:nth-child(3){box-shadow:4px 4px 0 var(--pessego-sombra)}.cert:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--lilas-sombra)}.cert:nth-child(2):hover{box-shadow:6px 6px 0 var(--rosa-sombra)}.cert:nth-child(3):hover{box-shadow:6px 6px 0 var(--pessego-sombra)}.cert .code{font-family:Sora,sans-serif;font-weight:700;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--acento)}.cert .name{font-family:Fraunces,serif;font-weight:500;font-size:1rem;color:var(--ink);line-height:1.35}.cert .meta{font-family:Outfit,sans-serif;font-weight:300;font-size:.8rem;color:var(--ink-soft)}.cert .verify{font-family:Sora,sans-serif;font-weight:600;font-size:.7rem;color:#7a4b9e;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;margin-top:.2rem}.skills-group{width:100%;text-align:center}.skills-label{font-family:Sora,sans-serif;font-weight:700;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:.3rem}.skills{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:center;list-style:none}.skills li{font-family:Sora,sans-serif;font-weight:600;font-size:.78rem;padding:.55rem 1.05rem;background:var(--card);border:2px solid var(--ink);border-radius:12px;color:var(--ink);transition:transform .15s,background .15s;cursor:default}.skills li:hover{background:var(--rosa);transform:rotate(-1.5deg)}.skills li:nth-child(2n):hover{background:var(--lilas);transform:rotate(1.5deg)}.skills.secondary li{font-size:.72rem;padding:.42rem .85rem;background:transparent;border-style:dashed;border-width:2px;color:var(--ink-soft)}.skills.secondary li:hover{background:var(--pessego-suave);color:var(--ink)}.skills.secondary li:nth-child(2n):hover{background:var(--lilas-suave)}.community{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.2rem}.community .item{background:var(--card);border:2px solid var(--ink);border-radius:16px;padding:1.1rem 1.2rem;box-shadow:4px 4px 0 var(--pessego-sombra);transition:transform .15s,box-shadow .15s}.community .item:nth-child(2){box-shadow:4px 4px 0 var(--rosa-sombra)}.community .item:nth-child(3){box-shadow:4px 4px 0 var(--lilas-sombra)}.community .item:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--pessego-sombra)}.community .item:nth-child(2):hover{box-shadow:6px 6px 0 var(--rosa-sombra)}.community .item:nth-child(3):hover{box-shadow:6px 6px 0 var(--lilas-sombra)}.community h3{font-family:Fraunces,serif;font-weight:600;font-size:1.1rem;margin-bottom:.35rem}.community p{font-weight:300;font-size:.85rem;line-height:1.65;color:var(--ink-soft)}.contact{text-align:center;padding:3.5rem 0 5rem}.contact p{font-family:Fraunces,serif;font-style:italic;font-size:1.2rem;color:var(--ink-soft);margin-bottom:1.3rem}.cta{display:inline-block;font-family:Sora,sans-serif;font-weight:700;font-size:.95rem;color:var(--ink);text-decoration:none;background:var(--rosa);border:2.5px solid var(--ink);border-radius:16px;padding:.95rem 2rem;box-shadow:4px 4px 0 var(--ink);transition:transform .15s,box-shadow .15s}.cta:hover{transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--ink)}.cta:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}.cta:focus-visible{outline:3px solid var(--acento);outline-offset:4px}.channels{display:flex;justify-content:center;gap:1rem;margin-top:1.6rem;flex-wrap:wrap}.channels a,.channels span{display:inline-block;font-family:Sora,sans-serif;font-weight:600;font-size:.78rem;padding:.5rem 1rem;background:var(--card);border:2px solid var(--ink);border-radius:12px;color:var(--ink);text-decoration:none;box-shadow:3px 3px 0 var(--lilas-sombra);transition:transform .15s,box-shadow .15s}.channels a:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--lilas-sombra)}.channels a:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--lilas-sombra)}footer{padding:2rem;text-align:center;font-size:.78rem;color:#c2b3c7}.todo{background:repeating-linear-gradient(45deg,#fff3b8,#fff3b8 6px,#ffe27a 6px 12px);border:1.5px dashed var(--ink);padding:.1em .35em;border-radius:4px;font-family:Sora,sans-serif;font-weight:700;font-size:.68em;letter-spacing:.05em;text-transform:uppercase;color:var(--ink)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important}html{scroll-behavior:auto}.pol{opacity:1;translate:0 0;transition:none}}
