body{margin:0}:root{--purple-950:#0f0a1e;--purple-900:#1c1238;--purple-800:#241552;--purple-700:#2a1b5e;--purple-600:#3b2a7a;--purple-500:#9333ea;--purple-400:#a855f7;--purple-300:#c084fc;--purple-200:#d8c5f5;--purple-100:#ede4fb;--bg:#0c0912;--bg-deep:#08060d;--surface:#130d1c;--card-grad-top:#2a1b5e;--card-grad-bottom:#1c1238;--text:#f5f0ff;--muted:#a890c8;--dim:#6b5f82;--border:#3d2a62;--border-glow:#c8a0ff33;--teal:#10b981;--amber:#d9a441;--red:#e06d7c;--chip-gis:#3b82f6;--chip-workflow:#10b981;--chip-planning:#a78bfa;--chip-bi:#f59e0b;--chip-collab:#f472b6;--chip-maintenance:#a890c8;--chip-sunset:#4b5563;--chip-career:#3b82f6;--chip-compliance:#f87171;--text-link:var(--purple-300);--surface-inset:var(--purple-950);--accent:var(--purple-500);--accent-soft:#9333ea1a;--accent-border:#9333ea59;--story-problem:var(--red);--story-situation:var(--muted);--story-decision:var(--purple-300);--story-tradeoff:var(--amber);--story-outcome:var(--teal);--font-sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-display:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;--text-display:clamp(46px,9vw,96px);--text-stat:clamp(32px,6vw,56px);--text-title:clamp(28px,4.5vw,44px);--text-hero:28px;--text-thesis:24px;--text-h2:20px;--text-h3:16px;--text-base:14px;--text-sm:13px;--text-xs:12px;--text-2xs:11px;--text-3xs:10px;--leading-tight:1.1;--leading-snug:1.4;--leading-normal:1.6;--leading-relaxed:1.8;--tracking-eyebrow:.2em;--tracking-label:.07em;--tracking-tight:-.02em;--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-24:24px;--space-32:32px;--space-48:48px;--space-64:64px;--card-pad:var(--space-16);--content-max:1040px;--radius-sm:6px;--radius-lg:12px;--radius-pill:9999px;--border-hair:1px;--border-accent:3px;--border-accent-thick:4px;--card-gradient:linear-gradient(160deg,var(--card-grad-top) 0%,var(--card-grad-bottom) 100%);--card-top-edge:var(--border-glow);--surface-feature:var(--purple-500);--surface-feature-grad:linear-gradient(150deg,var(--purple-600) 0%,var(--purple-800) 100%);--shadow-avatar:0 0 0 6px #9333ea1f,0 18px 50px #0000008c;--glow-node:0 0 12px #9333ea99;--glow-hero:radial-gradient(circle,#9333ea21 0%,#9333ea08 50%,transparent 70%);--ring-focus:0 0 0 2px var(--purple-500);--ease:cubic-bezier(.4,0,.2,1);--dur-fast:.12s;--dur-highlight:.3s}*,:before,:after{box-sizing:border-box}html,body{margin:0}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@keyframes ds-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.lp{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal)}.lp :focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lp [id]{scroll-margin-top:64px}.lp .wrap{max-width:var(--content-max);margin:0 auto;padding-left:28px;padding-right:28px}.lp .row{justify-content:space-between;align-items:center;gap:16px;display:flex}.lp .display{font-family:var(--font-display);letter-spacing:var(--tracking-tight);font-weight:700;line-height:var(--leading-tight)}.lp[data-js] .reveal{opacity:0}.lp[data-js] .reveal[data-in]{animation:ds-fade-in .4s var(--ease) both}.lp .bar{z-index:40;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0}.lp .bar .row{height:56px}.lp .mark{color:var(--text);font-size:15px;text-decoration:none}.lp .mark b{font-weight:700}.lp .links{gap:22px;display:flex}.lp .links a{color:var(--muted);font-size:var(--text-sm);transition:color var(--dur-fast) var(--ease);text-decoration:none}.lp .links a:hover{color:var(--purple-300)}.lp .links a[aria-current]{color:var(--text)}.lp .avail{border-radius:var(--radius-pill);border:1px solid var(--accent-border);color:var(--purple-300);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;transition:border-color var(--dur-fast) var(--ease);background:#9333ea26;align-items:center;gap:6px;padding:4px 12px;font-weight:700;text-decoration:none;display:inline-flex}.lp .avail:hover{border-color:var(--purple-300)}.lp .avail .d{background:var(--purple-300);border-radius:50%;width:6px;height:6px}.lp .hero{background:var(--bg-deep);position:relative;overflow:hidden}.lp .hero .glow{background:var(--glow-hero);pointer-events:none;border-radius:50%;width:720px;height:720px;position:absolute;top:-180px;left:-140px}.lp .hero .grid{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head photo""body photo";align-items:center;column-gap:48px;padding-top:72px;padding-bottom:80px;display:grid;position:relative}.lp .hhead{grid-area:head}.lp .hbody{grid-area:body}.lp .photo{grid-area:photo}.lp .eyebrow{font-size:var(--text-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);margin-bottom:18px}.lp .hero h1{font-size:var(--text-display);color:var(--text);margin:0}.lp .hero h1 .two{color:var(--purple-400)}.lp .tealrule{background:var(--teal);border-radius:2px;width:56px;height:4px;margin:26px 0 22px}.lp .thesis{font-size:var(--text-thesis);font-weight:700;line-height:var(--leading-snug);color:var(--text);max-width:520px;margin:0 0 14px}.lp .scope{font-size:var(--text-base);color:var(--muted);max-width:560px;margin:0 0 30px}.lp .cta{flex-wrap:wrap;gap:12px;display:flex}.lp .btn{border-radius:var(--radius-pill);font-size:var(--text-sm);transition:all var(--dur-fast) var(--ease);align-items:center;gap:8px;padding:10px 20px;font-weight:600;text-decoration:none;display:inline-flex}.lp .btn.primary{background:var(--accent);color:#fff}.lp .btn.primary:hover{background:var(--purple-400)}.lp .btn.ghost{border:1px solid var(--border);color:var(--muted)}.lp .btn.ghost:hover{border-color:var(--accent);color:var(--text)}.lp .btn.light{background:var(--text);color:var(--purple-800)}.lp .btn.light:hover{background:#fff}.lp .photo img{aspect-ratio:1;object-fit:cover;border:2px solid var(--accent);width:min(280px,64vw);box-shadow:var(--shadow-avatar);border-radius:50%;display:block}.lp .band{background:var(--surface-feature)}.lp .stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;padding-top:44px;padding-bottom:44px;display:grid}.lp .stats .v{font-family:var(--font-display);font-size:var(--text-stat);letter-spacing:var(--tracking-tight);font-weight:700;line-height:var(--leading-tight);color:#fff}.lp .stats .l{font-size:var(--text-sm);color:var(--purple-100);margin-top:6px}.lp .block{padding-top:var(--space-64);padding-bottom:var(--space-64)}.lp .block.inset{background:var(--surface-inset);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.lp .shead{max-width:640px;margin-bottom:40px}.lp .shead .k{font-size:var(--text-2xs);color:var(--purple-300);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);align-items:center;gap:10px;font-weight:700;display:flex}.lp .tick{background:var(--accent);border-radius:1px;width:18px;height:2px}.lp .shead h2{font-family:var(--font-display);font-size:var(--text-title);letter-spacing:var(--tracking-tight);font-weight:700;line-height:var(--leading-tight);color:var(--text);margin:14px 0 12px}.lp .shead p{font-size:var(--text-base);color:var(--muted);margin:0}.lp .loop{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:12px;padding-bottom:4px;display:flex;overflow-x:auto}.lp .step{scroll-snap-align:start;flex:0 0 clamp(240px,80%,300px)}.lp .step .nh{align-items:baseline;gap:12px;display:flex}.lp .step .n{font-family:var(--font-display);font-size:var(--text-stat);letter-spacing:var(--tracking-tight);font-weight:700;line-height:var(--leading-tight);color:var(--purple-400)}.lp .step h3{font-size:var(--text-h3);color:var(--text);margin:0;font-weight:600}.lp .step p{font-size:var(--text-sm);color:var(--muted);margin:10px 0 0}.lp .plabel{cursor:pointer;font-family:inherit;font-size:var(--text-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:var(--tracking-label);background:0 0;border:none;align-items:center;gap:8px;margin:48px 0 18px;padding:0;font-weight:600;display:inline-flex}.lp .plabel .arw{transition:transform var(--dur-fast) var(--ease)}.lp .plabel[aria-expanded=true] .arw{transform:rotate(90deg)}.lp .pgrid{animation:ds-fade-in .4s var(--ease) both;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 28px;display:grid}.lp .principle{border-left:2px solid var(--border);padding-left:14px}.lp .principle h3{font-size:var(--text-base);color:var(--text);margin:0 0 3px;font-weight:600}.lp .principle p{font-size:var(--text-sm);color:var(--muted);margin:0}.lp .portfolio{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.lp .portfolio .top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 12px;display:flex}.lp .portfolio .name{font-size:var(--text-h3);color:var(--text);font-weight:600}.lp .portfolio .aka{font-size:var(--text-xs);color:var(--dim);margin-left:8px}.lp .portfolio .chips{flex-shrink:0;gap:6px;display:flex}.lp .portfolio .desc{font-size:var(--text-sm);color:var(--muted);margin:10px 0 0}.lp .portfolio .metric{font-size:var(--text-sm);color:var(--muted);border-top:1px solid var(--border);margin-top:14px;padding-top:12px}.lp .portfolio .metric .b{color:var(--teal);font-weight:600}.lp .decisions{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.lp .dhead{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.lp .dhead .chips{align-items:center;gap:8px;display:flex}.lp .dtitle{font-size:var(--text-h3);color:var(--text);font-weight:700}.lp .dyear{font-size:var(--text-xs);color:var(--dim)}.lp .teaser{font-size:var(--text-base);color:var(--muted);max-width:62ch;margin:10px 0 12px}.lp .toggle{cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-link);background:0 0;border:none;align-items:center;gap:6px;padding:0;font-weight:600;display:inline-flex}.lp .toggle .arw{transition:transform var(--dur-fast) var(--ease)}.lp .toggle:hover .arw{transform:translate(2px)}.lp .detail{border-top:1px solid var(--border);animation:ds-fade-in var(--dur-highlight) var(--ease) both;gap:14px;margin-top:16px;padding-top:16px;display:grid}.lp .drow{grid-template-columns:88px 1fr;gap:14px;display:grid}.lp .rlbl{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:var(--tracking-label);padding-top:3px;font-weight:600}.lp .drow p{font-size:var(--text-sm);color:var(--muted);margin:0}.lp .timeline{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;display:grid;position:relative}.lp .timeline:before{content:"";background:linear-gradient(90deg,var(--border),#9333ea8c);border-radius:1px;height:2px;position:absolute;top:6px;left:0;right:0}.lp .tl-stage{padding-top:30px;position:relative}.lp .tl-dot{background:var(--surface-inset);border:2px solid var(--border);border-radius:50%;width:14px;height:14px;position:absolute;top:0;left:0}.lp .tl-stage.now .tl-dot{background:var(--accent);border-color:var(--accent);box-shadow:var(--glow-node)}.lp .tl-year{font-size:var(--text-xs);color:var(--dim);font-weight:600}.lp .tl-stage.now .tl-year{color:var(--purple-300)}.lp .tl-role{font-size:var(--text-h3);color:var(--text);margin-top:4px;font-weight:600}.lp .tl-detail{font-size:var(--text-sm);color:var(--muted);margin-top:6px}.lp .skills{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:48px;display:grid}.lp .skill{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}.lp .skill .nm{font-size:var(--text-base);color:var(--text);font-weight:500}.lp .contact{background:var(--surface-feature-grad)}.lp .contact .inner{text-align:center;padding-top:72px;padding-bottom:72px}.lp .contact h2{font-size:var(--text-title);color:#fff;margin:0 0 14px}.lp .contact p{font-size:var(--text-base);color:var(--purple-100);max-width:52ch;margin:0 auto 28px}.lp footer{background:var(--bg);border-top:1px solid var(--border)}.lp footer .row{flex-wrap:wrap;padding-top:22px;padding-bottom:22px}.lp footer span{font-size:var(--text-xs);color:var(--dim)}@media (width<=880px){.lp [id]{scroll-margin-top:104px}.lp .bar .row{flex-wrap:wrap;gap:0 16px;height:auto;padding-top:10px}.lp .links{-webkit-overflow-scrolling:touch;order:3;gap:18px;width:100%;padding:8px 0 10px;overflow-x:auto}.lp .links a{white-space:nowrap}.lp .hero .grid{grid-template-areas:"head photo""body body";column-gap:16px;padding-top:48px;padding-bottom:56px}.lp .photo{place-self:center end}.lp .photo img{width:clamp(88px,24vw,190px)}}@media (width<=760px){.lp .portfolio{grid-template-columns:minmax(0,1fr)}.lp .timeline{grid-template-columns:minmax(0,1fr);gap:28px;padding-left:26px}.lp .timeline:before{background:linear-gradient(180deg,var(--border),#9333ea8c);width:2px;height:auto;inset:0 auto 0 6px}.lp .tl-stage{padding-top:0}.lp .tl-dot{top:2px;left:-26px}}@media (width<=680px){.lp .stats{gap:12px;padding-top:32px;padding-bottom:32px}.lp .stats .v{font-size:clamp(16px,5.5vw,56px)}.lp .stats .l{font-size:var(--text-2xs)}.lp .skills{grid-template-columns:minmax(0,1fr)}}@media (width<=560px){.lp .hero h1{font-size:clamp(38px,11.5vw,46px)}.lp .drow{grid-template-columns:1fr;gap:4px}}@media (prefers-reduced-motion:reduce){.lp .detail,.lp .pgrid{animation:none}.lp .toggle .arw{transition:none}}
