html{scroll-behavior:smooth}*{padding:0;margin:0;box-sizing:border-box}.skip-link{position:absolute;top:10px;left:10px;background:#0056b3;color:#fff;padding:8px 16px;z-index:1000;text-decoration:none;transform:translateY(-150%);transition:top .2s ease}.skip-link:focus{transform:translateY(0)}body{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:1rem;color:#404040;line-height:1.6;min-height:100vh;display:flex;flex-direction:column}h1{font-size:1.75rem}h1,h2{line-height:1.3}#main-content{flex:1}#main-content p{margin:0 0 1.5rem 0}section h1{margin:0 0 2.3rem 0;text-align:center;font-family:Nunito,sans-serif;color:#111}#main-content a{text-decoration:none}.nav{width:100%;position:fixed;top:0;left:0;border-bottom:2px solid #eee;background-color:#fff;z-index:999}.nav .nav-container{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;max-width:850px;margin:0 auto;padding:0 1rem}.nav a,.section a{padding:.5rem .9rem;font-size:inherit;color:#555;text-decoration:none;transition:color .2s ease,transform .2s ease;margin:0 .1rem;border-radius:4px}.nav .nav-container .my-name a{font-weight:600;order:1;font-size:1rem;color:#000;padding:0}.nav .nav-container .links{width:100%;display:flex;justify-content:center;order:3}.nav .nav-container .icon-links{display:flex;order:2}.nav a:hover,.section a:hover{color:#111}.my-name span:hover{color:#666}.nav .nav-container .icon-links a{font-size:1.1rem}.welcome-container{display:flex;flex-direction:column;align-items:center;gap:2rem}.profile-photo-frame{flex-shrink:0;margin:0 auto}.profile-photo{width:160px;height:160px;object-fit:cover;object-position:top;border-radius:50%;border:3px solid #eee;box-shadow:0 4px 12px rgba(0,0,0,.08)}.section{padding-top:90px;min-height:100vh;min-height:100dvh}.credentials{font-size:.875rem;color:#555;display:block;margin-top:.2rem}.container{padding:0 1rem;max-width:850px;margin-left:auto;margin-right:auto}.project-grid{display:grid;grid-template-columns:1fr;gap:2rem;margin-top:2rem}.project-tile{border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem;background-color:#fff}.tech-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0}.tag{background-color:#f0f4f8;color:#2c3e50;font-size:.85rem;padding:.25rem .6rem;border-radius:4px;font-weight:500}.testimonials-grid{display:grid;grid-template-columns:1fr;gap:2rem;margin-top:2rem}.testimonial-card{display:flex;flex-direction:column;justify-content:space-between;border:1px solid #e0e0e0;border-left:4px solid #0056b3;border-radius:8px;padding:1.5rem;background-color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.04);transition:transform .2s ease,box-shadow .2s ease}.testimonial-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.08)}.testimonial-quote::before{content:"\201C";display:block;font-family:Georgia,serif;font-style:normal;font-size:3rem;line-height:.8;color:rgba(0,86,179,.15);margin-bottom:.35rem}.testimonial-narrative,.testimonial-quote{font-style:italic;color:#404040;margin:0 0 1.25rem 0;line-height:1.65}.testimonial-author{margin-top:auto;padding-top:1rem;border-top:1px solid #eee;min-height:6.5rem}.testimonial-author strong{display:block;font-family:Nunito,sans-serif;color:#111;font-size:1rem}.testimonial-author span{display:block;font-size:.875rem;color:#555;margin-top:.15rem}.testimonial-context{font-size:.88rem;font-style:italic;color:#555;margin:.85rem 0 1rem 0;padding-top:.75rem;border-top:1px dashed #e0e0e0}.testimonial-icon{color:rgba(0,86,179,.15);margin-bottom:1rem;height:1.75rem;display:flex;align-items:center}.testimonial-narrative{font-style:normal}#contact-form{width:100%;margin:1.5rem 0}#contact-section textarea{resize:vertical;min-height:120px}#contact-section input:user-invalid{border-color:#d9534f;background-color:#fff8f8}#contact-section input:user-valid{border-color:#5cb85c}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-family:Nunito,sans-serif;font-weight:600;margin-bottom:.4rem;color:#111}.form-group input,.form-group textarea{width:100%;padding:.75rem;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:1rem;color:#404040;border:1px solid #ccc;border-radius:4px}.form-group input:focus,.form-group textarea:focus{outline:0;border-color:#111;box-shadow:0 0 0 2px rgba(0,0,0,.1)}.submit-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;width:100%;padding:.85rem 1.75rem;font-family:inherit;font-size:1rem;font-weight:600;color:#fff;background-color:#0056b3;border:1px solid #0056b3;border-radius:6px;cursor:pointer;box-shadow:0 2px 4px rgba(0,0,0,.1);transition:all .2s ease-in-out}.submit-btn:hover{background-color:#004085;border-color:#003768;box-shadow:0 4px 8px rgba(0,0,0,.15);transform:translateY(-1px)}.submit-btn:active{transform:translateY(0);box-shadow:0 1px 2px rgba(0,0,0,.1)}.submit-btn:focus-visible{outline:3px solid #80bdff;outline-offset:2px}.submit-btn i{transition:transform .2s ease-in-out}.submit-btn:hover i{transform:translateX(3px) translateY(-1px)}@media (min-width:768px){.submit-btn{width:auto;min-width:180px}}.thanks-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem}.thanks-card{width:100%;max-width:560px;padding:2.5rem 2.25rem;background-color:#162235;color:#f1f5f9;border:1px solid rgba(56,189,248,.25);border-top:4px solid #38bdf8;border-radius:12px;box-shadow:0 20px 45px rgba(0,0,0,.45);text-align:left}.thanks-badge{width:52px;height:52px;border-radius:50%;background-color:rgba(56,189,248,.16);border:1px solid rgba(56,189,248,.45);color:#38bdf8;display:inline-flex;align-items:center;justify-content:center;margin-bottom:1.25rem}.thanks-card h1{margin:0 0 .75rem;font-size:1.85rem;color:#fff}.thanks-lead{margin:0 0 1.75rem;line-height:1.65;color:#cbd5e1}.thanks-signature{display:flex;align-items:center;gap:1rem;padding:1.1rem 1.25rem;margin-bottom:1.85rem;background-color:#0f172a;border:1px solid rgba(56,189,248,.25);border-left:4px solid #38bdf8;border-radius:8px}.thanks-monogram{width:46px;height:46px;flex-shrink:0;border-radius:8px;background:linear-gradient(135deg,#0284c7,#0369a1);border:1px solid #38bdf8;color:#fff;font-weight:700;font-size:1.05rem;display:flex;align-items:center;justify-content:center;letter-spacing:.04em;box-shadow:0 0 14px rgba(56,189,248,.35)}.thanks-author{display:flex;flex-direction:column;gap:.2rem}.thanks-name{font-size:1.1rem;color:#fff;letter-spacing:.01em}.thanks-role{font-size:.9rem;font-weight:600;color:#38bdf8}.back-link{display:inline-block;padding:.65rem 1.2rem;font-weight:600;text-decoration:none;color:#0f172a;background-color:#38bdf8;border-radius:6px;transition:background-color .2s ease,transform .15s ease}.back-link:hover{background-color:#7dd3fc;text-decoration:none}.footer{text-align:center;margin-top:2rem;padding:1rem 0;background-color:#f8f9fa;border-top:1px solid #e0e0e0;color:#555;font-size:.8rem}.footer a{color:#555;text-decoration:none;transition:color .2s ease}.footer a:hover{color:#111;text-decoration:underline}.footer-copy,.footer-credit{display:block}.footer-sep{display:none}@media only screen and (min-width:43.8em){body{font-size:1.1rem}h1{font-size:2.05rem}.nav a{font-size:1.2rem}.nav .nav-container .my-name a{font-size:1rem}.nav .nav-container .icon-links a{font-size:1.25rem}.nav .nav-container .links{justify-content:flex-start;margin:.5rem 0}.nav .icon-links a:hover,.nav .links a:hover,.section a:hover{background-color:#d1cfcf66}section h1{text-align:left}.section{padding-top:114px}.credentials{font-size:.95em}.welcome-container{flex-direction:row-reverse;justify-content:space-between;align-items:flex-start;gap:2rem}.profile-photo{margin:0}#contact-form{max-width:650px}.submit-btn{width:auto;font-size:1.1rem}.project-grid,.testimonials-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.footer{text-align:center}.footer-copy,.footer-credit,.footer-sep{display:inline}}@media only screen and (min-width:53em){.nav .nav-container{height:70px}.nav .nav-container .links{width:auto;order:2}.section{padding-top:70px}}#main-content .section{display:none}#main-content .section:target{display:block}#main-content .section:first-of-type{display:block}#main-content:has(.section:target) #welcome-section:not(:target){display:none}