:root{--navy: #0b1f3a;--navy-deep: #061526;--ink: #122033;--muted: #5a6b7d;--line: rgba(11, 31, 58, .12);--paper: #f4f7fb;--sky: #d7e6f2;--sky-deep: #9ebfd8;--white: #ffffff;--accent: #1a5f8a;--accent-soft: #e6f0f6;--font-display: "Instrument Serif", Georgia, serif;--font-body: "Outfit", sans-serif;--ease: cubic-bezier(.22, 1, .36, 1);--nav-h: 4.5rem}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-body);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,rgba(158,191,216,.45),transparent 60%),radial-gradient(900px 500px at 100% 0%,rgba(215,230,242,.8),transparent 55%),linear-gradient(180deg,#eaf2f8 0%,var(--paper) 28%,var(--paper) 100%);background-attachment:fixed;line-height:1.55;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit}.site{min-height:100vh}.nav{position:fixed;inset:0 0 auto;z-index:40;height:var(--nav-h);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1.25rem,4vw,3rem);background:#f4f7fbb8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid transparent;transition:border-color .3s var(--ease),background .3s var(--ease)}.nav.is-scrolled{border-bottom-color:var(--line);background:#f4f7fbe6}.nav-brand{font-family:var(--font-display);font-size:1.35rem;letter-spacing:-.02em;color:var(--navy)}.nav-end{display:flex;align-items:center;gap:.75rem}.nav-toggle{width:2.5rem;height:2.5rem;display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;border:1px solid var(--line);background:transparent;cursor:pointer;color:var(--navy)}.nav-toggle span{display:block;width:16px;height:1.5px;background:currentColor;transition:transform .3s var(--ease)}.nav.is-open .nav-toggle span:first-child{transform:translateY(3.75px) rotate(45deg)}.nav.is-open .nav-toggle span:last-child{transform:translateY(-3.75px) rotate(-45deg)}.nav-links{display:none;gap:1.75rem;font-size:.9rem;font-weight:500;color:var(--muted)}.nav-links a{position:relative;transition:color .2s ease}.nav-links a:after{content:"";position:absolute;left:0;bottom:-.2rem;width:100%;height:1px;background:var(--navy);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}.nav-links a:hover{color:var(--navy)}.nav-links a:hover:after{transform:scaleX(1)}.nav-cta{font-size:.85rem;font-weight:600;color:var(--white);background:var(--navy);padding:.65rem 1.1rem;border:none;cursor:pointer;transition:background .25s ease,transform .25s var(--ease)}.nav-cta:hover{background:var(--accent);transform:translateY(-1px)}@media (max-width: 767px){.nav-cta{display:none}.nav-links{position:fixed;inset:var(--nav-h) 0 0;display:none;flex-direction:column;gap:0;padding:1.5rem clamp(1.25rem,4vw,3rem) 2rem;background:#f4f7fbf7;border-top:1px solid var(--line)}.nav-links.is-open{display:flex}.nav-links a{padding:1rem 0;font-size:1.15rem;color:var(--navy);border-bottom:1px solid var(--line)}.nav-resume-mobile{display:block;margin-top:1rem;padding:.9rem 1.1rem!important;border:1px solid var(--navy)!important;background:var(--navy);color:var(--white)!important;text-align:center;font-weight:600}}.nav-resume-mobile{display:none}@media (min-width: 768px){.nav-toggle{display:none}.nav-links{display:flex}}.hero{min-height:100svh;display:grid;grid-template-columns:1fr;padding-top:var(--nav-h)}@media (min-width: 960px){.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}}.hero-copy{display:flex;flex-direction:column;justify-content:center;padding:clamp(2rem,6vw,4.5rem) clamp(1.25rem,4vw,3.5rem);gap:1.35rem}.hero-status{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);opacity:0;animation:rise .9s var(--ease) .05s forwards}.hero-name{margin:0;font-family:var(--font-display);font-size:clamp(3.4rem,9vw,6.5rem);line-height:.92;letter-spacing:-.03em;color:var(--navy);opacity:0;animation:rise .9s var(--ease) .1s forwards}.hero-headline{margin:0;max-width:22ch;font-family:var(--font-display);font-size:clamp(1.45rem,2.8vw,2.15rem);font-weight:400;font-style:italic;color:var(--ink);line-height:1.25;opacity:0;animation:rise .9s var(--ease) .25s forwards}.hero-lead{margin:0;max-width:36ch;font-size:1.05rem;font-weight:400;color:var(--muted);opacity:0;animation:rise .9s var(--ease) .4s forwards}.hero-actions{display:flex;flex-wrap:wrap;gap:.85rem;padding-top:.5rem;opacity:0;animation:rise .9s var(--ease) .55s forwards}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.85rem 1.35rem;font-size:.92rem;font-weight:600;border:1px solid transparent;transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s var(--ease)}.btn-primary{background:var(--navy);color:var(--white)}.btn-primary:hover{background:var(--accent);transform:translateY(-2px)}.btn-ghost{background:transparent;color:var(--navy);border-color:#0b1f3a40}.btn-ghost:hover{border-color:var(--navy);background:#ffffff8c}.hero-visual{position:relative;min-height:55vh;overflow:hidden;background:linear-gradient(160deg,var(--sky) 0%,var(--sky-deep) 55%,#7ea8c4 100%)}@media (min-width: 960px){.hero-visual{min-height:calc(100svh - var(--nav-h))}}.hero-visual picture{position:absolute;top:0;right:0;bottom:0;left:0}.hero-visual picture,.hero-visual img{width:100%;height:100%;object-fit:cover;object-position:center top}.hero-visual img{transform:scale(1.08);opacity:0;animation:photoIn 1.4s var(--ease) .2s forwards}.hero-visual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(234,242,248,.55) 0%,transparent 28%),linear-gradient(0deg,rgba(11,31,58,.12) 0%,transparent 35%);pointer-events:none}@media (max-width: 959px){.hero-visual:after{background:linear-gradient(180deg,rgba(234,242,248,.35) 0%,transparent 30%)}}.section{padding:clamp(4rem,10vw,7.5rem) clamp(1.25rem,4vw,3.5rem)}.section-inner{max-width:1120px;margin:0 auto}.section-head{display:grid;gap:.75rem;margin-bottom:clamp(2rem,5vw,3.25rem);max-width:40rem}.eyebrow{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.section-title{margin:0;font-family:var(--font-display);font-size:clamp(2.1rem,4.5vw,3.25rem);line-height:1.08;letter-spacing:-.02em;color:var(--navy)}.section-lead{margin:0;color:var(--muted);font-size:1.05rem;max-width:42ch}.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.reveal.is-visible{opacity:1;transform:translateY(0)}.about-grid{display:grid;gap:2.5rem}@media (min-width: 860px){.about-grid{grid-template-columns:1.4fr .8fr;gap:4rem;align-items:start}}.about-copy p{margin:0 0 1.1rem;font-size:1.08rem;color:var(--ink);max-width:52ch}.about-copy p:last-child{margin-bottom:0}.about-copy strong{font-weight:600;color:var(--navy)}.about-meta{display:grid;gap:0;border-top:1px solid var(--line)}.meta-row{display:grid;gap:.2rem;padding:1.15rem 0;border-bottom:1px solid var(--line)}.meta-label{font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.meta-value{font-size:1rem;font-weight:500;color:var(--navy)}.meta-sub{font-size:.88rem;color:var(--muted)}.work-list{display:grid;gap:0;border-top:1px solid var(--line)}.work-item{display:grid;gap:1rem;padding:1.75rem 0;border-bottom:1px solid var(--line);transition:background .3s ease}@media (min-width: 760px){.work-item{grid-template-columns:3.5rem 1fr auto;gap:1.5rem;align-items:start;padding:2rem .5rem}.work-item:hover{background:#ffffff73}}.work-index{font-family:var(--font-display);font-size:1.25rem;color:var(--sky-deep);padding-top:.2rem}.work-body h3{margin:0 0 .35rem;font-family:var(--font-display);font-size:clamp(1.45rem,2.5vw,1.85rem);font-weight:400;color:var(--navy);letter-spacing:-.01em}.work-metric{margin:0 0 .55rem;font-family:var(--font-display);font-size:1.05rem;font-style:italic;color:var(--accent);max-width:48ch}.work-body p{margin:0 0 .85rem;color:var(--muted);max-width:58ch;font-size:.98rem}.work-body p.work-metric{margin-bottom:.55rem}.work-tags{display:flex;flex-wrap:wrap;gap:.45rem .9rem;font-size:.78rem;font-weight:500;color:var(--accent)}.work-links{display:grid;gap:.5rem;align-self:center}.work-link{font-size:.88rem;font-weight:600;color:var(--navy);white-space:nowrap;position:relative}.work-link:after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:currentColor;transform:scaleX(.35);transform-origin:left;transition:transform .35s var(--ease)}.work-item:hover .work-link:after{transform:scaleX(1)}.more-work{margin-top:2.75rem;padding-top:2rem;border-top:1px solid var(--line)}.more-work h3{margin:0 0 1.25rem;font-family:var(--font-display);font-size:1.5rem;color:var(--navy);font-weight:400}.more-grid{display:grid;gap:1.25rem 2rem}@media (min-width: 700px){.more-grid{grid-template-columns:1fr 1fr}}.more-item h4{margin:0 0 .3rem;font-size:.98rem;font-weight:600;color:var(--navy)}.more-item h4 a{color:inherit}.more-item h4 a:hover{color:var(--accent)}.more-item p{margin:0;font-size:.9rem;color:var(--muted)}.skills-band{display:grid;gap:0;border-top:1px solid var(--line)}.skill-row{display:grid;gap:.75rem;padding:1.5rem 0;border-bottom:1px solid var(--line)}@media (min-width: 720px){.skill-row{grid-template-columns:14rem 1fr;gap:2rem;align-items:baseline}}.skill-row h3{margin:0;font-family:var(--font-display);font-size:1.35rem;font-weight:400;color:var(--navy)}.skill-row p{margin:0;color:var(--muted);font-size:.98rem}.exp-list{display:grid;gap:2.5rem;max-width:720px}.exp-item{display:grid;gap:.65rem;padding-left:1.25rem;border-left:2px solid var(--sky-deep)}.exp-top{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:baseline;justify-content:space-between}.exp-item h3{margin:0;font-size:1.2rem;font-weight:600;color:var(--navy)}.exp-date{font-size:.85rem;font-weight:500;color:var(--accent)}.exp-company{margin:0;font-size:.92rem;color:var(--muted)}.exp-item ul{margin:.35rem 0 0;padding-left:1.1rem;color:var(--ink);font-size:.95rem}.exp-item li+li{margin-top:.35rem}.contact{background:linear-gradient(165deg,var(--navy-deep) 0%,var(--navy) 55%,#143456 100%);color:var(--white);margin:0 clamp(.75rem,2vw,1.5rem) clamp(.75rem,2vw,1.5rem)}.contact .section-title,.contact .eyebrow{color:var(--white)}.contact .eyebrow{opacity:.7}.contact .section-lead{color:#ffffffb8}.contact-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2rem}.contact .btn-primary{background:var(--white);color:var(--navy)}.contact .btn-primary:hover{background:var(--sky)}.contact .btn-ghost{color:var(--white);border-color:#ffffff59}.contact .btn-ghost:hover{background:#ffffff14;border-color:var(--white)}.footer{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;padding:1.75rem clamp(1.25rem,4vw,3.5rem) 2.5rem;font-size:.85rem;color:var(--muted)}.footer-links{display:flex;gap:1.25rem}.footer-links a{font-weight:500;color:var(--navy);transition:color .2s ease}.footer-links a:hover{color:var(--accent)}.case{padding:calc(var(--nav-h) + 2.5rem) clamp(1.25rem,4vw,3.5rem) 4.5rem}.case-inner{max-width:42rem;margin:0 auto}.case-back{display:inline-block;margin-bottom:1.75rem;font-size:.88rem;font-weight:600;color:var(--accent)}.case-title{margin:.4rem 0 .75rem;font-family:var(--font-display);font-size:clamp(2.2rem,5vw,3.4rem);line-height:1.08;letter-spacing:-.03em;color:var(--navy)}.case-summary{margin:0 0 1.25rem;font-size:1.12rem;color:var(--ink);max-width:46ch}.case-block{margin-top:2.25rem;padding-top:1.75rem;border-top:1px solid var(--line)}.case-block h2{margin:0 0 .85rem;font-family:var(--font-display);font-size:1.55rem;font-weight:400;color:var(--navy)}.case-block p{margin:0 0 1rem;color:var(--muted);font-size:1.02rem}.case-block p:last-child{margin-bottom:0}@keyframes rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes photoIn{0%{opacity:0;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal,.hero-status,.hero-name,.hero-headline,.hero-lead,.hero-actions,.hero-visual img{opacity:1;transform:none}}
