@import "https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;700;900&family=Lora:ital,wght@0,400;0,600;1,400&family=Inter:wght@400;500&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--cream:#f0ebe1;--parchment:#e6dfd3;--slate:#2a3347;--blue:#7bafc8;--blue-mid:#5a8fa8;--blue-dark:#3d6880;--teal:#5a8a88;--muted:#7a8898;--line:#c4b8a8}[data-theme=dark]{--cream:#1a1e2a;--parchment:#222736;--slate:#e8e2d8;--blue:#5a8fa8;--blue-mid:#7bafc8;--blue-dark:#a8cfdf;--teal:#6aaba8;--muted:#8a9aaa;--line:#3a4258}html{scroll-behavior:smooth}body{background:var(--cream);color:var(--slate);font-family:Inter,sans-serif;transition:background .3s,color .3s;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:999;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");position:fixed;inset:0}#root{width:100%}.nav{z-index:100;background:var(--cream);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:1.2rem 3rem;display:flex;position:fixed;top:0;left:0;right:0}.nav-links{gap:2.5rem;list-style:none;display:flex}.nav-links a{letter-spacing:.1em;text-transform:uppercase;color:var(--slate);font-family:Barlow Condensed,sans-serif;font-size:1rem;font-weight:700;text-decoration:none;transition:color .2s}.nav-links a:hover{color:var(--blue-mid)}.nav-logo{letter-spacing:.15em;text-transform:uppercase;color:var(--slate);font-family:Barlow Condensed,sans-serif;font-size:1.5rem;font-weight:900;text-decoration:none}@media (width<=600px){.nav{padding:1rem 1.2rem}.nav-links{gap:1.2rem}}.hero-section{justify-content:center;align-items:center;min-height:100vh;padding:8rem 2rem 5rem;display:flex}.hero-frame{text-align:center;opacity:0;width:100%;max-width:860px;transition:opacity .8s,transform .8s;position:relative;transform:translateY(20px)}.hero-frame.hero-loaded{opacity:1;transform:none}.corner{width:72px;height:72px;color:var(--blue-mid);opacity:.55;position:absolute}.corner--tl{top:-16px;left:-16px}.corner--tr{top:-16px;right:-16px;transform:scaleX(-1)}.corner--bl{bottom:-16px;left:-16px;transform:scaleY(-1)}.corner--br{bottom:-16px;right:-16px;transform:scale(-1)}.hero-eyebrow{color:var(--muted);letter-spacing:.05em;margin-bottom:1.2rem;font-family:Lora,serif;font-size:1.1rem;font-style:italic}.hero-title{letter-spacing:-.01em;text-transform:uppercase;color:var(--slate);margin-bottom:0;font-family:Barlow Condensed,sans-serif;font-size:clamp(4.5rem,14vw,10rem);font-weight:900;line-height:.9}.hero-highlight{background:var(--blue);color:var(--cream);margin-top:.06em;padding:.02em .12em;display:inline-block}.hero-subtitle{color:var(--muted);max-width:460px;margin:2rem auto 2.5rem;font-family:Lora,serif;font-size:1.05rem;line-height:1.75}.hero-cta{flex-wrap:wrap;justify-content:center;gap:1rem;display:inline-flex}@media (width<=600px){.corner{width:50px;height:50px}.hero-section{padding:7rem 1.5rem 4rem}}.section-wrapper{max-width:1100px;margin:0 auto;padding:5rem 2rem}.section-label{letter-spacing:.2em;text-transform:uppercase;color:var(--teal);margin-bottom:.5rem;font-family:Barlow Condensed,sans-serif;font-size:.85rem;font-weight:700}.section-title{text-transform:uppercase;color:var(--slate);margin-bottom:2.5rem;font-family:Barlow Condensed,sans-serif;font-size:clamp(2.5rem,6vw,4.5rem);font-weight:900;line-height:1}.btn{letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border:2px solid var(--slate);border-radius:999px;padding:.8rem 2.2rem;font-family:Barlow Condensed,sans-serif;font-size:1rem;font-weight:700;text-decoration:none;transition:background .2s,color .2s,transform .15s;display:inline-block}.btn-primary{background:var(--slate);color:var(--cream)}.btn-primary:hover{background:var(--blue-dark);border-color:var(--blue-dark);transform:translateY(-2px)}.btn-outline{color:var(--slate);background:0 0}.btn-outline:hover{background:var(--slate);color:var(--cream);transform:translateY(-2px)}.fade-in{opacity:0;transition:opacity .65s,transform .65s;transform:translateY(24px)}.fade-in.visible{opacity:1;transform:none}@media (width<=768px){.section-wrapper{padding:3.5rem 1.25rem}}.panels-frame{border:1.5px solid var(--line);grid-template-columns:1fr 2px 1fr 2px 1fr;display:grid;position:relative}.panels-frame:before,.panels-frame:after{content:"";border:1px solid var(--line);pointer-events:none;position:absolute;inset:-8px}.panels-frame:after{inset:-16px}.panel{padding:2.5rem 2rem}.panel-divider{background:var(--line);width:2px}.panel-icon{width:40px;height:40px;color:var(--blue-mid);margin-bottom:1.1rem}.panel-title{letter-spacing:.08em;text-transform:uppercase;color:var(--slate);margin-bottom:.7rem;font-family:Barlow Condensed,sans-serif;font-size:1.2rem;font-weight:700}.panel p{color:var(--muted);font-family:Lora,serif;font-size:.95rem;line-height:1.75}@media (width<=768px){.panels-frame{grid-template-columns:1fr}.panel-divider{width:100%;height:1.5px}.panels-frame:before{inset:-6px}.panels-frame:after{inset:-12px}}.skills-grid{flex-wrap:wrap;gap:.7rem;display:flex}.skill-tag{letter-spacing:.1em;text-transform:uppercase;border:1.5px solid var(--blue-mid);color:var(--blue-dark);cursor:default;-webkit-user-select:none;user-select:none;border-radius:999px;padding:.5rem 1.2rem;font-family:Barlow Condensed,sans-serif;font-size:.95rem;font-weight:700;transition:background .2s,color .2s}.skill-tag:hover{background:var(--blue);border-color:var(--blue);color:var(--cream)}.timeline{padding-left:2rem;position:relative}.timeline:before{content:"";background:var(--line);width:1.5px;position:absolute;top:.5rem;bottom:0;left:0}.timeline-item{padding:0 0 2.5rem 2rem;position:relative}.timeline-item:before{content:"";background:var(--blue);border:2px solid var(--cream);outline:1.5px solid var(--blue-mid);border-radius:50%;width:13px;height:13px;position:absolute;top:.45rem;left:-6px}.timeline-date{letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin-bottom:.25rem;font-family:Barlow Condensed,sans-serif;font-size:.85rem}.timeline-role{text-transform:uppercase;color:var(--slate);margin-bottom:.15rem;font-family:Barlow Condensed,sans-serif;font-size:1.6rem;font-weight:900;line-height:1.1}.timeline-company{color:var(--muted);margin-bottom:.6rem;font-family:Lora,serif;font-size:.95rem;font-style:italic}.timeline-desc{color:var(--muted);font-size:.9rem;line-height:1.7}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;display:grid}.project-card{border:1.5px solid var(--line);background:var(--parchment);flex-direction:column;transition:transform .2s,border-color .2s;display:flex;position:relative;overflow:hidden}.project-card:hover{border-color:var(--blue-mid);transform:translateY(-4px)}.project-card:before{content:"";background:var(--blue);clip-path:polygon(0 0,100% 0,100% 100%);opacity:.35;width:40px;height:40px;transition:opacity .2s;position:absolute;top:0;right:0}.project-card:hover:before{opacity:.75}.project-card-inner{flex-direction:column;flex:1;padding:1.8rem;display:flex}.project-type{letter-spacing:.18em;text-transform:uppercase;color:var(--teal);margin-bottom:.4rem;font-family:Barlow Condensed,sans-serif;font-size:.8rem}.project-name{text-transform:uppercase;color:var(--slate);margin-bottom:.65rem;font-family:Barlow Condensed,sans-serif;font-size:1.7rem;font-weight:900;line-height:1.05}.project-desc{color:var(--muted);margin-bottom:1.1rem;font-family:Lora,serif;font-size:.9rem;line-height:1.7}.project-tags{flex-wrap:wrap;gap:.4rem;display:flex}.project-tag{letter-spacing:.1em;text-transform:uppercase;background:var(--cream);color:var(--blue-dark);border:1px solid var(--blue-mid);border-radius:999px;padding:.25rem .75rem;font-family:Barlow Condensed,sans-serif;font-size:.75rem;font-weight:700}.project-links{gap:1rem;margin-top:auto;padding-top:1.2rem;display:flex}.project-link{letter-spacing:.1em;text-transform:uppercase;color:var(--slate);border-bottom:1.5px solid var(--slate);align-items:center;gap:.3rem;padding-bottom:.1rem;font-family:Barlow Condensed,sans-serif;font-size:.85rem;font-weight:700;text-decoration:none;transition:color .2s,border-color .2s;display:flex}.project-link:hover{color:var(--blue-dark);border-color:var(--blue-dark)}.contact-section{text-align:center}.contact-box{border:1.5px solid var(--line);padding:4rem 2rem;position:relative}.contact-box:before,.contact-box:after{content:"";border:1px solid var(--line);pointer-events:none;position:absolute;inset:-8px}.contact-box:after{inset:-16px}.contact-blurb{color:var(--muted);max-width:420px;margin:0 auto 1.5rem;font-family:Lora,serif;font-size:1rem;line-height:1.7}.contact-email{text-transform:uppercase;color:var(--slate);border-bottom:3px solid var(--blue);padding-bottom:.1rem;font-family:Barlow Condensed,sans-serif;font-size:clamp(1.5rem,4vw,2.8rem);font-weight:900;text-decoration:none;transition:color .2s;display:inline-block}.contact-email:hover{color:var(--blue-dark)}.social-links{flex-wrap:wrap;justify-content:center;gap:2rem;margin-top:2rem;display:flex}.social-link{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-family:Barlow Condensed,sans-serif;font-size:1rem;font-weight:700;text-decoration:none;transition:color .2s}.social-link:hover{color:var(--slate)}.footer{border-top:1px solid var(--line);letter-spacing:.08em;color:var(--muted);justify-content:space-between;align-items:center;padding:1.5rem 3rem;font-family:Barlow Condensed,sans-serif;font-size:.85rem;display:flex}.footer-craft{font-family:Lora,serif;font-style:italic}.theme-toggle{cursor:pointer;opacity:.15;background:0 0;border:none;padding:.25rem;font-size:.9rem;line-height:1;transition:opacity .2s}.theme-toggle:hover{opacity:.6}@media (width<=600px){.footer{text-align:center;flex-direction:column;gap:.4rem;padding:1.2rem}}.divider{background:linear-gradient(90deg, transparent, var(--line) 20%, var(--line) 80%, transparent);width:100%;max-width:1100px;height:1px;margin:0 auto;position:relative}.divider:after{content:"✦";background:var(--cream);color:var(--line);padding:0 .8rem;font-size:.8rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
