@font-face{font-family:Inter;src:url(/fonts/Inter.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Fira Code;src:url(/fonts/FiraCode-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: hsl(44, 21%, 94%);--bg-card: hsla(48, 36%, 96%, .76);--bg-card-hover: hsla(0, 0%, 100%, .94);--bg-ui-element: hsla(184, 56%, 17%, .055);--text-primary: hsl(190, 19%, 8%);--text-secondary: hsl(187, 12%, 29%);--text-muted: hsl(20, 9%, 43%);--text-shadow: none;--border-primary: hsla(188, 26%, 12%, .72);--border-secondary: hsla(188, 26%, 12%, .24);--border-hover: hsl(178, 73%, 24%);--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--spacing-3xl: 6rem;--radius-large: 3px;--radius-small: 2px;--font-mono: "Fira Code", Monaco, "Cascadia Code", "SF Mono", Consolas, monospace;--font-default: "Inter", -apple-system, BlinkM6cSystemFont, "Segoe UI", Roboto, sans-serif;--grid-line: hsla(184, 42%, 22%, .32);--grid-size: 30px;--accent: hsl(178, 70%, 28%);--accent-warm: hsl(17, 64%, 45%);--accent-gold: hsl(43, 80%, 44%);--max-page-width: 1600px;--page-gutter: clamp(1rem, 4vw, 4.5rem);--code-variable: hsl(17, 58%, 38%);--code-function: hsl(204, 36%, 28%);--code-type: hsl(174, 45%, 27%);--code-bracket: hsl(38, 42%, 31%);--code-public: hsl(132, 24%, 30%);--transition-fast: .2s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--blur-amount: 0px}.main{min-height:100vh;background:repeating-linear-gradient(98deg,hsla(48,32%,99%,.22) 0 1px,transparent 1px 7px),repeating-linear-gradient(2deg,hsla(38,22%,64%,.045) 0 1px,transparent 1px 5px),linear-gradient(120deg,hsla(44,58%,98%,.82),transparent 38%),linear-gradient(310deg,hsla(28,30%,86%,.38),transparent 42%),linear-gradient(90deg,hsla(188,26%,12%,.035) 1px,transparent 1px),linear-gradient(0deg,hsla(188,26%,12%,.028) 1px,transparent 1px),var(--bg-primary);background-size:180px 180px,120px 120px,auto,auto,120px 120px,120px 120px,auto;color:var(--text-primary);font-family:var(--font-default);position:relative;overflow:hidden}.main:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(circle at 12% 18%,hsla(0,0%,100%,.28) 0 1px,transparent 1.5px),radial-gradient(circle at 64% 42%,hsla(30,24%,42%,.08) 0 1px,transparent 1.6px),radial-gradient(circle at 80% 82%,hsla(180,18%,32%,.07) 0 1px,transparent 1.7px);background-size:19px 21px,31px 29px,43px 47px;opacity:.46;mix-blend-mode:multiply}.has-custom-cursor,.has-custom-cursor *{cursor:none!important}.custom-cursor{position:fixed;top:0;left:0;z-index:10000;width:18px;height:18px;pointer-events:none;border:1px solid hsla(178,75%,26%,.92);background:#fffdf529;mix-blend-mode:multiply;box-shadow:0 0 0 1px #ffffffb8,0 14px 38px #15514f24;opacity:0;transition:opacity .18s ease,background-color .18s ease,border-color .18s ease}.custom-cursor.is-active{background:#1579761a;border-color:#c14d1fdb;mix-blend-mode:normal}.custom-cursor.is-solid{background:var(--text-primary);border-color:var(--text-primary);mix-blend-mode:normal;box-shadow:0 0 0 1px #ffffffa8,0 12px 28px #17242733}.custom-cursor.is-hidden{opacity:0}.has-custom-cursor .custom-cursor{opacity:1}.has-custom-cursor .custom-cursor.is-hidden{opacity:0}.custom-cursor span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--font-mono);font-size:.58rem;line-height:1;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.custom-cursor.is-solid span{color:var(--bg-primary)}.main.fun-mode{--bg-primary: hsl(248, 100%, 3%);--bg-card: hsla(247, 100%, 8%, .78);--bg-card-hover: hsla(258, 100%, 12%, .9);--bg-ui-element: hsla(183, 100%, 55%, .1);--text-primary: hsl(0, 0%, 100%);--text-secondary: hsl(184, 100%, 83%);--text-muted: hsl(314, 100%, 76%);--text-shadow: 0 0 14px hsla(184, 100%, 54%, .45);--border-primary: hsla(184, 100%, 56%, .72);--border-secondary: hsla(316, 100%, 64%, .52);--border-hover: hsl(119, 100%, 58%);--grid-line: hsla(184, 100%, 58%, .46);--code-variable: hsl(315, 100%, 70%);--code-function: hsl(184, 100%, 62%);--code-type: hsl(119, 100%, 65%);--code-bracket: hsl(51, 100%, 62%);--code-public: hsl(280, 100%, 72%);--blur-amount: 10px;background:linear-gradient(132deg,hsla(316,100%,60%,.22),transparent 34%),linear-gradient(248deg,hsla(184,100%,54%,.18),transparent 38%),linear-gradient(18deg,hsla(119,100%,55%,.14),transparent 35%),linear-gradient(90deg,hsla(184,100%,55%,.12) 1px,transparent 1px),linear-gradient(0deg,hsla(315,100%,62%,.1) 1px,transparent 1px),var(--bg-primary);background-size:auto,auto,auto,96px 96px,96px 96px,auto}.main.fun-mode:after{display:none}.main.fun-mode .custom-cursor{border-color:#2cff29eb;background:#ff3dcf29;mix-blend-mode:normal;box-shadow:0 0 0 1px #29f1ff7a,0 0 22px #ff3dcf6b,0 14px 38px #14efff2e}.dot-grid{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;pointer-events:none}.dot-grid.soft{opacity:.6}.main-content{position:relative;z-index:2;padding:0 var(--page-gutter);max-width:var(--max-page-width);margin:0 auto}.nav{position:relative;z-index:3;padding:var(--spacing-lg) var(--spacing-xl);display:flex;justify-content:right;align-items:center;gap:var(--spacing-lg)}.nav-link{color:var(--text-secondary);font-family:var(--font-mono);font-size:.92rem;letter-spacing:.04em;text-transform:uppercase;transition:color var(--transition-fast);text-decoration:none;cursor:pointer;border-bottom:1px solid transparent;background:none;border-top:none;border-left:none;border-right:none;padding:0}.nav-link:hover{color:var(--text-primary);border-bottom-color:var(--text-primary)}.fun-mode-toggle{display:inline-flex;align-items:center;gap:.4rem;min-height:2rem;padding:.35rem .65rem;border:1px solid var(--border-secondary);border-radius:var(--radius-small);background:var(--bg-card);color:var(--text-secondary);font-family:var(--font-mono);font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:color var(--transition-fast),border-color var(--transition-fast),background-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.fun-mode-toggle:hover,.fun-mode-toggle:focus-visible,.fun-mode-toggle.active{color:var(--text-primary);border-color:var(--border-hover);background:var(--bg-card-hover)}.fun-mode-toggle.active{box-shadow:0 0 14px #1af0ff6b,0 0 24px #ff33cc47}.main.fun-mode .hero-title,.main.fun-mode .section-title,.main.fun-mode .about-title{text-shadow:0 0 14px hsla(184,100%,58%,.5),0 0 28px hsla(315,100%,60%,.3)}.main.fun-mode .feature-card{box-shadow:inset 0 0 0 1px #ffffff1f,0 0 18px #1af0ff38,8px 8px #ff33cc2e}.main.fun-mode .feature-card:hover{box-shadow:inset 0 0 0 1px #ffffff2e,0 0 26px #1af0ff57,11px 11px #1dff1a2e}.main.fun-mode .filter-pill.active{background:linear-gradient(90deg,#ff29c9,#0aefff,#0eff0a);color:#02000f;border-color:transparent;box-shadow:0 0 18px #1af0ff59}.main.fun-mode .project-showcase-list{border-top-color:#f6f2e92e}.main.fun-mode .project-showcase-row{border-color:#f6f2e93d;background:linear-gradient(90deg,hsla(42,42%,94%,.1),hsla(42,42%,94%,.035) 52%,transparent),#151d1e47;box-shadow:inset 0 1px #f6f2e924,0 10px 30px #0000002e}.main.fun-mode .project-showcase-row:before{background:linear-gradient(90deg,transparent 0 3.4rem,hsla(42,42%,94%,.13) 3.4rem calc(3.4rem + 1px),transparent calc(3.4rem + 1px)),linear-gradient(0deg,transparent 0 calc(100% - 2.1rem),hsla(176,82%,72%,.12) calc(100% - 2.1rem) calc(100% - 2.1rem + 1px),transparent calc(100% - 2.1rem + 1px))}.main.fun-mode .project-showcase-row:after{border-color:#f6f2e92e}.main.fun-mode .project-showcase-row:hover{border-color:#7df2ea7a;background-color:#15d5c90f;box-shadow:inset 0 1px #f6f2e933,0 16px 44px #15d5c91a}.main.fun-mode .project-index,.main.fun-mode .project-visual,.main.fun-mode .project-open-indicator{border-color:#f6f2e926}.main.fun-mode .project-label{border-color:#f6f2e938}.hero-section{text-align:left;min-height:calc(100vh - 88px);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:clamp(2rem,5vw,6rem);align-items:center;justify-content:center;margin-bottom:clamp(3rem,8vw,7rem);padding:clamp(2rem,5vw,5rem) 0;position:relative}.hero-section.played{min-height:calc(100vh - 88px)}.hero-title{font-size:clamp(4.2rem,12vw,12rem);font-weight:520;line-height:.82;margin:0 0 var(--spacing-sm) 0;letter-spacing:0;max-width:980px}.hero-subtitle{font-size:clamp(1.2rem,2vw,1.9rem);color:var(--text-secondary);font-weight:460;margin:0;max-width:760px}.hero-statement{margin-top:var(--spacing-lg);max-width:790px;color:var(--text-primary);font-size:clamp(1.1rem,1.4vw,1.35rem);line-height:1.62}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:var(--spacing-lg)}.primary-action,.secondary-action{min-height:3rem;display:inline-flex;align-items:center;gap:.55rem;padding:.7rem 1rem;border-radius:999px;border:1px solid var(--border-primary);font-family:var(--font-mono);font-size:.88rem;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;transition:transform var(--transition-fast),background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.primary-action{background:var(--text-primary);color:var(--bg-primary)}.secondary-action{background:#fff3;color:var(--text-primary)}.primary-action:hover,.secondary-action:hover{transform:translateY(-2px);border-color:var(--accent)}.hero-stage{min-height:560px;position:relative;isolation:isolate}.hero-stage:before{content:"";position:absolute;z-index:0;top:8%;right:6%;bottom:10%;left:0;border:1px solid var(--border-secondary);border-radius:999px;transform:rotate(-12deg)}.hero-stage:after{content:"";position:absolute;z-index:0;top:22%;right:0;bottom:18%;left:14%;border:1px solid hsla(17,58%,38%,.34);border-radius:999px;transform:rotate(18deg)}.stage-panel{position:absolute;z-index:1;display:grid;gap:.5rem;padding:1rem;border:1px solid var(--border-primary);background:#fdfaf2b8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:18px 18px #1724270e;animation:floatPanel 8s ease-in-out infinite}.stage-panel span{font-family:var(--font-mono);font-size:.76rem;color:var(--accent-warm);letter-spacing:.06em}.stage-panel strong{font-size:clamp(1rem,1.6vw,1.35rem);line-height:1.14;font-weight:560;max-width:250px}.stage-panel-main{left:8%;top:18%;width:min(76%,380px)}.stage-panel-cad{right:3%;top:48%;width:min(70%,310px);animation-delay:-2.2s}.stage-panel-code{left:22%;bottom:8%;width:min(62%,270px);animation-delay:-4s}@keyframes floatPanel{0%,to{transform:translateZ(0) rotate(-1deg)}50%{transform:translate3d(0,-18px,0) rotate(1deg)}}.section-title{font-size:clamp(2.9rem,6.4vw,7.4rem);font-weight:560;line-height:.95;margin:0 0 var(--spacing-sm) 0;letter-spacing:0;max-width:1100px}.section-subtitle{font-size:clamp(1rem,1.4vw,1.25rem);color:var(--text-secondary);font-weight:300;margin:0;max-width:680px}.cursor{display:inline-block;animation:blink 1s infinite;color:var(--text-primary);font-weight:100}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.feature-card{border:1px solid var(--border-primary);border-radius:var(--radius-large);padding:var(--spacing-lg);background-color:var(--bg-card);-webkit-backdrop-filter:blur(var(--blur-amount));backdrop-filter:blur(var(--blur-amount));transition:all var(--transition-normal);box-shadow:inset 0 0 0 1px #ffffffb3,8px 8px #00000009;position:relative}.feature-card:hover{border-color:var(--border-hover);background-color:var(--bg-card-hover);transform:translate(-2px,-2px);box-shadow:inset 0 0 0 1px #ffffffe6,11px 11px #0000000d}.feature-card:before,.feature-card:after{content:"";position:absolute;pointer-events:none}.feature-card:before{top:10px;right:10px;width:34px;height:34px;border-top:1px solid var(--border-secondary);border-right:1px solid var(--border-secondary)}.feature-card:after{right:10px;bottom:20px;width:24px;border-top:1px solid var(--border-secondary)}.feature-card{cursor:pointer}.about-title{font-size:1.5rem;font-weight:400;color:var(--text-primary)}.about-title{margin-bottom:var(--spacing-sm)}.about-grid{display:grid;grid-template-columns:2fr 1fr;gap:var(--spacing-md) var(--spacing-xl)}.code{font-family:var(--font-mono);color:var(--text-secondary);line-height:1.4;font-size:.88em;letter-spacing:.03em}.code.comment{color:var(--text-muted);font-style:normal;margin-bottom:var(--spacing-sm)}.code.indent{margin-left:var(--spacing-lg)}.code.variable{color:var(--code-variable);font-weight:500}.code.function{color:var(--code-function)}.code.type{color:var(--code-type)}.code.bracket{color:var(--code-bracket);font-weight:600}.code.access-modifier{font-weight:600}.code.public{color:var(--code-public);font-weight:600}.draft-note{display:inline-flex;align-items:center;gap:var(--spacing-xs);font-family:var(--font-mono);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--spacing-sm)}.draft-note:before{content:"";width:36px;border-top:1px solid var(--border-secondary)}.reveal{animation:sectionReveal both;animation-timeline:view();animation-range:entry 12% cover 36%}@keyframes sectionReveal{0%{opacity:.2;transform:translateY(44px)}to{opacity:1;transform:translateY(0)}}.proof-strip{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid hsla(0,0%,100%,.82);border-bottom:1px solid hsla(0,0%,100%,.74);margin-bottom:clamp(4rem,8vw,8rem);background:linear-gradient(90deg,#ffffff57,#ffffff14),#f9f7f12e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.proof-item{min-height:160px;padding:var(--spacing-lg);border-right:1px solid var(--border-secondary);display:flex;flex-direction:column;justify-content:space-between}.proof-item:last-child{border-right:0}.proof-item span{font-family:var(--font-mono);color:var(--accent-warm);font-size:.86rem;letter-spacing:.08em}.proof-item p{color:var(--text-primary);font-size:clamp(1rem,1.2vw,1.2rem);line-height:1.42;max-width:290px}.video-showcase{display:flex;flex-direction:column;gap:var(--spacing-sm)}.video-container{position:relative;width:100%;border-radius:var(--radius-small);overflow:hidden}.showcase-video{width:100%;height:auto;max-height:200px;object-fit:cover;border-radius:var(--radius-small)}.video-controls{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#000c);display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm);opacity:0;transition:opacity var(--transition-normal)}.video-container:hover .video-controls{opacity:1}.video-nav-btn{background:#fff3;border:none;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background-color var(--transition-fast)}.video-nav-btn:hover{background:#ffffff4d}.video-title{color:#fff;font-size:.9rem;font-weight:500;text-shadow:var(--text-shadow)}.video-indicators{display:flex;justify-content:center;gap:var(--spacing-xs);margin-top:var(--spacing-xs)}.indicator{width:8px;height:8px;border-radius:50%;border:none;background-color:var(--border-secondary);cursor:pointer;transition:background-color var(--transition-fast)}.indicator.active{background-color:var(--text-primary)}.indicator:hover{background-color:var(--border-hover)}.ui-mockup{display:flex;flex-direction:column;gap:.8rem}.ui-header{border:1px solid var(--border-secondary);border-radius:var(--radius-small);padding:var(--spacing-xs);font-size:.8rem;color:var(--text-muted);text-align:center}.ui-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xs)}.ui-element,.ui-element-full{border:1px solid var(--border-secondary);border-radius:var(--radius-small);background-color:var(--bg-ui-element)}.ui-element{height:2rem}.ui-element-full{height:1.5rem}.about-section{text-shadow:var(--text-shadow);padding-top:clamp(1.5rem,4vw,3.5rem);padding-bottom:clamp(3rem,7vw,7rem);border-top:1px solid hsla(0,0%,100%,.52)}.about-description p{font-size:clamp(1.35rem,2.05vw,2.25rem);line-height:1.24;color:var(--text-primary);margin-bottom:var(--spacing-md);max-width:980px;letter-spacing:0}.about-description p:last-child{margin-bottom:0}.skill-category h3{font-size:1.2rem;font-weight:400;margin-bottom:var(--spacing-sm);color:var(--text-primary);border-bottom:1px solid var(--border-primary);padding-bottom:var(--spacing-xs)}.skill-category ul{list-style:none;padding:0;margin:0}.skill-category li{color:var(--text-primary);padding:.72rem 0;font-size:clamp(1rem,1.3vw,1.28rem);margin-left:0;border-bottom:1px solid hsla(0,0%,0%,.08);transition:color var(--transition-fast)}.skill-category li:before{content:"+";display:inline-block;width:1.4rem;color:var(--text-muted);font-family:var(--font-mono)}.closing-section{min-height:70vh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:clamp(4rem,8vw,8rem) 0;border-top:1px solid var(--border-primary)}.closing-section h2{max-width:980px;font-size:clamp(2.35rem,4.6vw,5.4rem);line-height:.98;font-weight:570;letter-spacing:0}.closing-section p{margin:var(--spacing-lg) 0;color:var(--text-secondary);font-size:clamp(1.15rem,1.8vw,1.7rem)}.footer{position:relative;z-index:2;margin-top:var(--spacing-lg);padding:var(--spacing-lg) var(--spacing-xl);text-align:center}@media (max-width: 1200px){.about-grid{grid-template-columns:1fr;gap:var(--spacing-lg)}.about-description{order:-1}}@media (max-width: 768px){.nav{padding:var(--spacing-md) var(--spacing-lg)}.nav-right{gap:var(--spacing-md)}.main-content{padding:0 var(--spacing-lg)}.feature-card{padding:var(--spacing-md)}.has-custom-cursor,.has-custom-cursor *{cursor:auto!important}.custom-cursor{display:none}.hero-section{min-height:auto;padding:var(--spacing-xl) 0 var(--spacing-2xl);gap:var(--spacing-xl)}.hero-section.played{min-height:auto}.hero-title{font-size:clamp(3.4rem,18vw,5.8rem)}.hero-stage{min-height:360px}.stage-panel{padding:.85rem}.stage-panel-main{left:0;width:82%}.stage-panel-cad{right:0;width:76%}.stage-panel-code{left:8%;width:74%}.proof-strip{grid-template-columns:1fr}.proof-item{min-height:auto;border-right:0}.proof-item{gap:var(--spacing-lg);border-bottom:1px solid var(--border-secondary)}.about-description p{font-size:1.3rem;line-height:1.34}.footer{padding:var(--spacing-md) var(--spacing-lg)}}.projects-home-section{scroll-margin-top:var(--spacing-2xl);margin-top:var(--spacing-2xl);padding-bottom:clamp(4rem,9vw,9rem)}.projects-section-header{margin-bottom:clamp(2rem,5vw,5rem)}.filter-section{margin-bottom:var(--spacing-xl)}.filter-pills{display:flex;flex-wrap:wrap;gap:.7rem}.filter-pill{min-height:2.55rem;padding:var(--spacing-xs) var(--spacing-md);border:1px solid var(--border-primary);background:#fff3;color:var(--text-secondary);border-radius:999px;cursor:pointer;font-size:.9rem;font-family:var(--font-mono);letter-spacing:.05em;transition:all .2s ease}.filter-pill:hover{border-color:var(--text-primary);color:var(--text-primary)}.filter-pill.active{background:var(--accent);color:#faf7f0;border-color:var(--accent)}.project-category-section{margin-bottom:var(--spacing-3xl)}.project-category-header{font-family:var(--font-mono);font-size:.9rem;margin-bottom:var(--spacing-lg);color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border-primary);padding-bottom:var(--spacing-xs)}.project-category-close{font-family:var(--font-mono);font-size:1.4rem;color:var(--text-secondary);margin-top:var(--spacing-md)}.project-cards-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-lg);padding-left:0}.project-showcase-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--spacing-sm);max-width:1180px;margin:0 auto;border-top:1px solid var(--border-secondary);padding-top:var(--spacing-sm)}.project-showcase-row{--row-index: 0;--row-shift: 42px;display:grid;grid-template-columns:3.4rem minmax(140px,38%) minmax(0,1fr) 2.8rem;height:210px;align-items:stretch;color:var(--text-primary);text-decoration:none;border:1px solid var(--border-secondary);border-radius:4px;position:relative;overflow:hidden;background:linear-gradient(90deg,hsla(0,0%,100%,.42),hsla(0,0%,100%,.12) 52%,transparent),#f8f7f133;-webkit-backdrop-filter:blur(8px) saturate(1.04);backdrop-filter:blur(8px) saturate(1.04);box-shadow:inset 0 1px #ffffffb3,0 8px 24px #1724270b;animation:projectSlide both;animation-timeline:view();animation-range:entry 0% cover 28%;transition:border-color var(--transition-normal),background-color var(--transition-normal),box-shadow var(--transition-normal),transform var(--transition-normal),color var(--transition-normal)}.project-showcase-row:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0 3.4rem,hsla(0,0%,100%,.34) 3.4rem calc(3.4rem + 1px),transparent calc(3.4rem + 1px)),linear-gradient(0deg,transparent 0 calc(100% - 2.1rem),hsla(0,0%,100%,.28) calc(100% - 2.1rem) calc(100% - 2.1rem + 1px),transparent calc(100% - 2.1rem + 1px));opacity:.8;transition:opacity var(--transition-normal)}.project-showcase-row:after{content:"";position:absolute;right:.9rem;top:.9rem;width:34px;height:34px;border-top:1px solid hsla(0,0%,100%,.52);border-right:1px solid hsla(0,0%,100%,.52);pointer-events:none}.project-showcase-row:hover{border-color:var(--border-hover);background-color:#d0eceb2e;box-shadow:inset 0 1px #ffffffe0,0 14px 36px #17242714;transform:translateY(-2px)}.project-showcase-row:hover:before{opacity:1}@keyframes projectSlide{0%{opacity:0;transform:translate(var(--row-shift)) translateY(22px)}to{opacity:1;transform:translate(0) translateY(0)}}.project-showcase-row:nth-child(2n){--row-shift: -42px}.project-index{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:center;padding-top:var(--spacing-sm);border-right:1px solid var(--border-secondary);font-family:var(--font-mono);color:var(--text-muted);font-size:.76rem;letter-spacing:.08em}.project-visual{position:relative;z-index:1;overflow:hidden;border-right:1px solid var(--border-secondary);background:#182325}.project-visual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent,hsla(0,0%,0%,.18)),linear-gradient(90deg,hsla(178,70%,28%,.22),transparent 46%);mix-blend-mode:screen;opacity:.8}.project-visual:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(90deg,hsla(0,0%,100%,.18) 0 1px,transparent 1px 25%),linear-gradient(0deg,hsla(0,0%,100%,.12) 0 1px,transparent 1px 33%);background-size:25% 100%,100% 33%;pointer-events:none;mix-blend-mode:screen}.project-visual img{width:100%;height:100%;display:block;object-fit:cover;filter:saturate(.88) contrast(1.08);transform:scale(1.04);transition:transform .7s ease,filter .7s ease}.project-showcase-row:hover .project-visual img{transform:scale(1.12);filter:saturate(1.08) contrast(1.02)}.project-showcase-copy{position:relative;z-index:1;padding:1rem 1.1rem 1rem 1.25rem;display:flex;flex-direction:column;justify-content:center;min-width:0}.project-meta{display:inline-flex;align-items:center;gap:var(--spacing-xs);font-family:var(--font-mono);color:var(--accent-warm);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.45rem}.project-meta:before{content:"";width:28px;border-top:1px solid currentColor;opacity:.72}.project-showcase-copy h3{font-size:clamp(1.15rem,1.55vw,1.65rem);line-height:1;font-weight:560;letter-spacing:0;max-width:720px;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.project-showcase-copy p{max-width:560px;margin-top:.55rem;color:var(--text-secondary);font-size:.88rem;line-height:1.42;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.project-open-indicator{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;border-left:1px solid var(--border-secondary);color:var(--accent)}.project-open-indicator svg{transition:transform var(--transition-normal)}.project-showcase-row:hover .project-open-indicator svg{transform:translate(8px,-8px)}.project-card{cursor:default;display:flex;flex-direction:column;gap:var(--spacing-sm)}.project-card-title{font-size:1.3rem;font-weight:460;color:var(--text-primary)}.project-card-subtitle{font-size:.9rem;color:var(--text-secondary);flex:1;line-height:1.5}.project-card-labels{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.8rem;max-height:1.55rem;overflow:hidden}.project-label{display:inline-block;padding:2px 7px;font-size:.66rem;font-family:var(--font-mono);color:var(--text-secondary);border:1px solid var(--border-secondary);border-radius:2px;letter-spacing:.06em;text-transform:uppercase}.project-card-footer{margin-top:auto;padding-top:var(--spacing-sm);border-top:1px solid var(--border-primary)}@media (max-width: 1200px){.project-cards-grid{grid-template-columns:repeat(2,1fr)}.hero-section{grid-template-columns:1fr}.hero-stage{min-height:420px}.proof-strip{grid-template-columns:repeat(2,1fr)}.project-showcase-list{grid-template-columns:1fr}.project-showcase-row{grid-template-columns:3.5rem minmax(150px,210px) minmax(0,1fr) 3rem;height:190px}}@media (max-width: 768px){.project-cards-grid{grid-template-columns:1fr;padding-left:0}.project-showcase-row{grid-template-columns:1fr;height:auto;min-height:auto}.project-index,.project-open-indicator{display:none}.project-visual{min-height:210px;border-right:0;border-bottom:1px solid var(--border-secondary)}.project-showcase-copy{padding:var(--spacing-lg)}.project-showcase-copy h3{font-size:clamp(2.3rem,12vw,4rem);-webkit-line-clamp:3}.project-showcase-copy p{-webkit-line-clamp:3}.project-card-labels{max-height:none}.closing-section{min-height:auto}.project-detail-heading{grid-template-columns:1fr;gap:var(--spacing-md)}.project-detail-labels{justify-content:flex-start}.project-detail-media{max-width:100%}.markdown-content{font-size:1rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.project-detail-content{padding-top:var(--spacing-md);padding-bottom:var(--spacing-3xl)}.back-button{background:none;border:1px solid var(--border-secondary);border-radius:var(--radius-small);cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);margin-bottom:var(--spacing-lg);display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);line-height:1;font-family:var(--font-mono);font-size:1rem;color:var(--text-secondary);transition:color var(--transition-fast)}.back-button .code{margin-bottom:0;line-height:1}.back-button:hover{color:var(--text-primary);border-color:var(--border-hover);background:var(--bg-card-hover)}.project-loading,.project-error{padding:var(--spacing-xl) 0}.project-detail-header{margin-bottom:var(--spacing-xl);padding:var(--spacing-md) 0 var(--spacing-lg);border-bottom:1px solid var(--border-primary);position:relative}.project-detail-header:after{content:"";position:absolute;left:0;bottom:-8px;width:120px;border-top:1px solid var(--border-secondary)}.project-detail-title{font-size:clamp(2.1rem,4.4vw,4.8rem);font-weight:380;margin:0 0 var(--spacing-sm);line-height:1.06}.project-detail-subtitle{font-size:clamp(1rem,1.6vw,1.25rem);color:var(--text-secondary);line-height:1.5}.project-detail-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,32%);gap:var(--spacing-xl);align-items:center}.project-detail-labels{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:var(--spacing-xs);margin-top:var(--spacing-md)}.project-detail-media{justify-self:end;width:100%}.project-detail-media p{margin:0}.project-detail-media img,.project-detail-media video{display:block;width:100%;height:auto;border:1px solid var(--border-secondary);border-radius:var(--radius-small);background:var(--bg-card)}.markdown-content{max-width:980px;color:var(--text-primary);font-family:var(--font-default);font-size:1.05rem;line-height:1.75}.markdown-content h1{font-size:clamp(1.8rem,3vw,2.5rem);font-weight:400;margin:var(--spacing-xl) 0 var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-primary);color:var(--text-primary)}.markdown-content h2{font-size:1.5rem;font-weight:400;margin:var(--spacing-xl) 0 var(--spacing-sm);color:var(--text-primary)}.markdown-content h3{font-size:1.2rem;font-weight:500;margin:var(--spacing-lg) 0 var(--spacing-sm);color:var(--text-secondary)}.markdown-content h4{font-size:1rem;font-weight:600;margin:var(--spacing-md) 0 var(--spacing-xs);color:var(--text-secondary)}.markdown-content p{margin-bottom:var(--spacing-md);color:var(--text-primary)}.markdown-content a{color:var(--code-function);text-decoration:underline;text-underline-offset:3px}.markdown-content a:hover{color:var(--text-primary)}.markdown-content ul,.markdown-content ol{margin:var(--spacing-sm) 0 var(--spacing-md) var(--spacing-xl)}.markdown-content li{margin-bottom:var(--spacing-xs)}.markdown-content blockquote{border-left:3px solid var(--border-secondary);padding-left:var(--spacing-md);margin:var(--spacing-md) 0;color:var(--text-secondary);font-style:italic}.markdown-content hr{border:none;border-top:1px solid var(--border-primary);margin:var(--spacing-2xl) 0}.markdown-content img{display:block;width:100%;max-width:100%;border-radius:var(--radius-small);border:1px solid var(--border-secondary);margin:var(--spacing-md) 0;background:var(--bg-card)}.markdown-content video{width:100%;max-width:100%;border-radius:var(--radius-small);border:1px solid var(--border-secondary);margin:var(--spacing-md) 0;background:var(--bg-card)}.markdown-content iframe{max-width:100%;border-radius:var(--radius-small);border:1px solid var(--border-secondary);margin:var(--spacing-md) 0}.markdown-content button{background:none;border:1px solid var(--border-primary);border-radius:var(--radius-small);color:var(--text-primary);padding:var(--spacing-xs) var(--spacing-md);font-family:var(--font-mono);font-size:.9rem;cursor:pointer;transition:all var(--transition-fast);margin:var(--spacing-xs) var(--spacing-xs) var(--spacing-xs) 0}.markdown-content button:hover{background:var(--bg-card);border-color:var(--border-hover)}.markdown-content code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-card);padding:.1em .4em;border-radius:3px;color:var(--text-secondary);border:1px solid var(--border-secondary)}.markdown-content pre{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-small);padding:var(--spacing-md);overflow-x:auto;margin:var(--spacing-md) 0}.markdown-content pre code{background:none;padding:0;color:var(--text-primary)}.markdown-content table{width:100%;border-collapse:collapse;margin:var(--spacing-md) 0;font-size:.95rem}.markdown-content th,.markdown-content td{border:1px solid var(--border-primary);padding:var(--spacing-xs) var(--spacing-sm);text-align:left}.markdown-content th{background:var(--bg-card);color:var(--text-secondary);font-weight:500}.contact-button{display:inline-flex;align-items:center;gap:.35rem;margin-top:var(--spacing-md);padding:.8rem 1rem;border:1px solid var(--border-primary);border-radius:var(--radius-small);background:var(--bg-card);color:var(--text-primary);font-family:var(--font-mono);font-size:.9rem;cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast)}.contact-button:hover,.contact-button:focus-visible{background:var(--bg-card-hover);border-color:var(--border-hover);transform:translate(-1px,-1px)}.contact-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;padding:var(--spacing-lg);background:#f9f8f6b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.contact-modal{width:min(560px,100%);cursor:default}.contact-modal-title{margin-bottom:var(--spacing-sm);font-size:clamp(1.8rem,4vw,3rem);font-weight:400;letter-spacing:-.04em}.contact-modal p{margin-bottom:var(--spacing-md);color:var(--text-secondary);font-size:1.05rem;line-height:1.6}.contact-list{display:grid;gap:var(--spacing-xs)}.contact-list a{display:block;padding:.75rem 0;border-bottom:1px solid var(--border-secondary);color:var(--text-primary);font-family:var(--font-mono);text-decoration:none}.contact-list a:hover,.contact-list a:focus-visible{color:var(--code-variable)}.contact-modal-close{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);width:2rem;height:2rem;border:1px solid var(--border-secondary);border-radius:var(--radius-small);background:var(--bg-ui-element);color:var(--text-primary);font-size:1.4rem;line-height:1;cursor:pointer}.contact-modal-close:hover,.contact-modal-close:focus-visible{border-color:var(--border-hover);background:var(--bg-card-hover)}
