html,body{width:100%;height:100%}input::-ms-clear{display:none}input::-ms-reveal{display:none}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:#0000;font-family:sans-serif;line-height:1.15}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1em}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{text-align:left;caption-side:bottom;padding-top:.75em;padding-bottom:.3em}input,button,select,optgroup,textarea{color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner{border-style:none;padding:0}[type=reset]::-moz-focus-inner{border-style:none;padding:0}[type=submit]::-moz-focus-inner{border-style:none;padding:0}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical;overflow:auto}fieldset{border:0;min-width:0;margin:0;padding:0}legend{width:100%;max-width:100%;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal;margin-bottom:.5em;padding:0;display:block}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button{height:auto}[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}*{box-sizing:border-box}:root{--color-bg:#f5f7fb;--color-bg-dark:#020617;--color-header:#0f172af0;--color-header-dark:#020617f5;--color-text-muted:#64748b;--color-text-body:#475569;--color-text-light:#e5e7eb;--color-text-white:#fff;--color-primary:#2563eb;--color-primary-light:#60a5fa;--color-code-accent:#22c55e;--color-code-cyan:#06b6d4;--color-code-ink:#0f172a;--color-card-border:#e5e7eb;--color-card-dark:#0f172a;--color-dark-border:#94a3b838;--shadow-card:0 18px 45px #0f172a0f;--shadow-card-dark:0 18px 45px #00000059;--shadow-photo:0 25px 60px #0f172a2e;--header-height:72px;--section-x:8%;--section-y:2.75rem;--radius-card:20px;--radius-photo:32px;--font-base:Inter, system-ui, Arial, sans-serif}html{scroll-behavior:smooth}body{background:linear-gradient(#2563eb09 1px, transparent 1px), linear-gradient(90deg, #2563eb09 1px, transparent 1px), var(--color-bg);min-width:320px;font-family:var(--font-base);background-size:34px 34px;margin:0}#root{min-height:100vh}.app-layout{background:var(--color-bg);min-height:100vh}.center-screen{justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.app-header{z-index:100;height:var(--header-height);padding:0 clamp(1rem, 4vw, var(--section-x));background:var(--color-header);grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:1rem;display:grid;position:sticky;top:0}.header-left{justify-self:start;align-items:center;gap:clamp(.65rem,1.4vw,1rem);min-width:0;display:flex}.header-brand{min-width:0;color:var(--color-text-white);border-radius:999px;flex:0 auto;align-items:center;gap:.75rem;text-decoration:none;transition:color .2s,filter .2s,transform .2s;display:inline-flex}.header-brand:hover{color:var(--color-text-white);filter:drop-shadow(0 0 10px #22c55e38);transform:translateY(-1px)}.header-brand:focus-visible{outline-offset:6px;outline:2px solid #22c55eb8}.header-avatar{border:2px solid #ffffff59;flex-shrink:0;transition:border-color .2s,box-shadow .2s,transform .2s;box-shadow:0 6px 18px #0f172a40}.header-brand:hover .header-avatar,.header-brand:focus-visible .header-avatar{border-color:#86eface6;transform:rotate(-3deg)scale(1.04);box-shadow:0 8px 24px #0f172a57,0 0 0 4px #22c55e29}.header-logo{min-width:0;max-width:clamp(170px,28vw,300px);color:var(--color-text-white);letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:1rem;font-weight:800;transition:color .2s;overflow:hidden}.header-logo:before{content:"<";color:var(--color-code-accent);transition:color .2s}.header-logo:after{content:" />";color:var(--color-code-accent);transition:color .2s}.header-brand:hover .header-logo,.header-brand:focus-visible .header-logo{color:#dcfce7}.header-brand:hover .header-logo:before,.header-brand:hover .header-logo:after,.header-brand:focus-visible .header-logo:before,.header-brand:focus-visible .header-logo:after{color:var(--color-code-cyan)}.header-nav-mobile{flex:none;justify-content:flex-start;align-items:center;width:auto;min-width:0;display:flex}.header-navigation-groups{flex-wrap:wrap;align-items:center;gap:.55rem;min-width:0;display:flex}.app-header .header-menu-trigger.ant-btn{color:#fff;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%);border:1px solid #60a5fab8;border-radius:12px;width:44px;height:44px;padding:0;box-shadow:0 0 0 1px #bfdbfe7a,0 9px 22px #2563eb3d,inset 0 1px #ffffff38}.app-header .header-menu-trigger.ant-btn:hover,.app-header .header-menu-trigger.ant-btn:focus-visible,.app-header .header-menu-trigger.ant-btn.ant-dropdown-open{color:#fff!important;background:linear-gradient(135deg,#22c55e 0%,#06b6d4 52%,#3b82f6 100%)!important;border-color:#86efac!important;box-shadow:0 0 0 1px #dcfce7e6,0 0 0 3px #22c55e38,0 12px 26px #0891b252!important}.app-header .header-menu-trigger.ant-btn .anticon{filter:drop-shadow(0 1px #000000a6)drop-shadow(0 0 5px #ffffff7a);font-size:1.55rem;color:#fff!important}.app-header .header-menu-trigger.ant-btn .anticon svg{display:block}.portfolio-navigation-drawer .ant-drawer-header{background:#020617;border-bottom-color:#94a3b82e}.portfolio-navigation-drawer .ant-drawer-title,.portfolio-navigation-drawer .ant-drawer-header .ant-btn{color:#f8fafc}.portfolio-navigation-drawer .ant-drawer-header .ant-btn .anticon{color:#fff;filter:drop-shadow(0 0 4px #fff6);font-size:1.4rem}.portfolio-navigation-drawer .drawer-menu-close.ant-btn{color:#fff;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%);border:1px solid #93c5fdd9;border-radius:10px;width:40px;height:40px;padding:0;box-shadow:0 0 0 1px #ffffff29,0 8px 20px #2563eb4d}.portfolio-navigation-drawer .drawer-menu-close.ant-btn:hover,.portfolio-navigation-drawer .drawer-menu-close.ant-btn:focus-visible{color:#fff;background:linear-gradient(135deg,#22c55e 0%,#06b6d4 52%,#3b82f6 100%);border-color:#bbf7d0;box-shadow:0 0 0 3px #22c55e33,0 10px 24px #0891b25c}.portfolio-navigation-drawer .drawer-menu-close.ant-btn .anticon{filter:drop-shadow(0 1px #000000b3)drop-shadow(0 0 5px #ffffff8c);font-size:1.55rem;color:#fff!important}.portfolio-navigation-drawer .ant-drawer-body{background:#020617;padding:.75rem}.portfolio-navigation-drawer .ant-menu{border-radius:14px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:750;border-inline-end:0!important}.portfolio-navigation-drawer .ant-menu-submenu-title,.portfolio-navigation-drawer .ant-menu-item{border-radius:10px}.portfolio-navigation-drawer .ant-menu-submenu-title>.anticon{filter:drop-shadow(0 0 5px #60a5fa73);font-size:1.15rem;color:#93c5fd!important}:is(.portfolio-menu-dropdown .ant-dropdown-menu,.ant-dropdown-menu-submenu-popup:has(.portfolio-menu-entry) .ant-dropdown-menu){background:radial-gradient(circle at 0 0,#22c55e29,#0000 35%),linear-gradient(#0f172afa,#020617fa);border:1px solid #60a5fa52;border-radius:14px;min-width:230px;padding:.5rem;box-shadow:0 24px 60px #0206178c}:is(.portfolio-menu-dropdown .ant-dropdown-menu-item,.portfolio-menu-dropdown .ant-dropdown-menu-submenu-title,.ant-dropdown-menu-submenu-popup:has(.portfolio-menu-entry) .ant-dropdown-menu-item){border-radius:10px;min-height:38px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.8rem;font-weight:800;color:#e5e7eb!important}:is(.portfolio-menu-dropdown .ant-dropdown-menu-item:hover,.portfolio-menu-dropdown .ant-dropdown-menu-submenu-title:hover,.ant-dropdown-menu-submenu-popup:has(.portfolio-menu-entry) .ant-dropdown-menu-item:hover){color:#fff!important;background:#2563eb47!important}.ant-dropdown-menu-submenu-popup:has(.portfolio-menu-entry) .ant-dropdown-menu-item-selected{color:#fff!important;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%)!important}.header-actions{justify-self:end;align-items:center;gap:.9rem;min-width:0;display:flex}.theme-toggle{background:linear-gradient(#0f172ac7,#020617e6);border:1px solid #60a5fa52;border-radius:999px;align-items:center;gap:.45rem;padding:.35rem .55rem;display:flex;box-shadow:inset 0 1px #ffffff14,0 10px 24px #02061738}.language-toggle{box-sizing:border-box;color:#94a3b8;letter-spacing:.06em;white-space:nowrap;background:linear-gradient(#0f172ac7,#020617e6);border:1px solid #60a5fa52;border-radius:999px;flex:none;align-items:center;gap:.45rem;height:40px;min-height:40px;padding:.35rem .65rem;font-size:.78rem;font-weight:800;line-height:1;display:inline-flex;box-shadow:inset 0 1px #ffffff14,0 10px 24px #02061738}.language-toggle .ant-switch{border:1px solid #94a3b861;min-width:46px;height:26px;box-shadow:inset 0 1px 3px #02061759,0 0 0 2px #2563eb1a;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%)!important}.language-toggle .ant-switch:hover{box-shadow:inset 0 1px 3px #02061759,0 0 0 3px #22c55e29}.language-toggle .ant-switch .ant-switch-handle{width:20px;height:20px;top:2px}.language-toggle .ant-switch .ant-switch-handle:before{background:#f8fafc;border:2px solid #ffffffe6;box-shadow:0 2px 8px #0206176b,0 0 10px #60a5fa59}.language-option-active{color:#86efac;text-shadow:0 0 10px #22c55e6b}.auth-language-toggle{justify-content:flex-end;margin-bottom:.75rem;display:flex}.theme-toggle .anticon{color:#94a3b8;font-size:1rem;transition:color .2s,filter .2s,transform .2s}.theme-icon-active{filter:drop-shadow(0 0 8px #22c55e75);transform:scale(1.08);color:#86efac!important}.theme-toggle .ant-switch{border:1px solid #94a3b86b;min-width:54px;height:28px;box-shadow:inset 0 1px 4px #0f172a1f,0 0 0 2px #ffffff14;background:linear-gradient(135deg,#fff 0%,#eff6ff 52%,#dbeafe 100%)!important}.theme-toggle .ant-switch:hover{box-shadow:inset 0 1px 3px #0f172a59,0 0 0 3px #22c55e29}.theme-toggle .ant-switch-checked{background:linear-gradient(135deg,#020617 0%,#0f172a 52%,#111827 100%)!important}.theme-toggle .ant-switch .ant-switch-handle{width:20px;height:20px;top:3px}.theme-toggle .ant-switch .ant-switch-handle:before{background:radial-gradient(circle at 35% 35%,#fff 0%,#fef3c7 42%,#f59e0b 100%);border:2px solid #2563ebb8;border-radius:999px;box-shadow:0 2px 10px #0f172a59,0 0 0 2px #ffffffe0,0 0 14px #f59e0b5c}.theme-toggle .ant-switch-checked .ant-switch-handle:before{background:radial-gradient(circle at 35% 35%,#fff 0%,#bfdbfe 42%,#3b82f6 100%);border-color:#93c5fde6;box-shadow:0 2px 10px #00000085,0 0 0 2px #0f172ae0,0 0 16px #93c5fd80}.theme-toggle .ant-switch-inner{place-items:center;min-height:100%;padding-inline:24px 8px;display:grid}.theme-toggle .ant-switch-checked .ant-switch-inner{padding-inline:8px 24px}.switch-mode-icon{filter:drop-shadow(0 0 5px #f59e0b59);justify-content:center;align-items:center;width:14px;height:14px;font-size:13px;line-height:1;display:inline-flex;color:#f59e0b!important}.theme-toggle .ant-switch-checked .switch-mode-icon{filter:drop-shadow(0 0 6px #93c5fd6b);color:#93c5fd!important}.app-header .header-nav-mobile .header-nav-select-antd.ant-select-single .ant-select-selector{transition:border-color .2s,box-shadow .2s,background .2s,transform .2s;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%)!important;border:1px solid #60a5fad9!important;border-radius:12px!important;align-items:center!important;height:36px!important;min-height:36px!important;padding:0 1.9rem 0 .75rem!important;display:flex!important;box-shadow:0 0 0 1px #bfdbfe9e,0 9px 22px #2563eb3d,inset 0 1px #ffffff38!important}.app-header .header-nav-mobile .header-nav-select-antd.ant-select:hover .ant-select-selector,.app-header .header-nav-mobile .header-nav-select-antd.ant-select-focused .ant-select-selector,.app-header .header-nav-mobile .header-nav-select-antd.ant-select-open .ant-select-selector{transform:translateY(-1px);background:linear-gradient(135deg,#22c55e 0%,#06b6d4 52%,#3b82f6 100%)!important;border-color:#86efac!important;box-shadow:0 0 0 1px #dcfce7e6,0 0 0 3px #22c55e38,0 12px 26px #0891b252!important}.app-header .header-nav-mobile .header-nav-select-antd.ant-select-single .ant-select-selection-placeholder,.app-header .header-nav-mobile .header-nav-select-antd.ant-select-single .ant-select-selection-item{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:850;color:#fff!important;-webkit-text-fill-color:#fff!important;opacity:1!important;align-items:center!important;font-size:.78rem!important;line-height:1!important;display:flex!important}.app-header .header-nav-mobile .header-nav-select-antd .ant-select-arrow{color:#fff!important;font-size:.7rem!important;right:.7rem!important}.ant-select-dropdown.header-nav-select-dropdown{border:1px solid #60a5fa52;box-shadow:0 24px 60px #0206178c,inset 0 1px #ffffff14;background:radial-gradient(circle at 0 0,#22c55e29,#0000 35%),linear-gradient(#0f172afa,#020617fa)!important;border-radius:16px!important;padding:.5rem!important}.ant-select-dropdown.header-nav-select-dropdown .rc-virtual-list-holder{scrollbar-color:#ffffffeb #ffffff1f;scrollbar-width:thin}.ant-select-dropdown.header-nav-select-dropdown .rc-virtual-list-holder::-webkit-scrollbar{width:8px}.ant-select-dropdown.header-nav-select-dropdown .rc-virtual-list-holder::-webkit-scrollbar-track{background:#ffffff1f;border-radius:999px}.ant-select-dropdown.header-nav-select-dropdown .rc-virtual-list-holder::-webkit-scrollbar-thumb{background:#fff padding-box padding-box;border:2px solid #0000;border-radius:999px}.ant-select-dropdown.header-nav-select-dropdown .rc-virtual-list-scrollbar{border-radius:999px;background:#ffffff24!important;width:8px!important}.ant-select-dropdown.header-nav-select-dropdown .rc-virtual-list-scrollbar-thumb{border:1px solid #0f172a33;box-shadow:0 0 6px #ffffff73;background:#fff!important;border-radius:999px!important}.ant-select-dropdown.header-nav-select-dropdown .ant-select-item{min-height:38px;margin-bottom:.2rem;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.8rem;font-weight:800;transition:background .18s,color .18s,transform .18s;color:#e5e7eb!important;background:0 0!important;border-radius:11px!important;padding:.48rem .7rem!important}.ant-select-dropdown.header-nav-select-dropdown .ant-select-item:last-child{margin-bottom:0}.ant-select-dropdown.header-nav-select-dropdown .ant-select-item-option-content:before{content:"#";color:var(--color-code-cyan);margin-right:.35rem}.ant-select-dropdown.header-nav-select-dropdown .ant-select-item-option-active{transform:translate(2px);color:#fff!important;background:#2563eb47!important}.ant-select-dropdown.header-nav-select-dropdown .ant-select-item-option-selected{box-shadow:0 10px 24px #2563eb33,inset 0 1px #ffffff29;color:#fff!important;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%)!important}.ant-select-dropdown.header-nav-select-dropdown .ant-select-item-option-selected .ant-select-item-option-content:before{color:#dcfce7}.hero-section{min-height:calc(100vh - 64px);padding:5rem var(--section-x);background:linear-gradient(#2563eb1c 1px,#0000 1px) 0 0/34px 34px,linear-gradient(90deg,#2563eb1c 1px,#0000 1px) 0 0/34px 34px,radial-gradient(circle at 100% 0,#2563eb33,#0000 34%),radial-gradient(circle at 0 100%,#06b6d41a,#0000 30%),linear-gradient(135deg,#fff 0%,#eef3ff 100%);align-items:center;display:flex}.hero-content{grid-template-columns:minmax(260px,380px) 1fr;align-items:stretch;gap:3rem;width:100%;max-width:1180px;display:grid}.hero-photo-wrapper{border-radius:var(--radius-photo);width:100%;min-height:460px;box-shadow:var(--shadow-photo);background:#dbeafe;overflow:hidden}.hero-photo{object-fit:cover;width:100%;height:100%;display:block}.hero-photo-skeleton,.hero-photo-skeleton .ant-skeleton-image{width:100%!important;height:100%!important}.hero-info{flex-direction:column;justify-content:center;min-width:0;display:flex}.hero-tag{letter-spacing:0;width:fit-content;margin-bottom:1rem;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:700}.hero-title.ant-typography{letter-spacing:-.07em;margin-bottom:0;font-size:clamp(3rem,8vw,6rem);line-height:1}.hero-subtitle.ant-typography{color:var(--color-primary);letter-spacing:0;margin-top:1rem;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:clamp(1.3rem,3vw,2.3rem)}.hero-subtitle.ant-typography:before{content:"const role = \"";color:var(--color-code-accent);font-size:.72em}.hero-subtitle.ant-typography:after{content:"\";";color:var(--color-code-accent);font-size:.72em}.hero-location{color:var(--color-text-muted);margin-bottom:1.5rem;font-size:1rem;font-weight:600;display:block}.hero-summary.ant-typography{max-width:860px;color:var(--color-text-body);font-size:1.15rem;line-height:1.8}.page-section{padding:var(--section-y) var(--section-x);background:linear-gradient(#2563eb08 1px, transparent 1px), linear-gradient(90deg, #2563eb08 1px, transparent 1px), var(--color-bg);background-size:34px 34px}.page-section>.ant-typography:first-child,.contact-card>.ant-typography:first-child{align-items:center;gap:.65rem;display:flex}.page-section>.ant-typography:first-child:before,.contact-card>.ant-typography:first-child:before{content:"{";color:var(--color-code-accent);font-family:JetBrains Mono,Fira Code,Consolas,monospace}.page-section>.ant-typography:first-child:after,.contact-card>.ant-typography:first-child:after{content:"}";color:var(--color-code-accent);font-family:JetBrains Mono,Fira Code,Consolas,monospace}.portfolio-card{border-radius:var(--radius-card);border:1px solid var(--color-card-border);height:100%;box-shadow:var(--shadow-card);position:relative;overflow:hidden}.portfolio-card:before,.contact-card:before{content:"";background:linear-gradient(90deg, var(--color-code-accent), var(--color-code-cyan), var(--color-primary));height:3px;position:absolute;inset:0 0 auto}.portfolio-card .ant-card-head-title,.portfolio-card .ant-typography strong,.client-tag,.tags-container .ant-tag{letter-spacing:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.project-card .ant-card-body{min-height:390px}.project-card .ant-alert-with-description{text-align:center;flex-direction:column;align-items:center}.project-card .ant-alert-with-description .ant-alert-icon{margin-inline-end:0;margin-bottom:.55rem;font-size:1.35rem}.project-description{min-height:3.2em;margin-bottom:1rem;line-height:1.6}.client-tag{margin-bottom:1rem}.tags-container{flex-wrap:wrap;gap:.5rem;display:flex}.tags-container .ant-tag{border-style:dashed}.ant-btn{isolation:isolate;color:#0f172a;letter-spacing:0;background:linear-gradient(#fffffff5,#eff6fff5);border-color:#2563eb5c;border-radius:10px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:800;transition:border-color .2s,box-shadow .2s,color .2s,transform .2s;position:relative;overflow:hidden;box-shadow:0 10px 24px #0f172a14,inset 0 1px #fffc}.ant-btn:before{content:"";z-index:-1;background:linear-gradient(90deg,#0000,#22c55e29,#0000);transition:transform .45s;position:absolute;inset:0;transform:translate(-115%)}.ant-btn:hover,.ant-btn:focus-visible{transform:translateY(-2px);box-shadow:0 16px 30px #0f172a21,0 0 0 3px #22c55e24;border-color:var(--color-code-accent)!important;color:#064e3b!important}.ant-btn:hover:before,.ant-btn:focus-visible:before{transform:translate(115%)}.ant-btn:active{transform:translateY(0);box-shadow:0 8px 18px #0f172a1a}.ant-btn .anticon{color:var(--color-code-cyan);transition:color .2s,transform .2s}.ant-btn:hover .anticon,.ant-btn:focus-visible .anticon{color:var(--color-code-accent);transform:scale(1.08)}.ant-btn-primary{text-shadow:0 1px #0f172a3d;box-shadow:0 16px 34px #2563eb38,inset 0 0 0 1px #ffffff2e;color:#fff!important;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%)!important;border-color:#22c55eb3!important}.ant-btn-primary:before{background:linear-gradient(90deg,#0000,#ffffff38,#0000)}.ant-btn-primary:hover,.ant-btn-primary:focus-visible{box-shadow:0 20px 38px #0891b247,0 0 0 3px #22c55e33;color:#fff!important;border-color:#86efac!important}.ant-btn-primary .anticon{color:#dcfce7}.ant-btn-primary:hover .anticon,.ant-btn-primary:focus-visible .anticon{color:#fff}.ant-btn[disabled],.ant-btn.ant-btn-loading{transform:none}.responsibilities-list{color:var(--color-text-body);margin-top:.75rem;margin-bottom:1.5rem;padding-left:1.2rem;line-height:1.7}.hobby-card{height:100%}.hobby-card-title{align-items:center;gap:.5rem;display:inline-flex}.hobby-description{min-height:72px;margin-bottom:1rem!important}.recommendation-card .ant-card-head-title{white-space:normal;text-overflow:clip;overflow:visible}.recommendation-title{white-space:normal;align-items:flex-start;gap:.55rem;min-width:0;line-height:1.35;display:flex}.recommendation-title .anticon{flex-shrink:0;margin-top:.15rem}.recommendation-title span:last-child{overflow-wrap:anywhere;white-space:normal;min-width:0}.recommendation-actions{margin-top:1rem}.contact-section{padding:var(--section-y) var(--section-x);background:linear-gradient(#16a34a21 1px,#0000 1px) 0 0/34px 34px,linear-gradient(90deg,#16a34a21 1px,#0000 1px) 0 0/34px 34px,radial-gradient(circle at 0 0,#22c55e33,#0000 32%),radial-gradient(circle at 100% 100%,#0891b22e,#0000 34%),linear-gradient(135deg,#f0fdf4 0%,#ecfeff 100%)}.contact-card{border-radius:24px;max-width:900px;margin:0 auto;position:relative;overflow:hidden}.contact-card .ant-card-body{flex-direction:column;align-items:center;display:flex}.contact-card .ant-typography,.contact-card .ant-form-item-label{width:100%;max-width:640px}.contact-card>.ant-card-body>.ant-typography{text-align:center}.contact-form{width:min(100%,640px)}.contact-form .ant-form-item{margin-bottom:1rem}.contact-submit-item{text-align:center;margin-bottom:0!important}.contact-secondary-actions{justify-content:center;width:min(100%,640px);padding-top:.75rem}.contact-render-alert{margin-bottom:1rem}.app-footer{text-align:center;background:#fff}.ip-notice{background:#fff7e6;border:1px solid #ffd591;border-radius:14px;margin:1.25rem 0;padding:1rem}.ip-owner-tag{margin-bottom:.75rem;font-weight:700}.ip-notice p{color:#8a5a00;margin:.5rem 0 0;font-size:.9rem;line-height:1.6}.ip-alert-description{text-align:justify;text-align-last:left;overflow-wrap:anywhere;margin:0;line-height:1.6}.reference-notice{color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:14px;flex-direction:column;align-items:flex-start;gap:.65rem;margin:1rem 0 1.25rem;padding:.9rem 1rem;font-size:.92rem;line-height:1.6;display:flex}.project-card .reference-notice{text-align:center;align-items:center}.reference-notice a{color:#1d4ed8;font-weight:700;text-decoration:none}.reference-notice a:hover{text-decoration:underline}.reference-icon{color:var(--color-primary);flex-shrink:0;margin-top:0;font-size:1.35rem}.section-divider{justify-content:center;align-items:center;gap:1rem;width:min(920px,100% - 2rem);margin:1.1rem auto;display:flex}.section-divider-line{background:linear-gradient(90deg,#0000,#16a34a85,#0891b294,#2563eb85,#0000);flex:1;height:1px;position:relative;overflow:hidden}.section-divider-line:after{content:"";background:linear-gradient(90deg,#0000,#22c55ef2,#0891b2f2,#2563ebf2,#0000);width:70%;animation:3.2s linear infinite dividerShine;position:absolute;inset:0;transform:translate(-120%)}.section-divider-dot{background:linear-gradient(135deg,#16a34a,#0891b2,#2563eb);border-radius:999px;width:10px;height:10px;animation:2.4s ease-in-out infinite dividerPulse;box-shadow:0 0 0 6px #22c55e1f,0 0 22px #0891b261}.reveal-on-scroll{opacity:0;will-change:opacity, transform;filter:blur(4px);transition:opacity .75s,transform .75s,filter .75s}.reveal-on-scroll.is-visible{opacity:1;filter:blur();transform:translate(0,0)}.reveal-up{transform:translateY(38px)}.reveal-left{transform:translate(-38px)}.reveal-right{transform:translate(38px)}.reveal-none{transform:none}@keyframes dividerShine{0%{transform:translate(-120%)}to{transform:translate(220%)}}@keyframes dividerPulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.35)}}.dark-page,.app-layout-dark{background:var(--color-bg-dark)}.app-layout-dark .app-header{background:var(--color-header-dark);border-bottom:1px solid #94a3b82e}.app-layout-dark .hero-section{background:linear-gradient(#60a5fa12 1px,#0000 1px) 0 0/34px 34px,linear-gradient(90deg,#60a5fa12 1px,#0000 1px) 0 0/34px 34px,radial-gradient(circle at 100% 0,#2563eb38,#0000 34%),linear-gradient(135deg,#020617 0%,#0f172a 100%)}.app-layout-dark .hero-title.ant-typography,.app-layout-dark .page-section .ant-typography,.app-layout-dark .contact-card .ant-typography{color:#f8fafc}.app-layout-dark .hero-subtitle.ant-typography{color:var(--color-primary-light)}.app-layout-dark .hero-location,.app-layout-dark .hero-summary.ant-typography{color:#cbd5e1}.app-layout-dark .page-section{background:linear-gradient(#60a5fa0b 1px, transparent 1px), linear-gradient(90deg, #60a5fa0b 1px, transparent 1px), var(--color-bg-dark);background-size:34px 34px}.app-layout-dark .contact-section{background:linear-gradient(#60a5fa12 1px,#0000 1px) 0 0/34px 34px,linear-gradient(90deg,#60a5fa12 1px,#0000 1px) 0 0/34px 34px,radial-gradient(circle at 100% 0,#2563eb38,#0000 34%),linear-gradient(135deg,#020617 0%,#0f172a 100%)}.app-layout-dark .portfolio-card,.app-layout-dark .contact-card{background:var(--color-card-dark);border-color:var(--color-dark-border)}.app-layout-dark .portfolio-card{box-shadow:var(--shadow-card-dark)}.app-layout-dark .portfolio-card .ant-card-head{border-bottom-color:#94a3b82e}.app-layout-dark .ant-btn{color:#e2e8f0;background:linear-gradient(#0f172afa,#020617fa);border-color:#60a5fa52;box-shadow:0 14px 30px #00000047,inset 0 1px #ffffff14}.app-layout-dark .ant-btn:hover,.app-layout-dark .ant-btn:focus-visible{box-shadow:0 18px 34px #0000005c,0 0 0 3px #22c55e29;color:#dcfce7!important}.app-layout-dark .ant-btn-primary{color:#fff!important;background:linear-gradient(135deg,#15803d 0%,#0e7490 52%,#1d4ed8 100%)!important}.app-layout-dark .responsibilities-list{color:#cbd5e1}.app-layout-dark .app-footer{background:var(--color-bg-dark);border-top:1px solid #94a3b82e}.app-layout-dark .ip-notice{background:#fbbf2414;border-color:#fbbf2459}.app-layout-dark .ip-notice p{color:#fde68a}.app-layout-dark .reference-notice{color:#bfdbfe;background:#2563eb1f;border-color:#60a5fa59}.app-layout-dark .reference-notice a{color:#93c5fd}.app-layout-dark .reference-icon{color:var(--color-primary-light)}.app-layout-dark .section-divider-line{background:linear-gradient(90deg,#0000,#22c55e6b,#0891b285,#60a5fa80,#0000)}.app-layout-dark .section-divider-line:after{background:linear-gradient(90deg,#0000,#22c55ef2,#0891b2f2,#60a5faf2,#0000)}.app-layout-dark .section-divider-dot{background:linear-gradient(135deg,#22c55e,#06b6d4,#60a5fa);box-shadow:0 0 0 6px #22c55e24,0 0 24px #06b6d480}.tech-logo-section{padding:2.75rem var(--section-x) 2.75rem;background:radial-gradient(circle at 0 0,#2563eb1f,#0000 32%),linear-gradient(135deg,#fff 0%,#f8fbff 100%);overflow:hidden}.tech-logo-header{text-align:center;max-width:1180px;margin:0 auto 2rem}.tech-logo-loop{padding-top:.75rem;padding-bottom:1.25rem}.tech-logo-eyebrow{color:var(--color-primary);text-transform:uppercase;letter-spacing:.12em;margin-bottom:.35rem;font-size:.78rem;font-weight:900;display:inline-flex}.tech-logo-header h2{color:#0f172a;margin:0;font-size:clamp(1.25rem,2.4vw,2rem);line-height:1.2}.tech-logo-loop{width:min(1180px,100%);margin:0 auto;padding-top:.75rem;padding-bottom:1.25rem;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.tech-logo-track{gap:1rem;width:max-content;animation:34s linear infinite techLogoScroll;display:flex}.tech-logo-loop:hover .tech-logo-track{animation-play-state:paused}.tech-logo-item{color:#0f172a;background:#ffffffd1;border:1px solid #94a3b847;border-radius:18px;justify-content:center;align-items:center;gap:.7rem;min-width:150px;height:76px;padding:0 1rem;text-decoration:none;transition:transform .25s,border-color .25s,box-shadow .25s,background .25s;display:inline-flex;box-shadow:0 14px 34px #0f172a0f}.tech-logo-item:hover{color:#fff;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%);border-color:#22c55eb3;transform:translateY(-2px)scale(1.025);box-shadow:0 10px 22px #2563eb2e,inset 0 0 0 1px #ffffff2e,0 0 0 3px #22c55e1a}.tech-logo-item:hover .tech-logo-icon,.tech-logo-item:hover .tech-logo-name{color:#fff}.tech-logo-icon{font-size:2rem;line-height:1;display:inline-flex}.tech-logo-name{white-space:nowrap;font-size:.9rem;font-weight:800}@keyframes techLogoScroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.app-layout-dark .tech-logo-section{background:radial-gradient(circle at 0 0,#60a5fa1f,#0000 32%),linear-gradient(135deg,#020617 0%,#0f172a 100%)}.app-layout-dark .tech-logo-header h2{color:#f8fafc}.app-layout-dark .tech-logo-eyebrow{color:var(--color-primary-light)}.app-layout-dark .tech-logo-item{color:#e5e7eb;background:#0f172adb;border-color:#94a3b838;box-shadow:0 18px 45px #00000047}.app-layout-dark .tech-logo-item:hover{color:#fff;background:linear-gradient(135deg,#16a34a 0%,#0891b2 52%,#2563eb 100%);border-color:#22c55eb3;box-shadow:0 10px 22px #2563eb38,inset 0 0 0 1px #ffffff2e,0 0 0 3px #22c55e1f}.app-layout-dark .tech-logo-item:hover .tech-logo-icon,.app-layout-dark .tech-logo-item:hover .tech-logo-name{color:#fff}@media (width<=768px){.tech-logo-section{padding:2.25rem 1.25rem 1.75rem}.tech-logo-header{margin-bottom:1.75rem}.tech-logo-loop{padding-top:.4rem;padding-bottom:.4rem}.tech-logo-track{gap:.75rem;animation-duration:28s}.tech-logo-item{border-radius:16px;gap:.55rem;min-width:132px;height:66px}.tech-logo-icon{font-size:1.65rem}.tech-logo-name{font-size:.78rem}}@media (width<=480px){.tech-logo-header h2{font-size:1.2rem}.tech-logo-item{min-width:118px;height:60px;padding:0 .75rem}.tech-logo-icon{font-size:1.45rem}.tech-logo-name{font-size:.72rem}}.personal-project-type-tag{white-space:normal;max-width:100%;height:auto;padding:4px 10px;line-height:1.35}.personal-project-type-content{align-items:flex-start;gap:6px;max-width:100%;display:inline-flex}.personal-project-type-content .anticon{flex:none;margin-top:2px}.personal-project-type-text{overflow-wrap:anywhere;word-break:normal;min-width:0}.disabled-code-button-wrapper .ant-btn{pointer-events:none}.source-code-tooltip{--antd-arrow-background-color:#0f172a;max-width:min(340px,100vw - 24px)!important}.source-code-tooltip .ant-tooltip-inner{border:1px solid #60a5fa7a;min-width:285px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;position:relative;overflow:hidden;box-shadow:0 22px 55px #02061785,0 0 0 1px #06b6d41a,inset 0 1px #ffffff17;color:#e5e7eb!important;background:radial-gradient(circle at 0 0,#22c55e2e,#0000 38%),radial-gradient(circle at 100% 100%,#2563eb38,#0000 40%),linear-gradient(145deg,#0f172afc,#020617fc)!important;border-radius:16px!important;padding:1rem 1.05rem!important}.source-code-tooltip .ant-tooltip-inner:before{content:"";background:linear-gradient(90deg, var(--color-code-accent), var(--color-code-cyan), var(--color-primary));height:3px;position:absolute;inset:0 0 auto}.source-code-tooltip .ant-tooltip-arrow:before{background:#0f172a!important}.source-code-tooltip-content{flex-direction:column;gap:.55rem;display:flex}.source-code-tooltip-title{color:#fff;align-items:center;gap:.55rem;font-size:.88rem;font-weight:900;line-height:1.35;display:flex}.source-code-tooltip-title .anticon{color:var(--color-code-cyan);filter:drop-shadow(0 0 7px #06b6d47a);flex-shrink:0;font-size:1.05rem}.source-code-tooltip-message{color:#cbd5e1;margin:0;font-size:.8rem;font-weight:600;line-height:1.55}.source-code-tooltip-status{color:#86efac;border-top:1px dashed #60a5fa52;padding-top:.5rem;font-size:.78rem;font-weight:800;line-height:1.5;display:block}@media (width<=1080px) and (width>=769px){.app-header{padding:0 clamp(.9rem,2vw,1.5rem)}.header-avatar{width:36px!important;height:36px!important}.header-logo{max-width:230px;font-size:.86rem}.theme-toggle{gap:.3rem;padding:.3rem .45rem}.theme-toggle .anticon{font-size:.85rem}.theme-toggle .ant-switch{min-width:46px;height:24px}.theme-toggle .ant-switch .ant-switch-handle{width:18px;height:18px;top:2px}.theme-toggle .ant-switch-inner{padding-inline:21px 7px}.theme-toggle .ant-switch-checked .ant-switch-inner{padding-inline:7px 21px}.header-actions{gap:.55rem}.language-toggle{gap:.28rem;width:auto;height:32px;min-height:32px;padding:.2rem .42rem;font-size:.68rem;line-height:1}.language-toggle .ant-switch{width:36px;min-width:36px;height:20px}.language-toggle .ant-switch .ant-switch-handle{width:14px;height:14px;top:2px}}@media (width<=768px){.app-header{height:var(--header-height);grid-template-columns:auto auto;justify-content:space-between;justify-items:stretch;padding:.65rem 1rem}.header-left{flex-direction:row;justify-self:start;width:auto}.header-brand{justify-content:center;gap:.45rem}.header-avatar{width:32px!important;height:32px!important}.header-logo{text-align:center;max-width:260px;font-size:.9rem;line-height:1.1}.header-nav-mobile{justify-content:center;width:auto}.header-navigation-groups{justify-content:center;width:100%}.header-nav-select-antd{max-width:calc(100vw - 2rem)}.app-header .header-nav-mobile .header-nav-select-antd.ant-select-single .ant-select-selector{height:34px!important;min-height:34px!important;padding-left:.7rem!important}.app-header .header-nav-mobile .header-nav-select-antd.ant-select-single .ant-select-selection-placeholder,.app-header .header-nav-mobile .header-nav-select-antd.ant-select-single .ant-select-selection-item{font-size:.75rem!important}.header-actions{justify-self:center;gap:.45rem;line-height:1}.language-toggle{gap:.24rem;width:auto;height:30px;min-height:30px;padding:.18rem .38rem;font-size:.64rem;line-height:1}.language-toggle .ant-switch{width:34px;min-width:34px;height:20px}.language-toggle .ant-switch .ant-switch-handle{width:14px;height:14px;top:2px}.theme-toggle{gap:.25rem;line-height:1}.theme-toggle .anticon{font-size:.85rem}.theme-toggle .ant-switch{min-width:46px;height:24px}.theme-toggle .ant-switch .ant-switch-handle{width:18px;height:18px;top:2px}.theme-toggle .ant-switch-inner{padding-inline:21px 7px}.theme-toggle .ant-switch-checked .ant-switch-inner{padding-inline:7px 21px}.hero-section{min-height:auto;padding:3rem 1.25rem}.hero-content{grid-template-columns:1fr;align-items:center;gap:2rem;max-width:100%}.hero-photo-wrapper{aspect-ratio:1;border-radius:50%;width:100%;max-width:300px;min-height:auto;margin:0 auto}.hero-info{text-align:center;align-items:center;width:100%}.hero-tag{margin-left:auto;margin-right:auto}.hero-title.ant-typography{letter-spacing:-.04em;text-align:center;word-break:normal;overflow-wrap:normal;width:100%;font-size:clamp(2.4rem,13vw,3.4rem);line-height:1.05}.hero-subtitle.ant-typography{text-align:center;width:100%;font-size:1.25rem;line-height:1.35}.hero-subtitle.ant-typography:before,.hero-subtitle.ant-typography:after{content:""}.hero-location,.hero-summary.ant-typography{text-align:center}.hero-summary.ant-typography{width:100%;max-width:100%;font-size:1rem;line-height:1.7}.page-section,.contact-section{padding:2.25rem 1.25rem}.section-divider{gap:.75rem;margin:.9rem auto}.section-divider-dot{width:8px;height:8px}}@media (width<=480px){.source-code-tooltip{max-width:calc(100vw - 20px)!important}.source-code-tooltip .ant-tooltip-inner{width:100%;min-width:0;padding:.85rem .9rem!important}.source-code-tooltip-title{font-size:.82rem}.source-code-tooltip-message,.source-code-tooltip-status{font-size:.75rem}}@media (prefers-reduced-motion:reduce){.section-divider-line:after,.section-divider-dot,.tech-logo-track{animation:none}.tech-logo-track{flex-wrap:wrap;justify-content:center}.reveal-on-scroll{opacity:1;filter:none;transition:none;transform:none}}.disabled-code-button-wrapper{cursor:not-allowed;display:inline-flex}.disabled-code-button-wrapper .disabled-code-button{pointer-events:none}.disabled-code-button.ant-btn:disabled,.disabled-code-button.ant-btn-disabled{opacity:.68;filter:grayscale(.45);color:#64748b!important;-webkit-text-fill-color:#64748b!important;cursor:not-allowed!important;text-shadow:none!important;background:linear-gradient(#e2e8f0b8,#cbd5e1b8)!important;border:1px dashed #64748b6b!important;transform:none!important;box-shadow:inset 0 1px #ffffffa6,0 4px 10px #0f172a0f!important}.disabled-code-button.ant-btn:disabled .anticon,.disabled-code-button.ant-btn-disabled .anticon{opacity:.85;color:#94a3b8!important;filter:none!important;transform:none!important}.disabled-code-button-wrapper:hover .disabled-code-button,.disabled-code-button.ant-btn:disabled:hover{color:#64748b!important;-webkit-text-fill-color:#64748b!important;border-color:#64748b6b!important;transform:none!important;box-shadow:inset 0 1px #ffffffa6,0 4px 10px #0f172a0f!important}.app-layout-dark .disabled-code-button.ant-btn:disabled,.app-layout-dark .disabled-code-button.ant-btn-disabled{color:#64748b!important;-webkit-text-fill-color:#64748b!important;background:linear-gradient(#1e293bd1,#0f172ae6)!important;border-color:#94a3b847!important;box-shadow:inset 0 1px #ffffff0a,0 4px 12px #0000002e!important}.app-layout-dark .disabled-code-button.ant-btn:disabled .anticon,.app-layout-dark .disabled-code-button.ant-btn-disabled .anticon{color:#64748b!important}.maintenance-page,.auth-layout{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.maintenance-page{color:#fff;text-align:center;background:#0f172a}.auth-card{width:100%;max-width:440px}.auth-legal-links{text-align:center;border-top:1px solid #94a3b840;margin-top:1.25rem;padding-top:1rem}.legal-footer{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.65rem;display:flex}.legal-links{justify-content:center}.privacy-first-layer{background:#2563eb0f;border:1px solid #2563eb3d;border-radius:10px;margin-bottom:1rem;padding:.85rem;font-size:.82rem;line-height:1.5}.legal-page{max-width:900px;margin:0 auto;line-height:1.75}.legal-page h2{margin-top:2rem}.legal-page li{margin-bottom:.55rem}.app-layout-dark .legal-page,.app-layout-dark .legal-page .ant-typography,.app-layout-dark .legal-footer .ant-typography{color:#e2e8f0}.pricing-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px;display:flex}.pricing-heading .ant-typography{margin-top:8px}.pricing-card .ant-card-body{padding:0}.pricing-service{flex-direction:column;gap:4px;display:flex}.pricing-offer{color:#15803d}.pricing-alert{margin-top:20px}@media (width<=640px){.pricing-heading{flex-direction:column;align-items:stretch}}.service-page-layout{min-height:100vh}.service-page-header{justify-content:space-between;align-items:center;display:flex}.service-page-actions{align-items:center;gap:.75rem;display:flex}.app-layout-dark .service-page-content{background:linear-gradient(#60a5fa0b 1px, transparent 1px), linear-gradient(90deg, #60a5fa0b 1px, transparent 1px), var(--color-bg-dark);background-size:34px 34px}.app-layout-dark .service-detail .ant-typography{color:#f8fafc}.app-layout-dark .service-detail .ant-typography-secondary{color:#cbd5e1}.app-layout-dark .pricing-offer{color:#86efac!important}.service-page-content{width:min(1180px,100% - 32px);margin:0 auto;padding:56px 0 72px}.service-detail-hero{max-width:850px;margin-bottom:56px}.service-detail-hero>.ant-typography{font-size:1.1rem}.service-eyebrow{color:#2563eb;text-transform:uppercase;letter-spacing:.08em;font-weight:700}.service-feature-card .ant-card-body{align-items:center;gap:12px;display:flex}.service-feature-card .anticon,.service-icon{color:#2563eb;font-size:24px}.service-icon-card{height:100%}.service-copy{max-width:850px;margin-top:56px}.service-page-intro{margin-bottom:32px;font-size:1.1rem}.pricing-page .page-section{padding-inline:0}.service-card-link{align-self:flex-end;gap:.4rem;width:max-content;min-height:36px;margin-top:auto;margin-left:auto;margin-right:0;padding-inline:.65rem;display:flex}.hover-project-card{cursor:pointer;width:100%;height:auto;transition:transform .24s,border-color .24s,box-shadow .24s}.hover-project-card .ant-card-body{min-height:0}.hover-project-card .project-summary{flex-direction:column;display:flex}.hover-projects-grid .project-summary{min-height:130px}.hover-project-card .project-description{min-height:0;margin-bottom:0}.project-hover-details{opacity:0;visibility:hidden;grid-template-rows:0fr;transition:grid-template-rows .34s,opacity .24s,visibility 0s linear .34s;display:grid}.project-hover-details-inner{min-height:0;overflow:hidden}.hover-project-card.is-expanded .project-hover-details{opacity:1;visibility:visible;grid-template-rows:1fr;transition-delay:0s}.project-hover-details-inner>:first-child{margin-top:.75rem}.hover-project-card.is-expanded{border-color:#22c55e8c;box-shadow:0 22px 45px #02061733,0 0 0 2px #22c55e1a}@media (hover:hover) and (pointer:fine){.hover-project-card:hover,.hover-project-card:focus-visible{z-index:5;border-color:#22c55e8c;transform:none;box-shadow:0 22px 45px #02061733,0 0 0 2px #22c55e1a}.hover-project-card:hover .project-hover-details,.hover-project-card:focus-visible .project-hover-details{opacity:1;visibility:visible;grid-template-rows:1fr;transition-delay:0s}}@media (width<=1080px){.hover-projects-grid>.ant-col{flex:0 0 100%;max-width:100%}.hover-projects-grid .project-summary{min-height:0}.hover-project-card{cursor:default}.hover-project-card .project-hover-details{opacity:1;visibility:visible;grid-template-rows:1fr;transition:none}}.personal-projects-row>.ant-col{align-items:stretch;display:flex}.personal-projects-row .reveal-on-scroll,.personal-projects-row .portfolio-card{width:100%;height:100%}.personal-projects-row .portfolio-card{flex-direction:column;display:flex}.personal-projects-row .portfolio-card>.ant-card-body{flex-direction:column;flex:auto;display:flex}.personal-projects-row .project-description{min-height:9em}.personal-projects-row.has-expanded-project{align-items:flex-start}.personal-projects-row.has-expanded-project>.ant-col{align-self:flex-start}.personal-projects-row.has-expanded-project .reveal-on-scroll,.personal-projects-row.has-expanded-project .portfolio-card{height:auto}.personal-project-details-toggle.ant-btn{height:auto;color:var(--color-primary);align-self:flex-start;margin:0 0 1rem;padding:.35rem .55rem}.personal-project-details{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .32s,opacity .24s;display:grid}.personal-project-details.is-expanded{opacity:1;grid-template-rows:1fr}.personal-project-details-inner{min-height:0;overflow:hidden}.personal-project-actions{margin-top:auto;padding-top:1rem}@media (width<=768px){.personal-projects-row>.ant-col,.personal-projects-row .reveal-on-scroll,.personal-projects-row .portfolio-card{height:auto;display:block}.personal-projects-row .portfolio-card>.ant-card-body{display:block}.personal-projects-row .project-description{min-height:0}}.services-card-row>.ant-col{align-items:stretch;display:flex}.services-card-row .portfolio-card{flex-direction:column;width:100%;height:100%;display:flex}.services-card-row .portfolio-card>.ant-card-head{flex:none}.services-card-row .portfolio-card>.ant-card-body{flex-direction:column;flex:auto;display:flex}.services-card-row .service-card-link{align-self:flex-end;margin-top:auto;margin-left:auto}@media (width<=820px){.service-page-header{height:auto;min-height:72px;padding-block:12px}.service-page-nav{display:none}}
