@font-face{font-family:Heming;src:url(/fonts/HemingVariable.ttf) format("truetype-variations");font-weight:300 700;font-style:normal;font-display:swap}:root{--bg: #ffffff;--bg-elev: #f4f6f9;--text: #0b1020;--text-muted: #5a6577;--accent: #0e8f7a;--border: #dde3ea;--max-width: 960px;color-scheme:light;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.6;color:var(--text);background-color:var(--bg)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-snap-type:y mandatory}body{margin:0;min-height:100vh;min-height:100svh;overflow-x:hidden;overflow-x:clip}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{line-height:1.15;margin:0}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;padding-left:calc(1.5rem + env(safe-area-inset-left,0px));padding-right:calc(1.5rem + env(safe-area-inset-right,0px))}.section{min-height:100vh;min-height:100svh;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:center;padding:6rem 0}.section-title{font-size:1.6rem;margin-bottom:2.5rem;display:flex;align-items:baseline;gap:.6rem}.section-title.centered{justify-content:center}.section-num{color:var(--accent);font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:1.1rem}.site-header{position:fixed;top:0;left:0;right:0;padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);z-index:10;pointer-events:none}.site-header>*{pointer-events:auto}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.25rem}.pill{display:inline-flex;align-items:center;height:44px;border-radius:999px;background:linear-gradient(180deg,#ffffff61,#0b102009);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid rgba(11,16,32,.12);box-shadow:inset 0 1px #ffffffe6,0 8px 26px #0b10201f}.brand{padding:0 1.125rem;font-family:Heming,Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-synthesis:none;font-weight:400;font-size:1.25rem;letter-spacing:.02em;color:var(--text)}.brand:hover{text-decoration:none}.brand-dot{color:var(--accent)}.nav{position:relative;gap:.125rem;padding:0 .25rem;font-size:.9rem;letter-spacing:.01em}.nav-thumb{position:absolute;top:3px;height:36px;border-radius:999px;box-sizing:border-box;background:#ffffffeb;border:1px solid rgba(11,16,32,.12);box-shadow:0 2px 10px #0b10201f,inset 0 1px #fff;transition:left .42s cubic-bezier(.65,0,.2,1),width .42s cubic-bezier(.65,0,.2,1),opacity .2s ease;pointer-events:none}.nav a{position:relative;display:inline-flex;align-items:center;height:36px;padding:0 1rem;border-radius:999px;color:var(--text);transition:background-color .15s ease,color .26s ease .12s}.nav a:hover,.nav a:focus-visible{color:var(--text);background:#ffffff59;text-decoration:none;outline:none}.nav a.on{color:var(--text);background:transparent}.menu-btn{display:none;width:44px;height:44px;padding:0;border-radius:50%;border:1px solid rgba(11,16,32,.12);background:linear-gradient(180deg,#ffffff61,#0b102009);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:inset 0 1px #ffffffe6,0 8px 26px #0b10201f;cursor:pointer;place-items:center;position:relative;z-index:2}.menu-icon{display:block;width:16px;height:1.5px;background:var(--text);box-shadow:0 -5px 0 var(--text),0 5px 0 var(--text);transition:background-color .15s ease,box-shadow .15s ease,transform .2s ease}.is-open .menu-icon{background:transparent;box-shadow:none}.is-open .menu-icon:before,.is-open .menu-icon:after{content:"";position:absolute;left:50%;top:50%;width:18px;height:1.5px;background:var(--text);transform:translate(-50%,-50%) rotate(45deg)}.is-open .menu-icon:after{transform:translate(-50%,-50%) rotate(-45deg)}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;display:grid;align-content:center;padding:0 10vw;background:#ffffffd6;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .26s ease,transform .32s cubic-bezier(.2,.8,.2,1),visibility 0s linear .32s}.sheet.is-open{opacity:1;visibility:visible;transform:none;transition:opacity .26s ease,transform .32s cubic-bezier(.2,.8,.2,1),visibility 0s}.sheet-links a{opacity:0;transform:translateY(14px);transition:opacity .26s ease,transform .36s cubic-bezier(.2,.8,.2,1)}.sheet.is-open .sheet-links a{opacity:1;transform:none}.sheet-links{display:flex;flex-direction:column;gap:.25rem;font-family:Heming,Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-synthesis:none;font-weight:300;font-size:clamp(2.25rem,9vw,3.5rem);letter-spacing:-.02em;line-height:1.15}.sheet-links a{display:flex;align-items:baseline;gap:1rem;color:var(--text)}.sheet-links a small{font-family:Inter,system-ui,sans-serif;font-size:.75rem;letter-spacing:.14em;color:var(--text-muted);font-variant-numeric:tabular-nums}.sheet-links a.on{color:var(--accent)}.sheet-links a:hover{text-decoration:none}@media(max-width:800px){.nav{display:none}.menu-btn{display:grid}.header-inner{padding-top:.875rem}}@media(max-width:800px){.section{padding:calc(4rem + env(safe-area-inset-top,0px)) 0 calc(3.5rem + env(safe-area-inset-bottom,0px))}.section-pill{padding:.75rem 1.125rem .75rem 1rem;margin-bottom:.75rem;gap:.625rem}.section-pill .section-heading{font-size:1.25rem}.section-pill .eyebrow{font-size:.6875rem}}@media(prefers-reduced-motion:reduce){.nav-thumb,.sheet,.sheet-links a,.nav a{transition:none}}.hero{position:relative;overflow-x:clip;font-family:Heming,Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-synthesis:none}.hero .eyebrow{font-family:Heming,SF Mono,ui-monospace,Cascadia Code,monospace;font-weight:300}.hero .hero-title{font-weight:400}.hero .hero-subtitle{font-weight:300}.hero .hero-company,.hero .btn{font-weight:400}.hero .hero-lead{font-weight:300}.chrome-bg-clip{position:fixed;top:0;left:0;right:0;height:100vh;height:100dvh;z-index:-1;overflow:clip}.chrome-bg{position:absolute;top:0;left:0;right:0;height:100vh;height:100lvh;overflow:hidden}@media(pointer:coarse){.chrome-bg{height:120vh;height:120lvh}}#root{position:relative;overflow:clip}.chrome-strip{position:absolute;top:0;left:0;width:100%;z-index:-2;pointer-events:none}.page-tail{display:none}@media(pointer:coarse){.page-tail{display:block;height:20svh}}.hero-content{position:relative;isolation:isolate;text-align:center}.hero-content:before,.hero-content:after{content:"";position:absolute;top:-151.25%;left:50%;height:302.5%;aspect-ratio:1;transform:translate(-50%);z-index:-1;pointer-events:none;border-radius:50%}.hero-content:before{background:radial-gradient(circle closest-side,#ffffffeb,#ffffffe6 62%,#fff0)}.hero-content:after{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);-webkit-mask-image:radial-gradient(circle closest-side,#000 58%,transparent 100%);mask-image:radial-gradient(circle closest-side,#000 58%,transparent 100%)}.hero .hero-lead{margin-inline:auto}.hero .hero-actions{justify-content:center;margin-top:2.5rem}.hero-statement{font-size:clamp(1.4rem,3.6vw,2.5rem);font-weight:300;line-height:1.25;margin:1.25rem 0 0}.hero-word{color:var(--accent);font-weight:400}.flap{display:inline-block;perspective:600px;white-space:nowrap}.flap i{display:inline-block;font-style:normal;transform-origin:50% 50%;backface-visibility:hidden}.flap i.out{animation:flapOut .32s ease-in forwards}.flap i.in{animation:flapIn .32s ease-out both}@keyframes flapOut{to{transform:rotateX(-90deg);opacity:0}}@keyframes flapIn{0%{transform:rotateX(90deg);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.flap i{animation:none!important}}.loader{position:fixed;top:0;left:0;right:0;height:100vh;height:100dvh;z-index:100;background:var(--bg);display:grid;place-items:center;opacity:1}.loader.is-out{opacity:0;transition:opacity .52s ease .26s;pointer-events:none}.loader-tail{display:none}@media(pointer:coarse){.loader-tail{display:block;position:absolute;left:0;right:0;height:150svh;z-index:99;background:var(--bg);pointer-events:none;opacity:1}.loader-tail.is-out{opacity:0;transition:opacity .52s ease .26s}}.loader-inner{display:grid;justify-items:center;gap:1.25rem;opacity:0}.loader.is-on .loader-inner{opacity:1;transition:opacity .26s ease}.loader-name{display:flex;gap:.08em;font-family:var(--display);font-synthesis:none;font-weight:300;font-size:clamp(1.75rem,6vw,3.5rem);letter-spacing:-.02em;line-height:1;color:var(--text)}.loader-name i{display:inline-block;width:.66em;text-align:center}.loader-name b{display:inline-block;width:.3em}.loader-name i.tick{animation:loaderTick .18s ease-out}@keyframes loaderTick{0%{transform:rotateX(70deg);opacity:.4}to{transform:none;opacity:1}}.loader-name i.out{animation:flapOut .32s ease-in forwards}.loader-hair{width:min(60vw,22rem);height:2px;border-radius:2px;background:#0b10201a;overflow:hidden}.loader-hair i{display:block;height:100%;background:var(--text);transition:width .18s linear}@media(prefers-reduced-motion:reduce){.loader-name i.tick,.loader-name i.out{animation:none}}.hero-role{margin:.5rem 0 0;font-size:1.1rem;color:var(--text-muted);letter-spacing:.01em}.hero-company{color:var(--accent);font-weight:600}.eyebrow{color:var(--accent);font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.95rem;margin:0 0 1rem}.hero-title{font-size:clamp(3.25rem,11vw,6.5rem);font-weight:800;letter-spacing:-.02em}.hero-subtitle{font-size:clamp(1.2rem,2.6vw,1.75rem);font-weight:300;color:var(--text-muted);letter-spacing:0;margin:.9rem 0 0;min-height:1.3em}.hero-lead{max-width:540px;color:var(--text-muted);margin:1.5rem 0 2.25rem;font-size:1.05rem}.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}.intro-inner{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4rem}.intro-pfp{width:220px;height:220px;border-radius:50%;overflow:hidden;background:linear-gradient(160deg,#2a3346,#10151f);display:grid;place-items:center;opacity:0;pointer-events:none;-webkit-mask-image:radial-gradient(circle closest-side at 50% 50%,#000 62%,rgba(0,0,0,.6) 82%,rgba(0,0,0,0) 100%);mask-image:radial-gradient(circle closest-side at 50% 50%,#000 62%,#0009 82%,#0000)}.intro-pfp>*{grid-area:1 / 1}.intro-pfp img{width:100%;height:100%;object-fit:cover;display:block}.intro-pfp-initials{font-size:3.6rem;font-weight:800;color:#ffffffeb;letter-spacing:.02em}.intro .eyebrow{margin:0 0 .75rem}.intro-name{font-family:Heming,Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-synthesis:none;font-size:clamp(2rem,5vw,3.25rem);font-weight:400;letter-spacing:-.02em;margin-bottom:1.25rem;text-shadow:0 2px 16px rgba(255,255,255,.8)}.intro-body{color:var(--text);font-size:1.05rem;line-height:1.75;max-width:50ch;text-shadow:0 2px 14px rgba(255,255,255,.85)}.intro-story{display:flex;flex-direction:column;gap:1rem;margin:1.05rem 0}.intro .intro-story>p,.intro .intro-story>blockquote,.intro .intro-story>aside{margin:0}.intro .intro-story .pull,.intro .intro-story .aside{max-width:50ch}@media(max-width:800px){.intro-inner{grid-template-columns:1fr;gap:2rem;text-align:center}.intro-pfp{order:-1;width:120px;height:120px;margin:0 auto}.intro-inner{gap:3.25rem;align-content:end;min-height:calc(100svh - 7.5rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.intro-name{font-size:1.75rem}.intro-story{align-items:center;margin:.9rem 0}.intro-body{font-size:.9rem}.intro-story .pull,.intro-story .aside{text-align:left}.intro-story>.intro-body:only-child{display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;overflow:hidden}}.btn{display:inline-block;padding:.75rem 1.5rem;border-radius:6px;font-weight:600;font-size:.95rem;transition:transform .15s ease,background .15s ease}.btn:hover{text-decoration:none;transform:translateY(-2px)}.btn-primary{background:var(--accent);color:#fff}.btn-ghost{border:1px solid var(--accent);color:var(--accent)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.5rem}.project-card{background:transparent;border:1px dashed var(--border);border-radius:10px;padding:1.5rem;display:flex;flex-direction:column;transition:transform .15s ease,border-color .15s ease}.project-card:hover{transform:translateY(-4px);border-color:var(--accent)}.project-title{font-size:1.2rem;margin-bottom:.6rem}.project-desc{color:var(--text-muted);font-size:.95rem;flex-grow:1}.project-tags{list-style:none;padding:0;margin:1rem 0;display:flex;flex-wrap:wrap;gap:.5rem}.project-tags li,.skills-list li{font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.75rem;color:var(--text-muted);background:#0e8f7a14;padding:.2rem .55rem;border-radius:4px}.project-link{font-size:.9rem;font-weight:600}.contact{position:relative}.contact-inner{display:grid;align-content:center}.contact-inner .section-pill{justify-self:start}.contact-inner .section-pill .eyebrow a{color:inherit}.contact-inner .section-pill .eyebrow a:hover{color:var(--accent);text-decoration:none}.contact-form{border-radius:22px;padding:1.25rem 1.375rem 1.375rem;justify-self:start;width:min(100%,520px);display:grid;gap:.75rem}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}@media(max-width:380px){.field-row{grid-template-columns:1fr}}.field{display:grid;gap:.375rem}.field>span:first-child{font-size:.6875rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.field input,.field select,.field textarea{font:inherit;font-size:.9rem;color:var(--text);background:#ffffff8c;border:1px solid rgba(11,16,32,.12);border-radius:12px;padding:.625rem .75rem;width:100%;box-sizing:border-box;transition:border-color .15s ease,background-color .15s ease}.field input::placeholder,.field textarea::placeholder{color:#5a6577b3}.field input:hover,.field select:hover,.field textarea:hover{background:#ffffffbf}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid rgba(14,143,122,.45);outline-offset:1px;border-color:#0e8f7a73;background:#ffffffd9}.field textarea{min-height:6rem;resize:vertical}.select-wrap{position:relative;display:block}.select-wrap select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:2.25rem;cursor:pointer}.select-wrap select:invalid{color:#5a6577cc}.select-wrap:after{content:"";position:absolute;right:.875rem;top:50%;width:.5rem;height:.5rem;border-right:1.5px solid var(--text-muted);border-bottom:1.5px solid var(--text-muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}.form-send{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:.25rem}.btn-send{display:inline-flex;align-items:center;gap:.625rem;height:44px;padding:0 1.25rem;border-radius:999px;border:0;cursor:pointer;font:inherit;font-size:.875rem;font-weight:500;background:var(--text);color:#fff;transition:transform .15s ease,background-color .15s ease}.btn-send:hover{background:#1b2340;transform:translateY(-1px)}.btn-send i{font-style:normal;transition:transform .2s ease}.btn-send:hover i{transform:translate(3px)}.btn-send:disabled{cursor:progress;opacity:.7;transform:none;background:var(--text)}.form-note{margin:0;font-size:.78rem;color:var(--text-muted)}.form-note a{color:var(--text);font-weight:500}.contact-form .hp{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;opacity:0}.site-footer{position:absolute;bottom:env(safe-area-inset-bottom,0px);left:0;right:0}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:1.25rem}.foot-meta{gap:.75rem;margin:0;padding:0 1.125rem;font-size:.78rem;color:var(--text-muted);white-space:nowrap}.foot-meta b{color:var(--text);font-weight:500}.foot-built:before{content:"·";margin-right:.75rem}.foot-links{padding:0 4px;gap:2px}.foot-links a{display:inline-flex;align-items:center;gap:.375rem;height:36px;padding:0 .875rem;border-radius:999px;font-size:.8125rem;color:var(--text);transition:background-color .15s ease,color .15s ease}.foot-links a:hover,.foot-links a:focus-visible{background:#ffffff59;text-decoration:none;outline:none}.foot-links a.foot-icon{width:36px;padding:0;justify-content:center}.foot-icon svg{width:22px;height:22px;flex:none;display:block}.foot-top{color:var(--text-muted)!important}.foot-top:hover{color:var(--text)!important}.foot-top i{font-style:normal;transition:transform .2s ease}.foot-top:hover i{transform:translateY(-2px)}@media(max-width:800px){.contact{padding-top:calc(4.5rem + env(safe-area-inset-top,0px));padding-bottom:calc(6rem + env(safe-area-inset-bottom,0px))}.contact-inner{align-content:end;min-height:calc(100svh - 10.5rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.contact-inner .section-pill{margin-bottom:.75rem;padding:.75rem 1.125rem .75rem 1rem}.contact-inner .section-pill .eyebrow{display:none}.contact-form{width:100%;padding:.875rem .875rem 1rem;gap:.5rem}.field textarea{height:3.5rem;min-height:3.5rem}.field input,.field select,.field textarea{padding:.5rem .625rem;font-size:.875rem}.form-note:not(.form-status){display:none}.btn-send{height:40px}.footer-inner{gap:.5rem;padding-bottom:1rem}.foot-built{display:none}.foot-top{display:none!important}.foot-meta{padding:0 .875rem;font-size:.72rem}.foot-links a{padding:0 .625rem}.foot-links a.foot-icon{padding:0}}.section-indicator{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:20;display:flex;flex-direction:column;align-items:center;gap:14px}.section-indicator .dot{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding:0;cursor:pointer;position:relative;width:10px;height:10px;border-radius:999px;border:1px solid var(--text-muted);background:transparent;transition:height .4s cubic-bezier(.4,0,.2,1),width .4s cubic-bezier(.4,0,.2,1),background .3s ease,border-color .3s ease}.section-indicator .dot:hover{border-color:var(--accent)}.section-indicator .dot.is-active{background:var(--accent);border-color:var(--accent);height:28px}.section-indicator .dot-label{position:absolute;right:22px;top:50%;transform:translateY(-50%);white-space:nowrap;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);opacity:0;pointer-events:none;transition:opacity .2s ease}.section-indicator .dot:hover .dot-label{opacity:1}@media(max-width:800px){.section-indicator{right:auto;top:calc(.875rem + env(safe-area-inset-top,0px));bottom:auto;left:50%;transform:translate(-50%);flex-direction:row;gap:10px;height:44px;padding:0 14px;box-sizing:border-box;border-radius:999px;background:linear-gradient(180deg,#ffffff61,#0b102009);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid rgba(11,16,32,.12);box-shadow:inset 0 1px #ffffffe6,0 8px 26px #0b10201f}.section-indicator .dot{width:8px;height:8px}.section-indicator .dot.is-active{height:8px;width:22px}.section-indicator .dot-label{display:none}}.debug-panel{position:fixed;left:12px;bottom:12px;z-index:50;display:grid;gap:6px;padding:10px 12px;border:1px dashed rgba(255,255,255,.35);border-radius:8px;background:#0a0c12d9;color:#ddd;font:12px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace}.debug-panel{max-height:calc(100vh - 24px);overflow:auto;overscroll-behavior:contain;min-width:250px}.debug-title{font-weight:600;margin-bottom:2px}.debug-group{display:grid;gap:4px;margin-top:6px}.debug-group summary{cursor:pointer;list-style:none}.debug-group summary:before{content:"▸ ";opacity:.6}.debug-group[open] summary:before{content:"▾ "}.debug-actions{display:flex;gap:6px;justify-content:end;margin-top:4px}.debug-row input[type=color]{width:28px;height:20px;padding:0;border:1px solid rgba(255,255,255,.25);background:transparent}.debug-hint{opacity:.5;font-weight:400}.debug-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.debug-row input[type=range]{width:110px;accent-color:var(--accent)}.debug-row select{font:inherit;color:#ddd;background:#ffffff14;border:1px solid rgba(255,255,255,.25);border-radius:4px;padding:2px 4px}.debug-reset{font:inherit;color:#ddd;background:transparent;border:1px solid rgba(255,255,255,.25);border-radius:4px;padding:3px 8px;cursor:pointer;justify-self:end}:root{--glass-bg: linear-gradient(180deg, rgba(255, 255, 255, .42), rgba(11, 16, 32, .035));--glass-ring: rgba(11, 16, 32, .12);--glass-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 10px 30px rgba(11, 16, 32, .12);--glass-blur: blur(22px) saturate(140%);--display: "Heming", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media(pointer:coarse){:root{--glass-blur: blur(12px) saturate(130%)}.hero-content:after{-webkit-backdrop-filter:none;backdrop-filter:none}}.glass{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-ring);box-shadow:var(--glass-shadow)}.section-pill{display:inline-flex;align-items:baseline;gap:.875rem;padding:.9375rem 1.375rem .9375rem 1.25rem;border-radius:999px;margin:0 0 1.25rem}.section-pill .section-heading{font-size:1.625rem}.section-pill .eyebrow{display:inline-flex;align-items:baseline;gap:.75rem;margin:0;font-size:.8125rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.section-pill .eyebrow:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);align-self:center}.section-head{margin:0 0 1.25rem}.section-head .eyebrow{margin:0 0 .375rem;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}.section-heading{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:clamp(2rem,4.5vw,3rem);letter-spacing:-.02em;line-height:1;margin:0}.section-lead{color:var(--text-muted);margin:.75rem 0 0;max-width:50ch}.spot-layout{display:grid;grid-template-columns:1.45fr 1fr;gap:1rem;align-items:stretch}.spot{border-radius:24px;padding:1.375rem 1.5rem;display:grid;gap:1rem}.spot-shot,.project-shot{aspect-ratio:16 / 9;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#0b10201a,#0b102008);border:1px solid rgba(11,16,32,.08);display:grid;place-items:center;color:var(--text-muted);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase}.spot-shot img,.project-shot img{width:100%;height:100%;object-fit:cover;display:block}.spot-num{font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);font-variant-numeric:tabular-nums;margin:0}.spot-title{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:1.875rem;letter-spacing:-.02em;margin:.375rem 0 .5rem}.spot-blurb{color:var(--text-muted);margin:0 0 .75rem;max-width:42ch;font-size:.9375rem}.tags{display:flex;flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;font-size:.72rem;letter-spacing:.04em}.tags li{padding:3px 9px;border-radius:999px;background:#ffffff80;border:1px solid rgba(11,16,32,.1)}.spot-ctl{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.pn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;padding:0;cursor:pointer;color:var(--text);font:inherit;transition:transform .15s ease,background-color .15s ease}.pn:hover{transform:translateY(-1px)}.pn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dots{display:flex;gap:6px;margin-left:.375rem}.dots i{width:18px;height:2px;background:#0b102026;transition:background-color .2s ease}.dots i.on{background:var(--accent)}.spot-link{margin-left:auto;color:var(--accent);font-size:.875rem}.spot-stack{display:grid;grid-template-rows:1fr auto;gap:1rem;min-height:0}.spot-layout.is-single{grid-template-columns:1fr}.conveyor{--slot: 52%;position:relative;overflow:hidden;border-radius:22px}.stack-card{position:absolute;left:0;right:0;height:calc(100% - var(--slot));box-sizing:border-box;border-radius:20px;padding:1.125rem 1.25rem;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:.375rem;text-align:left;cursor:pointer;color:var(--text);font:inherit;transition:top .56s cubic-bezier(.65,0,.2,1),opacity .36s ease,box-shadow .2s ease,border-color .3s ease}.stack-card.slot-0{top:0}.stack-card.slot-1{top:var(--slot)}.stack-card.in-below{top:110%;opacity:0}.stack-card.in-above{top:-60%;opacity:0}.stack-card.out-up{top:-60%;opacity:0;pointer-events:none}.stack-card.out-down{top:110%;opacity:0;pointer-events:none}.stack-card:hover{box-shadow:inset 0 1px #ffffffe6,0 18px 40px #0b102029}.stack-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stack-card .spot-num{color:var(--accent)}.stack-card.is-next{border-color:#0e8f7a73}.stack-title{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:1.3125rem;letter-spacing:-.01em;margin:0}.stack-blurb{color:var(--text-muted);font-size:.84rem;margin:0}.stack-card .tags{padding-top:.375rem}.btn-glass{display:inline-flex;align-items:center;gap:.625rem;height:44px;padding:0 1.125rem 0 1.25rem;border-radius:999px;font-size:.875rem;font-weight:500;white-space:nowrap;justify-self:start;color:var(--text);transition:transform .15s ease}.btn-glass:hover{text-decoration:none;transform:translateY(-1px)}.btn-glass small{font-weight:400;color:var(--text-muted)}.btn-glass i{font-style:normal;transition:transform .2s ease}.btn-glass:hover i{transform:translate(3px)}.page{padding:6.5rem 0 5rem;min-height:100vh;min-height:100svh}.projects-page{background:transparent}.projects-page .container{max-width:1160px}.page-intro{border-radius:24px;padding:1.25rem 1.5rem 1.5rem}.page-intro .section-head{margin:0}.back{display:inline-block;color:var(--text-muted);font-size:.875rem;margin:0 0 1rem}.boards{display:grid;gap:1.25rem;margin-top:1.75rem}.board{display:grid;grid-template-columns:280px minmax(0,1fr);gap:1.25rem;padding:1.25rem 1.375rem 1.375rem;border-radius:24px}.board-head{display:flex;flex-direction:column;gap:.5rem;min-width:0}.board-title a{color:inherit;text-decoration:none}.board-title a:hover{text-decoration:underline;text-underline-offset:.2em}.board-title{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:1.75rem;letter-spacing:-.015em;line-height:1.05;margin:.125rem 0 0}.board-blurb{color:var(--text-muted);font-size:.9375rem;margin:0}.board-head .tags{margin-top:.25rem}.btn-solid{align-self:flex-start;margin-top:auto;display:inline-flex;align-items:center;gap:.375rem;height:36px;padding:0 .875rem;border-radius:10px;background:var(--accent);color:#fff;font-size:.875rem;font-weight:500;text-decoration:none}.btn-solid:hover{text-decoration:none;filter:brightness(1.06)}.bento{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:132px;gap:.625rem;min-width:0}.bento .tile.is-large{grid-column:span 2;grid-row:span 2}.bento .tile:nth-child(n+6){grid-column:span 2}.bento:has(>:nth-child(4):last-child) .tile:last-child{grid-column:span 2}.project-page .container{max-width:1160px}.project-cols{display:grid;grid-template-columns:320px minmax(0,1fr);gap:3rem;align-items:start}.project-side{position:sticky;top:5.5rem;display:flex;flex-direction:column;gap:1rem;min-width:0;border-radius:24px;padding:1.25rem 1.375rem 1.375rem}.project-body{background:#fff;border:1px solid var(--border);border-radius:24px;padding:1.5rem 1.75rem 1.75rem;box-shadow:0 1px #ffffffe6 inset,0 12px 32px -18px #0b10202e}.project-side .back{margin:0}.project-title{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:clamp(2rem,3.4vw,2.75rem);letter-spacing:-.015em;line-height:1.02;margin:.375rem 0 .625rem;text-wrap:balance}.project-lead{color:var(--text-muted);font-size:1rem;line-height:1.5;margin:0}.project-spec{display:grid;grid-template-columns:auto 1fr;gap:.3125rem .875rem;margin:0;font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.6875rem;letter-spacing:.06em;text-transform:uppercase}.project-spec dt{color:var(--text-muted)}.project-spec dd{margin:0;color:var(--text)}.project-side .btn-solid{margin-top:0}.project-toc{display:grid;gap:.375rem;font-size:.8125rem}.project-toc a{color:var(--text-muted);padding-left:.75rem;border-left:2px solid transparent;text-decoration:none}.project-toc a.is-on{color:var(--text);border-color:var(--accent)}.project-toc a:hover{text-decoration:none;color:var(--text)}.project-body{min-width:0}.post{max-width:40rem}.post section{display:grid;gap:.875rem}.post h2{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:1.875rem;letter-spacing:-.015em;line-height:1.1;margin:1.75rem 0 0;scroll-margin-top:5.5rem}.post section:first-child h2{margin-top:0}.post p{font-size:1rem;line-height:1.7;color:#2a3242;margin:0}.post .pull,.intro-story .pull{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:1.5rem;line-height:1.3;letter-spacing:-.01em;color:var(--text);margin:.5rem 0;padding:.375rem 0 .375rem 1.125rem;border-left:3px solid var(--accent)}.post .aside,.intro-story .aside{border-radius:14px;background:var(--bg-elev);padding:.75rem 1rem;font-size:.875rem;line-height:1.55;color:var(--text-muted)}.post .code{margin:.25rem 0;border-radius:14px;border:1px solid var(--border);background:#fff;padding:.875rem 1rem;font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.78rem;line-height:1.6;overflow-x:auto;position:relative}.post .code[data-lang]:after{content:attr(data-lang);position:absolute;top:.625rem;right:.75rem;font-size:.625rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.fig{margin:.375rem 0 .625rem;display:grid;gap:.5rem}.fig .tile{height:320px}.fig.is-pair{grid-template-columns:1fr 1fr;align-items:start}.fig.is-pair .tile{height:200px}.fig figcaption{grid-column:1 / -1;font-size:.8125rem;color:var(--text-muted);display:flex;justify-content:space-between;gap:.75rem}.fig figcaption b{color:var(--text);font-weight:500}.stream{max-width:44rem;display:grid;gap:1.125rem}.stream .fig{margin:0}.stream .fig .tile{height:300px}.stream .tile-note .art-note{font-size:1.5rem;-webkit-line-clamp:8}.fig .tile.tile-image:has(img),.fig .tile.tile-clip:has(video){height:auto}.fig .art-image img,.fig .art-clip video{position:static;display:block;width:100%;height:auto;max-height:min(72vh,680px);object-fit:contain}.project-nextprev{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:2rem;max-width:44rem}.project-nextprev a{border-radius:16px;border:1px solid var(--border);padding:.875rem 1rem;display:grid;gap:.25rem;text-decoration:none;color:var(--text)}.project-nextprev a:hover{text-decoration:none;border-color:#0b10204d}.project-nextprev a small{font-family:SF Mono,ui-monospace,monospace;font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.project-nextprev a b{font-family:var(--display);font-synthesis:none;font-weight:400;font-size:1.125rem}.project-nextprev a.is-next{text-align:right}.tile{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;border-radius:16px;background:#fff;border:1px solid var(--border);color:var(--text);text-decoration:none}a.tile:hover{text-decoration:none;border-color:#0b102047}a.tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tile-kind{position:absolute;top:.625rem;left:.625rem;z-index:2;font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.625rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text);background:#ffffffd9;border:1px solid var(--border);border-radius:999px;padding:5px 8px}.tile-cap{margin:auto 0 0;padding:.625rem .75rem;font-size:.75rem;color:var(--text-muted);display:flex;justify-content:space-between;gap:.5rem;align-items:baseline;min-width:0}.tile-cap b{font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-cap span{font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.625rem;letter-spacing:.06em;white-space:nowrap}.tile.is-dark{background:#141821;border-color:#ffffff24;color:#fff}.tile.is-dark .tile-cap{color:#ffffffb3}.tile.is-dark .tile-cap b{color:#fff}button.tile{font:inherit;text-align:inherit;color:inherit;padding:0;margin:0;width:100%;border:1px solid var(--border);cursor:zoom-in;-webkit-appearance:none;-moz-appearance:none;appearance:none}button.tile:hover{border-color:#0b102047}button.tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:grid;place-items:center;padding:3.5rem 2vw 2vh;background:#0b1020db;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);overscroll-behavior:contain;touch-action:none;animation:lightbox-in .16s ease-out}.lightbox-fig{margin:0;display:grid;justify-items:center;gap:.75rem;min-width:0;max-width:100%}.lightbox-img{display:block;max-width:min(96vw,1600px);max-height:min(90vh,calc(100vh - 6.5rem));width:auto;height:auto;object-fit:contain;border-radius:8px;cursor:zoom-out}.lightbox-cap{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.25rem .75rem;font-size:.875rem;color:#ffffffb3;text-align:center}.lightbox-cap b{font-weight:500;color:#fff}.lightbox-cap span{font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.6875rem;letter-spacing:.06em}.lightbox-close{position:absolute;top:calc(env(safe-area-inset-top,0px) + .5rem);right:calc(env(safe-area-inset-right,0px) + .5rem);width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:#ffffff14;color:#fff;font:inherit;font-size:1.5rem;line-height:1;cursor:pointer}.lightbox-close:hover{background:#ffffff29}.lightbox-close:focus-visible{outline:2px solid #fff;outline-offset:2px}@keyframes lightbox-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.lightbox{animation:none}}@media(max-width:800px){.lightbox{padding:3.5rem 0 1rem}.lightbox-img{max-width:100vw;max-height:86vh;border-radius:0}.lightbox-cap{padding:0 1rem}}.art{flex:1;min-height:0;position:relative;margin:0}.art-image{background:linear-gradient(135deg,#cfd6df,#f2f4f7 45%,#b9c2cf 70%,#e8ebf0)}.art-image:after{content:"";position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:10px;background:linear-gradient(180deg,#ffffffb3,#ffffff40);border:1px solid rgba(11,16,32,.08)}.art-image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}.art-image:has(img):after{display:none}.art-image:has(img){background:var(--bg-elev)}.art-clip{background:radial-gradient(120% 80% at 30% 20%,#3b4557,#141821 60%)}.art-clip video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block}.art-clip .play{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;background:#ffffffeb}.art-clip .play:after{content:"";position:absolute;left:19px;top:15px;border-left:14px solid #0b1020;border-top:8px solid transparent;border-bottom:8px solid transparent}.art-clip .bar{position:absolute;left:12px;right:12px;bottom:12px;height:3px;background:#ffffff40;border-radius:3px}.art-clip .bar:after{content:"";position:absolute;left:0;top:0;bottom:0;width:34%;background:#3fc4a9;border-radius:3px}.bento .art-image img,.bento .art-clip video{object-fit:contain}.art-code{padding:2.25rem .875rem .75rem;font-family:SF Mono,ui-monospace,Cascadia Code,monospace;font-size:.75rem;line-height:1.55;color:var(--text);background:#fff;overflow:hidden;white-space:pre}.art-note{padding:2.375rem 1rem .75rem;font-family:var(--display);font-synthesis:none;font-weight:400;font-size:1.125rem;line-height:1.3;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.tile.is-large .art-note{-webkit-line-clamp:6}.art-note:before{content:"“";color:var(--accent)}.tile.is-large .art-note{font-size:1.5rem}.art-embed{padding:2.375rem .875rem .5rem;font-size:.8125rem;line-height:1.4;color:var(--text-muted);background:#fff;overflow:hidden}.art-embed p{margin:0}.art-embed p:last-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tile.is-large .art-embed p:last-child{-webkit-line-clamp:5}.art-embed .who{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.art-embed .who i{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#8fd8c8);flex:none}.art-embed .who b{font-weight:600;color:var(--text)}.art-embed .who span{color:#8a94a6}.art-three{background:radial-gradient(80% 80% at 50% 40%,#f7f8fa,#d6dbe3);display:grid;place-items:center;color:var(--text)}.art-three svg{width:50%;height:50%;max-height:120px;margin-top:.75rem}.art-three .hint{position:absolute;right:10px;bottom:10px;font-family:SF Mono,ui-monospace,monospace;font-size:.625rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.art-audio{display:flex;align-items:center;gap:3px;padding:2.375rem 1rem .75rem}.art-audio i{flex:1;background:var(--text);border-radius:2px;opacity:.85}.art-audio i:nth-child(n+11){opacity:.28}.art-audio audio{width:100%}.art-deck{display:grid;place-items:center;padding-top:1.25rem}.art-deck .pg{width:42%;max-width:96px;aspect-ratio:3 / 4;background:#fff;border:1px solid rgba(11,16,32,.15);border-radius:4px;position:relative;box-shadow:6px 6px 0 -1px #f1f3f6,6px 6px #0b102026,12px 12px 0 -1px #f1f3f6,12px 12px #0b10201f}.art-deck .pg:before{content:"";position:absolute;left:12%;right:12%;top:16%;height:6px;background:var(--text);border-radius:2px;box-shadow:0 14px 0 -2px #c8cfd9,0 24px 0 -2px #c8cfd9,0 34px 0 -2px #c8cfd9,0 44px 0 -2px #c8cfd9}.art-link{padding:2.125rem .875rem .5rem;display:flex;flex-direction:column;gap:.375rem}.art-link .dom,.art-link .ttl{flex:none}.art-link .dom{font-family:SF Mono,ui-monospace,monospace;font-size:.6875rem;color:var(--text-muted);letter-spacing:.06em;display:flex;align-items:center;gap:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.art-link .dom:before{content:"";width:10px;height:10px;border-radius:3px;background:var(--accent);flex:none}.art-link .ttl{font-weight:600;color:var(--text);font-size:.9375rem}.art-link .arrow{position:absolute;right:12px;bottom:10px;color:var(--accent);font-size:1.125rem}.stack-thumb{display:none}@media(max-width:800px){.spot-layout{grid-template-columns:1fr;gap:.375rem}.spot{padding:.75rem .875rem .875rem;gap:.375rem;border-radius:20px}.spot-in{display:grid;gap:.375rem}.spot-shot{aspect-ratio:2 / 1}.spot .tags{display:none}.spot-title{font-size:1.375rem;margin:.125rem 0 .25rem}.spot-blurb{font-size:.875rem;margin:0 0 .5rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.spot-ctl{margin-top:.25rem}.spot-stack{grid-template-rows:auto auto;gap:.375rem;min-width:0}.spot-layout>*{min-width:0}.conveyor{min-height:0;overflow-x:auto;overflow-y:hidden;border-radius:0;display:flex;gap:.5rem;padding:2px 0 4px;scroll-snap-type:x proximity}.stack-card{position:static;height:auto;width:168px;flex:none;scroll-snap-align:start;padding:.375rem .625rem;border-radius:14px;gap:.0625rem;display:grid;grid-template-columns:34px 1fr;column-gap:.5rem;align-items:center;transition:box-shadow .2s ease,border-color .3s ease}.stack-card.out-up,.stack-card.out-down{display:none}.stack-card.in-below,.stack-card.in-above{opacity:1}.stack-thumb{display:block;grid-row:1 / span 2;width:34px;height:34px;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,#0b10201f,#0b102008);border:1px solid rgba(11,16,32,.08)}.stack-thumb img{width:100%;height:100%;object-fit:cover;display:block}.stack-card .spot-num{font-size:.625rem}.stack-title{font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stack-blurb,.stack-card .tags{display:none}.btn-glass{width:100%;justify-content:center;box-sizing:border-box;height:36px}.project-cols{grid-template-columns:1fr;gap:1rem}.project-side{position:static;padding:1rem;border-radius:20px}.project-body{padding:1rem;border-radius:20px}.project-toc{display:none}.post h2{font-size:1.5rem}.post p{font-size:.9375rem}.post .pull,.intro-story .pull{font-size:1.25rem}.fig .tile,.stream .fig .tile{height:220px}.fig.is-pair{grid-template-columns:1fr}.fig.is-pair .tile{height:180px}.board{grid-template-columns:1fr;padding:1rem;border-radius:20px;gap:.875rem}.board-title{font-size:1.5rem}.bento{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:124px;gap:.5rem}.bento .tile.is-large{grid-column:span 2;grid-row:span 2}.bento .tile:nth-child(n+6){grid-column:span 1}.bento:has(>:nth-child(4):last-child) .tile:last-child{grid-column:span 1}.bento:has(>:nth-child(2n):last-child) .tile:last-child{grid-column:span 2}.bento .tile:not(.is-large) .art-note{-webkit-line-clamp:2}}@media(min-width:801px)and (max-width:1080px){.container{padding-right:calc(3.5rem + env(safe-area-inset-right,0px))}.project-cols{grid-template-columns:260px minmax(0,1fr);gap:2rem}.board{grid-template-columns:220px minmax(0,1fr)}.bento{grid-template-columns:repeat(3,minmax(0,1fr))}}.ground{position:relative;isolation:isolate}.ground:before{content:"";position:absolute;top:-45%;right:-30%;bottom:-45%;left:-30%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at center,#fffffff2,#ffffffe6 40%,#fff0 78%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);-webkit-mask-image:radial-gradient(ellipse at center,#000 40%,transparent 78%);mask-image:radial-gradient(ellipse at center,#000 40%,transparent 78%)}.section-head.ground{display:inline-block;padding:.25rem .5rem .25rem 0}.projects .rise{opacity:0;transform:translateY(22px)}.projects.is-in .rise{animation:riseIn .64s cubic-bezier(.2,.8,.2,1) forwards}.projects.is-in .spot.rise{animation-delay:60ms}.projects.is-in .stack-card.rise.slot-0{animation-delay:.16s}.projects.is-in .stack-card.rise.slot-1{animation-delay:.24s}.projects.is-in .btn-glass.rise{animation-delay:.32s}.projects.is-in .stack-card.rise{animation-fill-mode:backwards}@keyframes riseIn{to{opacity:1;transform:none}}.spot{position:relative}.spot-in{display:grid;gap:1rem}.spot-in.from-right{animation:slideFromRight .38s cubic-bezier(.2,.8,.2,1) both}.spot-in.from-left{animation:slideFromLeft .38s cubic-bezier(.2,.8,.2,1) both}@media(min-width:801px){.is-single .spot-in{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:1.75rem}}@keyframes slideFromRight{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}@keyframes slideFromLeft{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:none}}.dots i{position:relative;overflow:hidden;transition:background-color .2s ease,width .3s cubic-bezier(.2,.8,.2,1)}.dots i.on{width:44px;background:#0b102026}.dots i.on:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--accent);transform-origin:left center;transform:scaleX(0);animation:fillBar var(--bar, 7s) linear forwards}.dots.is-paused i.on:after{animation-play-state:paused}@keyframes fillBar{to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){.projects .rise,.projects.is-in .rise,.spot-in{animation:none!important;opacity:1;transform:none}.stack-card{transition:none}.dots i.on:after{animation:none;transform:none}}.skills-inner{display:grid;align-content:center}.skills-inner .section-pill{justify-self:start}.skills-panel{border-radius:22px;padding:1rem 1.125rem 1.125rem;justify-self:start;width:min(100%,520px)}.skills-legend,.skills-project{animation:panelIn .32s cubic-bezier(.2,.8,.2,1) both}@keyframes panelIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.skills-group+.skills-group{margin-top:.75rem}.grp{font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .5rem}.chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem .375rem .5rem;border-radius:999px;font:inherit;font-size:.8125rem;color:var(--text);background:#ffffff80;border:1px solid rgba(11,16,32,.1);cursor:pointer;transition:transform .15s ease,background-color .15s ease,border-color .15s ease}.chip img{width:18px;height:18px;display:block}.chip:hover,.chip:focus-visible{transform:translateY(-2px);background:#ffffffd9;border-color:#0e8f7a73;outline:none}.skills-hint{margin:.875rem 0 0;font-size:.75rem;color:var(--text-muted)}.skills-project,.skill-side{display:grid;gap:.875rem}.back-btn{justify-self:start;display:inline-flex;align-items:center;height:36px;padding:0 .875rem;border-radius:999px;font:inherit;font-size:.8125rem;color:var(--text);cursor:pointer}.skill-head{display:flex;align-items:center;gap:.875rem}.skill-logo{width:52px;height:52px;border-radius:14px;display:grid;place-items:center}.skill-logo img{width:28px;height:28px;display:block}.skill-project{border-top:1px solid rgba(11,16,32,.1);padding-top:.875rem}.skill-project .spot-title{font-size:1.5rem;margin:.25rem 0 .375rem}.skill-project .spot-blurb{margin-bottom:.625rem}.tags li.is-hit{border-color:#0e8f7a80;background:#0e8f7a1a}.skill-actions{display:flex;gap:1rem;margin-top:.75rem}.skill-actions .spot-link{margin-left:0}@media(max-width:800px){.skills-inner{align-content:end;min-height:calc(100svh - 7.5rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.skills-inner .section-pill .eyebrow{display:none}.skills-panel{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:.75rem .75rem .875rem;border-radius:18px}.skills-legend{display:grid;grid-auto-flow:column;grid-template-rows:repeat(3,auto);gap:.375rem;min-width:0;max-width:100%;overflow-x:auto;padding-bottom:2px;scroll-snap-type:x proximity}.skills-group,.chips{display:contents}.skills-group+.skills-group{margin-top:0}.grp,.skills-hint{display:none}.chip{padding:.3rem .625rem .3rem .4rem;font-size:.78rem;gap:.375rem;scroll-snap-align:start;white-space:nowrap}.chip img{width:15px;height:15px}.skills-project{gap:.625rem}.skill-project .spot-title{font-size:1.25rem}.skill-project .spot-blurb{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}@media(prefers-reduced-motion:reduce){.skills-legend,.skills-project{animation:none}}@media(min-width:801px)and (max-height:720px){.section{padding:3rem 0 2.5rem}.section-pill{padding:.75rem 1.125rem .75rem 1rem;margin-bottom:.75rem}.section-pill .section-heading{font-size:1.375rem}.hero-title{font-size:clamp(2.75rem,8vw,4.5rem)}.hero .hero-actions{margin-top:1.5rem}.spot-shot{display:none}.is-single .spot-in{grid-template-columns:1fr}.spot{padding:1rem 1.25rem;gap:.75rem}.spot-title{font-size:1.5rem}.spot-blurb{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.conveyor{min-height:200px}.stack-card{padding:.75rem 1rem}.stack-blurb{display:none}.contact{padding-bottom:6rem}.contact-form{padding:1rem 1.125rem 1.125rem;gap:.5rem}.field textarea{height:3.5rem;min-height:3.5rem}.form-note{display:none}.footer-inner{padding-bottom:1rem}.intro-pfp{width:160px;height:160px}}
