@import"https://api.fontshare.com/v2/css?f[]=satoshi@300,400,500,700,900&display=swap";@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap";@import"https://fonts.googleapis.com/css2?family=Anton&display=swap";:root{--bg-ivory: #000000;--bg-cream: #000000;--bg-stone: #000000;--ink: #f2f2f2;--accent-forest: #f2f2f2;--accent-gold: #c2a46d;--font-display: "Satoshi", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--font-body: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--radius: 16px;--pad: clamp(18px, 3vw, 44px);--line: rgba(242, 242, 242, .22);--muted: rgba(242, 242, 242, .72);--muted2: rgba(242, 242, 242, .55);--noir-bg: #000000;--noir-ink: #f2f2f2;--noir-muted: #7a7a7a;--noir-line: rgba(242, 242, 242, .22);--noir-title: "Anton", var(--font-display)}*{box-sizing:border-box}html,body{height:100%}html{scroll-behavior:smooth;scroll-padding-top:72px;scrollbar-width:none}body{margin:0;color:var(--noir-ink);background:var(--noir-bg);font-family:var(--font-body);overflow-x:hidden;--grain-x: 0px;--grain-y: 0px;scrollbar-width:none;-ms-overflow-style:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body::-webkit-scrollbar{width:0;height:0}body:before{display:none}::selection{background:#c2a46d59}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:4px}button{font:inherit}#root{position:relative;z-index:1}.site{min-height:100vh}.chapter-indicator{position:fixed;top:22px;right:var(--pad);z-index:50;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2);-webkit-user-select:none;user-select:none}.site-header{position:fixed;top:18px;left:var(--pad);right:var(--pad);z-index:55;display:flex;align-items:center;justify-content:space-between}.site-mast{display:inline-flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2)}.mast-divider{width:34px;height:1px;background:var(--line)}.menu-button{display:inline-flex;align-items:center;gap:10px;padding:10px 12px;border-radius:999px;border:1px solid var(--line);background:#f5f1e8b3;color:var(--ink);cursor:pointer}.menu-button:hover{border-color:#17151347}.menu-icon{width:22px;height:10px;display:flex;flex-direction:column;justify-content:space-between}.menu-icon span{display:block;height:1px;background:var(--ink);transform-origin:center;transition:transform .22s ease,opacity .22s ease}.menu-text{font-size:11px;letter-spacing:.24em;text-transform:uppercase}.menu-button[aria-expanded=true] .menu-icon span:first-child{transform:translateY(4.5px) rotate(45deg)}.menu-button[aria-expanded=true] .menu-icon span:last-child{transform:translateY(-4.5px) rotate(-45deg)}.menu-overlay{position:fixed;inset:0;z-index:80;display:grid;align-items:start;justify-items:start;padding:var(--pad);background:#f5f1e88c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);visibility:hidden;opacity:0;pointer-events:none;transition:opacity .22s ease,visibility 0s linear .22s}.menu-overlay.is-open{visibility:visible;opacity:1;pointer-events:auto;transition:opacity .22s ease}.menu-panel{width:min(620px,100%);margin-top:56px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-ivory);padding:22px 22px 18px}.menu-eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2);margin-bottom:14px}.menu-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.menu-link{width:100%;display:grid;grid-template-columns:3ch 1fr;align-items:baseline;gap:14px;border:0;padding:10px;border-radius:12px;background:transparent;cursor:pointer;text-align:left}.menu-link:hover{background:#dcd6c973}.menu-num{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted2)}.menu-label{font-family:var(--font-display);font-size:18px;letter-spacing:.02em;text-transform:uppercase}.menu-foot{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);display:grid;gap:10px}.menu-foot-label{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2)}.menu-foot-links{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.hero{position:relative;min-height:100svh;padding:120px var(--pad) 96px;display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,5vw,90px);align-items:end;border-bottom:1px solid var(--line);--cursor-x: 0px;--cursor-y: 0px;--cursor-size: 158px;--cursor-radius: calc(var(--cursor-size) / 2);--magnify-scale: 1}@media(pointer:fine){.hero.hero-cursor-on{cursor:none}.hero-cursor{position:absolute;left:0;top:0;width:var(--cursor-size);height:var(--cursor-size);border-radius:999px;border:1px solid rgba(23,21,19,.22);transform:translate3d(var(--cursor-x),var(--cursor-y),0) translate(-50%,-50%);opacity:0;pointer-events:none;z-index:40;transition:opacity .16s ease,width .24s cubic-bezier(.2,.9,.2,1),height .24s cubic-bezier(.2,.9,.2,1);will-change:transform,width,height,opacity}.hero.hero-cursor-on .hero-cursor{opacity:1}.hero-magnifier-layer{position:absolute;inset:0;z-index:35;pointer-events:none;background:var(--bg-ivory);opacity:0;clip-path:inset(0);transition:opacity .18s ease;-webkit-mask-image:radial-gradient(circle var(--cursor-radius) at var(--cursor-x) var(--cursor-y),rgba(0,0,0,1) 0%,rgba(0,0,0,1) calc(var(--cursor-radius) - 12px),rgba(0,0,0,0) calc(var(--cursor-radius) + 2px));mask-image:radial-gradient(circle var(--cursor-radius) at var(--cursor-x) var(--cursor-y),rgba(0,0,0,1) 0%,rgba(0,0,0,1) calc(var(--cursor-radius) - 12px),rgba(0,0,0,0) calc(var(--cursor-radius) + 2px));-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hero-magnifier-content{position:absolute;inset:0;padding:120px var(--pad) 96px;display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,5vw,90px);align-items:end;transform:scale(var(--magnify-scale));transform-origin:var(--cursor-x) var(--cursor-y);transition:transform .26s cubic-bezier(.2,.9,.2,1);will-change:transform}.hero.hero-magnifying{--cursor-size: 200px;--magnify-scale: 1.18}.hero.hero-magnifying .hero-magnifier-layer{opacity:1}}.hero-vertical{position:absolute;left:calc(var(--pad) - 18px);top:124px;writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;letter-spacing:.38em;text-transform:uppercase;color:var(--muted2);-webkit-user-select:none;user-select:none}.hero-left{max-width:860px;align-self:start}.hero-meta{display:flex;align-items:center;gap:14px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2)}.hero-name{font-family:var(--font-display);letter-spacing:.22em}.meta-divider{width:28px;height:1px;background:var(--line)}.hero-type{margin-top:22px}.hero-word{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;line-height:.9}.hero-word-xl{font-size:clamp(64px,9.6vw,150px);font-weight:500}.hero-word-lg{font-size:clamp(44px,6.8vw,98px)}.hero-word-md{font-size:clamp(28px,3.6vw,50px)}.hero-word-shift{transform:translate(22px)}.hero-word-offset{margin-top:10px;margin-left:10px}.hero-word-offset2{margin-top:10px;margin-left:34px;font-weight:700;opacity:.2}.hero-word-offset3{margin-top:10px;margin-left:6px}.hero-subtitle{margin-top:20px;max-width:64ch;font-size:16px;line-height:1.7;color:var(--muted)}.hero-actions{margin-top:26px;display:flex;gap:12px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--line);text-decoration:none;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.btn:hover{transform:translateY(-1px);text-decoration:none}.btn-primary{background:var(--accent-forest);border-color:#0f2a1c73;color:var(--bg-ivory)}.btn-primary:hover{border-color:#0f2a1ca6}.btn-ghost{background:transparent;color:var(--ink)}.btn-ghost:hover{border-color:#1715134d}.hero-annotations{margin-top:28px;display:flex;gap:24px;flex-wrap:wrap}.anno{min-width:110px;padding-top:10px;border-top:1px solid var(--line)}.anno-k{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2)}.anno-v{margin-top:6px;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.08em}.hero-right{position:relative;display:grid;align-content:end;gap:12px;align-self:stretch}.hero-plate{position:absolute;inset:0 0 52px;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg,#dcd6c959,#f5f1e81a)}.hero-portrait{position:relative;margin:0;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:#f5f1e8b3}.hero-photo{display:block;width:100%;aspect-ratio:4 / 5;object-fit:cover;border-radius:calc(var(--radius) - 10px);will-change:transform}.hero-caption{position:relative;display:grid;gap:6px;padding-left:4px}.hero-blockchain-vertical{position:absolute;top:34px;left:auto;right:calc(100% + 12px);pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.2;font-weight:700;writing-mode:vertical-rl;transform:rotate(180deg);z-index:6}.caption-k{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2)}.caption-v{color:var(--muted)}.hero-float{position:absolute;border-radius:999px;border:1px solid rgba(194,164,109,.35);pointer-events:none}.hero-float-a{width:210px;height:210px;right:18%;top:18%}.hero-float-b{width:140px;height:140px;right:6%;bottom:10%}.chapter,.projects,.lists,.stack,.contact{padding:120px var(--pad)}#about,#full-stack,#ai-ml,#blockchain,#seo,#projects,#research,#tech-stack,#case-studies,#contact{background:var(--noir-bg)}.eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2)}.chapter-inner{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(22px,6vw,92px)}.chapter-head h2{margin:12px 0 0;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;font-size:clamp(34px,4.2vw,58px);line-height:1.06}.chapter-body{padding-top:8px}.chapter-desc{margin:0;font-size:16px;line-height:1.75;color:var(--muted);max-width:62ch}.skill-list{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:12px}.skill-list li{padding-top:12px;border-top:1px solid var(--line);color:var(--muted)}.section-head{max-width:1120px;margin:0 auto 42px}.section-head h2{margin:12px 0 0;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;font-size:clamp(34px,4.2vw,58px);line-height:1.06}.section-desc{margin:14px 0 0;color:var(--muted);max-width:72ch;line-height:1.7}.projects-list{max-width:1120px;margin:0 auto;display:grid;gap:22px}.project{--mx: 50%;--my: 50%;position:relative;border:1px solid rgba(23,21,19,.22);border-radius:var(--radius);background:#f5f1e88c;padding:clamp(16px,2.5vw,24px);display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(18px,4vw,64px);align-items:start;overflow:hidden}.project:before{content:"";position:absolute;inset:0;background:radial-gradient(260px 260px at var(--mx) var(--my),rgba(194,164,109,.28) 0%,rgba(194,164,109,0) 62%);opacity:0;transition:opacity .18s ease;pointer-events:none}.project:hover:before{opacity:1}.project-visual{position:relative;border:1px solid rgba(23,21,19,.18);border-radius:calc(var(--radius) - 6px);background:#dcd6c973;aspect-ratio:16 / 10;overflow:hidden}.project-visual-grid{position:absolute;inset:0;background-image:repeating-linear-gradient(0deg,rgba(23,21,19,.08) 0px,rgba(23,21,19,.08) 1px,transparent 1px,transparent 22px),repeating-linear-gradient(90deg,rgba(23,21,19,.08) 0px,rgba(23,21,19,.08) 1px,transparent 1px,transparent 22px);opacity:.7}.project-num{position:absolute;left:14px;bottom:10px;font-family:var(--font-display);font-size:44px;letter-spacing:.06em;color:#1715138c}.project-body{position:relative}.project-meta{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2)}.project-title{margin:12px 0 0;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.05em;font-size:28px;line-height:1.15}.project-desc{margin:14px 0 0;color:var(--muted);line-height:1.75}.project-tags{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}.tag{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:999px;border:1px solid rgba(23,21,19,.18);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#171513bf;background:#f5f1e880}.project-link{margin-top:16px;display:inline-flex;font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink)}.list-grid{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:18px}.list-item{border:1px solid var(--line);border-radius:var(--radius);padding:18px;background:#f5f1e88c;display:grid;grid-template-columns:6ch 1fr;gap:16px}.list-code{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted2);padding-top:4px}.list-title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;font-size:16px}.list-meta{margin-top:8px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted2)}.list-desc{margin-top:10px;color:var(--muted);line-height:1.75}.stack-grid{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stack-chip{height:48px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);background:#f5f1e88c;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#171513c7}#contact{color:var(--noir-ink)}.contact-inner{max-width:1120px;margin:0 auto}#contact .eyebrow,#contact .section-desc,#contact .caption-k,#contact .contact-k{color:#f2f2f2b8}#contact a{color:var(--noir-ink)}#contact a:hover{text-decoration:underline}.contact-grid{margin-top:28px;display:grid;grid-template-columns:1fr 1fr;gap:18px}.contact-block{border:1px solid rgba(242,242,242,.22);border-radius:var(--radius);padding:18px;background:#f2f2f20a}.contact-k{font-size:11px;letter-spacing:.24em;text-transform:uppercase}.contact-v{display:inline-flex;margin-top:10px;font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase}.contact-links{margin-top:10px;display:flex;flex-wrap:wrap;gap:18px;color:#f2f2f2e6}.contact-foot{margin-top:28px}#contact .btn-primary{background:var(--noir-ink);color:var(--noir-bg);border-color:#f2f2f24d}#contact .btn-primary:hover{border-color:#f2f2f280}[data-reveal]{opacity:0;transform:translateY(14px);transition:opacity .52s ease,transform .62s cubic-bezier(.2,.9,.2,1)}[data-reveal].is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}[data-reveal]{transition:none;transform:none;opacity:1}.btn,.menu-icon span,.menu-overlay{transition:none}}@media(max-width:980px){.hero{grid-template-columns:1fr;padding-top:110px}.hero-right{order:-1;align-self:auto}.hero-vertical{display:none}.hero-blockchain-vertical{right:auto;left:10px;top:14px;transform:rotate(180deg)}.chapter-inner,.project,.list-grid{grid-template-columns:1fr}.stack-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-grid{grid-template-columns:1fr}}@media(max-width:520px){.site-mast,.chapter-indicator{display:none}}.noir-page{min-height:100svh;background:var(--noir-bg)}@media(pointer:fine){html.noir-cursor-on,html.noir-cursor-on *{cursor:none!important}}.noir-cursor{position:fixed;inset:0;z-index:9999;pointer-events:none}.noir-cursor-dot,.noir-cursor-ring{position:fixed;top:0;left:0;pointer-events:none;opacity:0;transition:opacity .18s ease,width .22s cubic-bezier(.2,.9,.2,1),height .22s cubic-bezier(.2,.9,.2,1),border-color .22s ease;will-change:transform,opacity,width,height}.noir-cursor.is-visible .noir-cursor-dot,.noir-cursor.is-visible .noir-cursor-ring{opacity:1}.noir-cursor-dot{width:5px;height:5px;border-radius:50%;background:var(--noir-ink);box-shadow:0 0 12px #f2f2f259;z-index:2}.noir-cursor-ring{width:34px;height:34px;border-radius:50%;border:1px solid rgba(242,242,242,.34);background:#f2f2f208;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);z-index:1}html.noir-cursor-hover .noir-cursor-ring{width:50px;height:50px;border-color:#f2f2f294;background:#f2f2f20f}html.noir-cursor-hover .noir-cursor-dot{width:3px;height:3px;opacity:.85}html.noir-cursor-press .noir-cursor-ring{width:24px;height:24px;border-color:#f2f2f2b8}html.noir-cursor-press .noir-cursor-dot{opacity:.55}@media(prefers-reduced-motion:reduce){.noir-cursor{display:none}}.noir-hero{position:relative;width:100%;height:100svh;display:grid;place-items:center;overflow:hidden;border-bottom:1px solid rgba(242,242,242,.08)}.noir-name{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,5vw,110px);font-family:var(--noir-title);font-size:clamp(68px,10.8vw,190px);letter-spacing:.19em;text-transform:uppercase;line-height:.92;color:#f2f2f24d;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:3}.noir-name-left,.noir-name-right{flex:1;color:#f2f2f24d}@supports ((-webkit-background-clip: text) or (background-clip: text)){.noir-name-left,.noir-name-right{color:transparent;background-image:linear-gradient(180deg,#f2f2f273,#0000004d);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}}.noir-name-left{text-align:left}.noir-name-right{text-align:right}.noir-portrait-frame{z-index:2;margin:0;height:min(94svh,1020px);aspect-ratio:9 / 16;width:auto;max-width:min(520px,70vw);border-radius:26px;overflow:hidden;background:var(--noir-bg)}.noir-portrait{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%}.noir-menu{position:fixed;top:clamp(14px,2.2vw,24px);left:clamp(14px,2.2vw,24px);width:40px;height:40px;border-radius:999px;border:1px solid var(--noir-line);display:grid;place-items:center;z-index:60;padding:0;background:transparent;color:inherit;cursor:pointer;pointer-events:auto;opacity:.9}.noir-menu:focus-visible{outline:2px solid rgba(242,242,242,.28);outline-offset:2px}.noir-menu-lines{position:relative;width:18px;height:1px;background:#f2f2f2bf}.noir-menu-lines:before,.noir-menu-lines:after{content:"";position:absolute;left:0;width:18px;height:1px;background:#f2f2f2bf}.noir-menu-lines:before{top:-5px}.noir-menu-lines:after{top:5px}.noir-overlay{position:fixed;inset:0;z-index:55;display:grid;align-items:start;justify-items:start;padding:clamp(16px,3vw,28px);background:#000000c2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);visibility:hidden;opacity:0;pointer-events:none;transition:opacity .22s ease,visibility 0s linear .22s}.noir-overlay.is-open{visibility:visible;opacity:1;pointer-events:auto;transition:opacity .22s ease}.noir-overlay-panel{width:min(560px,100%);margin-top:72px;border:1px solid rgba(242,242,242,.16);border-radius:18px;background:#000000b8;padding:18px 18px 14px}.noir-overlay-title{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#f2f2f2b3}.noir-overlay-list{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}.noir-overlay-link{width:100%;border:0;padding:10px 12px;border-radius:12px;background:transparent;cursor:pointer;text-align:left;color:#f2f2f2eb;font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase}.noir-overlay-link:hover{background:#f2f2f20f}.noir-section{padding:120px 0;border-top:1px solid rgba(242,242,242,.08)}.noir-section-inner{max-width:1120px;margin:0 auto;padding:0 clamp(18px,4vw,72px)}.noir-section-head{margin-bottom:42px}.noir-section-split .noir-section-inner{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(22px,6vw,92px);align-items:start}.noir-section-split .noir-section-head{margin:0}.noir-section-split .noir-section-body .noir-p{margin-top:0}.noir-eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#f2f2f29e}.noir-h2{margin:12px 0 0;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;font-size:clamp(34px,4.2vw,56px);line-height:1.06}.noir-h3{margin:12px 0 0;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.05em;font-size:24px;line-height:1.15}.noir-p{margin:14px 0 0;color:#f2f2f2b8;line-height:1.75;max-width:72ch}.noir-p-wide{max-width:82ch}.noir-muted{color:#f2f2f294}.noir-bullets{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:12px}.noir-bullets li{padding-top:12px;border-top:1px solid rgba(242,242,242,.12);color:#f2f2f2b8}.noir-project-marquee{width:100vw;margin-left:calc(50% - 50vw);overflow:hidden;padding:8px 0 24px;-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 6%,#000 94%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0%,#000 6%,#000 94%,transparent 100%)}.noir-project-track{display:flex;flex-direction:row;align-items:stretch;gap:clamp(16px,2.5vw,22px);width:max-content;padding:0 clamp(16px,4vw,48px);animation:noir-project-marquee 55s linear infinite;will-change:transform}.noir-project-marquee:hover .noir-project-track{animation-play-state:paused}@keyframes noir-project-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.noir-project{position:relative;flex:0 0 min(400px,84vw);border:1px solid rgba(242,242,242,.14);border-radius:20px;background:#f2f2f20a;padding:clamp(16px,2.4vw,22px);display:grid;grid-template-columns:72px 1fr;gap:16px;overflow:hidden;transition:border-color .22s ease,background .22s ease}.noir-project-marquee:hover .noir-project:hover{border-color:#f2f2f247;background:#f2f2f20f}.noir-project-desc{margin-top:10px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.noir-project-num{font-family:var(--noir-title);font-size:56px;letter-spacing:.06em;color:#f2f2f238;line-height:1}.noir-project-meta{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#f2f2f29e}.noir-tags{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}.noir-tag{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:999px;border:1px solid rgba(242,242,242,.14);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#f2f2f2c7;background:#0000002e}.noir-project-stats{margin-top:14px;display:flex;flex-wrap:wrap;gap:14px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#f2f2f29e}.noir-project-links{margin-top:16px;display:flex;gap:18px;flex-wrap:wrap;font-size:12px;letter-spacing:.24em;text-transform:uppercase}.noir-project-links a{color:#f2f2f2eb}.noir-project-links a:hover{text-decoration:underline;text-underline-offset:4px}.noir-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.noir-card{border:1px solid rgba(242,242,242,.14);border-radius:20px;padding:18px;background:#f2f2f209;display:grid;grid-template-columns:6ch 1fr;gap:16px}.noir-card-code{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#f2f2f29e;padding-top:4px}.noir-card-title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;font-size:16px;color:#f2f2f2eb}.noir-card-meta{margin-top:8px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#f2f2f29e}.noir-card-desc{margin-top:10px;color:#f2f2f2b8;line-height:1.75}.noir-chip-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.noir-chip{height:48px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid rgba(242,242,242,.14);background:#f2f2f209;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#f2f2f2c7}.noir-contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.noir-contact-card{border:1px solid rgba(242,242,242,.14);border-radius:20px;padding:18px;background:#f2f2f208}.noir-contact-k{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#f2f2f29e}.noir-contact-v{display:inline-flex;margin-top:10px;font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;color:#f2f2f2eb}.noir-contact-links{margin-top:10px;display:flex;flex-wrap:wrap;gap:18px;color:#f2f2f2e6}.noir-about{padding-top:clamp(72px,12vw,120px)}.noir-about-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(28px,6vw,88px);align-items:start}.noir-about-lead{margin:16px 0 0;font-family:var(--font-display);font-size:clamp(18px,2.2vw,24px);line-height:1.45;letter-spacing:.02em;color:#f2f2f2e0;max-width:36ch}.noir-about-body{display:grid;gap:16px}.noir-about-body .noir-p{margin-top:0}.noir-about-highlights{margin-top:clamp(36px,6vw,56px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.noir-about-highlight{border:1px solid rgba(242,242,242,.14);border-radius:20px;padding:18px;background:#f2f2f209}.noir-about-highlight-k{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#f2f2f29e}.noir-about-highlight-v{margin-top:10px;font-family:var(--font-display);font-size:14px;letter-spacing:.04em;text-transform:uppercase;line-height:1.45;color:#f2f2f2e6}.noir-contact-form{margin-top:clamp(28px,5vw,40px);display:grid;gap:14px}.noir-form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.noir-form-field{display:grid;gap:8px}.noir-form-field-full{grid-column:1 / -1}.noir-input,.noir-textarea{width:100%;border:1px solid rgba(242,242,242,.16);border-radius:14px;background:#f2f2f20a;color:var(--noir-ink);font:inherit;padding:12px 14px;transition:border-color .18s ease,background .18s ease}.noir-input::placeholder,.noir-textarea::placeholder{color:#f2f2f261}.noir-input:focus,.noir-textarea:focus{outline:none;border-color:#f2f2f26b;background:#f2f2f20f}.noir-textarea{resize:vertical;min-height:120px}.noir-form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.noir-btn{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 20px;border-radius:999px;border:1px solid rgba(242,242,242,.28);background:#f2f2f214;color:var(--noir-ink);font:inherit;font-size:12px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .16s ease}.noir-btn:hover:not(:disabled){background:#f2f2f224;border-color:#f2f2f273;transform:translateY(-1px)}.noir-btn:disabled{opacity:.55;cursor:not-allowed}.noir-form-status{margin:0;font-size:13px;letter-spacing:.04em}.noir-form-status-success{color:#c2a46df2}.noir-form-status-error{color:#ff8c8ceb}.noir-contact-v{word-break:break-word}@media(max-width:980px){.noir-section{padding:clamp(72px,10vw,96px) 0}.noir-about-grid{grid-template-columns:1fr}.noir-about-lead{max-width:none}.noir-about-highlights,.noir-form-row,.noir-section-split .noir-section-inner{grid-template-columns:1fr}.noir-project{flex:0 0 min(340px,88vw);grid-template-columns:1fr}.noir-project-num{font-size:44px}.noir-card-grid{grid-template-columns:1fr}.noir-chip-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.noir-contact-grid{grid-template-columns:1fr}}@media(max-width:768px){.noir-name{font-size:clamp(42px,14vw,68px);letter-spacing:.12em;flex-direction:column;justify-content:center;gap:0;padding:0 12px}.noir-name-left,.noir-name-right{flex:none;text-align:center}.noir-portrait-frame{height:min(72svh,640px);max-width:min(340px,82vw)}.noir-hero{height:auto;min-height:100svh;padding:88px 0 48px}.noir-h2{font-size:clamp(28px,8vw,40px)}.noir-contact-links{gap:12px 16px}}@media(max-width:520px){html{scroll-padding-top:64px}.noir-name{letter-spacing:.1em}.noir-portrait-frame{height:min(68svh,560px);border-radius:22px}.noir-section-inner{padding-left:clamp(16px,4vw,20px);padding-right:clamp(16px,4vw,20px)}.noir-chip-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.noir-project-marquee{width:100%;margin-left:0;-webkit-mask-image:none;mask-image:none;overflow:visible}.noir-project-track{animation:none;flex-wrap:wrap;width:100%;justify-content:center;padding:0}.noir-project-marquee .noir-project:nth-child(n+6){display:none}[data-reveal],[data-reveal-child]{opacity:1!important;transform:none!important}}
