:root{--red: #8B0000;--red-hover: #a30000;--white: #ffffff;--off-white: #f7f4f4;--black: #111111;--text-gray: #444444}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:Liter,sans-serif;color:var(--black);background:var(--white);line-height:1.6}.header{background:var(--white);border-bottom:3px solid var(--red);position:sticky;top:0;z-index:100}.header-inner{max-width:1100px;margin:0 auto;padding:.75rem 2rem;display:flex;align-items:center;justify-content:space-between}.logo-link{display:flex;align-items:center;text-decoration:none}.header-logo{height:48px;width:auto}nav{display:flex;gap:2rem}.nav-link{color:var(--black);text-decoration:none;font-size:1rem;letter-spacing:.03em;padding-bottom:3px;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.nav-link:hover{color:var(--red)}.nav-link.active{color:var(--red);border-bottom-color:var(--red)}.hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;padding:6px 4px}.hamburger span{display:block;width:24px;height:2px;background:var(--black);border-radius:2px;transition:transform .22s ease,opacity .22s ease;transform-origin:center}.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-nav{display:flex;flex-direction:column;gap:0;background:var(--white);border-top:1px solid #eee}.mobile-nav .nav-link{padding:1rem 2rem;border-bottom:1px solid #eee;font-size:1.05rem}.mobile-nav .nav-link.active{color:var(--red);border-bottom-color:#eee;background:#fdf5f5}.hero{position:relative;color:var(--white);text-align:center;padding:6rem 2rem 5.5rem;background:url(/st-louis-skyline-banner.jpeg) center 40% / cover no-repeat;isolation:isolate}.hero:before{content:"";position:absolute;inset:0;background:#8b0000b8;z-index:-1}.hero-logo{width:110px;height:auto;margin-bottom:1.5rem;filter:brightness(0) invert(1)}.hero h1{font-size:3rem;letter-spacing:-.02em;margin-bottom:.75rem}.hero p{font-size:1.2rem;opacity:.88}.container{max-width:1100px;margin:0 auto}.section-title{font-size:2rem;color:var(--red);margin-bottom:.5rem}.section-title:after{content:"";display:block;width:56px;height:3px;background:var(--red);margin-top:.5rem}.about{background:var(--white);padding:5rem 2rem}.about p{margin-top:1.5rem;font-size:1.1rem;color:var(--text-gray);max-width:720px;line-height:1.85}.projects{background:var(--off-white);padding:5rem 2rem}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;margin-top:2.5rem}.project-card{background:var(--white);border-radius:12px;padding:2.5rem 2rem;display:flex;flex-direction:column;align-items:center;gap:1.25rem;text-decoration:none;border:2px solid transparent;box-shadow:0 2px 8px #0000000f;transition:border-color .2s,transform .2s,box-shadow .2s}.project-card:hover{border-color:var(--red);transform:translateY(-4px);box-shadow:0 10px 28px #8b000021}.project-logo{width:100%;max-width:190px;height:auto;object-fit:contain}.project-desc{font-size:.9rem;color:var(--text-gray);text-align:center;line-height:1.65}.footer{background:var(--red);color:var(--white);text-align:center;padding:2rem;font-size:.9rem}.footer p+p{margin-top:.25rem;opacity:.72}.contact-page{padding:5rem 2rem;min-height:calc(100vh - 260px)}.contact-page h1{font-size:2.5rem;color:var(--red);margin-bottom:1rem}.contact-page h1:after{content:"";display:block;width:56px;height:3px;background:var(--red);margin-top:.5rem}.contact-email{margin-top:1.5rem;font-size:1.1rem;color:var(--text-gray)}.contact-email a{color:var(--red);text-decoration:none;font-weight:600}.contact-email a:hover{text-decoration:underline}.contact-form{margin-top:3rem;max-width:600px;display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.field-optional{font-weight:400;text-transform:none;letter-spacing:0;color:#999;font-size:.8rem}.form-group label{font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--black)}.form-group input,.form-group textarea{padding:.75rem 1rem;border:2px solid #ddd;border-radius:6px;font-family:Liter,sans-serif;font-size:1rem;color:var(--black);background:var(--white);transition:border-color .15s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--red)}.form-group textarea{resize:vertical}.submit-btn{align-self:flex-start;padding:.875rem 2.25rem;background:var(--red);color:var(--white);border:none;border-radius:6px;font-family:Liter,sans-serif;font-size:1rem;font-weight:700;cursor:pointer;letter-spacing:.03em;transition:background .15s}.submit-btn:hover:not(:disabled){background:var(--red-hover)}.submit-btn:disabled{opacity:.55;cursor:not-allowed}.form-success{color:#2e7d32;font-weight:600}.contact-success{margin-top:3rem;max-width:600px;text-align:center;padding:3rem 2rem;border:2px solid #e0f0e0;border-radius:12px;background:#f7fdf7}.contact-success-icon{font-size:3rem;color:#2e7d32;margin-bottom:1rem;line-height:1}.contact-success h2{font-size:1.75rem;color:var(--black);margin-bottom:.75rem}.contact-success p{font-size:1.05rem;color:var(--text-gray);margin-bottom:2rem}.contact-success .submit-btn{background:var(--red)}.form-error{color:var(--red);font-weight:600}.hero-github{display:inline-block;margin-top:1.5rem}.hero-github-icon{width:32px;height:32px;filter:brightness(0) invert(1);opacity:.85;transition:opacity .15s}.hero-github:hover .hero-github-icon{opacity:1}.footer-github{display:inline-block;margin-bottom:.75rem}.footer-github-icon{width:28px;height:28px;filter:brightness(0) invert(1);opacity:.8;transition:opacity .15s}.footer-github:hover .footer-github-icon{opacity:1}.about-github-link{display:inline-block;margin-top:.25rem}.about-github-icon{width:28px;height:28px;transition:opacity .15s}.about-github-link:hover .about-github-icon{opacity:.7}.projects-page{min-height:calc(100vh - 260px)}.projects-page-hero{background:var(--red);color:var(--white);padding:4rem 2rem}.projects-page-hero h1{font-size:2.75rem;letter-spacing:-.02em}.projects-page-hero h1:after{content:"";display:block;width:56px;height:3px;background:#ffffff80;margin-top:.6rem}.projects-page-list{padding:5rem 2rem}.project-row{padding:3rem 0;border-bottom:1px solid #eee}.project-row:last-child{border-bottom:none}.project-row--alt{background:var(--off-white);padding:3rem 2rem;margin:0 -2rem;border-bottom:none}.project-row-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.project-row-logo{max-width:200px;height:auto;object-fit:contain}.project-row-link{color:var(--red);font-weight:700;text-decoration:none;font-size:.95rem;letter-spacing:.03em;white-space:nowrap;transition:opacity .15s}.project-row-link:hover{opacity:.75}.project-row-desc{font-size:1.05rem;color:var(--text-gray);line-height:1.8;margin-bottom:1.25rem;max-width:760px}.project-row-details{list-style:none;display:flex;flex-direction:column;gap:.5rem}.project-row-details li{font-size:.95rem;color:var(--text-gray);padding-left:1.25rem;position:relative}.project-row-details li:before{content:"→";position:absolute;left:0;color:var(--red);font-size:.85rem}.read-more-btn{display:inline-block;margin-top:2rem;padding:.7rem 1.75rem;background:var(--red);color:var(--white);text-decoration:none;border-radius:6px;font-weight:700;font-size:.95rem;letter-spacing:.03em;transition:background .15s}.read-more-btn:hover{background:var(--red-hover)}.about-page{min-height:calc(100vh - 260px)}.about-hero{background:var(--red);color:var(--white);padding:4rem 2rem}.about-hero h1{font-size:2.75rem;letter-spacing:-.02em}.about-hero h1:after{content:"";display:block;width:56px;height:3px;background:#ffffff80;margin-top:.6rem}.about-section{padding:5rem 2rem}.about-grid{display:grid;grid-template-columns:1fr 300px;gap:4rem;align-items:start}.about-main h2{font-size:1.75rem;color:var(--red);margin-bottom:1.5rem}.about-main h2:after{content:"";display:block;width:40px;height:3px;background:var(--red);margin-top:.4rem}.about-main p{font-size:1.05rem;color:var(--text-gray);line-height:1.85;margin-bottom:1.25rem}.about-cta{display:inline-block;margin-top:1.5rem;padding:.8rem 2rem;background:var(--red);color:var(--white);text-decoration:none;border-radius:6px;font-weight:700;font-size:.95rem;letter-spacing:.03em;transition:background .15s}.about-cta:hover{background:var(--red-hover)}.about-card{background:var(--off-white);border-radius:12px;padding:2rem;border:2px solid #eee}.about-card h3{font-size:1rem;text-transform:uppercase;letter-spacing:.08em;color:var(--red);margin-bottom:1.25rem}.about-facts{list-style:none;display:flex;flex-direction:column;gap:.85rem}.about-facts li{font-size:.95rem;color:var(--text-gray);line-height:1.4}.fact-label{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--black);margin-bottom:.15rem}@media(max-width:768px){.about-grid{grid-template-columns:1fr;gap:2.5rem}.about-hero h1{font-size:2.25rem}}.not-found{padding:7rem 2rem;text-align:center;min-height:calc(100vh - 260px)}.not-found-code{font-size:7rem;font-weight:700;color:var(--red);line-height:1;margin-bottom:.5rem;opacity:.15}.not-found h1{font-size:2rem;color:var(--black);margin-bottom:.75rem}.not-found-sub{font-size:1.05rem;color:var(--text-gray);margin-bottom:2.5rem}.back-home{display:inline-block;padding:.8rem 2.25rem;background:var(--red);color:var(--white);text-decoration:none;border-radius:6px;font-weight:700;letter-spacing:.03em;transition:background .15s}.back-home:hover{background:var(--red-hover)}@media(max-width:768px){.projects-grid{grid-template-columns:1fr;max-width:420px}.hero h1{font-size:2.25rem}.header-inner{padding:.75rem 1rem}}@media(max-width:640px){.desktop-nav{display:none}.hamburger{display:flex}}@media(max-width:480px){.hero{padding:3.5rem 1.5rem 3rem}.about,.projects,.contact-page{padding:3.5rem 1.25rem}}
