:root{--cream:#f5f0e8;--ink:#0f0e0c;--amber:#e8c46a;--amber-deep:#d4a847;--warm-gray:#8a8070;--cream-deep:#ebe3d4;--espresso:#1a1410;--espresso-2:#241c16}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:DM Sans,system-ui,sans-serif;font-size:19px;font-weight:300;overflow-x:hidden}body.dark{background:var(--espresso);color:var(--cream)}@media (hover:hover) and (pointer:fine){html,body,a,button,[data-cursor]{cursor:none}}::selection{background:var(--amber);color:var(--ink)}.serif{font-family:Playfair Display,Georgia,serif}.mono{font-family:JetBrains Mono,ui-monospace,monospace}.label{letter-spacing:.28em;text-transform:uppercase;color:var(--warm-gray);font-size:14px;font-weight:400}.nav{z-index:50;mix-blend-mode:normal;justify-content:space-between;align-items:center;padding:22px 48px;transition:-webkit-backdrop-filter .3s,backdrop-filter .3s,background .3s,padding .3s;display:flex;position:fixed;top:0;left:0;right:0}.nav.scrolled{-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);background:color-mix(in oklab, var(--cream) 72%, transparent);border-bottom:1px solid color-mix(in oklab, var(--ink) 7%, transparent);padding:14px 48px}body.dark .nav.scrolled{background:color-mix(in oklab, var(--espresso) 70%, transparent);border-bottom:1px solid color-mix(in oklab, var(--cream) 8%, transparent)}.logo{letter-spacing:.32em;text-transform:uppercase;color:var(--ink);-webkit-user-select:none;user-select:none;align-items:center;gap:9px;font-size:13px;font-weight:500;display:flex}body.dark .logo{color:var(--cream)}.logo-icon{color:var(--ink);flex-shrink:0}body.dark .logo-icon{color:var(--cream)}.nav-links{letter-spacing:.24em;text-transform:uppercase;gap:36px;font-size:14px;font-weight:400;display:flex}.nav-links a{color:var(--ink);padding:6px 0;text-decoration:none;transition:color .25s;position:relative}body.dark .nav-links a{color:var(--cream)}.nav-links a.active{color:var(--amber-deep)}body.dark .nav-links a.active{color:var(--amber)}.nav-dark-toggle{cursor:none;color:var(--ink);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;margin-left:4px;padding:5px;transition:color .25s;display:flex}body.dark .nav-dark-toggle{color:var(--cream)}.nav-dark-toggle:hover{color:var(--amber-deep)}body.dark .nav-dark-toggle:hover{color:var(--amber)}.nav-links a:after{content:"";background:var(--amber-deep);transform-origin:0;height:1px;transition:transform .35s cubic-bezier(.6,.05,.2,1);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}body.dark .nav-links a:after{background:var(--amber)}.nav-links a:hover:after,.nav-links a.active:after{transform:scaleX(1)}.hero{grid-template-columns:1.2fr 1fr;align-items:center;gap:64px;max-width:1280px;min-height:78vh;margin:0 auto;padding:80px 48px 64px;display:grid;position:relative;overflow:hidden}.hero-text{z-index:2;position:relative}.hero h1{letter-spacing:-.035em;color:var(--ink);font-family:Playfair Display,serif;font-size:clamp(56px,8vw,108px);font-weight:700;line-height:.96}body.dark .hero h1{color:var(--cream)}.hero h1 .line{display:block;overflow:hidden}.hero h1 .line span{transition:transform 1s cubic-bezier(.2,.7,.2,1);display:inline-block;transform:translateY(110%)}.hero h1 .line:first-child span{animation:1s cubic-bezier(.2,.7,.2,1) .15s both heroLineUp}.hero h1 .line:nth-child(2) span{animation:1s cubic-bezier(.2,.7,.2,1) .35s both heroLineUp}.hero h1 .line:nth-child(3) span{animation:1s cubic-bezier(.2,.7,.2,1) .55s both heroLineUp}@keyframes heroLineUp{0%{transform:translateY(110%)}to{transform:translateY(0)}}.amber-word{color:var(--amber-deep);font-style:italic;font-weight:600;position:relative}body.dark .amber-word{color:var(--amber)}.hero-sub{letter-spacing:.04em;color:var(--warm-gray);margin-top:36px;font-size:19px;line-height:1.7;animation:.8s .85s both heroFadeUp}@keyframes heroFadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hero-sub .dot{background:var(--amber-deep);vertical-align:middle;border-radius:50%;width:4px;height:4px;margin:0 12px 3px;display:inline-block}.hero-ctas{align-items:center;gap:14px;margin-top:52px;animation:.8s 1s both heroFadeUp;display:flex}.hero-cta-stat{border-left:1px solid color-mix(in oklab, var(--ink) 14%, transparent);flex-direction:column;justify-content:center;margin-left:10px;padding-left:20px;display:flex}body.dark .hero-cta-stat{border-left-color:color-mix(in oklab, var(--cream) 16%, transparent)}.hero-cta-stat-num{color:var(--ink);font-family:Playfair Display,serif;font-size:22px;font-weight:700;line-height:1}body.dark .hero-cta-stat-num{color:var(--cream)}.hero-cta-stat-lbl{color:var(--warm-gray);letter-spacing:.04em;margin-top:3px;font-family:DM Sans,sans-serif;font-size:11px;font-weight:300}.btn{letter-spacing:.16em;text-transform:uppercase;border:none;border-radius:999px;align-items:center;gap:10px;padding:14px 24px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:400;text-decoration:none;transition:all .35s cubic-bezier(.6,.05,.2,1);display:inline-flex;position:relative}.btn-solid{background:var(--ink);color:var(--cream)}body.dark .btn-solid{background:var(--cream);color:var(--ink)}.btn-solid:hover{background:var(--amber-deep);color:var(--ink);transform:translateY(-2px)}.btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--ink) 25%, transparent);background:0 0}body.dark .btn-ghost{color:var(--cream);box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--cream) 25%, transparent)}.btn-ghost:hover{box-shadow:inset 0 0 0 1px var(--amber-deep);color:var(--amber-deep);transform:translateY(-2px)}body.dark .btn-ghost:hover{color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber)}.btn .arrow{width:12px;height:12px;transition:transform .35s cubic-bezier(.6,.05,.2,1)}.btn:hover .arrow{transform:translate(4px)}.lens-wrap{z-index:1;justify-self:center;width:100%;max-width:600px;animation:1.2s cubic-bezier(.2,.7,.2,1) .25s both lensIn;position:relative}@keyframes lensIn{0%{opacity:0;transform:translate(60px)}to{opacity:1;transform:translate(0)}}.lens-svg{width:100%;height:auto;transition:transform .6s cubic-bezier(.2,.7,.2,1);display:block;overflow:visible}.lens-wrap:hover .lens-group{transform-origin:50%;transform-box:fill-box;animation:3.2s ease-in-out infinite lensBreathe}@keyframes lensBreathe{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.lens-shimmer{opacity:0}.lens-wrap:hover .lens-shimmer{animation:2.6s ease-in-out infinite lensShimmer}@keyframes lensShimmer{0%{opacity:0;transform:translate(-90px)rotate(8deg)}35%{opacity:1}65%{opacity:1}to{opacity:0;transform:translate(160px)rotate(8deg)}}.lens-glow{filter:blur(20px);pointer-events:none;z-index:0;background:radial-gradient(#e8c46a4d 0%,#e8c46a1a 35%,#0000 70%);height:28%;position:absolute;bottom:6%;left:4%;right:4%}body.dark .lens-glow{background:radial-gradient(#e8c46a38 0%,#0000 70%)}.spec-tip{z-index:80;pointer-events:none;background:var(--ink);color:var(--cream);border:1px solid color-mix(in oklab, var(--amber) 22%, transparent);opacity:0;letter-spacing:.04em;border-radius:6px;min-width:220px;padding:14px 16px 12px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:13px;transition:opacity .25s;position:fixed;top:0;left:0;transform:translate(-9999px,-9999px);box-shadow:0 18px 40px -16px #00000073}.spec-tip.shown{opacity:1}.spec-tip-head{letter-spacing:.26em;text-transform:uppercase;color:var(--amber);border-bottom:1px solid color-mix(in oklab, var(--cream) 12%, transparent);margin-bottom:8px;padding-bottom:8px;font-size:11px}.spec-row{grid-template-columns:78px 16px 1fr;align-items:center;gap:4px;padding:4px 0;display:grid}.spec-row .cam{color:var(--amber)}.spec-row .arrow{color:color-mix(in oklab, var(--cream) 45%, transparent);text-align:center}.spec-row .dev{color:var(--cream)}section{padding:200px 48px;position:relative}#work{padding-top:100px}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:88px;display:flex}.section-head h2{letter-spacing:-.025em;font-family:Playfair Display,serif;font-size:clamp(36px,4.5vw,60px);font-weight:600;line-height:1.05}.section-head .label{white-space:nowrap}.work-grid{grid-template-columns:1fr 1fr;gap:48px;display:grid}.card{transform-style:preserve-3d;will-change:transform;transition:transform .3s cubic-bezier(.2,.7,.2,1);position:relative}.card .accent-line{background:var(--amber-deep);z-index:3;width:0;height:2px;transition:width .55s cubic-bezier(.6,.05,.2,1);position:absolute;top:0;left:0}.card:hover .accent-line{width:100%}.card .shot{aspect-ratio:16/10;background:var(--cream-deep);box-shadow:0 1px 0 color-mix(in oklab, var(--ink) 8%, transparent);border-radius:4px;transition:box-shadow .4s;position:relative;overflow:hidden}body.dark .card .shot{background:var(--espresso-2);box-shadow:0 1px 0 color-mix(in oklab, var(--cream) 8%, transparent)}.card:hover .shot{box-shadow:0 24px 60px -28px color-mix(in oklab, var(--ink) 35%, transparent), 0 1px 0 color-mix(in oklab, var(--amber) 35%, transparent)}body.dark .card:hover .shot{box-shadow:0 24px 60px -28px color-mix(in oklab, var(--cream) 18%, transparent), 0 1px 0 color-mix(in oklab, var(--amber) 35%, transparent)}.card-meta{flex-direction:column;gap:16px;margin-top:28px;display:flex}.card-row{justify-content:space-between;align-items:baseline;gap:18px;display:flex}.card h3{letter-spacing:-.01em;font-family:Playfair Display,serif;font-size:26px;font-weight:700}.card-num{letter-spacing:.1em;color:var(--warm-gray);font-family:JetBrains Mono,monospace;font-size:14px}.card-desc{color:color-mix(in oklab, var(--ink) 72%, transparent);max-width:46ch;font-size:19px;line-height:1.85}body.dark .card-desc{color:color-mix(in oklab, var(--cream) 72%, transparent)}.card-link{letter-spacing:.12em;text-transform:uppercase;color:var(--amber-deep);align-items:center;gap:6px;font-size:14px;font-weight:400;text-decoration:none;transition:gap .25s,opacity .25s;display:inline-flex}body.dark .card-link{color:var(--amber)}.card-link:hover{opacity:.8;gap:10px}.stack{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.stack span{letter-spacing:.04em;color:var(--warm-gray);border:1px solid color-mix(in oklab, var(--warm-gray) 28%, transparent);border-radius:999px;padding:5px 12px;font-family:JetBrains Mono,monospace;font-size:14px}.card-brewing{border:1.5px dashed color-mix(in oklab, var(--amber) 48%, transparent);border-radius:4px}.card-brewing-sub{letter-spacing:.06em;color:var(--warm-gray);opacity:.65;font-family:JetBrains Mono,monospace;font-size:13px}.steam-line{opacity:0;transform-box:fill-box;transform-origin:bottom}.card-brewing:hover .steam-line{animation:2.4s ease-in-out infinite steam-rise}@keyframes steam-rise{0%{opacity:0;transform:translateY(0)}20%{opacity:.85}80%{opacity:.5}to{opacity:0;transform:translateY(-28px)}}.reveal{filter:blur(14px);opacity:0;transition:filter 1.1s cubic-bezier(.2,.7,.2,1),opacity 1.1s cubic-bezier(.2,.7,.2,1),transform 1.1s cubic-bezier(.2,.7,.2,1);transform:translateY(28px)}.reveal.in{filter:blur();opacity:1;transform:translateY(0)}.focus-grid{grid-template-columns:45fr 55fr;align-items:start;gap:80px;display:grid}.portrait{aspect-ratio:4/3;background:var(--cream-deep);border-radius:4px;position:relative;overflow:hidden}body.dark .portrait{background:var(--espresso-2)}.focus-text p.lead{letter-spacing:-.01em;text-wrap:pretty;font-family:Playfair Display,serif;font-size:clamp(22px,2.2vw,30px);font-weight:400;line-height:1.5}.focus-divider{background:var(--amber);opacity:.5;width:48px;height:1px;margin-top:28px}.focus-text .strip{color:var(--warm-gray);letter-spacing:.04em;margin-top:20px;font-size:18px;line-height:1.7}.focus-text .strip .dot{background:var(--amber-deep);vertical-align:middle;border-radius:50%;width:3px;height:3px;margin:0 12px 3px;display:inline-block}.focus-text .label{border-bottom:1px solid var(--amber);padding-bottom:5px;display:inline-block}.skill-tags{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.skill-tags span{letter-spacing:.04em;color:var(--warm-gray);border:1px solid color-mix(in oklab, var(--amber-deep) 35%, transparent);border-radius:999px;padding:7px 18px;font-family:JetBrains Mono,monospace;font-size:14px;transition:color .25s,border-color .25s}.skill-tags span:hover{color:var(--amber-deep);border-color:color-mix(in oklab, var(--amber-deep) 45%, transparent)}body.dark .skill-tags span:hover{color:var(--amber);border-color:color-mix(in oklab, var(--amber) 45%, transparent)}.resume{margin-top:88px}.resume-row{border-left:2px solid var(--amber);border-bottom:1px solid color-mix(in oklab, var(--ink) 10%, transparent);grid-template-columns:1fr 160px;align-items:start;gap:40px;padding:32px 0 32px 20px;transition:padding-left .35s;display:grid}body.dark .resume-row{border-bottom-color:color-mix(in oklab, var(--cream) 10%, transparent)}.resume-row:hover{padding-left:28px}.resume-row-left{min-width:0}.resume-dial-col{flex-direction:column;align-self:center;align-items:center;display:flex}.dial-setting{letter-spacing:.08em;color:var(--amber-deep);text-align:center;margin-top:10px;font-family:JetBrains Mono,monospace;font-size:10px}body.dark .dial-setting{color:var(--amber)}.dial-desc{letter-spacing:.04em;color:var(--warm-gray);text-align:center;margin-top:3px;font-family:JetBrains Mono,monospace;font-size:9px}.resume-row-header{grid-template-columns:1.4fr 1.6fr 1fr;align-items:baseline;display:grid}.resume-row .co{letter-spacing:-.01em;font-family:Playfair Display,serif;font-size:26px;font-weight:700}.resume-row:hover .co{color:var(--amber-deep)}body.dark .resume-row:hover .co{color:var(--amber)}.resume-row .role{color:var(--amber-deep);font-size:18px}body.dark .resume-row .role{color:var(--amber)}.resume-row .date{letter-spacing:.06em;color:var(--warm-gray);text-align:right;white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:14px}.resume-bullets{flex-direction:column;gap:12px;margin:20px 0 0;padding:0;list-style:none;display:flex}.resume-bullets li{color:color-mix(in oklab, var(--ink) 65%, transparent);padding-left:20px;font-size:19px;line-height:1.85;position:relative}body.dark .resume-bullets li{color:color-mix(in oklab, var(--cream) 60%, transparent)}.resume-bullets li:before{content:"";background:var(--amber-deep);border-radius:50%;width:4px;height:4px;position:absolute;top:.65em;left:0}.availability-badge{letter-spacing:.24em;text-transform:uppercase;color:var(--warm-gray);align-items:center;gap:8px;font-size:14px;font-weight:400;display:inline-flex}.availability-dot{background:#4ade80;border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:2.4s ease-in-out infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1;box-shadow:0 0 #4ade8080}50%{opacity:.85;box-shadow:0 0 0 5px #4ade8000}}.contact{text-align:left;padding:220px 48px 100px}.contact h2{letter-spacing:-.035em;font-family:Playfair Display,serif;font-size:clamp(48px,6.5vw,84px);font-weight:600;line-height:.95}.contact h2 em{color:var(--amber-deep);font-style:italic;font-weight:500}body.dark .contact h2 em{color:var(--amber)}.email-link{letter-spacing:-.015em;color:var(--ink);margin-top:64px;padding-bottom:6px;font-family:Playfair Display,serif;font-size:clamp(26px,3.4vw,52px);font-weight:400;text-decoration:none;transition:color .35s;display:inline-block;position:relative}body.dark .email-link{color:var(--cream)}.email-link:after{content:"";transform-origin:0;background:currentColor;height:1px;transition:transform .55s cubic-bezier(.6,.05,.2,1),background .35s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(1)}.email-link:hover{color:var(--amber-deep)}body.dark .email-link:hover{color:var(--amber)}.contact-buttons{gap:14px;margin-top:56px;display:flex}footer{border-top:1px solid color-mix(in oklab, var(--ink) 8%, transparent);justify-content:space-between;align-items:baseline;padding:64px 48px 48px;display:flex}body.dark footer{border-top-color:color-mix(in oklab, var(--cream) 8%, transparent)}footer .left{color:var(--warm-gray);letter-spacing:.08em;font-size:14px}footer .sig{color:var(--amber-deep);font-family:Playfair Display,serif;font-size:22px;font-style:italic}body.dark footer .sig{color:var(--amber)}.latte-pour{pointer-events:none;z-index:99999;transition:opacity .25s;position:fixed}.latte-pour.fading{opacity:0}.latte-pour svg{opacity:0;animation:.18s ease-out forwards lp-cup-in;display:block}.lp-stream{stroke-dasharray:34;stroke-dashoffset:34px;animation:.65s cubic-bezier(.4,0,.2,1) .1s forwards lp-draw}.lp-art{stroke-dasharray:52;stroke-dashoffset:52px;animation:.4s cubic-bezier(.4,0,.2,1) .82s forwards lp-draw}@keyframes lp-cup-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes lp-draw{to{stroke-dashoffset:0}}.cursor{background:var(--amber-deep);pointer-events:none;z-index:9999;mix-blend-mode:normal;border-radius:999px;width:10px;height:10px;transition:width .25s cubic-bezier(.6,.05,.2,1),height .25s cubic-bezier(.6,.05,.2,1),background .25s,border .25s,opacity .25s;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}body.dark .cursor{background:var(--amber)}.cursor.pill{background:var(--amber-deep);opacity:.85;border-radius:999px;width:64px;height:14px}.cursor.ring{border:1.5px solid var(--amber-deep);background:0 0;width:36px;height:36px}body.dark .cursor.ring{border-color:var(--amber)}@media (width<=900px){html,body{cursor:auto}.cursor{display:none}.nav{padding:18px 24px}.nav-links{gap:22px;font-size:13px}section,.hero,.contact{padding-left:24px;padding-right:24px}.hero{grid-template-columns:1fr;min-height:auto;padding-top:130px}.lens-wrap{order:-1;max-width:380px}.work-grid{grid-template-columns:1fr;gap:56px}.focus-grid{grid-template-columns:1fr;gap:48px}.resume-row{grid-template-columns:1fr}.resume-dial-col{display:none}.resume-row-header{grid-template-columns:1fr;gap:6px}.resume-row .date{text-align:left}}
