.view-count{display:inline-flex;flex:none;align-items:center;gap:6px;line-height:1}.view-count svg{width:14px;height:14px}.view-count-number{min-width:3ch;font-variant-numeric:tabular-nums;text-align:right}.links-page{--links-page: #f2f2f2;--links-surface: #fafafa;--links-surface-hover: #e9e9e9;--links-border: #d1d1d1;--links-text: #111111;--links-muted: #6a6a6a;--links-radius: 16px;display:grid;min-height:100dvh;justify-items:center;padding:32px 20px;color:var(--links-text);background:var(--links-page);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html[data-color-mode=dark] .links-page{--links-page: #0c0c0c;--links-surface: #151515;--links-surface-hover: #1d1d1d;--links-border: #303030;--links-text: #f0f0f0;--links-muted: #8e8e8e}.links-shell{position:relative;display:grid;width:min(100%,560px);min-height:calc(100dvh - 64px);place-items:center}.links-toolbar{position:absolute;inset:0 0 auto;display:flex;justify-content:space-between}.links-content{width:100%}.links-tool,.links-toolbar .portfolio-tools button{display:grid;width:46px;height:46px;padding:0;place-items:center;border:1px solid var(--links-border);border-radius:var(--links-radius);color:var(--links-text);background:var(--links-surface);cursor:pointer;text-decoration:none;transition:background-color .16s ease,border-color .16s ease,transform .16s ease}.links-tool svg,.links-toolbar .portfolio-tools button svg{width:17px;height:17px}.links-tool:hover,.links-toolbar .portfolio-tools button:hover{border-color:var(--links-muted);background:var(--links-surface-hover);transform:translateY(-2px)}.links-tool:focus-visible,.links-toolbar .portfolio-tools button:focus-visible,.links-icon-link:focus-visible,.links-profile-link:focus-visible{outline:2px solid var(--links-text);outline-offset:3px}.links-profile{display:grid;justify-items:center;text-align:center}.links-profile-link{display:grid;justify-items:center;color:inherit;text-decoration:none}.links-profile-link>img{width:104px;height:104px;border:1px solid var(--links-border);border-radius:50%;object-fit:cover;transition:border-color .16s ease,transform .16s ease}.links-profile h1{margin-top:20px}.links-profile h1{margin-bottom:0;font-size:clamp(28px,7vw,36px);font-weight:680;letter-spacing:-.04em;line-height:1}.links-profile-link:hover>img{border-color:var(--links-muted);transform:translateY(-2px)}.links-icons{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:30px}.links-icon-link{display:grid;width:50px;height:50px;place-items:center;border-radius:var(--links-radius);color:var(--links-muted);text-decoration:none;transition:color .16s ease,background-color .16s ease,transform .16s ease}.links-icon-link svg{width:24px;height:24px}.links-icon-link:hover{color:var(--links-text);background:var(--links-surface-hover);transform:translateY(-2px)}.links-icon-link:active,.links-tool:active{transform:translateY(1px) scale(.99)}@media(max-width:520px){.links-page{padding:20px 16px}.links-shell{min-height:calc(100dvh - 40px)}.links-profile-link>img{width:92px;height:92px}.links-icons{display:grid;grid-template-columns:repeat(4,50px)}}@media(max-width:390px){.links-icons{grid-template-columns:repeat(4,44px);gap:4px}.links-icon-link{width:44px;height:44px}}@media(max-width:300px){.links-icons{display:grid;grid-template-columns:repeat(3,44px)}}@media(prefers-reduced-motion:reduce){.links-tool,.links-icon-link,.links-profile-link>img{transition:none}}.resume-page{min-height:100dvh}.resume-shell{width:min(calc(100% - 48px),644px);margin:0 auto;padding:32px 0 96px}.resume-intro{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px;padding-bottom:30px;border-bottom:1px solid var(--e-line)}.resume-intro h1,.resume-intro p{margin:0}.resume-intro h1{color:var(--e-text);font-size:30px;font-weight:600;letter-spacing:-.04em;line-height:1.08}.resume-intro p{margin-top:8px;color:var(--e-muted);font-size:15px;line-height:1.5}.resume-actions{display:flex;align-items:center;gap:8px}.resume-actions a{display:inline-flex;min-height:34px;align-items:center;justify-content:center;gap:8px;padding:7px 10px;border:1px solid var(--e-line-strong);border-radius:7px;background:var(--e-surface);color:var(--e-muted);font-size:11px;font-weight:500;line-height:18px;text-decoration:none;white-space:nowrap;transition:border-color .14s ease-out,background .14s ease-out,color .14s ease-out,transform .14s ease-out}.resume-actions a:hover,.resume-actions a:focus-visible{border-color:var(--e-text);color:var(--e-text)}.resume-actions a:focus-visible,.resume-document:focus-visible{outline:2px solid var(--e-accent);outline-offset:3px}.resume-actions a:active{transform:translateY(1px)}.resume-actions svg{width:11px;height:11px}.resume-actions .resume-download{border-color:var(--e-text);background:var(--e-text);color:var(--e-bg)}.resume-actions .resume-download:hover,.resume-actions .resume-download:focus-visible{background:var(--e-muted);color:var(--e-bg)}.resume-document{display:block;overflow:hidden;margin-top:28px;padding:10px;border:1px solid var(--e-line-strong);border-radius:9px;background:var(--e-surface-muted);box-shadow:0 18px 48px color-mix(in srgb,var(--e-text) 9%,transparent);transition:border-color .14s ease-out,transform .18s cubic-bezier(.16,1,.3,1)}.resume-document:hover{border-color:color-mix(in srgb,var(--e-accent) 55%,var(--e-line-strong));transform:translateY(-1px)}.resume-document img{display:block;width:100%;height:auto;border-radius:3px;background:#f7f7f5}@media(max-width:620px){.resume-shell{width:min(calc(100% - 32px),644px);padding-top:28px}.resume-intro{grid-template-columns:1fr;align-items:start;gap:20px}.resume-actions{width:100%}.resume-actions a{flex:1}.resume-document{padding:6px}}@media(max-width:390px){.resume-shell{width:min(calc(100% - 24px),644px)}}@media(prefers-reduced-motion:reduce){.resume-actions a,.resume-document{transition:none}}:root{color:#d8d7d1;background:#0b0b0a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}html,body,#root{min-height:100%;margin:0;overscroll-behavior-y:none;background:#0b0b0a}html[data-color-mode=light],html[data-color-mode=light] body,html[data-color-mode=light] #root{background:#f2f2f2}body{min-height:100dvh}button:active,a:active{transform:scale(.97)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.portfolio-page{width:min(100% - 40px,720px);margin:0 auto;padding:92px 0 250px;color:#d8d7d1;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.72}.portfolio-page p{margin:0}.portfolio-page a{color:inherit;text-underline-offset:3px}.portfolio-header{display:flex;justify-content:space-between;gap:24px;padding-bottom:15px;border-bottom:1px solid #34332f}.portfolio-header-meta{display:grid;justify-items:end;gap:7px;color:#77756f;text-align:right}.portfolio-view-count{font-size:11px}.social-document{margin-top:36px;border-bottom:1px solid #34332f}.social-document details{border-top:1px solid #34332f}.social-document summary{padding:13px 0;color:#8d8b84;cursor:pointer;list-style:none}.social-document summary::-webkit-details-marker{display:none}.social-document summary:after{float:right;content:"+"}.social-document details[open] summary{color:#d8d7d1}.social-document details[open] summary:after{content:"−"}.social-document-panel{max-width:620px;padding:12px 24px 34px}.social-document-projects article{margin-top:28px}.social-document-projects article:first-child{margin-top:0}.social-document-projects article p+p{margin-top:5px}.social-document-projects article p:first-child{color:#f0efea}.social-document-projects article p:nth-child(2){color:#aaa8a1}.social-document-projects article p:nth-child(3){color:#77756f}.social-document-experience p{display:grid;grid-template-columns:130px minmax(0,1fr);gap:16px;padding:4px 0}.social-document-experience p span:first-child{color:#77756f}.social-document-skills{color:#aaa8a1}.social-dock{--social-dock-border: #363636;--social-dock-background: #121212;--social-dock-shadow: rgb(0 0 0 / .4);--social-trigger: #777;--social-trigger-active: #efefef;--social-trigger-hover: #f6f6f4;--social-panel-border: #3c3b36;--social-panel-background: #171715;--social-panel-shadow: rgb(0 0 0 / .34);--social-panel-text: #d8d7d1;--social-links-background: #0c0c0c;--social-links-border: #303030;--social-links-heading: #f0f0f0;--social-links-icon: #8e8e8e;--social-primary: #f0f1f2;--social-secondary: #8b949e;--social-secondary-strong: #c9d1d9;--social-github-empty: #21262d;--social-github-level-1: #0e4429;--social-github-level-2: #006d32;--social-github-level-3: #26a641;--social-github-level-4: #39d353;--social-network-background: #181818;--social-network-cover: #101010;--social-network-border: #303030;--social-network-heading: #f5f5f5;--social-network-muted: #929292;--social-network-action-border: #555;--social-network-action-text: #dedede;--social-linkedin-accent: #70b5f9;--social-linkedin-accent-soft: rgb(112 181 249 / .08);--social-x-action-background: #f1f1f1;--social-x-action-text: #111;--social-x-content: #dedede;--social-x-icon: #f0f0f0;position:fixed;bottom:18px;left:50%;z-index:20;padding:3px;border:1px solid var(--social-dock-border);border-radius:999px;background:var(--social-dock-background);box-shadow:0 12px 40px var(--social-dock-shadow);transform:translate(-50%)}html[data-color-mode=light] .social-dock{--social-dock-border: #d7d9db;--social-dock-background: #f7f7f6;--social-dock-shadow: rgb(31 35 40 / .14);--social-trigger: #747779;--social-trigger-active: #242627;--social-trigger-hover: #242627;--social-panel-border: #d9dbdd;--social-panel-background: #fdfdfc;--social-panel-shadow: rgb(31 35 40 / .16);--social-panel-text: #292b2c;--social-links-background: #f7f7f6;--social-links-border: #d9dbdd;--social-links-heading: #242627;--social-links-icon: #686b6d;--social-primary: #24292f;--social-secondary: #57606a;--social-secondary-strong: #24292f;--social-github-empty: #ebedf0;--social-github-level-1: #9be9a8;--social-github-level-2: #40c463;--social-github-level-3: #30a14e;--social-github-level-4: #216e39;--social-network-background: #fdfdfc;--social-network-cover: #f3f4f5;--social-network-border: #d9dbdd;--social-network-heading: #202223;--social-network-muted: #64686b;--social-network-action-border: #8c959f;--social-network-action-text: #24292f;--social-linkedin-accent: #0a66c2;--social-linkedin-accent-soft: rgb(10 102 194 / .07);--social-x-action-background: #202223;--social-x-action-text: #f7f7f6;--social-x-content: #303335;--social-x-icon: #202223}.social-morph{--social-ease-in-out: cubic-bezier(.77, 0, .175, 1);position:relative;width:fit-content}.social-morph-triggers{display:flex;align-items:center}.social-morph-triggers>a{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:8px;min-width:42px;min-height:42px;padding:8px;border-radius:50%;color:var(--social-trigger);text-decoration:none}.social-morph-triggers svg{width:21px;height:21px}.social-morph-triggers a[data-active]{color:var(--social-trigger-active)}.social-morph-label{display:none}.social-morph-panel{position:absolute;bottom:calc(100% + 14px);left:0;z-index:1;width:var(--panel-width);height:var(--panel-height);opacity:0;visibility:hidden;pointer-events:none;transition:none;will-change:transform}.social-morph[data-positioned] .social-morph-panel{transition:transform .23s var(--social-ease-in-out),opacity .15s ease-out,visibility 0s linear .15s}.social-morph[data-open] .social-morph-panel{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}.social-morph-surface{position:absolute;inset:0;overflow:hidden;border:1px solid var(--social-panel-border);border-radius:12px;background:var(--social-panel-background);box-shadow:0 16px 50px var(--social-panel-shadow)}.social-morph-content{position:absolute;bottom:0;left:0;color:var(--social-panel-text);text-decoration:none}.profile-card{width:100%;height:100%;overflow:hidden;border-radius:inherit;background:var(--social-panel-background);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;line-height:1.35}.resume-card{background:#f5f5f5}.resume-card img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}.links-card{display:grid;align-content:center;justify-items:center;gap:24px;background:var(--social-links-background)}.links-card-profile{display:grid;justify-items:center;gap:12px}.links-card-profile img{width:64px;height:64px;border:1px solid var(--social-links-border);border-radius:50%;object-fit:cover}.links-card-profile strong{color:var(--social-links-heading);font-size:18px;font-weight:680;letter-spacing:-.04em}.links-card-icons{display:flex;align-items:center;gap:12px;color:var(--social-links-icon)}.links-card-icons svg{width:16px;height:16px}.github-card{display:grid;grid-template-rows:auto auto auto;align-content:center;row-gap:5px;padding:6px 11px}.github-card-header{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:8px}.github-card-header img{width:30px;height:30px;border-radius:50%;object-fit:cover}.github-card-header div{display:grid;gap:1px}.github-card-header strong{color:var(--social-primary);font-size:12px;font-weight:600}.github-card-header span{color:var(--social-secondary)}.github-card-header span strong{color:var(--social-secondary-strong);font-size:inherit}.github-organizations{display:grid;gap:3px}.github-organizations-label{color:var(--social-secondary);font-size:9.5px;line-height:11px}.github-organizations-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px 0}.github-organization{display:flex;width:max-content;max-width:100%;min-width:0;align-items:center;gap:5px;height:15px;color:var(--social-secondary);font-size:10px;line-height:15px}.github-organization:nth-child(3n+1){justify-self:start}.github-organization:nth-child(3n+2){justify-self:center}.github-organization:nth-child(3n){justify-self:end}.github-organization img{flex:none;width:13px;height:13px;border-radius:3px;object-fit:cover;opacity:.82}.github-organization span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.github-contribution-graph{display:grid;grid-template-columns:repeat(50,minmax(0,1fr));grid-template-rows:repeat(7,auto);gap:1px;width:100%}.github-contribution-graph span{min-width:0;aspect-ratio:1;border-radius:1px;background:var(--social-github-empty)}.github-contribution-graph span[data-level="1"]{background:var(--social-github-level-1)}.github-contribution-graph span[data-level="2"]{background:var(--social-github-level-2)}.github-contribution-graph span[data-level="3"]{background:var(--social-github-level-3)}.github-contribution-graph span[data-level="4"]{background:var(--social-github-level-4)}.network-card{position:relative;display:grid;grid-template-rows:50px minmax(0,1fr);background:var(--social-network-background);font-size:10.5px;line-height:1.3}.network-card-cover{height:50px;padding:10px 12px;border-bottom:1px solid var(--social-network-border);background:var(--social-network-cover)}.network-card-cover svg{float:right;width:18px;height:18px}.network-card-avatar{position:absolute;top:26px;left:12px;width:44px;height:44px;border:2px solid var(--social-network-background);border-radius:50%;object-fit:cover;background:var(--social-network-background)}.network-card-body{display:flex;min-height:0;flex-direction:column;justify-content:space-between;padding:22px 12px 12px}.network-card-heading{display:flex;align-items:start;justify-content:space-between;gap:12px}.network-card-heading>div{display:grid;gap:1px;min-width:0}.network-card-heading strong{color:var(--social-network-heading);font-size:12px;font-weight:650}.network-card-heading .network-card-pronouns{display:inline;margin-left:3px;color:var(--social-network-muted);font-size:8px;font-weight:400}.network-card-heading span{overflow:hidden;color:var(--social-network-muted);text-overflow:ellipsis;white-space:nowrap}.network-card-action{flex:none;min-width:78px;padding:8px 14px;border:1px solid var(--social-network-action-border);border-radius:999px;color:var(--social-network-action-text)!important;font-size:10.5px;font-weight:600;line-height:1;text-align:center}.network-card-body>p{margin:0;color:var(--social-network-muted)}.linkedin-card .network-card-cover{position:relative;overflow:hidden;border-color:#b4c3c5;background:#dfe8e9}.linkedin-card .network-card-cover:before{position:absolute;top:-78px;left:-24px;width:220px;height:170px;border-radius:50%;background:#aebdc0;content:""}.linkedin-card .network-card-cover:after{position:absolute;inset:0 68px 0 auto;width:30px;background:#edf3f4;content:""}.linkedin-card .network-card-cover svg{position:relative;z-index:1;color:#0a66c2}.linkedin-card .network-card-action{border-color:var(--social-linkedin-accent);background:var(--social-linkedin-accent-soft);color:var(--social-linkedin-accent)!important}.linkedin-card-detail{color:var(--social-linkedin-accent)!important}.x-card .network-card-action{border-color:var(--social-x-action-background);background:var(--social-x-action-background);color:var(--social-x-action-text)!important;font-weight:650}.x-card .network-card-cover{display:flex;align-items:center;justify-content:flex-end;color:var(--social-x-icon);font-size:20px;font-weight:700;letter-spacing:-1px}.x-card-bio{color:var(--social-x-content)!important}.x-card-stats{display:flex;gap:4px}.x-card-stats strong{margin-left:7px;color:var(--social-x-content);font-weight:600}.x-card-stats strong:first-child{margin-left:0}.youtube-card{display:grid;grid-template-rows:44px minmax(0,1fr);gap:12px;padding:12px;background:var(--social-network-background)}.youtube-card-header{display:flex;align-items:center;gap:10px}.youtube-card-avatar{flex:none;width:44px;height:44px;border-radius:50%;object-fit:cover}.youtube-card-channel{min-width:0;flex:1}.youtube-card-name{display:flex;align-items:baseline;gap:7px}.youtube-card-name strong{color:var(--social-network-heading);font-size:13px;font-weight:650}.youtube-card-name span{color:var(--social-network-muted);font-size:10.5px}.youtube-card-channel p{margin:4px 0 0;color:var(--social-network-muted);font-size:10.5px}.youtube-card-channel p strong{color:var(--social-network-heading);font-weight:650}.youtube-card-channel p span{white-space:nowrap}.youtube-card-logo{flex:none;align-self:flex-start;width:18px;height:18px;margin-top:4px;color:#f03}.youtube-card-video{display:grid;grid-template-columns:104px minmax(0,1fr);align-items:center;gap:10px;padding-top:10px;border-top:1px solid var(--social-network-border)}.youtube-card-thumbnail{position:relative;overflow:hidden;border-radius:4px}.youtube-card-thumbnail img{display:block;width:100%;height:auto}.youtube-card-thumbnail>span{position:absolute;right:3px;bottom:3px;padding:1px 3px;border-radius:2px;background:#000000d9;color:#fff;font-size:9px;font-weight:600;line-height:1.2}.youtube-card-video-detail{display:grid;gap:4px}.youtube-card-video-detail>span{color:var(--social-network-muted);font-size:10px}.youtube-card-video-detail strong{color:var(--social-network-heading);font-size:12px;font-weight:600;line-height:1.35}@media(hover:hover)and (pointer:fine){.portfolio-page a,.social-morph-triggers>a,.social-document summary{transition:color .14s ease-out}.portfolio-page a:hover,.social-morph-triggers>a:hover,.social-document summary:hover{color:var(--social-trigger-hover, #f6f6f4)}}@media(prefers-reduced-motion:reduce){.social-morph[data-positioned] .social-morph-panel,.social-morph-surface{transition:opacity .14s ease-out}}@media(max-width:720px){.portfolio-page{width:min(100% - 32px,720px);padding-top:30px}.portfolio-header{display:grid;gap:2px}.portfolio-header-meta{justify-items:start;text-align:left}.social-document-experience p{grid-template-columns:1fr;gap:0;margin-bottom:12px}.social-document-panel{padding-right:0;padding-left:0}}@media(max-width:390px){.github-card{padding-right:10px;padding-left:10px}.youtube-card{gap:8px;padding:10px 12px}.youtube-card-video{grid-template-columns:88px minmax(0,1fr);padding-top:7px}.network-card-body,.network-card-cover{padding-right:12px;padding-left:12px}.network-card-avatar{left:12px}}@media(max-width:360px){.youtube-card{grid-template-rows:40px minmax(0,1fr);gap:6px;padding-top:8px;padding-bottom:8px}.youtube-card-avatar{width:40px;height:40px}.youtube-card-video{grid-template-columns:76px minmax(0,1fr);padding-top:6px}.youtube-card-video-detail{gap:3px}.youtube-card-video-detail strong{font-size:11px}}:root{color:#e8e8e8;background:#0c0c0c;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--p-bg: #0c0c0c;--p-surface: #151515;--p-surface-strong: #1c1c1c;--p-text: #d4d4d4;--p-strong: #f0f0f0;--p-muted: #949494;--p-faint: #707070;--p-line: #303030;--p-line-strong: #484848;--p-accent: #efefef;--p-accent-soft: #202020;--p-active: #35f58a;--p-previous: #ff6174;--p-merged: #b8a0ff;--p-selection: #4a4a4a;--p-selection-text: #f0f0f0;--p-feedback: #efefef;--p-shadow: rgb(0 0 0 / .34);--p-shelf-top: #3a3a3a;--p-shelf-edge: #222;--p-shelf-highlight: #505050;--p-font-body: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--p-font-meta: "IBM Plex Mono", monospace;--p-radius: 5px}html[data-color-mode=dark]{color-scheme:dark}html[data-color-mode=light]{color-scheme:light;--p-bg: #f2f2f2;--p-surface: #e8e8e8;--p-surface-strong: #dedede;--p-text: #343434;--p-strong: #161616;--p-muted: #666;--p-faint: #7b7b7b;--p-line: #cacaca;--p-line-strong: #adadad;--p-accent: #161616;--p-accent-soft: #dedede;--p-active: #007a3d;--p-previous: #c91f39;--p-merged: #6941c6;--p-selection: #c8c8c8;--p-selection-text: #161616;--p-feedback: #161616;--p-shadow: rgb(0 0 0 / .14);--p-shelf-top: #dedede;--p-shelf-edge: #c6c6c6;--p-shelf-highlight: #f7f7f7}*{box-sizing:border-box}::selection{background:var(--p-selection);color:var(--p-selection-text)}html{min-height:100%;background:var(--p-bg);scroll-behavior:smooth}body,#root,.portfolio-stage{min-height:100%;margin:0;background:var(--p-bg)}body{overflow-x:hidden;color:var(--p-text);font-family:var(--p-font-body)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-underline-offset:3px}a:focus-visible,button:focus-visible{outline:2px solid var(--p-accent);outline-offset:3px}#stage{min-height:100dvh}.portfolio-tools{display:flex;align-items:center;gap:9px}.portfolio-view-count{display:inline-grid;grid-template-columns:12px auto;min-height:30px;place-items:center;column-gap:4px;padding:0 8px;border:1px solid var(--p-line);border-radius:3px;background:var(--p-surface);color:var(--p-muted);font-family:var(--p-font-meta);font-size:10px;line-height:1}.portfolio-view-count svg{display:block;width:12px;height:12px}.portfolio-view-count .view-count-number{display:grid;height:12px;min-width:0;place-items:center;line-height:12px;text-align:center;transform:translateY(.5px)}.portfolio-sound-toggle,.portfolio-theme-toggle{display:grid;width:30px;height:30px;place-items:center;padding:0;border:1px solid var(--p-line);border-radius:3px;background:var(--p-surface);color:var(--p-muted);cursor:pointer;transition:border-color .14s ease-out,color .14s ease-out,background .14s ease-out}.portfolio-sound-toggle svg,.portfolio-theme-toggle svg{width:12px;height:12px}.portfolio-sound-toggle:hover,.portfolio-theme-toggle:hover{border-color:var(--p-accent);background:var(--p-accent-soft);color:var(--p-accent)}.skill-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px dashed var(--p-line-strong);border-radius:var(--p-radius);overflow:hidden}.skill-item{display:grid;min-width:0;min-height:82px;place-items:center;align-content:center;gap:8px;padding:12px 5px;border-right:1px solid var(--p-line);border-bottom:1px solid var(--p-line);background:var(--p-surface);color:var(--p-muted);text-align:center;transition:background .16s ease-out,color .16s ease-out}.skill-item:nth-child(6n){border-right:0}.skill-item:nth-last-child(-n+6){border-bottom:0}.skill-item img{width:27px;height:27px;object-fit:contain;filter:none;transition:filter .18s ease-out,opacity .18s ease-out,transform .18s ease-out}.skill-item span{overflow:hidden;max-width:100%;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.click-feedback{position:fixed;z-index:30;color:var(--p-feedback);pointer-events:none;transform:translate(-50%,-50%)}.feedback-echo{width:58px;height:58px}.feedback-echo span{position:absolute;top:50%;left:50%;width:14px;height:14px;border:1px solid currentColor;border-radius:50%;animation:feedback-echo .46s cubic-bezier(.16,1,.3,1) both}.feedback-echo span:last-child{animation-delay:70ms}@keyframes feedback-echo{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}22%{opacity:.8}to{opacity:0;transform:translate(-50%,-50%) scale(3.8)}}.project-link{position:relative;color:inherit;text-decoration:none}.project-link-content{min-width:0}.project-browser{position:relative}.project-list{display:grid;gap:2px;margin:0;padding:0;list-style:none}.project-row{display:block;border:1px solid transparent;border-radius:3px;transition:border-color .14s ease-out,background .14s ease-out}.project-row .project-link-content{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-height:72px;padding:11px 12px}.project-row-copy{display:grid;min-width:0;gap:3px}.project-title-row{display:flex;min-width:0;align-items:baseline;gap:8px}.project-title-row h3{flex:none;color:var(--p-strong);font-size:13px;font-weight:600;letter-spacing:-.02em}.project-title-row span{overflow:hidden;color:var(--p-faint);font-family:var(--p-font-meta);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.project-row-copy>p{overflow:hidden;color:var(--p-muted);font-size:10.5px;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.project-row .project-link-content>svg{width:10px;height:10px;flex:none;color:var(--p-faint);transition:color .14s ease-out,transform .16s cubic-bezier(.16,1,.3,1)}.project-list>li[data-active=true] .project-row,.project-row:hover,.project-row:focus-visible{border-color:var(--p-line-strong);background:var(--p-surface)}.project-row:hover .project-link-content>svg,.project-row:focus-visible .project-link-content>svg{color:var(--p-strong);transform:translate(1px,-1px)}.project-preview-positioner{position:fixed;top:0;z-index:10;pointer-events:none}.project-preview-positioner[data-moving=true]{transition:transform .19s cubic-bezier(.16,1,.3,1)}.project-preview{margin:0;opacity:0;transform:translate(5px) scale(.985);transform-origin:left top;visibility:hidden;transition:opacity .14s ease-out,transform .18s cubic-bezier(.16,1,.3,1),visibility 0s linear .14s}.project-preview[data-visible=true]{opacity:1;transform:translate(0) scale(1);visibility:visible;transition-delay:0s}.project-preview-frame{position:relative;overflow:hidden;border:1px solid var(--p-line-strong);border-radius:var(--p-radius);background:var(--p-surface);aspect-ratio:5 / 3}.project-preview-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;filter:grayscale(.25) brightness(.74) contrast(.94);transform:scale(1.015);transition:opacity .18s ease-out,transform .24s cubic-bezier(.16,1,.3,1)}html[data-color-mode=light] .project-preview-frame img{filter:grayscale(.12) brightness(.96) contrast(.96)}.project-preview-frame img.is-active{opacity:1;transform:scale(1)}.project-preview figcaption{display:flex;justify-content:space-between;gap:20px;padding-top:8px;color:var(--p-faint);font-family:var(--p-font-meta);font-size:8px}.project-preview figcaption>span:first-child{color:var(--p-text)}.project-page,.projects-page{min-height:100dvh}.project-page>.contact-navigation,.projects-page>.contact-navigation{position:sticky;top:0;z-index:20}.projects-index-shell{width:min(calc(100% - 36px),700px);margin:0 auto;padding:76px 0 180px}.projects-index-intro h1{margin:0;color:var(--p-strong);font-size:clamp(42px,9vw,64px);font-weight:600;letter-spacing:-.06em;line-height:.98}.projects-index-intro p{margin:18px 0 0;color:var(--p-muted);font-size:11px}.projects-index-list{margin-top:34px}.contributions-section{margin-top:80px;padding-top:24px;border-top:1px solid var(--p-line);scroll-margin-top:88px}.contributions-heading{display:flex;align-items:center;gap:9px}.contributions-heading>svg{width:13px;height:13px;color:var(--p-muted)}.contributions-heading h2{margin:0;color:var(--p-strong);font-family:var(--p-font-meta);font-size:11px;font-weight:500}.contribution-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:16px;margin-top:28px}.contribution-search{display:grid;gap:7px}.contribution-search>span{color:var(--p-faint);font-family:var(--p-font-meta);font-size:8px}.contribution-search input{width:100%;height:38px;padding:0 11px;border:1px solid var(--p-line-strong);border-radius:3px;outline:0;background:var(--p-surface);color:var(--p-strong);font:inherit;font-size:10px;transition:border-color .14s ease-out,background .14s ease-out}.contribution-search input::placeholder{color:var(--p-faint)}.contribution-search input:focus{border-color:var(--p-accent);background:var(--p-surface-strong)}.contribution-state-filter{display:grid;grid-template-columns:repeat(4,auto);overflow:hidden;border:1px solid var(--p-line-strong);border-radius:3px}.contribution-state-filter button{display:inline-flex;min-width:54px;height:36px;align-items:center;justify-content:center;gap:6px;padding:0 9px;border:0;border-left:1px solid var(--p-line);background:var(--p-surface);color:var(--p-muted);font-family:var(--p-font-meta);font-size:8px;cursor:pointer;transition:background .14s ease-out,color .14s ease-out}.contribution-state-filter button:first-child{border-left:0}.contribution-state-filter button:hover,.contribution-state-filter button[aria-pressed=true]{background:var(--p-surface-strong);color:var(--p-strong)}.contribution-state-filter button>span:last-child{color:var(--p-faint)}.contribution-results{margin:10px 0 0;color:var(--p-faint);font-family:var(--p-font-meta);font-size:8px}.contribution-groups{display:grid;margin-top:24px;border-top:1px solid var(--p-line)}.contribution-group{border-bottom:1px solid var(--p-line)}.contribution-group-summary{display:grid;min-height:66px;grid-template-columns:minmax(0,1fr) auto 10px;align-items:center;gap:14px;padding:11px 8px 11px 2px;cursor:pointer;list-style:none;transition:background .14s ease-out}.contribution-group-summary::-webkit-details-marker{display:none}.contribution-group-summary:hover,.contribution-group-summary:focus-visible{background:var(--p-surface)}.contribution-group-summary:focus-visible{outline:2px solid var(--p-accent);outline-offset:2px}.contribution-group-copy{display:grid;min-width:0;gap:2px}.contribution-group-copy strong{color:var(--p-strong);font-size:16px;font-weight:600;letter-spacing:-.035em;line-height:1.2}.contribution-group-copy>span{overflow:hidden;color:var(--p-faint);font-family:var(--p-font-meta);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.contribution-group-count{color:var(--p-muted);font-family:var(--p-font-meta);font-size:8px;white-space:nowrap}.contribution-group-chevron{width:8px;height:8px;color:var(--p-faint);transition:transform .18s cubic-bezier(.16,1,.3,1)}.contribution-group[open]>.contribution-group-summary .contribution-group-chevron{transform:rotate(180deg)}.contribution-group-content{padding:0 8px 22px 18px}.contribution-repository-link{display:inline-flex;align-items:center;gap:7px;margin:0 0 10px 9px;color:var(--p-muted);font-family:var(--p-font-meta);font-size:8px;text-decoration:none}.contribution-repository-link:hover,.contribution-repository-link:focus-visible{color:var(--p-strong)}.contribution-repository-link svg{width:8px;height:8px}.contribution-list{border-top:1px solid var(--p-line)}.contribution-item{border-bottom:1px solid var(--p-line)}.contribution-item-row{display:grid;grid-template-columns:minmax(0,1fr) 38px}.contribution-pr-link{display:grid;min-height:58px;grid-template-columns:14px minmax(0,1fr) auto auto;align-items:center;gap:11px;padding:11px 4px 11px 2px;color:inherit;text-decoration:none;transition:background .14s ease-out}.contribution-pr-link:hover,.contribution-pr-link:focus-visible{background:var(--p-surface)}.contribution-pr-link:focus-visible,.contribution-toggle:focus-visible{position:relative;z-index:1;outline:2px solid var(--p-accent);outline-offset:-2px}.contribution-toggle{display:flex;min-height:58px;align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--p-faint);cursor:pointer;transition:background .14s ease-out,color .14s ease-out}.contribution-toggle:hover{background:var(--p-surface-strong);color:var(--p-strong)}.contribution-state-icon{width:12px;height:12px}.contribution-state-icon[data-state=open],.contribution-state[data-state=open]{color:var(--p-active)}.contribution-state-icon[data-state=merged],.contribution-state[data-state=merged]{color:var(--p-merged)}.contribution-state-icon[data-state=closed],.contribution-state[data-state=closed]{color:var(--p-previous)}.contribution-title{min-width:0;color:var(--p-text);font-size:11px;font-weight:600;line-height:1.4}.contribution-state,.contribution-number{font-family:var(--p-font-meta);font-size:8px;white-space:nowrap}.contribution-number{color:var(--p-faint)}.contribution-chevron{width:8px;height:8px;transition:transform .18s cubic-bezier(.16,1,.3,1)}.contribution-item[data-expanded=true] .contribution-chevron{transform:rotate(180deg)}.contribution-description{max-width:68ch;padding:0 34px 20px 27px}.contribution-description[hidden]{display:none}.contribution-description p{margin:0;color:var(--p-muted);font-size:10.5px;line-height:1.65}.contribution-empty{margin:0;padding:28px 2px;border-bottom:1px solid var(--p-line);color:var(--p-muted);font-size:10.5px}.project-detail-shell{width:min(calc(100% - 36px),700px);margin:0 auto;padding:76px 0 170px}.project-detail-hero h1{margin:0;color:var(--p-strong);font-size:clamp(42px,9vw,64px);font-weight:600;letter-spacing:-.06em;line-height:.98}.project-detail-hero>p{max-width:58ch;margin:22px 0 0;color:var(--p-muted);font-size:12px;line-height:1.7}.project-detail-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:20px;color:var(--p-faint);font-family:var(--p-font-meta);font-size:9px}.project-detail-meta span:first-child{color:var(--p-text)}.project-detail-image{display:block;width:100%;margin-top:40px;border:1px solid var(--p-line-strong);border-radius:var(--p-radius);filter:grayscale(.16) brightness(.78) contrast(.95)}html[data-color-mode=light] .project-detail-image{filter:grayscale(.08) brightness(.98) contrast(.97)}.project-detail-section{margin-top:42px;padding-top:24px;border-top:1px solid var(--p-line)}.project-detail-section h2{margin:0;color:var(--p-strong);font-family:var(--p-font-meta);font-size:11px;font-weight:500}.project-detail-section ul{display:grid;gap:12px;margin:20px 0 0;padding-left:18px;color:var(--p-text);font-size:12px;line-height:1.65}.project-detail-section li::marker{color:var(--p-faint)}.project-detail-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:34px}.project-detail-links a{display:inline-flex;min-height:40px;align-items:center;gap:12px;padding:9px 12px;border:1px solid var(--p-line-strong);border-radius:3px;color:var(--p-text);font-size:10.5px;text-decoration:none;transition:border-color .14s ease-out,background .14s ease-out,color .14s ease-out}.project-detail-links a:hover,.project-detail-links a:focus-visible{border-color:var(--p-accent);background:var(--p-accent-soft);color:var(--p-strong)}.contact-invite{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-top:64px;padding-top:22px;border-top:1px solid var(--p-line)}.contact-invite>div{display:grid;gap:2px}.contact-invite strong{color:var(--p-strong);font-size:13px;font-weight:600}.contact-invite>div>span{color:var(--p-muted);font-size:10.5px}.contact-cta,.contact-form button{display:grid;height:42px;grid-template-columns:1fr 40px;overflow:hidden;border:1px solid var(--p-line-strong);border-radius:3px;background:var(--p-surface);color:var(--p-strong);font-family:var(--p-font-meta);font-weight:500;text-decoration:none;transition:border-color .16s ease-out,background .16s ease-out,transform .14s ease-out}.contact-form button{min-width:142px;padding:0;font-size:11px}.contact-cta{min-width:134px;font-size:10px}.contact-cta>span:first-child,.contact-form button>span:first-child{display:flex;align-items:center;justify-content:center;padding:0 14px}.contact-cta-arrow,.contact-submit-icon{display:grid;height:100%;place-items:center;border-left:1px solid var(--p-line-strong);color:var(--p-muted);transition:border-color .16s ease-out,color .16s ease-out}.contact-cta:hover,.contact-cta:focus-visible,.contact-form button:hover:not(:disabled),.contact-form button:focus-visible:not(:disabled){border-color:var(--p-muted);background:var(--p-surface-strong)}.contact-cta:hover .contact-cta-arrow,.contact-cta:focus-visible .contact-cta-arrow,.contact-form button:hover:not(:disabled) .contact-submit-icon,.contact-form button:focus-visible:not(:disabled) .contact-submit-icon{border-color:var(--p-muted);color:var(--p-strong)}.contact-cta:active,.contact-form button:active:not(:disabled){transform:translateY(1px)}.contact-form button:disabled{cursor:default;color:var(--p-muted);opacity:.72}.contact-form button[data-status=success],.contact-form button[data-status=success] .contact-submit-icon{border-color:var(--p-active);color:var(--p-active)}.contact-form button svg{width:10px;height:10px}.contact-cta-arrow svg{width:10px;height:10px;transition:transform .18s cubic-bezier(.16,1,.3,1)}.contact-cta:hover .contact-cta-arrow svg,.contact-cta:focus-visible .contact-cta-arrow svg{transform:translate(3px)}.contact-shell{width:min(calc(100% - 36px),620px);margin:0 auto;padding:80px 0 170px}.contact-page{min-height:100dvh}.contact-navigation{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:58px;padding:8px 18px;border-bottom:1px solid var(--p-line);background:var(--p-surface)}.contact-back{display:inline-flex;width:fit-content;min-height:34px;align-items:center;gap:8px;padding:7px 9px;border:1px solid transparent;border-radius:4px;color:var(--p-muted);font-size:11px;text-decoration:none;transition:border-color .14s ease-out,color .14s ease-out,background .14s ease-out}.contact-back:hover,.contact-back:focus-visible{border-color:var(--p-line);background:var(--p-bg);color:var(--p-strong)}.contact-back svg{width:12px;height:12px}.contact-navigation-title{display:grid;justify-items:center;gap:1px;font-family:var(--p-font-meta);font-size:10px;line-height:1.3}.contact-navigation-title strong{color:var(--p-strong);font-size:11px;font-weight:500}.contact-navigation-title span{color:var(--p-muted)}.contact-navigation .portfolio-theme-toggle{width:34px;height:34px;justify-self:end;border-color:transparent;background:transparent}.contact-navigation .portfolio-theme-toggle:hover,.contact-navigation .portfolio-theme-toggle:focus-visible{border-color:var(--p-line);background:var(--p-bg);color:var(--p-strong)}.contact-intro{max-width:500px}.contact-intro h1{margin:0;color:var(--p-strong);font-size:clamp(42px,9vw,64px);font-weight:600;letter-spacing:-.06em;line-height:.98}.contact-intro>p:last-child{max-width:46ch;margin:22px 0 0;color:var(--p-muted);font-size:12px;line-height:1.65}.contact-form{display:grid;gap:22px;margin-top:52px;padding-top:28px;border-top:1px solid var(--p-line)}.contact-botcheck{display:none}.contact-form label>span{color:var(--p-faint);font-family:var(--p-font-meta);font-size:9px}.contact-form input,.contact-form textarea{width:100%;border:1px solid var(--p-line-strong);border-radius:3px;outline:0;background:var(--p-surface);color:var(--p-strong);font:inherit;font-size:12px;transition:border-color .14s ease-out,background .14s ease-out}.contact-form input{height:44px;padding:0 13px}.contact-form textarea{min-height:150px;padding:12px 13px;resize:vertical}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--p-accent);background:var(--p-surface-strong)}.contact-form-footer{display:flex;align-items:center;justify-content:space-between;gap:20px}.contact-form-footer p{margin:0;color:var(--p-faint);font-size:10px}.contact-form-footer p{min-height:16px;line-height:1.6}.contact-form-footer p[data-status=success]{color:var(--p-active)}.contact-form button{cursor:pointer}.taste-section{margin-top:12px}.taste-section+.contact-invite{margin-top:12px;padding-top:16px}.home-taste-link{display:flex;width:100%;min-height:38px;align-items:center;justify-content:space-between;gap:20px;padding:0;color:var(--p-strong);font-size:13.5px;font-weight:650;letter-spacing:-.015em;text-decoration:none}.home-taste-link svg{width:12px;height:12px;color:var(--p-muted);transition:color .14s ease-out,transform .18s cubic-bezier(.16,1,.3,1)}.home-taste-link:hover svg,.home-taste-link:focus-visible svg{color:var(--p-strong);transform:translate(2px)}@media(hover:hover)and (pointer:fine){.skill-item img{filter:grayscale(1) saturate(0) contrast(.9);opacity:.72}.skill-item:hover{background:var(--p-surface-strong);color:var(--p-strong)}.skill-item:hover img{filter:grayscale(0) saturate(1) contrast(1);opacity:1;transform:translateY(-1px) scale(1.05)}}@media(max-width:620px){.contact-shell{width:min(calc(100% - 24px),620px)}.projects-index-shell{width:min(calc(100% - 24px),700px)}.portfolio-tools{justify-self:end}.skill-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.skill-item:nth-child(6n){border-right:1px solid var(--p-line)}.skill-item:nth-last-child(-n+6){border-bottom:1px solid var(--p-line)}.skill-item:nth-child(4n){border-right:0}.skill-item:nth-last-child(-n+4){border-bottom:0}.contribution-controls{grid-template-columns:1fr}.contribution-state-filter{grid-template-columns:repeat(4,minmax(0,1fr))}.contribution-state-filter button{min-width:0}}@media(max-width:1199px){.project-preview-positioner{display:none}}@media(max-width:540px){.project-row .project-link-content{min-height:62px}.contribution-group-summary{min-height:62px;gap:9px}.contribution-group-copy strong{font-size:14px}.contribution-group-content{padding-left:8px}.contribution-repository-link{margin-left:1px}.contribution-pr-link{grid-template-columns:14px minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:start;gap:5px 9px;padding-block:14px}.contribution-state-icon{grid-row:1 / span 2;margin-top:2px}.contribution-title{grid-column:2;grid-row:1}.contribution-state{grid-column:2;grid-row:2}.contribution-number{grid-column:3;grid-row:1}.contribution-description{padding-left:25px}}@media(max-width:430px){.contact-invite{align-items:flex-start;flex-direction:column;gap:17px}.contact-cta{width:100%}.contact-navigation{padding-inline:8px}.contact-back{gap:0}.contact-back span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.contact-shell{padding-top:62px}.contact-form{margin-top:42px}.contact-form-footer{align-items:stretch;flex-direction:column}.contact-form button{width:100%}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-row,.project-row .project-link-content>svg,.project-preview-frame img,.project-preview,.project-preview-positioner,.project-detail-links a,.section-view-all,.section-view-all svg,.home-taste-link,.home-taste-link svg,.contribution-pr-link,.contribution-toggle,.contribution-chevron,.contribution-group-summary,.contribution-group-chevron,.contribution-search input,.contribution-state-filter button,.contact-cta,.contact-cta-arrow,.contact-cta-arrow svg,.contact-form button,.skill-item,.skill-item img{transition:none}.timeline-chevron{transition:none}.timeline-description{animation:none}}html[data-portfolio-page=home]{--e-bg: #fcfcfc;--e-surface: #fff;--e-surface-muted: #f5f6f7;--e-text: #202020;--e-muted: #676767;--e-faint: #8d8d8d;--e-line: #e4e5e7;--e-line-strong: #d7d9dc;--e-accent: #1677e8;--e-green-1: #c7f1d2;--e-green-2: #7fdd99;--e-green-3: #32b766;--e-green-4: #178b48}html[data-color-mode=dark][data-portfolio-page=home]{--e-bg: #101112;--e-surface: #151718;--e-surface-muted: #1d2021;--e-text: #f1f2f2;--e-muted: #a1a4a6;--e-faint: #74787a;--e-line: #292c2e;--e-line-strong: #363a3d;--e-accent: #62a8ff;--e-green-1: #163d28;--e-green-2: #1e7040;--e-green-3: #2cad5d;--e-green-4: #53da80}html[data-portfolio-page=home],html[data-portfolio-page=home] body,html[data-portfolio-page=home] #root,html[data-portfolio-page=home] .portfolio-stage{background:var(--e-bg)}.portfolio-home{min-height:100dvh;background:var(--e-bg);color:var(--e-text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.portfolio-home ::selection{background:color-mix(in srgb,var(--e-accent) 24%,transparent);color:var(--e-text)}.editorial-page{width:min(calc(100% - 48px),644px);margin:0 auto;padding:82px 0 170px}.editorial-page h1,.editorial-page h2,.editorial-page h3,.editorial-page p{margin:0}.editorial-profile{display:grid;gap:22px}.editorial-identity-row,.editorial-identity,.editorial-identity h1{display:flex;align-items:center}.editorial-identity-row{justify-content:space-between;gap:28px}.editorial-identity{min-width:0;gap:12px}.editorial-identity>img{width:46px;height:46px;flex:none;border:1px solid var(--e-line);border-radius:50%;object-fit:cover}.editorial-identity h1{gap:5px;color:var(--e-text);font-size:16px;font-weight:600;letter-spacing:-.015em;line-height:22px}.editorial-knicks-mark{width:19px;height:19px;flex:none;object-fit:contain}.editorial-identity p{overflow:hidden;color:var(--e-muted);font-size:15px;line-height:22px;text-overflow:ellipsis;white-space:nowrap}.portfolio-home .portfolio-tools{flex:none;gap:5px}.portfolio-home .portfolio-view-count,.portfolio-home .portfolio-sound-toggle,.portfolio-home .portfolio-theme-toggle{height:30px;min-height:30px;border-color:var(--e-line);border-radius:7px;background:var(--e-surface);color:var(--e-muted);box-shadow:0 1px 1px #00000006}.portfolio-home .portfolio-sound-toggle,.portfolio-home .portfolio-theme-toggle{width:30px}.portfolio-home .portfolio-view-count{padding:0 8px;font-family:inherit;font-size:10px}.portfolio-home .portfolio-sound-toggle:hover,.portfolio-home .portfolio-theme-toggle:hover{border-color:var(--e-line-strong);background:var(--e-surface-muted);color:var(--e-text)}.editorial-bio{display:grid;gap:14px;color:var(--e-muted);font-size:16px;letter-spacing:-.005em;line-height:1.62}.editorial-bio strong{color:var(--e-text);font-weight:600}.editorial-bio a{color:var(--e-text);font-weight:520;text-decoration-color:var(--e-line-strong);text-decoration-thickness:1px;text-underline-offset:4px;transition:color .14s ease-out,text-decoration-color .14s ease-out}.editorial-bio a:hover{color:var(--e-accent);text-decoration-color:currentColor}.editorial-section{margin-top:38px;scroll-margin-top:80px}.editorial-section-heading{display:flex;min-height:28px;align-items:center;justify-content:space-between;gap:24px;margin-bottom:12px}.editorial-section-heading h2{color:var(--e-text);font-size:16px;font-weight:550;letter-spacing:-.015em;line-height:26px}.editorial-text-link,.editorial-text-action{padding:4px 0;border:0;background:transparent;color:var(--e-muted);font-size:12px;line-height:20px;text-decoration:none;cursor:pointer;transition:color .14s ease-out}.editorial-text-link:hover,.editorial-text-action:hover{color:var(--e-text)}.editorial-text-action{display:inline-flex;align-items:center;gap:8px}.editorial-text-action svg{width:10px;height:10px;transition:transform .18s cubic-bezier(.16,1,.3,1)}.editorial-text-action[aria-expanded=true] svg{transform:rotate(180deg)}.editorial-record-list,.editorial-link-list{border-top:1px solid var(--e-line)}.editorial-record{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:12px;padding:14px 0;border-bottom:1px solid var(--e-line)}.editorial-record-icon,.editorial-link-icon{display:grid;place-items:center;border:1px solid var(--e-line-strong);border-radius:8px;background:var(--e-surface-muted);color:var(--e-muted)}.editorial-record-icon{width:36px;height:36px}.editorial-record-icon[data-current=true]{border-color:color-mix(in srgb,var(--e-green-3) 45%,var(--e-line));color:var(--e-green-4)}.editorial-record-icon img{width:100%;height:100%;border-radius:7px;object-fit:cover}.editorial-record-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px}.editorial-record-main{display:grid;gap:1px}.editorial-record-main h3{color:var(--e-text);font-size:14px;font-weight:570;letter-spacing:-.01em;line-height:20px}.editorial-record-main span,.editorial-record time{color:var(--e-muted);font-size:12px;line-height:18px}.editorial-record time{text-align:right;white-space:nowrap}.editorial-record-details{display:grid;grid-column:2;gap:6px;margin:12px 0 2px;padding:0 0 0 16px;color:var(--e-muted);font-size:12.5px;line-height:1.55;animation:editorial-details-in .18s cubic-bezier(.16,1,.3,1) both}.editorial-record-details strong{color:var(--e-text);font-weight:600}@keyframes editorial-details-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.editorial-projects .project-list{gap:0;border-top:1px solid var(--e-line)}.editorial-projects .project-row{border:0;border-bottom:1px solid var(--e-line);border-radius:0}.editorial-projects .project-row .project-link-content{min-height:72px;padding:12px 0}.editorial-projects .project-title-row h3{color:var(--e-text);font-size:14px;font-weight:570}.editorial-projects .project-title-row span{color:var(--e-faint);font-family:inherit;font-size:10px}.editorial-projects .project-row-copy>p{color:var(--e-muted);font-size:12px;line-height:1.5}.editorial-projects .project-row svg{color:var(--e-faint)}.editorial-projects .project-row:hover,.editorial-projects .project-row:focus-visible{background:transparent}.editorial-projects .project-row:hover .project-title-row h3,.editorial-projects .project-row:focus-visible .project-title-row h3{color:var(--e-accent)}html[data-portfolio-page=home] .project-preview{border-color:var(--e-line-strong);border-radius:10px;background:var(--e-surface);box-shadow:0 16px 40px #00000021}html[data-portfolio-page=home] .project-preview figcaption{color:var(--e-muted);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.editorial-link-list>a{display:grid;grid-template-columns:32px minmax(0,1fr) auto 12px;align-items:center;gap:12px;min-height:66px;padding:10px 0;border-bottom:1px solid var(--e-line);color:inherit;text-decoration:none}.editorial-link-icon{width:32px;height:32px;overflow:hidden;border-radius:7px}.editorial-link-icon img{width:100%;height:100%;object-fit:cover}.editorial-link-list>a>span:nth-child(2){display:grid;min-width:0;gap:2px}.editorial-link-list strong,.editorial-link-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editorial-link-list strong{color:var(--e-text);font-size:13px;font-weight:550;line-height:19px}.editorial-link-list small{color:var(--e-muted);font-size:11px;line-height:17px}.editorial-link-list>a>svg{width:11px;height:11px;color:var(--e-faint);transition:color .14s ease-out,transform .14s ease-out}.editorial-repository-stars,.contribution-group-stars{display:inline-flex;align-items:center;gap:5px;color:var(--e-muted);font-size:11px;line-height:17px;white-space:nowrap}.editorial-repository-stars svg,.contribution-group-stars svg{width:10px;height:10px}.editorial-link-list>a:hover strong{color:var(--e-accent)}.editorial-link-list>a:hover>svg{color:var(--e-accent);transform:translate(1px,-1px)}.editorial-skills .skill-grid{border:1px solid var(--e-line);border-radius:9px;background:var(--e-line);gap:1px}.editorial-skills .skill-item{min-height:66px;gap:6px;padding:9px 5px;border:0;background:var(--e-surface);color:var(--e-muted);text-decoration:none}.editorial-skills .skill-item img{width:23px;height:23px}.editorial-skills .skill-item span{font-size:9.5px}@media(hover:hover)and (pointer:fine){.editorial-skills .skill-item:hover{background:var(--e-surface-muted);color:var(--e-text)}}.editorial-skills .skill-item:focus-visible{outline:1px solid var(--e-accent);outline-offset:-2px;background:var(--e-surface-muted);color:var(--e-text)}.editorial-skills .skill-item:focus-visible img{filter:grayscale(0) saturate(1) contrast(1);opacity:1}.editorial-education{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--e-line);border-bottom:1px solid var(--e-line)}.editorial-education-icon{grid-row:1}.editorial-education>div{display:grid;gap:2px}.editorial-education>div:last-child{justify-items:end}.editorial-education strong{color:var(--e-text);font-size:13px;font-weight:570;line-height:19px}.editorial-education span,.editorial-education time{color:var(--e-muted);font-size:11px;line-height:17px}.editorial-education time{white-space:nowrap}.editorial-contact{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:0;padding-top:22px}.editorial-section+.editorial-contact{margin-top:0}.editorial-contact>div{display:grid;gap:3px}.editorial-contact strong{color:var(--e-text);font-size:14px;font-weight:570}.editorial-contact span{color:var(--e-muted);font-size:12px}.editorial-contact a{display:inline-flex;min-height:38px;align-items:center;gap:12px;padding:0 13px;border:1px solid var(--e-line-strong);border-radius:8px;background:var(--e-surface);color:var(--e-text);font-size:12px;font-weight:520;text-decoration:none;transition:border-color .14s ease-out,background .14s ease-out}.editorial-contact a:hover{border-color:color-mix(in srgb,var(--e-accent) 50%,var(--e-line));background:var(--e-surface-muted)}.editorial-contact a svg{width:11px;height:11px}html[data-portfolio-page=home] .feedback-echo{color:var(--e-accent)}@media(max-width:720px){.editorial-page{width:min(calc(100% - 32px),644px);padding-top:84px}.editorial-section,.editorial-contact{margin-top:34px}}@media(max-width:520px){.editorial-page{width:min(calc(100% - 28px),644px);padding-top:76px}.editorial-identity-row{flex-direction:column;align-items:flex-start;gap:10px}.editorial-identity>img{width:42px;height:42px}.editorial-identity p{font-size:13px}.portfolio-home .portfolio-tools{gap:4px;margin-left:54px}.editorial-bio{font-size:15px;line-height:1.6}.editorial-section,.editorial-contact{margin-top:30px}.editorial-record-copy{grid-template-columns:1fr;gap:3px}.editorial-record time{text-align:left}.editorial-record-details{font-size:12px}.editorial-projects .project-title-row span{display:none}.editorial-education{grid-template-columns:28px minmax(0,1fr)}.editorial-education>div:last-child{grid-column:2;justify-items:start}.editorial-contact{align-items:flex-end}.editorial-contact span{max-width:180px}}@media(prefers-reduced-motion:reduce){.editorial-record-details{animation:none}}.projects-page{min-height:100dvh;background:var(--e-bg);color:var(--e-text)}.projects-index-shell{width:min(calc(100% - 48px),644px);margin:0 auto;padding:32px 0 170px}.projects-index-intro{padding-bottom:30px;border-bottom:1px solid var(--e-line)}.projects-index-intro h1,.projects-index-intro p,.projects-section-heading h2,.projects-section-heading span,.projects-page .contribution-results,.projects-page .contribution-description p,.projects-page .contribution-empty{margin:0}.projects-index-intro h1{color:var(--e-text);font-size:30px;font-weight:600;letter-spacing:-.04em;line-height:1.08}.projects-index-intro p{margin-top:12px;color:var(--e-muted);font-size:15px;line-height:1.55}.projects-index-list{margin-top:32px}.projects-section-heading{display:flex;min-height:28px;align-items:center;justify-content:space-between;gap:24px;margin-bottom:12px}.projects-section-heading h2{color:var(--e-text);font-size:15px;font-weight:600;letter-spacing:-.015em;line-height:20px}.projects-section-heading>span{color:var(--e-faint);font-size:11px;line-height:18px;white-space:nowrap}.projects-index-list .project-list{gap:0;border-top:1px solid var(--e-line)}.projects-index-list .project-row{border:0;border-bottom:1px solid var(--e-line);border-radius:0}.projects-index-list .project-row .project-link-content{grid-template-columns:42px minmax(0,1fr) 11px;gap:12px;min-height:78px;padding:12px 0}.project-row-thumbnail{display:block;width:42px;height:42px;border:1px solid var(--e-line-strong);border-radius:8px;background:var(--e-surface-muted);object-fit:cover;transition:border-color .14s ease-out,transform .18s cubic-bezier(.16,1,.3,1)}.projects-index-list .project-row-copy{gap:2px}.projects-index-list .project-title-row h3,.projects-index-list .project-row-copy>p{margin:0}.projects-index-list .project-title-row h3{color:var(--e-text);font-size:13.5px;font-weight:570;letter-spacing:-.01em;line-height:20px}.projects-index-list .project-title-row span{color:var(--e-faint);font-family:inherit;font-size:10px;line-height:16px}.projects-index-list .project-row-copy>p{color:var(--e-muted);font-size:12px;line-height:1.45}.projects-index-list .project-row .project-link-content>svg{color:var(--e-faint)}.projects-index-list .project-list>li[data-active=true] .project-row,.projects-index-list .project-row:hover,.projects-index-list .project-row:focus-visible{border-color:var(--e-line);background:transparent}.projects-index-list .project-list>li[data-active=true] .project-title-row h3,.projects-index-list .project-row:hover .project-title-row h3,.projects-index-list .project-row:focus-visible .project-title-row h3{color:var(--e-accent)}.projects-index-list .project-row:hover .project-row-thumbnail,.projects-index-list .project-row:focus-visible .project-row-thumbnail{border-color:var(--e-line-strong);transform:translateY(-1px)}.projects-page .contributions-section{margin-top:32px;padding-top:0;border-top:0;scroll-margin-top:80px}.projects-page .contributions-heading{display:flex;align-items:center}.projects-page .contribution-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;margin-top:16px}.projects-page .contribution-search{display:grid;gap:7px}.projects-page .contribution-search>span{color:var(--e-muted);font-family:inherit;font-size:11px;line-height:16px}.projects-page .contribution-search input{width:100%;height:40px;padding:0 12px;border:1px solid var(--e-line-strong);border-radius:8px;outline:0;background:var(--e-surface);color:var(--e-text);font:inherit;font-size:12px;transition:border-color .14s ease-out,background .14s ease-out}.projects-page .contribution-search input::placeholder{color:var(--e-faint)}.projects-page .contribution-search input:focus{border-color:var(--e-accent);background:var(--e-surface-muted)}.projects-page .contribution-state-filter{display:grid;grid-template-columns:repeat(4,auto);overflow:hidden;border:1px solid var(--e-line-strong);border-radius:8px}.projects-page .contribution-state-filter button{display:inline-flex;min-width:60px;height:38px;align-items:center;justify-content:center;gap:5px;padding:0 9px;border:0;border-left:1px solid var(--e-line);background:var(--e-surface);color:var(--e-muted);font-family:inherit;font-size:11px;cursor:pointer;transition:background .14s ease-out,color .14s ease-out}.projects-page .contribution-state-filter button:first-child{border-left:0}.projects-page .contribution-state-filter button:hover,.projects-page .contribution-state-filter button[aria-pressed=true]{background:var(--e-surface-muted);color:var(--e-text)}.projects-page .contribution-state-filter button>span:last-child{color:var(--e-faint);font-size:10px}.projects-page .contribution-results{margin-top:10px;color:var(--e-faint);font-family:inherit;font-size:11px;line-height:17px}.projects-page .contribution-groups{display:grid;margin-top:18px;border-top:1px solid var(--e-line)}.projects-page .contribution-group{border-bottom:1px solid var(--e-line);scroll-margin-top:76px}.projects-page .contribution-group-summary{display:grid;min-height:70px;grid-template-columns:36px minmax(0,1fr) auto 10px;align-items:center;gap:12px;padding:12px 0;cursor:pointer;list-style:none;transition:color .14s ease-out}.projects-page .contribution-group-summary::-webkit-details-marker{display:none}.projects-page .contribution-group-summary:hover,.projects-page .contribution-group-summary:focus-visible{background:transparent}.projects-page .contribution-group-summary:focus-visible{outline:2px solid var(--e-accent);outline-offset:3px}.contribution-group-logo{display:grid;width:36px;height:36px;overflow:hidden;place-items:center;border:1px solid var(--e-line-strong);border-radius:8px;background:var(--e-surface-muted)}.contribution-group-logo img{display:block;width:100%;height:100%;object-fit:cover}.projects-page .contribution-group-copy{display:grid;min-width:0;gap:1px}.projects-page .contribution-group-copy strong{color:var(--e-text);font-size:13.5px;font-weight:570;letter-spacing:-.01em;line-height:20px}.projects-page .contribution-group-copy>span{overflow:hidden;color:var(--e-muted);font-family:inherit;font-size:11px;line-height:17px;text-overflow:ellipsis;white-space:nowrap}.projects-page .contribution-group-meta{display:inline-flex;align-items:center;gap:12px;white-space:nowrap}.projects-page .contribution-group-count{color:var(--e-faint);font-family:inherit;font-size:11px;white-space:nowrap}.projects-page .contribution-group-chevron{width:9px;height:9px;color:var(--e-faint)}.projects-page .contribution-group-content{padding:0 0 20px 48px}.projects-page .contribution-repository-link{display:inline-flex;align-items:center;gap:7px;margin:0 0 12px;color:var(--e-muted);font-family:inherit;font-size:11px;line-height:17px;text-decoration:none}.projects-page .contribution-repository-link:hover,.projects-page .contribution-repository-link:focus-visible{color:var(--e-accent)}.projects-page .contribution-repository-link svg{width:9px;height:9px}.projects-page .contribution-list{border-top:1px solid var(--e-line)}.projects-page .contribution-item{border-bottom:1px solid var(--e-line)}.projects-page .contribution-item-row{grid-template-columns:minmax(0,1fr) 38px}.projects-page .contribution-pr-link{min-height:56px;grid-template-columns:14px minmax(0,1fr) auto auto;gap:10px;padding:10px 4px 10px 0}.projects-page .contribution-pr-link:hover,.projects-page .contribution-pr-link:focus-visible{background:transparent}.projects-page .contribution-pr-link:focus-visible,.projects-page .contribution-toggle:focus-visible{outline-color:var(--e-accent)}.projects-page .contribution-toggle{min-height:56px;color:var(--e-faint)}.projects-page .contribution-toggle:hover{background:var(--e-surface-muted);color:var(--e-text)}.projects-page .contribution-state-icon[data-state=open],.projects-page .contribution-state[data-state=open]{color:var(--p-active)}.projects-page .contribution-state-icon[data-state=merged],.projects-page .contribution-state[data-state=merged]{color:var(--p-merged)}.projects-page .contribution-state-icon[data-state=closed],.projects-page .contribution-state[data-state=closed]{color:var(--p-previous)}.projects-page .contribution-title{color:var(--e-text);font-size:12px;font-weight:550;line-height:1.45}.projects-page .contribution-state,.projects-page .contribution-number{font-family:inherit;font-size:10px}.projects-page .contribution-number{color:var(--e-faint)}.projects-page .contribution-description{max-width:62ch;padding:0 38px 18px 24px}.projects-page .contribution-description p{color:var(--e-muted);font-size:12px;line-height:1.6}.projects-page .contribution-empty{padding:24px 0;border-bottom:1px solid var(--e-line);color:var(--e-muted);font-size:12px}@media(max-width:620px){.projects-index-shell{width:min(calc(100% - 32px),644px);padding-top:28px}.projects-page .contribution-controls{grid-template-columns:1fr}.projects-page .contribution-state-filter{grid-template-columns:repeat(4,minmax(0,1fr))}.projects-page .contribution-state-filter button{min-width:0}}@media(max-width:540px){.projects-index-list .project-title-row span{display:none}.projects-index-list .project-row-copy>p{overflow:hidden;display:-webkit-box;text-overflow:clip;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.projects-page .contribution-group-summary{grid-template-columns:34px minmax(0,1fr) auto 9px;gap:10px}.contribution-group-logo{width:34px;height:34px}.projects-page .contribution-group-content{padding-left:44px}.projects-page .contribution-pr-link{grid-template-columns:14px minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:start;gap:5px 9px;padding-block:13px}.projects-page .contribution-state-icon{grid-row:1 / span 2;margin-top:2px}.projects-page .contribution-title{grid-column:2;grid-row:1}.projects-page .contribution-state{grid-column:2;grid-row:2}.projects-page .contribution-number{grid-column:3;grid-row:1}.projects-page .contribution-description{padding-left:23px}}@media(max-width:390px){.projects-index-shell{width:min(calc(100% - 24px),644px)}.projects-page .contributions-heading{align-items:flex-start;flex-direction:column;gap:2px}.projects-page .contribution-group-count{display:none}.projects-page .contribution-group-summary{grid-template-columns:34px minmax(0,1fr) auto 9px}}@media(prefers-reduced-motion:reduce){.project-row-thumbnail{transition:none}}.editorial-project-page,.editorial-contact-page{background:var(--e-bg);color:var(--e-text)}.project-detail-shell,.contact-shell{width:min(calc(100% - 48px),644px);margin:0 auto;padding:32px 0 170px}.project-detail-hero{padding-bottom:30px;border-bottom:1px solid var(--e-line)}.project-detail-hero h1,.contact-intro h1{margin:0;color:var(--e-text);font-size:30px;font-weight:600;letter-spacing:-.04em;line-height:1.08}.project-detail-hero>p,.contact-intro-copy>p{max-width:560px;margin:12px 0 0;color:var(--e-muted);font-size:15px;line-height:1.55}.project-detail-meta{display:flex;flex-wrap:wrap;gap:7px 12px;margin-top:17px;color:var(--e-faint);font-family:inherit;font-size:12px;line-height:18px}.project-detail-meta span:first-child{color:var(--e-text);font-weight:550}.project-detail-meta span+span{padding-left:12px;border-left:1px solid var(--e-line-strong)}.project-detail-links{display:flex;flex-wrap:wrap;gap:18px;margin-top:20px}.project-detail-links a{display:inline-flex;min-height:auto;align-items:center;gap:7px;padding:2px 0 3px;border:0;border-bottom:1px solid var(--e-line-strong);border-radius:0;background:transparent;color:var(--e-text);font-size:12px;font-weight:520;line-height:18px;text-decoration:none;transition:border-color .14s ease-out,color .14s ease-out}.project-detail-links a:hover,.project-detail-links a:focus-visible{border-color:var(--e-accent);background:transparent;color:var(--e-accent)}.project-detail-links svg{width:9px;height:9px}.project-detail-visual{margin:28px 0 0}.project-detail-image{display:block;width:100%;margin:0;border:1px solid var(--e-line-strong);border-radius:8px;background:var(--e-surface-muted);filter:none;box-shadow:0 1px 2px #0000000a}html[data-color-mode=light] .project-detail-image{filter:none}.project-detail-section{margin-top:36px;padding-top:0;border-top:0}.project-detail-section h2{margin:0;padding-bottom:12px;border-bottom:1px solid var(--e-line);color:var(--e-text);font-family:inherit;font-size:15px;font-weight:600;letter-spacing:-.015em;line-height:20px}.project-detail-section ul{display:grid;gap:0;margin:0;padding:0;color:var(--e-muted);font-size:13px;line-height:1.6;list-style:none}.project-detail-section p{max-width:590px;margin:16px 0 0;color:var(--e-muted);font-size:15px;line-height:1.7}.project-detail-section p a{color:var(--e-text);text-decoration:underline;text-underline-offset:3px}.project-detail-section li{position:relative;padding:14px 0 14px 18px;border-bottom:1px solid var(--e-line)}.project-detail-section li:before{position:absolute;top:22px;left:2px;width:4px;height:4px;border-radius:50%;background:var(--e-faint);content:""}.contact-intro{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px;max-width:none;padding-bottom:30px;border-bottom:1px solid var(--e-line)}.contact-x-link{display:inline-flex;min-height:38px;align-items:center;justify-content:center;gap:8px;padding:0 11px;border:1px solid var(--e-line-strong);border-radius:7px;background:var(--e-surface);color:var(--e-text);font-size:12px;font-weight:550;line-height:18px;text-decoration:none;white-space:nowrap;transition:border-color .14s ease-out,background .14s ease-out,color .14s ease-out,transform .14s ease-out}.contact-x-link svg:first-child{width:13px;height:13px}.contact-x-link svg:last-child{width:9px;height:9px;color:var(--e-faint)}.contact-x-link:hover,.contact-x-link:focus-visible{border-color:var(--e-text);background:var(--e-surface-muted)}.contact-x-link:focus-visible{outline:2px solid var(--e-accent);outline-offset:3px}.contact-x-link:active{transform:translateY(1px)}.contact-form{display:grid;gap:20px;margin-top:28px;padding-top:0;border-top:0}.contact-form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.contact-form label{display:grid;gap:8px}.contact-form label>span{color:var(--e-muted);font-family:inherit;font-size:12px;font-weight:520;line-height:18px}.contact-form input,.contact-form textarea{width:100%;border:1px solid var(--e-line-strong);border-radius:7px;outline:0;background:var(--e-surface);color:var(--e-text);font:inherit;font-size:14px;caret-color:var(--e-accent);transition:border-color .14s ease-out,box-shadow .14s ease-out}.contact-form input{height:44px;padding:0 12px}.contact-form textarea{min-height:150px;padding:11px 12px;line-height:1.55;resize:vertical}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--e-accent);background:var(--e-surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--e-accent) 12%,transparent)}.contact-form-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:4px}.contact-form-footer p,.contact-form-footer p[data-status=success],.contact-form-footer p[data-status=error]{min-height:18px;margin:0;color:var(--e-muted);font-size:11px;line-height:18px}.contact-form-footer p[data-status=success]{color:var(--e-green-4)}.contact-form-footer p[data-status=error]{color:var(--p-previous)}.editorial-contact-page .contact-form button{display:inline-flex;width:auto;min-width:0;height:40px;align-items:center;justify-content:center;gap:9px;padding:0 14px;border:1px solid var(--e-text);border-radius:7px;background:var(--e-text);color:var(--e-bg);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:border-color .14s ease-out,background .14s ease-out,transform .14s ease-out}.editorial-contact-page .contact-form button>span:first-child{display:inline;padding:0}.editorial-contact-page .contact-submit-icon{display:grid;width:12px;height:auto;place-items:center;border:0;color:currentColor}.editorial-contact-page .contact-form button:hover:not(:disabled),.editorial-contact-page .contact-form button:focus-visible:not(:disabled){border-color:var(--e-accent);background:var(--e-accent);color:#fff}.editorial-contact-page .contact-form button:focus-visible{outline:2px solid var(--e-accent);outline-offset:3px}.editorial-contact-page .contact-form button:active:not(:disabled){transform:translateY(1px)}.editorial-contact-page .contact-form button:disabled{cursor:default;opacity:.62}.editorial-contact-page .contact-form button[data-status=success]{border-color:var(--e-green-4);background:var(--e-green-4);color:#fff}@media(max-width:620px){.project-detail-shell,.contact-shell{width:min(calc(100% - 32px),644px);padding-top:28px}.contact-form-row{grid-template-columns:1fr;gap:20px}.contact-intro{grid-template-columns:1fr;align-items:start;gap:20px}}@media(max-width:430px){.contact-form-footer{align-items:stretch;flex-direction:column;gap:12px}.editorial-contact-page .contact-form button,.contact-x-link{width:100%}}@media(prefers-reduced-motion:reduce){.project-detail-links a,.contact-x-link,.contact-form input,.contact-form textarea,.editorial-contact-page .contact-form button{transition:none}}.taste-page{min-height:100dvh;background:var(--e-bg)}.taste-navigation{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--e-line);background:var(--e-bg)}.taste-navigation-inner{display:flex;width:min(calc(100% - 48px),644px);min-height:64px;align-items:center;justify-content:space-between;margin:0 auto}.taste-back{display:inline-flex;min-height:30px;align-items:center;gap:8px;color:var(--e-muted);font-size:12px;font-weight:500;text-decoration:none;transition:color .14s ease-out}.taste-back svg{width:11px;height:11px;transition:transform .18s cubic-bezier(.16,1,.3,1)}.taste-back:hover,.taste-back:focus-visible{color:var(--e-text)}.taste-back:hover svg,.taste-back:focus-visible svg{transform:translate(-2px)}.taste-shell{width:min(calc(100% - 48px),644px);margin:0 auto;padding:32px 0 170px}.taste-intro{padding-bottom:30px;border-bottom:1px solid var(--e-line)}.taste-intro h1,.taste-intro p,.taste-category h2{margin:0}.taste-intro h1{color:var(--e-text);font-size:30px;font-weight:600;letter-spacing:-.04em;line-height:1.08}.taste-intro p{max-width:480px;margin-top:12px;color:var(--e-muted);font-size:15px;line-height:1.55}.taste-category-list{display:grid;gap:56px;margin-top:32px}.taste-category{min-width:0}.taste-category-heading{padding-bottom:12px;border-bottom:1px solid var(--e-line)}.taste-category h2{color:var(--e-text);font-size:15px;font-weight:600;letter-spacing:-.015em;line-height:20px}.taste-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px 12px;padding-top:16px}.taste-item{display:grid;min-width:0;align-content:start;gap:9px;color:inherit;text-decoration:none;transition:transform .16s cubic-bezier(.16,1,.3,1)}.taste-item-stage{position:relative;display:block;padding-bottom:9px}.taste-item-stage:after{position:absolute;right:-6px;bottom:0;left:-6px;height:9px;border-top:1px solid var(--e-line-strong);border-bottom:1px solid var(--e-line);background:linear-gradient(180deg,color-mix(in srgb,var(--e-surface-muted) 82%,var(--e-bg)) 0 45%,var(--e-surface-muted) 46% 100%);box-shadow:0 7px 12px color-mix(in srgb,var(--e-text) 8%,transparent);content:""}.taste-item:first-child .taste-item-stage:after{left:0}.taste-item:last-child .taste-item-stage:after{right:0}.taste-item-art{position:relative;z-index:1;display:block;isolation:isolate;aspect-ratio:2 / 3;border:1px solid var(--e-line);border-radius:8px;background:var(--e-surface-muted);transition:border-color .16s ease-out,transform .18s cubic-bezier(.16,1,.3,1)}.taste-category[data-kind=music] .taste-item-art{aspect-ratio:1}.taste-category[data-kind=player] .taste-item-art{aspect-ratio:5 / 7}.taste-category[data-kind=video] .taste-item-art{aspect-ratio:16 / 9}.taste-category[data-kind=interest] .taste-item-art{aspect-ratio:4 / 3}.taste-item-art img{position:relative;z-index:1;display:block;width:100%;height:100%;border-radius:inherit;object-fit:cover;transition:transform .22s cubic-bezier(.16,1,.3,1)}.taste-category[data-kind=movie] .taste-item-art{padding:3px 7px 3px 3px;border-color:#3b3d3f;border-radius:5px;background:#151718;box-shadow:5px 8px 14px color-mix(in srgb,var(--e-text) 13%,transparent)}.taste-category[data-kind=movie] .taste-item-art:after{position:absolute;top:3px;right:2px;bottom:3px;width:4px;border-radius:0 2px 2px 0;background:linear-gradient(90deg,#55595b,#090a0a);content:""}.taste-category[data-kind=book] .taste-item-art{width:calc(100% - 4px);padding:3px 7px 3px 5px;border-color:#c5c1b9;border-radius:4px 7px 7px 4px;background:#dedbd3;box-shadow:5px 8px 14px color-mix(in srgb,var(--e-text) 13%,transparent)}.taste-category[data-kind=book] .taste-item-art:before{position:absolute;inset:3px auto 3px 3px;z-index:2;width:6px;border-right:1px solid rgb(255 255 255 / .24);background:linear-gradient(90deg,rgb(0 0 0 / .34),transparent);content:"";pointer-events:none}.taste-category[data-kind=book] .taste-item-art:after{position:absolute;top:4px;right:1px;bottom:4px;width:6px;border-radius:0 4px 4px 0;background:repeating-linear-gradient(180deg,#f2efe7 0 2px,#d1cdc4 2px 3px);content:""}.taste-category[data-kind=video] .taste-item-art{padding:4px 4px 8px;border-color:#46494b;border-radius:6px;background:#17191a;box-shadow:0 7px 13px color-mix(in srgb,var(--e-text) 12%,transparent)}.taste-category[data-kind=video] .taste-item-art:after{position:absolute;right:34%;bottom:-6px;left:34%;height:7px;border-radius:0 0 3px 3px;background:linear-gradient(180deg,#3d4143,#1a1c1d);content:""}.taste-category[data-kind=player] .taste-item-art{padding:6px;border-color:#a0a3a4;border-radius:7px;background:linear-gradient(145deg,#f2f2f0,#a9acad 42%,#f7f7f5 62%,#929596);box-shadow:5px 8px 14px color-mix(in srgb,var(--e-text) 13%,transparent)}.taste-category[data-kind=player] .taste-item-art:after{position:absolute;inset:3px;z-index:2;border:1px solid rgb(255 255 255 / .52);border-radius:5px;box-shadow:inset 0 0 16px #ffffff29;content:"";pointer-events:none}.taste-category[data-kind=music] .taste-item-art{width:calc(100% - 12px);margin-right:12px;border:0;border-radius:5px;background:transparent}.taste-category[data-kind=music] .taste-item-art:before{position:absolute;top:11%;right:-12%;width:78%;aspect-ratio:1;border:1px solid #383b3d;border-radius:50%;background:radial-gradient(circle,#aeb1b2 0 4%,#181a1b 5% 17%,transparent 18%),repeating-radial-gradient(circle,#17191a 0 2px,#292c2e 3px 4px);box-shadow:4px 6px 11px color-mix(in srgb,var(--e-text) 13%,transparent);content:""}.taste-category[data-kind=music] .taste-item-art img{border:1px solid var(--e-line-strong);box-shadow:5px 8px 14px color-mix(in srgb,var(--e-text) 14%,transparent)}.taste-category[data-kind=interest] .taste-item-art{padding:5px 5px 14px;border-color:#c9cbca;border-radius:5px;background:#ececea;box-shadow:5px 8px 14px color-mix(in srgb,var(--e-text) 13%,transparent)}.taste-category[data-kind=interest] .taste-item-art img{border-radius:2px}html[data-color-mode=light] .taste-page .taste-item-art{border-color:#17191a}html[data-color-mode=light] .taste-page .taste-category[data-kind=music] .taste-item-art{border-color:transparent}html[data-color-mode=light] .taste-page .taste-category[data-kind=music] .taste-item-art img{border-color:#17191a}.taste-item-copy{display:grid;min-width:0;gap:2px}.taste-item-copy strong,.taste-item-copy span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.taste-item-copy strong{color:var(--e-text);font-size:12.5px;font-weight:550;letter-spacing:-.01em;line-height:1.35;-webkit-line-clamp:2}.taste-item-copy span{color:var(--e-faint);font-size:11px;line-height:1.4;-webkit-line-clamp:1}.taste-item:active{transform:scale(.985)}.taste-item:focus-visible{outline:2px solid var(--e-accent);outline-offset:4px}@media(hover:hover)and (pointer:fine){.taste-item:hover .taste-item-art{border-color:var(--e-line-strong);transform:translateY(-2px)}.taste-item:hover .taste-item-art img{transform:scale(1.025)}}@media(max-width:620px){.taste-navigation-inner,.taste-shell{width:min(calc(100% - 32px),644px)}.taste-shell{padding-top:28px}.taste-category-list{gap:48px}.taste-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.taste-item:nth-child(odd) .taste-item-stage:after{left:0}.taste-item:nth-child(2n) .taste-item-stage:after{right:0}}@media(max-width:390px){.taste-navigation-inner,.taste-shell{width:min(calc(100% - 24px),644px)}}@media(prefers-reduced-motion:reduce){.taste-back,.taste-back svg,.taste-item,.taste-item-art,.taste-item-art img{transition:none}}.blog-page{min-height:100dvh;background:var(--e-bg);color:var(--e-text)}.blog-shell{width:min(calc(100% - 48px),644px);margin:0 auto;padding:32px 0 170px}.blog-intro,.blog-article-header{padding-bottom:30px;border-bottom:1px solid var(--e-line)}.blog-intro h1,.blog-intro p,.blog-index h2,.blog-article-header h1,.blog-article-header p,.blog-article-body p{margin:0}.blog-intro h1,.blog-article-header h1{color:var(--e-text);font-size:30px;font-weight:600;letter-spacing:-.04em;line-height:1.08}.blog-intro p,.blog-article-header p{max-width:520px;margin-top:12px;color:var(--e-muted);font-size:15px;line-height:1.55}.blog-index{margin-top:32px}.blog-index h2{margin-bottom:12px;color:var(--e-text);font-size:15px;font-weight:600;letter-spacing:-.015em;line-height:20px}.blog-post-list{border-top:1px solid var(--e-line)}.blog-post-list>a{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;min-height:82px;padding:14px 0;border-bottom:1px solid var(--e-line);color:inherit;text-decoration:none}.blog-post-copy,.blog-post-meta{display:flex}.blog-post-copy{min-width:0;flex-direction:column;gap:3px}.blog-post-copy strong{color:var(--e-text);font-size:14px;font-weight:570;letter-spacing:-.01em;line-height:20px;transition:color .14s ease-out}.blog-post-copy>span{color:var(--e-muted);font-size:12px;line-height:18px}.blog-post-meta{align-items:center;gap:12px;color:var(--e-faint)}.blog-post-meta time{font-size:11px;line-height:18px;white-space:nowrap}.blog-post-meta svg{width:11px;height:11px;transition:color .14s ease-out,transform .14s ease-out}.blog-post-list>a:hover .blog-post-copy strong,.blog-post-list>a:focus-visible .blog-post-copy strong,.blog-post-list>a:hover .blog-post-meta svg,.blog-post-list>a:focus-visible .blog-post-meta svg{color:var(--e-accent)}.blog-post-list>a:hover .blog-post-meta svg,.blog-post-list>a:focus-visible .blog-post-meta svg{transform:translate(2px)}.blog-post-list>a:focus-visible{outline:1px solid var(--e-accent);outline-offset:4px}.blog-article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:18px}.blog-article-header time{color:var(--e-faint);font-size:11px;line-height:18px}.blog-post-copy .blog-view-count,.blog-article-header .blog-view-count{color:var(--e-muted);font-size:11px;line-height:18px}.blog-post-copy .blog-view-count{margin-top:4px}.blog-view-count svg{width:12px;height:12px}.blog-view-count .view-count-number{min-width:0;text-align:left}.blog-article-body{display:grid;grid-template-columns:minmax(0,1fr);min-width:0;gap:20px;margin-top:30px;color:var(--e-muted);font-size:16px;letter-spacing:-.005em;line-height:1.7}.blog-article-body>p,.blog-article-body>h2{max-width:590px}.blog-article-body h2{margin:20px 0 0;color:var(--e-text);font-size:22px;font-weight:600;letter-spacing:-.025em;line-height:1.3}.blog-article-body h3{margin:12px 0 0;color:var(--e-text);font-size:18px;font-weight:600;letter-spacing:-.02em;line-height:1.4}.blog-article-body code{color:var(--e-text);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.85em;overflow-wrap:anywhere}.blog-article-body pre{margin:4px 0;padding:18px 20px;overflow-x:auto;border-radius:6px;background:var(--e-surface-muted);color:var(--e-text);font-size:13px;line-height:1.7;tab-size:2}.blog-article-body pre code{font-size:inherit;overflow-wrap:normal}.blog-article-body blockquote{margin:4px 0;padding-left:20px;border-left:2px solid var(--e-line-strong);color:var(--e-text)}.blog-table{overflow-x:auto}.blog-table table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}.blog-table th,.blog-table td{padding:12px 16px 12px 0;border-bottom:1px solid var(--e-line)}.blog-table th{color:var(--e-text);font-weight:600}.blog-article-body pre:focus-visible,.blog-table:focus-visible{outline:2px solid var(--e-accent);outline-offset:4px}.blog-article-body strong{color:var(--e-text);font-weight:600}.blog-article-body a{color:var(--e-text);text-decoration:underline;text-decoration-color:var(--e-faint);text-underline-offset:3px}.blog-article-body a:hover{color:var(--e-accent);text-decoration-color:currentColor}.blog-article-body a:focus-visible{outline:2px solid var(--e-accent);outline-offset:4px}.blog-article-body figure{min-width:0;margin:12px 0}.blog-article-body figure>a{display:block}.blog-article-body img{display:block;width:100%;height:auto;border:1px solid var(--e-line);border-radius:6px}.blog-article-body figcaption{margin-top:12px;font-size:12px;line-height:1.6;text-align:center}.blog-article-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:12px;padding-top:24px;border-top:1px solid var(--e-line);font-size:14px}@media(max-width:620px){.blog-shell{width:min(calc(100% - 32px),644px);padding-top:28px}.blog-post-list>a{grid-template-columns:1fr;gap:8px}.blog-post-meta{justify-content:space-between}}@media(max-width:390px){.blog-shell{width:min(calc(100% - 24px),644px)}}@media(prefers-reduced-motion:reduce){.blog-post-copy strong,.blog-post-meta svg{transition:none}}
