*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{min-height:100vh;line-height:1.6;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}a{text-decoration:none;color:inherit}button{border:none;background:none;cursor:pointer}ul,ol{list-style:none}:root{--bg: #ffffff;--bg-sidebar: #fafafa;--text: rgb(74, 81, 91);--text-secondary: #666666;--text-tertiary: #000;--link: #0000ff;--link-hover: #0000cc;--border: #e0e0e0;--border-secondary: #9f9f9f;--mobile-menu-bg: rgba(255, 255, 255, .8);--mobile-menu-panel-bg: rgba(250, 250, 250, .8);--font-sans: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--font-serif: Lora, Georgia, "Times New Roman", serif;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 2.5rem;--transition-fast: .15s;--transition-base: .2s}[data-theme=dark]{--bg: #1a1a1a;--bg-sidebar: #111111;--text: #c1c1c1;--text-secondary: #888888;--text-tertiary: #fff;--link: #6b9fff;--link-hover: #9fc1ff;--border: #333333;--border-secondary: #555555;--mobile-menu-bg: rgba(26, 26, 26, .8);--mobile-menu-panel-bg: rgba(17, 17, 17, .8)}body{font-family:var(--font-sans);font-size:1rem;font-weight:400;background-color:var(--bg);color:var(--text);transition:background-color var(--transition-base),color var(--transition-base)}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.4;color:var(--text)}h1{font-size:1.25rem}h2{font-size:1.125rem}p{margin-bottom:var(--spacing-sm)}a{color:var(--text);transition:color var(--transition-fast)}a:hover{color:var(--link)}a:focus-visible{outline:2px solid var(--link);outline-offset:2px}code{font-family:var(--font-mono);font-size:.875rem;background-color:var(--bg-secondary);padding:.125rem .25rem;border-radius:2px}.skip-link{position:absolute;top:-40px;left:0;background:var(--bg);color:var(--text);padding:.5rem 1rem;text-decoration:none;z-index:100}.skip-link:focus{top:0}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (max-width: 768px){body{font-size:.9rem}}.layout-container{min-height:100vh}@media (min-width: 768px){.layout-sidebar{width:180px;position:fixed;top:0;left:0;height:100vh;padding:calc(var(--spacing-xl) * 1.2) var(--spacing-lg);display:flex;flex-direction:column;border-right:1px solid var(--border);background-color:var(--bg-sidebar)}.sidebar-content{display:flex;flex-direction:column;height:100%;align-items:flex-end}.layout-main{margin-left:200px;padding:calc(var(--spacing-xl) * 1.2);max-width:900px}}@media (max-width: 767px){.layout-container{flex-direction:column;padding:var(--spacing-sm)}.layout-sidebar{display:none}.layout-main{width:100%;padding:var(--spacing-sm)}}.layout-main{min-height:50vh}a.animated-link{position:relative}a.animated-link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background-color:currentColor;transition:width var(--transition-fast) ease}a.animated-link:hover:after{width:100%}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.page-enter{animation:fadeIn var(--transition-base) ease}body{transition:background-color var(--transition-fast) ease,color var(--transition-fast) ease}@media (prefers-reduced-motion: reduce){a.animated-link:after{transition:none}.page-enter{animation:none}body{transition:none}}.nav-desktop{display:flex;flex-direction:column;align-items:flex-end;gap:var(--spacing-sm)}.nav-desktop .nav-link{font-size:1rem;color:var(--text-secondary);transition:color var(--transition-fast);position:relative;font-style:italic;font-family:var(--font-serif)}.nav-desktop .nav-link:hover{color:var(--text)}.nav-desktop .nav-link[aria-current=page]{color:var(--text-tertiary);font-weight:400}.nav-mobile{display:flex;gap:var(--spacing-md);flex-wrap:wrap;justify-content:center;padding-bottom:var(--spacing-sm)}.nav-mobile .nav-link{font-size:.875rem;color:var(--text-secondary);transition:color var(--transition-fast);min-height:44px;display:flex;align-items:center}.nav-mobile .nav-link:hover{color:var(--text)}.nav-mobile .nav-link[aria-current=page]{color:var(--text);font-weight:600}.nav-link{position:relative;text-decoration:none;text-align:end;display:inline-block}.nav-link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background-color:currentColor;transition:width var(--transition-base) ease}.nav-link[aria-current=page]:after{width:100%}@media (prefers-reduced-motion: reduce){.nav-link:after{transition:none}}.theme-toggle{margin-top:auto;padding:0;background:none;border:none;color:var(--text-secondary);font-size:1.25rem;cursor:pointer;transition:color var(--transition-fast),opacity var(--transition-fast),transform var(--transition-fast);display:flex;align-items:center;justify-content:flex-start;width:fit-content;opacity:.7}.theme-toggle:hover{color:var(--text);opacity:1}.theme-toggle:active{opacity:.5;transform:scale(.95)}.theme-toggle:focus-visible{outline:2px solid var(--link);outline-offset:2px;opacity:1}@media (max-width: 767px){.theme-toggle{margin-top:var(--spacing-sm);display:inline-flex}}.mobile-menu-button{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);width:56px;height:56px;border-radius:50%;background:var(--mobile-menu-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1000;transition:transform var(--transition-fast) ease,background-color var(--transition-fast) ease,border-color var(--transition-fast) ease;box-shadow:0 4px 12px #0000001a}.mobile-menu-button:hover{transform:scale(1.05);background:var(--bg-sidebar)}.mobile-menu-button:focus-visible{outline:2px solid var(--link);outline-offset:2px}.mobile-menu-button:active{transform:scale(.95)}.mobile-menu-button svg{color:var(--text);transition:color var(--transition-fast) ease}.mobile-menu-panel{position:fixed;bottom:calc(var(--spacing-lg) + 56px + 12px);right:var(--spacing-lg);background:var(--mobile-menu-panel-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:12px;padding:var(--spacing-sm);box-shadow:0 8px 24px #00000026;z-index:999;min-width:160px;animation:menuSlideIn var(--transition-base) ease-out;transform-origin:bottom right}@keyframes menuSlideIn{0%{opacity:0;transform:scale(.8) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.mobile-menu-nav{display:flex;flex-direction:column;gap:var(--spacing-xs)}.mobile-menu-nav a{display:block;padding:var(--spacing-xs) var(--spacing-md);color:var(--text-secondary);text-decoration:none;font-family:var(--font-serif);text-align:right;border-radius:8px;transition:color var(--transition-fast) ease,background-color var(--transition-fast) ease;min-height:44px;display:flex;align-items:center;justify-content:flex-end}.mobile-menu-nav a:hover{color:var(--text);background:var(--bg-sidebar)}.mobile-menu-nav a:focus-visible{outline:2px solid var(--link);outline-offset:-2px}.mobile-menu-nav a[aria-current=page]{color:var(--text-tertiary);font-weight:600}@media (min-width: 768px){.mobile-menu-button,.mobile-menu-panel{display:none}}@media (prefers-reduced-motion: reduce){.mobile-menu-button,.mobile-menu-nav a{transition:none}.mobile-menu-panel{animation:none}}.home-header{margin-bottom:var(--spacing-sm);font-size:1rem;font-family:var(--font-serif);color:var(--text-tertiary)}.home-name{margin-bottom:0;font-size:1.2rem;font-weight:500;color:var(--text-tertiary)}.home-divider{display:none}.home-bio{margin-bottom:var(--spacing-xl)}.home-bio p{margin-bottom:var(--spacing-lg);line-height:28px;color:var(--text);letter-spacing:.136px}.home-bio a{text-decoration:underline;transition:color var(--transition-fast)}.home-bio a:not([target]){color:var(--text-tertiary)}.home-bio a[href*=mailto]{color:var(--text)}.home-bio a:hover{color:var(--link-hover)}.home-social{display:flex;gap:var(--spacing-xs);flex-wrap:wrap;align-items:center}.home-social-link{color:var(--text);text-decoration:underline;transition:color var(--transition-fast)}.home-social-link:hover{color:var(--link)}.home-social-separator{color:var(--text-secondary);margin:0 var(--spacing-xs)}.projects-list{list-style-type:disc;padding-left:1.5rem;font-size:.94rem;margin-bottom:var(--spacing-xl)}.project-item{margin-bottom:var(--spacing-sm);line-height:28px;color:var(--text);letter-spacing:.136px}.project-link{text-decoration:underline;transition:color var(--transition-fast)}.project-link:hover{color:var(--link-hover)}.inline-link{color:var(--text-tertiary);transition:color var(--transition-fast)}.inline-link:hover{color:var(--link-hover)}@media (max-width: 764px){.projects-list{font-size:.89rem}}.contact-form{display:flex;flex-direction:column;gap:var(--spacing-xl);max-width:600px;margin-bottom:var(--spacing-xl)}.form-group{position:relative;display:flex;flex-direction:column}.form-input,.form-textarea{padding:var(--spacing-sm) 0;padding-bottom:.7rem;border:none;border-bottom:1px solid var(--border-secondary);background-color:transparent;color:var(--text);font-size:1rem;font-family:var(--font-sans);transition:border-color var(--transition-base);order:1}.form-input:focus,.form-textarea:focus{outline:none;border-bottom-color:var(--link)}.form-input::placeholder,.form-textarea::placeholder{color:transparent}.form-label{position:absolute;left:0;top:var(--spacing-sm);color:var(--text);font-size:.9rem;font-weight:400;pointer-events:none;transition:all var(--transition-base) ease;order:2}.form-label .required{color:var(--link);font-weight:500;transition:opacity var(--transition-base) ease}.form-label .optional{color:var(--text-secondary);font-size:.8rem;font-weight:400;transition:opacity var(--transition-base) ease}#name:focus+.form-label .optional{opacity:0}#email:focus+.form-label .required,#email:not(:placeholder-shown)+.form-label .required,#message:focus+.form-label .required,#message:not(:placeholder-shown)+.form-label .required{opacity:0}.form-input:focus+.form-label,.form-input:not(:placeholder-shown)+.form-label{top:-.5rem;font-size:.75rem;color:var(--link)}.form-textarea{min-height:180px;resize:vertical;padding:var(--spacing-sm);border:1px solid var(--border-secondary)}.form-textarea:focus{border-color:var(--link)}.form-textarea+.form-label{position:static;display:block;margin-bottom:calc(var(--spacing-xs) + 4px);font-size:.9rem;color:var(--text);order:0}.form-textarea+.form-label .required{color:var(--link);transition:opacity var(--transition-base) ease}.form-textarea+.form-label .optional{color:var(--text-secondary);font-size:.8rem}.form-textarea:focus+.form-label,.form-textarea:not(:placeholder-shown)+.form-label{color:var(--link)}.form-submit{padding:.5rem 1.5rem;background-color:var(--bg-sidebar);color:var(--text);border:1px solid var(--border-secondary);font-size:.875rem;font-weight:400;cursor:pointer;transition:all var(--transition-base);align-self:flex-start;font-family:var(--font-sans)}.form-submit:hover:not(:disabled){border-color:var(--text-secondary);color:var(--text-tertiary)}.form-submit:disabled{opacity:.4;cursor:not-allowed}.form-submit:focus-visible{outline:2px solid var(--link);outline-offset:2px}.form-message{padding:var(--spacing-sm) 0;font-size:.875rem;line-height:1.6}.form-message.success,.form-message.error{color:var(--text-secondary)}.field-error{display:block;margin-top:var(--spacing-xs);font-size:.75rem;color:#dc3545;order:3}.input-error{border-bottom-color:#dc3545}.form-textarea.input-error{border-color:#dc3545}.form-input.input-error+.form-label .required,.form-textarea.input-error+.form-label .required{color:#dc3545;opacity:1}.form-input.input-error+.form-label,.form-textarea.input-error+.form-label{color:#dc3545}.honeypot{position:absolute;left:-9999px;top:-9999px;opacity:0;pointer-events:none;height:0;width:0;overflow:hidden}@media (prefers-reduced-motion: reduce){.form-label,.form-label .optional,.form-label .required,.form-input,.form-textarea,.form-submit{transition:none}}.not-found{padding-top:var(--spacing-xl)}.not-found h1{margin-bottom:var(--spacing-sm)}.not-found-divider{width:2rem;height:1px;background-color:var(--border);margin:var(--spacing-sm) 0}.not-found p{color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.not-found-link{color:var(--link);transition:color var(--transition-fast)}.not-found-link:hover{color:var(--link-hover)}
