:root{--bg-color:#fbfaff;--surface:#fff;--surface-container:#f2eefb;--surface-container-high:#e9e2f8;--text-color:#1c1a22;--text-muted:#635f6f;--outline:#cac4d8;--primary:#6750e0;--primary-on:#fff;--primary-container:#e6deff;--secondary:#17a982;--secondary-container:#d3f5e8;--tertiary:#a855f7;--tertiary-container:#f3e3ff;--nav-bg:#ffffffb3;--nav-border:#e0e0e0;--popup-bg:#fff;--popup-border:#e0e0e0;--popup-hover:#f5f5f5;--btn-bg:#f0f0f0;--btn-hover:#e4e4e4;--border-color:#ccc;--hover-bg:#f9f9f9;--role-color:#a855f7;--glass-bg:#ffffffa6;--glass-border:#ffffff80;--shape-xs:8px;--shape-sm:12px;--shape-md:16px;--shape-lg:24px;--shape-xl:32px;--shape-full:999px;--ease-spatial:cubic-bezier(.34, 1.56, .64, 1);--ease-spatial-slow:cubic-bezier(.22, 1.28, .36, 1);--ease-effects:cubic-bezier(.2, 0, 0, 1);--dur-fast:.2s;--dur-default:.35s;--dur-slow:.5s}[data-theme=dark]{--bg-color:#131018;--surface:#1a1620;--surface-container:#211c2b;--surface-container-high:#2b2536;--text-color:#ece7f5;--text-muted:#9d97ab;--outline:#4a4457;--primary:#c8b8ff;--primary-on:#2c1a66;--primary-container:#4a3a94;--secondary:#6fe0bd;--secondary-container:#0f5c46;--tertiary:#e5b8ff;--tertiary-container:#6a3a94;--nav-bg:#131018b3;--nav-border:#333;--popup-bg:#1a1620;--popup-border:#332d40;--popup-hover:#2b2536;--btn-bg:#211c2b;--btn-hover:#2b2536;--border-color:#332d40;--hover-bg:#1e1926;--role-color:#e5b8ff;--glass-bg:#18141f8c;--glass-border:#ffffff14}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg-color:#131018;--surface:#1a1620;--surface-container:#211c2b;--surface-container-high:#2b2536;--text-color:#ece7f5;--text-muted:#9d97ab;--outline:#4a4457;--primary:#c8b8ff;--primary-on:#2c1a66;--primary-container:#4a3a94;--secondary:#6fe0bd;--secondary-container:#0f5c46;--tertiary:#e5b8ff;--tertiary-container:#6a3a94;--nav-bg:#131018b3;--nav-border:#333;--popup-bg:#1a1620;--popup-border:#332d40;--popup-hover:#2b2536;--btn-bg:#211c2b;--btn-hover:#2b2536;--border-color:#332d40;--hover-bg:#1e1926;--role-color:#e5b8ff;--glass-bg:#18141f8c;--glass-border:#ffffff14}}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-color);min-height:100vh;transition:background-color .4s var(--ease-effects), color .4s var(--ease-effects);padding-top:92px;font-family:JetBrains Mono,monospace;line-height:1.6}@media (max-width:540px){body{padding-top:80px}}#animated-text{align-items:baseline;animation:4s ease-in-out infinite footerTextDrift;display:inline-flex}.animated-dot{opacity:0;animation:1.2s ease-in-out infinite footerDotFade;display:inline-block}@keyframes footerTextDrift{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes footerDotFade{0%,to{opacity:0;transform:translateY(2px)}50%{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){#animated-text,.animated-dot{opacity:1;animation:none;transform:none}}
.TopBar-module__hfKmSa__topBar{background:var(--glass-bg);-webkit-backdrop-filter:blur(24px)saturate(180%);border:1px solid var(--glass-border);border-radius:var(--shape-full);z-index:1000;max-width:1160px;height:56px;transition:background var(--dur-default) var(--ease-effects), border-color var(--dur-default) var(--ease-effects);grid-template-columns:1fr auto 1fr;align-items:center;margin:0 auto;padding:0 10px;display:grid;position:fixed;top:16px;left:16px;right:16px;box-shadow:0 8px 32px #00000024,0 1px 4px #00000014}@media (max-width:540px){.TopBar-module__hfKmSa__topBar{height:52px;padding:0 6px;top:12px;left:12px;right:12px}}.TopBar-module__hfKmSa__leftSlot{align-items:center;display:flex}.TopBar-module__hfKmSa__breadcrumb{-webkit-user-select:none;user-select:none;align-items:center;display:flex}.TopBar-module__hfKmSa__breadcrumbItem{align-items:center;display:flex}.TopBar-module__hfKmSa__breadcrumbSep{color:var(--text-color);opacity:.2;margin:0 8px;font-size:.85rem;font-weight:300}.TopBar-module__hfKmSa__breadcrumbPrev{color:var(--text-color);opacity:.35;letter-spacing:.02em;transition:opacity var(--dur-fast) var(--ease-effects);border-radius:var(--shape-xs);font-size:.8rem;font-weight:400;text-decoration:none}@media (hover:hover) and (pointer:fine){.TopBar-module__hfKmSa__breadcrumbPrev:hover{opacity:.65}}.TopBar-module__hfKmSa__breadcrumbPrev:active{opacity:.8}.TopBar-module__hfKmSa__breadcrumbCurrent{color:var(--text-color);letter-spacing:.02em;font-size:.85rem;font-weight:600}@media (max-width:540px){.TopBar-module__hfKmSa__breadcrumbItemHidden,.TopBar-module__hfKmSa__breadcrumbSep{display:none}}.TopBar-module__hfKmSa__rightControls{justify-content:flex-end;align-items:center;display:flex;position:relative}.TopBar-module__hfKmSa__settingsBtnWrap{justify-content:center;align-items:center;display:flex;position:relative}.TopBar-module__hfKmSa__settingsBtn{color:var(--text-color);cursor:pointer;border-radius:var(--shape-full);transition:background-color var(--dur-fast) var(--ease-effects), color var(--dur-fast) var(--ease-effects), transform var(--dur-default) var(--ease-spatial);z-index:1;-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;width:40px;height:40px;padding:8px;font-size:1.3rem;display:flex;position:relative}@media (hover:hover) and (pointer:fine){.TopBar-module__hfKmSa__settingsBtn:hover{background-color:var(--primary-container);color:var(--primary);transform:scale(1.08)}}.TopBar-module__hfKmSa__settingsBtn:active{background-color:var(--primary-container);color:var(--primary);transition-duration:var(--dur-fast);transform:scale(.92)}.TopBar-module__hfKmSa__settingsBtnActive{background-color:var(--primary-container);color:var(--primary)}@media (hover:hover) and (pointer:fine){.TopBar-module__hfKmSa__settingsBtnWrap:hover .TopBar-module__hfKmSa__tooltip{opacity:1;pointer-events:none;transform:translateY(-50%)translate(0)}}.TopBar-module__hfKmSa__tooltip{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px)saturate(160%);border:1px solid var(--glass-border);color:var(--text-color);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-effects), transform var(--dur-default) var(--ease-spatial);letter-spacing:.03em;border-radius:8px;padding:6px 12px;font-family:inherit;font-size:.75rem;font-weight:500;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)translate(6px);box-shadow:0 8px 24px #00000026}.TopBar-module__hfKmSa__tooltipRight{left:calc(100% + 12px);right:auto;transform:translateY(-50%)translate(-6px)}@media (hover:hover) and (pointer:fine){.TopBar-module__hfKmSa__settingsBtnWrap:hover .TopBar-module__hfKmSa__tooltipRight{transform:translateY(-50%)translate(0)}}.TopBar-module__hfKmSa__tooltipHidden{opacity:0!important;pointer-events:none!important}.TopBar-module__hfKmSa__popup{background:var(--glass-bg);-webkit-backdrop-filter:blur(24px)saturate(180%);border:1px solid var(--glass-border);border-radius:var(--shape-lg);opacity:0;pointer-events:none;min-width:240px;transition:opacity var(--dur-slow) var(--ease-spatial), transform var(--dur-slow) var(--ease-spatial), background var(--dur-default) var(--ease-effects);transform-origin:100% 0;padding:20px;position:absolute;top:calc(100% + 15px);right:0;transform:translateY(-15px)scale(.95);box-shadow:0 16px 40px #0003}.TopBar-module__hfKmSa__popup.TopBar-module__hfKmSa__open{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.TopBar-module__hfKmSa__popupSection{margin-bottom:20px}.TopBar-module__hfKmSa__popupSection:last-child{margin-bottom:0}.TopBar-module__hfKmSa__popupTitle{text-transform:uppercase;letter-spacing:.1em;color:var(--text-color);opacity:.5;margin-bottom:12px;font-size:.8rem;font-weight:700}.TopBar-module__hfKmSa__optionRow{gap:8px;display:flex}.TopBar-module__hfKmSa__optionBtn{border:1px solid var(--popup-border);color:var(--text-color);border-radius:var(--shape-full);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-effects), color var(--dur-fast) var(--ease-effects), border-color var(--dur-fast) var(--ease-effects), transform var(--dur-default) var(--ease-spatial);-webkit-tap-highlight-color:transparent;background-color:#0000;flex:1;justify-content:center;align-items:center;padding:8px 0;font-family:inherit;font-size:.95rem;font-weight:500;display:flex}.TopBar-module__hfKmSa__optionBtn.TopBar-module__hfKmSa__active{background-color:var(--primary);color:var(--primary-on);border-color:var(--primary);transform:scale(1.05)}@media (hover:hover) and (pointer:fine){.TopBar-module__hfKmSa__optionBtn:not(.TopBar-module__hfKmSa__active):hover{background-color:var(--popup-hover)}}.TopBar-module__hfKmSa__optionBtn:not(.TopBar-module__hfKmSa__active):active{background-color:var(--popup-hover);transition-duration:var(--dur-fast);transform:scale(.96)}
.SideNav-module__W2m5EW__overlay{z-index:999;pointer-events:none;background:0 0;transition:background .3s;position:fixed;inset:0}.SideNav-module__W2m5EW__overlayVisible{pointer-events:auto;background:#00000040}.SideNav-module__W2m5EW__sideNav{background:var(--glass-bg);-webkit-backdrop-filter:blur(24px)saturate(180%);border:1px solid var(--glass-border);border-radius:var(--shape-lg);z-index:1000;width:260px;transition:transform var(--dur-slow) var(--ease-spatial);padding:20px 12px;position:fixed;top:84px;bottom:16px;left:16px;overflow-y:auto;transform:translate(calc(-100% - 32px));box-shadow:0 8px 32px #00000024,0 1px 4px #00000014}.SideNav-module__W2m5EW__sideNav.SideNav-module__W2m5EW__open{transform:translate(0)}@media (max-width:540px){.SideNav-module__W2m5EW__sideNav{top:76px;bottom:12px;left:12px;transform:translate(calc(-100% - 24px))}}.SideNav-module__W2m5EW__navList{flex-direction:column;gap:4px;display:flex}.SideNav-module__W2m5EW__navItem{border-radius:var(--shape-full);color:var(--text-color);cursor:pointer;text-align:left;width:100%;transition:background-color var(--dur-fast) var(--ease-effects), opacity var(--dur-fast) var(--ease-effects);opacity:.7;-webkit-tap-highlight-color:transparent;background:0 0;border:none;align-items:center;gap:12px;padding:10px 16px;font-family:inherit;font-size:.9rem;font-weight:500;text-decoration:none;display:flex}@media (hover:hover) and (pointer:fine){.SideNav-module__W2m5EW__navItem:hover{background:var(--popup-hover);opacity:1}}.SideNav-module__W2m5EW__navItem:active{background:var(--popup-hover);opacity:1}.SideNav-module__W2m5EW__navItemActive{opacity:1;background:var(--primary-container);color:var(--primary)}.SideNav-module__W2m5EW__navGroupToggle{justify-content:flex-start}.SideNav-module__W2m5EW__chevron{opacity:.5;transition:transform var(--dur-default) var(--ease-spatial);margin-left:auto;font-size:.7rem}.SideNav-module__W2m5EW__chevronOpen{transform:rotate(90deg)}.SideNav-module__W2m5EW__navGroup{flex-direction:column;display:flex}.SideNav-module__W2m5EW__navSubList{max-height:0;transition:max-height var(--dur-default) var(--ease-spatial), opacity var(--dur-fast) var(--ease-effects);opacity:0;flex-direction:column;gap:2px;padding-left:20px;display:flex;overflow:hidden}.SideNav-module__W2m5EW__navSubList.SideNav-module__W2m5EW__navSubListOpen{opacity:1;max-height:200px}.SideNav-module__W2m5EW__navSubItem{border-radius:var(--shape-sm);color:var(--text-color);opacity:.55;transition:background-color var(--dur-fast) var(--ease-effects), opacity var(--dur-fast) var(--ease-effects);-webkit-tap-highlight-color:transparent;align-items:center;padding:8px 14px;font-size:.85rem;font-weight:400;text-decoration:none;display:flex;position:relative}.SideNav-module__W2m5EW__navSubItem:before{content:"";background:var(--primary);opacity:0;width:2px;height:14px;transition:opacity var(--dur-fast) var(--ease-effects);border-radius:2px;position:absolute;top:50%;left:0;transform:translateY(-50%)}@media (hover:hover) and (pointer:fine){.SideNav-module__W2m5EW__navSubItem:hover{background:var(--popup-hover);opacity:.85}}.SideNav-module__W2m5EW__navSubItem:active{background:var(--popup-hover);opacity:.85}.SideNav-module__W2m5EW__navSubItemActive{opacity:1;color:var(--primary)}.SideNav-module__W2m5EW__navSubItemActive:before{opacity:1}

.page-module__E0kJGG__container{flex-direction:column;width:100%;max-width:1200px;min-height:100vh;margin:0 auto;display:flex}.page-module__E0kJGG__main{flex:1;grid-template-columns:1.15fr auto .85fr;align-items:center;gap:48px;padding:40px;display:grid}.page-module__E0kJGG__introCol{text-align:left;flex-direction:column;align-items:flex-start;display:flex}.page-module__E0kJGG__heroDivider{background:linear-gradient(to bottom, transparent, var(--outline) 15%, var(--outline) 85%, transparent);align-self:stretch;width:1px}.page-module__E0kJGG__main h1{letter-spacing:-.03em;background:linear-gradient(120deg, var(--text-color) 0%, var(--primary) 25%, var(--tertiary) 50%, var(--primary) 75%, var(--text-color) 100%);-webkit-text-fill-color:transparent;background-size:300% 100%;-webkit-background-clip:text;background-clip:text;font-size:3.4rem;font-weight:700;animation:8s ease-in-out infinite page-module__E0kJGG__titleShimmer}@keyframes page-module__E0kJGG__titleShimmer{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@media (prefers-reduced-motion:reduce){.page-module__E0kJGG__main h1{background-position:0%;animation:none}}.page-module__E0kJGG__tagline{max-width:480px;color:var(--text-muted);margin-top:18px;font-size:1rem;font-weight:300;line-height:1.7}.page-module__E0kJGG__links{flex-direction:column;justify-content:center;align-items:stretch;gap:16px;width:100%;max-width:420px;display:flex}.page-module__E0kJGG__footer{text-align:center;border-top:1px solid var(--border-color);width:100vw;margin-left:calc(50% - 50vw);padding:30px}.page-module__E0kJGG__footer #animated-text{color:var(--text-muted);letter-spacing:1px;font-size:1rem;font-weight:400}@media (max-width:900px){.page-module__E0kJGG__main{text-align:center;grid-template-columns:1fr;justify-items:center;gap:0}.page-module__E0kJGG__introCol{text-align:center;align-items:center}.page-module__E0kJGG__heroDivider{display:none}.page-module__E0kJGG__links{margin-top:44px}.page-module__E0kJGG__main h1{font-size:4rem}}@media (max-width:768px){.page-module__E0kJGG__main h1{font-size:2.6rem}}@media (max-width:480px){.page-module__E0kJGG__main{padding:30px 20px}.page-module__E0kJGG__main h1{font-size:2.1rem}}
.GithubCard-module__CP3e5W__card{background:var(--bg-color);border:1px solid var(--outline);border-radius:var(--shape-xl);width:100%;max-width:420px;color:var(--text-color);transition:transform var(--dur-default) var(--ease-spatial), border-color var(--dur-fast) var(--ease-effects), box-shadow var(--dur-default) var(--ease-spatial);flex-direction:column;display:flex;position:relative;overflow:hidden}.GithubCard-module__CP3e5W__card:before{content:"";background:radial-gradient(120px 80px at 0% 0%, color-mix(in srgb, var(--primary) 16%, transparent), transparent 70%);opacity:0;transition:opacity var(--dur-default) var(--ease-effects);pointer-events:none;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.GithubCard-module__CP3e5W__card:hover{border-color:var(--primary);box-shadow:0 14px 36px -12px color-mix(in srgb, var(--primary) 35%, transparent);transform:translateY(-4px)scale(1.015)}.GithubCard-module__CP3e5W__card:hover:before{opacity:1}}.GithubCard-module__CP3e5W__card:active{transition-duration:var(--dur-fast);transform:scale(.98)}.GithubCard-module__CP3e5W__mainRow{color:inherit;-webkit-tap-highlight-color:transparent;align-items:center;gap:14px;padding:14px 18px;text-decoration:none;display:flex}.GithubCard-module__CP3e5W__avatar{border-radius:var(--shape-full);background:var(--surface-container);border:1px solid var(--outline);flex-shrink:0;width:56px;height:56px;overflow:hidden}.GithubCard-module__CP3e5W__avatar img{object-fit:cover;width:100%;height:100%;display:block}.GithubCard-module__CP3e5W__info{text-align:left;flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.GithubCard-module__CP3e5W__login{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:600;overflow:hidden}.GithubCard-module__CP3e5W__bio{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:300;overflow:hidden}.GithubCard-module__CP3e5W__stats{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.GithubCard-module__CP3e5W__stat{color:var(--text-muted);align-items:center;gap:6px;font-size:.8rem;font-weight:500;display:flex}.GithubCard-module__CP3e5W__stat i{color:var(--tertiary);font-size:.7rem}.GithubCard-module__CP3e5W__topRepo{background:var(--surface-container);border-top:1px solid var(--outline);color:var(--text-muted);align-items:center;gap:8px;padding:9px 18px;font-size:.75rem;font-weight:500;display:flex}.GithubCard-module__CP3e5W__topRepo>i{color:var(--tertiary);flex-shrink:0;font-size:.7rem}.GithubCard-module__CP3e5W__topRepoStars{color:var(--text-color);flex-shrink:0;font-weight:600}.GithubCard-module__CP3e5W__topRepoName{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--text-muted);transition:color var(--dur-fast) var(--ease-effects);-webkit-tap-highlight-color:transparent;flex:1;text-decoration:none;overflow:hidden}@media (hover:hover) and (pointer:fine){.GithubCard-module__CP3e5W__topRepoName:hover{color:var(--primary);text-decoration:underline}}.GithubCard-module__CP3e5W__topRepoName:active{color:var(--primary)}.GithubCard-module__CP3e5W__topRepoLang{border-radius:var(--shape-full);background:var(--primary-container);color:var(--primary);flex-shrink:0;padding:2px 10px;font-size:.68rem;font-weight:600}.GithubCard-module__CP3e5W__skeleton{background:var(--surface-container);animation:1.4s ease-in-out infinite GithubCard-module__CP3e5W__pulse}.GithubCard-module__CP3e5W__skeletonText{border-radius:var(--shape-xs);background:var(--surface-container);width:100%;height:.9em;animation:1.4s ease-in-out infinite GithubCard-module__CP3e5W__pulse;display:inline-block}@keyframes GithubCard-module__CP3e5W__pulse{0%,to{opacity:.6}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.GithubCard-module__CP3e5W__card,.GithubCard-module__CP3e5W__card:before,.GithubCard-module__CP3e5W__skeleton,.GithubCard-module__CP3e5W__skeletonText{transition:none;animation:none}}
.TelegramCard-module__SQS1Ya__card{background:var(--bg-color);border:1px solid var(--outline);border-radius:var(--shape-xl);width:100%;max-width:420px;color:var(--text-color);transition:transform var(--dur-default) var(--ease-spatial), border-color var(--dur-fast) var(--ease-effects), box-shadow var(--dur-default) var(--ease-spatial);flex-direction:column;display:flex;position:relative;overflow:hidden}.TelegramCard-module__SQS1Ya__card:before{content:"";background:radial-gradient(120px 80px at 0% 0%, color-mix(in srgb, var(--primary) 16%, transparent), transparent 70%);opacity:0;transition:opacity var(--dur-default) var(--ease-effects);pointer-events:none;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.TelegramCard-module__SQS1Ya__card:hover{border-color:var(--primary);box-shadow:0 14px 36px -12px color-mix(in srgb, var(--primary) 35%, transparent);transform:translateY(-4px)scale(1.015)}.TelegramCard-module__SQS1Ya__card:hover:before{opacity:1}}.TelegramCard-module__SQS1Ya__mainRow{align-items:center;gap:14px;padding:14px 18px;display:flex}.TelegramCard-module__SQS1Ya__info{text-align:left;flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.TelegramCard-module__SQS1Ya__name{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:600;overflow:hidden}.TelegramCard-module__SQS1Ya__description{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:300;overflow:hidden}.TelegramCard-module__SQS1Ya__idBadge{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.TelegramCard-module__SQS1Ya__idLabel{letter-spacing:.04em;color:var(--text-muted);text-transform:uppercase;font-size:.65rem;font-weight:600}.TelegramCard-module__SQS1Ya__idValue{color:var(--text-color);font-variant-numeric:tabular-nums;font-size:.8rem;font-weight:500}.TelegramCard-module__SQS1Ya__usernames{flex-wrap:wrap;gap:2px 10px;margin-top:2px;display:flex}.TelegramCard-module__SQS1Ya__usernameLink{color:var(--primary);transition:color var(--dur-fast) var(--ease-effects);-webkit-tap-highlight-color:transparent;font-size:.75rem;font-weight:500;text-decoration:none}@media (hover:hover) and (pointer:fine){.TelegramCard-module__SQS1Ya__usernameLink:hover{text-decoration:underline}}.TelegramCard-module__SQS1Ya__usernameLink:active{color:var(--primary)}@media (prefers-reduced-motion:reduce){.TelegramCard-module__SQS1Ya__card,.TelegramCard-module__SQS1Ya__card:before,.TelegramCard-module__SQS1Ya__usernameLink{transition:none}}
.ProjectsSection-module__2qoIza__section{flex-direction:column;width:100%;max-width:1100px;margin:64px auto;padding:0 20px;display:flex}.ProjectsSection-module__2qoIza__header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.ProjectsSection-module__2qoIza__header h2{letter-spacing:-.02em;color:var(--text-color);font-size:1.4rem;font-weight:700}.ProjectsSection-module__2qoIza__sortRoot{position:relative}.ProjectsSection-module__2qoIza__sortTrigger{border-radius:var(--shape-full);border:1px solid var(--outline);background:var(--bg-color);color:var(--text-color);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-effects), background-color var(--dur-fast) var(--ease-effects), transform var(--dur-default) var(--ease-spatial);-webkit-tap-highlight-color:transparent;align-items:center;gap:8px;padding:7px 14px;font-family:inherit;font-size:.8rem;font-weight:500;display:flex}@media (hover:hover) and (pointer:fine){.ProjectsSection-module__2qoIza__sortTrigger:hover{border-color:var(--primary)}}.ProjectsSection-module__2qoIza__sortTrigger:active{transition-duration:var(--dur-fast);transform:scale(.97)}.ProjectsSection-module__2qoIza__sortTrigger:disabled{opacity:.6;cursor:default;transform:none}.ProjectsSection-module__2qoIza__sortTriggerActive{border-color:var(--primary);background:var(--primary-container);color:var(--primary)}.ProjectsSection-module__2qoIza__sortTriggerIcon{color:var(--tertiary);transition:color var(--dur-fast) var(--ease-effects);font-size:.7rem}.ProjectsSection-module__2qoIza__sortTriggerActive .ProjectsSection-module__2qoIza__sortTriggerIcon{color:var(--primary)}.ProjectsSection-module__2qoIza__sortChevron{opacity:.55;transition:transform var(--dur-default) var(--ease-spatial);font-size:.6rem}.ProjectsSection-module__2qoIza__sortChevronOpen{transform:rotate(180deg)}.ProjectsSection-module__2qoIza__sortMenu{background:var(--glass-bg);-webkit-backdrop-filter:blur(24px)saturate(180%);border:1px solid var(--glass-border);border-radius:var(--shape-md);opacity:0;pointer-events:none;transform-origin:100% 0;min-width:190px;transition:opacity var(--dur-slow) var(--ease-spatial), transform var(--dur-slow) var(--ease-spatial);z-index:10;padding:6px;list-style:none;position:absolute;top:calc(100% + 10px);right:0;transform:translateY(-10px)scale(.95);box-shadow:0 16px 40px #0003}.ProjectsSection-module__2qoIza__sortMenuOpen{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.ProjectsSection-module__2qoIza__sortOption{border-radius:var(--shape-sm);width:100%;color:var(--text-color);text-align:left;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-effects), color var(--dur-fast) var(--ease-effects);-webkit-tap-highlight-color:transparent;background:0 0;border:none;align-items:center;gap:10px;padding:9px 10px;font-family:inherit;font-size:.8rem;font-weight:500;display:flex}@media (hover:hover) and (pointer:fine){.ProjectsSection-module__2qoIza__sortOption:not(.ProjectsSection-module__2qoIza__sortOptionActive):hover{background-color:var(--popup-hover)}}.ProjectsSection-module__2qoIza__sortOption:not(.ProjectsSection-module__2qoIza__sortOptionActive):active{background-color:var(--popup-hover)}.ProjectsSection-module__2qoIza__sortOptionActive{background-color:var(--primary-container);color:var(--primary)}.ProjectsSection-module__2qoIza__sortOptionIcon{text-align:center;width:14px;color:var(--tertiary);font-size:.7rem}.ProjectsSection-module__2qoIza__sortOptionActive .ProjectsSection-module__2qoIza__sortOptionIcon{color:var(--primary)}.ProjectsSection-module__2qoIza__sortOptionCheck{color:var(--primary);margin-left:auto;font-size:.7rem}.ProjectsSection-module__2qoIza__grid{transition:min-height var(--dur-default) var(--ease-spatial);grid-template-columns:1.3fr auto 1fr;align-items:stretch;gap:24px;display:grid}.ProjectsSection-module__2qoIza__divider{background:linear-gradient(to bottom, transparent, var(--outline) 15%, var(--outline) 85%, transparent);width:1px}.ProjectsSection-module__2qoIza__stack{flex-direction:column;justify-content:space-between;gap:16px;display:flex}@media (max-width:900px){.ProjectsSection-module__2qoIza__grid{grid-template-columns:1fr;gap:16px}.ProjectsSection-module__2qoIza__divider{display:none}.ProjectsSection-module__2qoIza__stack{gap:16px}}.ProjectsSection-module__2qoIza__card{background:var(--bg-color);border:1px solid var(--outline);border-radius:var(--shape-lg);color:var(--text-color);transition:transform var(--dur-default) var(--ease-spatial), border-color var(--dur-fast) var(--ease-effects), box-shadow var(--dur-default) var(--ease-spatial);-webkit-tap-highlight-color:transparent;flex-direction:column;gap:8px;padding:16px 18px;text-decoration:none;display:flex}.ProjectsSection-module__2qoIza__gridEntering .ProjectsSection-module__2qoIza__card{animation:ProjectsSection-module__2qoIza__cardEnter .42s var(--ease-spatial) backwards;animation-delay:calc(var(--card-index,0) * 70ms)}.ProjectsSection-module__2qoIza__gridLeaving .ProjectsSection-module__2qoIza__card{animation:ProjectsSection-module__2qoIza__cardLeave .26s var(--ease-effects) forwards;animation-delay:calc(var(--card-index,0) * 40ms);pointer-events:none}@keyframes ProjectsSection-module__2qoIza__cardEnter{0%{opacity:0;filter:blur(4px);transform:translateY(14px)scale(.96)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes ProjectsSection-module__2qoIza__cardLeave{0%{opacity:1;filter:blur();transform:translateY(0)scale(1)}to{opacity:0;filter:blur(4px);transform:translateY(-10px)scale(.96)}}@media (hover:hover) and (pointer:fine){.ProjectsSection-module__2qoIza__card:hover{border-color:var(--primary);box-shadow:0 14px 36px -12px color-mix(in srgb, var(--primary) 35%, transparent);transform:translateY(-4px)scale(1.015)}}.ProjectsSection-module__2qoIza__card:active{transition-duration:var(--dur-fast);transform:scale(.98)}.ProjectsSection-module__2qoIza__cardFeatured{background:linear-gradient(165deg, var(--primary-container) 0%, var(--bg-color) 45%);border-color:var(--primary);gap:12px;padding:26px 28px}@media (hover:hover) and (pointer:fine){.ProjectsSection-module__2qoIza__cardFeatured:hover{box-shadow:0 18px 44px -14px color-mix(in srgb, var(--primary) 45%, transparent)}}.ProjectsSection-module__2qoIza__featuredBadge{border-radius:var(--shape-full);background:var(--primary);color:var(--primary-on);letter-spacing:.04em;text-transform:uppercase;align-self:flex-start;align-items:center;gap:6px;padding:4px 12px;font-size:.68rem;font-weight:700;display:inline-flex}.ProjectsSection-module__2qoIza__featuredBadge i{font-size:.62rem}.ProjectsSection-module__2qoIza__cardFeatured .ProjectsSection-module__2qoIza__name{white-space:normal;font-size:1.15rem}.ProjectsSection-module__2qoIza__descriptionFull{color:var(--text-muted);font-size:.85rem;font-weight:300;line-height:1.6}.ProjectsSection-module__2qoIza__cardFeatured .ProjectsSection-module__2qoIza__meta{border-top:1px solid color-mix(in srgb, var(--outline) 60%, transparent);gap:6px 16px;margin-top:16px;padding-top:16px}.ProjectsSection-module__2qoIza__cardFeatured .ProjectsSection-module__2qoIza__metaItem{font-size:.75rem}@media (max-width:900px){.ProjectsSection-module__2qoIza__cardFeatured{padding:18px 20px}.ProjectsSection-module__2qoIza__cardFeatured .ProjectsSection-module__2qoIza__name{font-size:1rem}}.ProjectsSection-module__2qoIza__name{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.ProjectsSection-module__2qoIza__description{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.25em;font-size:.75rem;font-weight:300;line-height:1.5;display:-webkit-box;overflow:hidden}.ProjectsSection-module__2qoIza__meta{flex-wrap:wrap;gap:4px 12px;margin-top:auto;display:flex}.ProjectsSection-module__2qoIza__metaItem{color:var(--text-muted);align-items:center;gap:5px;font-size:.7rem;font-weight:500;display:flex}.ProjectsSection-module__2qoIza__metaItem i{color:var(--tertiary);font-size:.65rem}.ProjectsSection-module__2qoIza__viewMore{color:var(--primary);transition:color var(--dur-fast) var(--ease-effects);-webkit-tap-highlight-color:transparent;align-self:center;margin-top:20px;font-size:.85rem;font-weight:500;text-decoration:none}@media (hover:hover) and (pointer:fine){.ProjectsSection-module__2qoIza__viewMore:hover{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}}.ProjectsSection-module__2qoIza__skeletonText{border-radius:var(--shape-xs);background:var(--surface-container);width:100%;height:.9em;animation:1.4s ease-in-out infinite ProjectsSection-module__2qoIza__pulse;display:inline-block}@keyframes ProjectsSection-module__2qoIza__pulse{0%,to{opacity:.6}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.ProjectsSection-module__2qoIza__card,.ProjectsSection-module__2qoIza__grid,.ProjectsSection-module__2qoIza__sortTrigger,.ProjectsSection-module__2qoIza__sortChevron,.ProjectsSection-module__2qoIza__sortMenu,.ProjectsSection-module__2qoIza__sortOption,.ProjectsSection-module__2qoIza__viewMore,.ProjectsSection-module__2qoIza__skeletonText{transition:none;animation:none}.ProjectsSection-module__2qoIza__gridEntering .ProjectsSection-module__2qoIza__card,.ProjectsSection-module__2qoIza__gridLeaving .ProjectsSection-module__2qoIza__card{opacity:1;filter:none;animation:none;transform:none}}

/* ---- cho: tiny additions (same design language, original components untouched) ---- */
.page-module__E0kJGG__moreSocials{display:inline-flex;align-items:center;gap:8px;margin-top:14px;color:var(--primary);font-size:.78rem;font-weight:500;text-decoration:none;transition:color var(--dur-fast) var(--ease-effects),gap var(--dur-default) var(--ease-spatial)}
@media (hover:hover) and (pointer:fine){.page-module__E0kJGG__moreSocials:hover{gap:12px;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}}
.page-module__E0kJGG__moreSocials i{font-size:.65rem}
.page-module__E0kJGG__prose{max-width:720px;color:var(--text-color);font-size:.86rem;font-weight:300;line-height:1.75}
.page-module__E0kJGG__prose p{margin:0 0 14px}
.page-module__E0kJGG__prose h2{letter-spacing:-.02em;margin:34px 0 12px;font-size:1.15rem;font-weight:700}
.page-module__E0kJGG__prose a{color:var(--primary);text-decoration:none}
@media (hover:hover) and (pointer:fine){.page-module__E0kJGG__prose a:hover{text-decoration:underline;text-underline-offset:4px}}
.page-module__E0kJGG__prose .muted{color:var(--text-muted)}
.page-module__E0kJGG__listCard{background:var(--bg-color);border:1px solid var(--outline);border-radius:var(--shape-lg);max-width:720px;padding:6px 0;transition:border-color var(--dur-fast) var(--ease-effects)}
.page-module__E0kJGG__listRow{align-items:center;gap:14px;padding:12px 20px;color:var(--text-color);text-decoration:none;display:flex;transition:background-color var(--dur-fast) var(--ease-effects)}
@media (hover:hover) and (pointer:fine){.page-module__E0kJGG__listRow:hover{background:var(--hover-bg)}}
.page-module__E0kJGG__listRow i{color:var(--tertiary);width:18px;text-align:center;font-size:.9rem;flex-shrink:0}
.page-module__E0kJGG__listName{font-size:.88rem;font-weight:600;letter-spacing:-.01em}
.page-module__E0kJGG__listDots{flex:1;border-bottom:1px dotted var(--outline);opacity:.55;min-width:12px;margin-bottom:5px}
.page-module__E0kJGG__listValue{color:var(--text-muted);font-size:.75rem;font-weight:400;white-space:nowrap}
.page-module__E0kJGG__backLink{display:inline-flex;align-items:center;gap:8px;color:var(--primary);font-size:.8rem;font-weight:500;text-decoration:none;margin-bottom:22px}
@media (hover:hover) and (pointer:fine){.page-module__E0kJGG__backLink:hover{text-decoration:underline;text-underline-offset:4px}}

/* ---- cho: expanded grid + misc helpers (same visual language) ---- */
.ProjectsSection-module__2qoIza__gridExpanded{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
@media (max-width:900px){.ProjectsSection-module__2qoIza__gridExpanded{grid-template-columns:1fr}}
.ProjectsSection-module__2qoIza__gridExpanded .ProjectsSection-module__2qoIza__divider,
.ProjectsSection-module__2qoIza__gridExpanded .ProjectsSection-module__2qoIza__stack{display:contents}
.page-module__E0kJGG__viewMoreWrap{display:flex;justify-content:center}
.page-module__E0kJGG__note{color:var(--text-muted);font-size:.7rem;font-weight:300;margin-top:18px;text-align:center}
.GithubCard-module__CP3e5W__topRepo{display:none}
