.landingContent{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-lg);width:100%;max-width:var(--content-wide);margin:0 auto;animation:fadeIn .4s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.pfp{height:auto;width:min(30%,200px);max-width:200px;border-radius:50%;margin-bottom:var(--space-md)}.description{max-width:min(90%,36ch);font-size:clamp(1rem,2vw,1.15rem);line-height:1.6}.chessLink{color:var(--color-link)}.header{font-size:clamp(1.75rem,4vw,2.5rem);font-family:var(--font-serif);font-weight:600;color:var(--color-text)}.subheader{font-size:clamp(1.2rem,2.5vw,1.5rem);font-family:var(--font-serif);font-weight:600;color:var(--color-text)}.text{font-size:clamp(.95rem,2vw,1.1rem);font-family:var(--font-serif);line-height:1.6;color:var(--color-text)}.generic{font-family:var(--font-serif);margin-block-start:0;margin-block-end:0}.alignmentLeft{text-align:left}.alignmentCenter{text-align:center}.alignmentRight{text-align:right}a{color:var(--color-link);text-decoration:none;font-weight:600;transition:color var(--transition-fast)}a:hover{color:var(--color-link-hover)}.loading,.error{font-family:var(--font-serif);margin:var(--space-md, 1rem) 0}.error{color:var(--color-error, #c00)}.aboutSection{width:100%;max-width:var(--content-max);padding:0 var(--space-md);animation:fadeIn .4s ease}.aboutSection .header,.aboutSection .text,.aboutSection .generic{margin-bottom:var(--space-md)}.aboutSection ul{padding-left:var(--space-lg);line-height:1.7}.blog{width:100%;max-width:var(--content-max);padding:0 var(--space-md);animation:fadeIn .4s ease}.blog .divider{border:0;border-top:1px solid var(--color-border);margin:var(--space-lg) 0}.blogPost{margin-bottom:var(--space-xl)}.blogTitle{font-family:var(--font-serif);font-weight:600;font-size:clamp(1.1rem,2vw,1.35rem);color:var(--color-text);text-align:center;margin-block-start:0;margin-block-end:0}.blogDate{margin-block-start:var(--space-md);margin-block-end:0;font-style:italic;font-size:.9rem;color:var(--color-text-muted)}.blogBody{margin-block-start:var(--space-md);margin-block-end:var(--space-md);font-size:clamp(.95rem,2vw,1.05rem);line-height:1.65}.blogBody p{margin-bottom:var(--space-sm)}.blogPost .divider{border:0;border-top:1px solid var(--color-border);margin-top:var(--space-lg)}.contactSection{width:100%;max-width:var(--content-max);padding:0 var(--space-md);animation:fadeIn .4s ease}.contactSection .generic a{margin:0 var(--space-sm)}.resumeSection{width:100%;max-width:var(--content-max);padding:0 var(--space-md);animation:fadeIn .4s ease}.resumeSection .sectionDivider{border:0;border-top:1px solid var(--color-border);margin:var(--space-md) 0}.resumeSection ul{padding-left:var(--space-lg);line-height:1.7}.resumeSection .loading,.resumeSection .error{margin:var(--space-md) 0}.resume-pdf-container{width:100%;min-height:70vh;margin:var(--space-md) 0;border-radius:6px;overflow:hidden;background:var(--color-bg-soft, #f5f5f5)}.resume-pdf-iframe{width:100%;height:80vh;min-height:600px;border:none}.resume-download-hint{margin:var(--space-sm) 0;font-size:.9em;color:var(--color-text-muted)}.resume-download-hint a{color:var(--color-link);text-decoration:none}.resume-download-hint a:hover{text-decoration:underline}.resume-name{font-size:1.5rem;font-weight:600;margin:0;color:var(--color-text)}.resume-subsection{margin-bottom:var(--space-lg);padding:var(--space-md);border-radius:6px;transition:background-color var(--transition-smooth, .25s ease)}.resume-subsection:hover{background-color:var(--color-bg-soft)}.resume-section-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-sm) 0;background:none;border:none;cursor:pointer;text-align:left;color:inherit;font:inherit}.resume-section-toggle:hover{color:var(--color-link)}.resume-section-chevron{font-size:1.2em;opacity:.7;margin-left:var(--space-sm)}.resume-section-content{margin-top:var(--space-xs);padding-left:0}.resume-inline-link{color:var(--color-link);text-decoration:none}.resume-inline-link:hover{color:var(--color-link-hover);text-decoration:underline}.resume-sub-item{margin-bottom:var(--space-lg)}.resume-sub-item:last-child{margin-bottom:0}.resume-edu-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-sm) var(--space-md);margin-bottom:var(--space-xs);font-size:1.05em}.resume-edu-degree{margin:0 0 var(--space-sm);font-style:italic}.resume-edu-details{margin:var(--space-xs) 0 0}.resume-edu-detail{margin:0 0 var(--space-xs);line-height:1.6}.resume-edu-detail:last-child{margin-bottom:0}.resume-edu-coursework{margin:var(--space-sm) 0 0;font-size:.95em;color:var(--color-text-muted)}.resume-meta{font-size:.9em;color:var(--color-text-muted)}.resume-role-header{margin-bottom:var(--space-sm)}.resume-role-title{display:block;font-weight:500;margin-top:var(--space-xs)}.resume-role-meta{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);font-size:.9em;color:var(--color-text-muted);margin-top:var(--space-xs)}.resume-location-nowrap{white-space:nowrap}.resume-role-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-xs) var(--space-sm);margin-bottom:var(--space-sm)}.resume-bullets{margin:var(--space-sm) 0 0;padding-left:0;list-style:none}.resume-bullets li{margin-bottom:var(--space-sm);padding-left:var(--space-lg);position:relative;line-height:1.6}.resume-bullets li:before{content:"";position:absolute;left:0;top:.55em;width:4px;height:4px;background-color:var(--color-link);opacity:.6;border-radius:50%}.resume-project-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-sm) var(--space-md);margin-bottom:var(--space-xs)}.resume-project-tech{font-size:.9em;color:var(--color-text-muted);font-weight:400}.resume-project-desc{margin:var(--space-xs) 0 0;line-height:1.6}.resume-skills{display:flex;flex-direction:column;gap:var(--space-sm)}.resume-skill-category{line-height:1.6}.projects{width:100%;max-width:var(--content-max);padding:0 var(--space-md);animation:fadeIn .4s ease}.projectsSubheader{font-style:italic;margin-top:var(--space-lg)}.sectionDivider{border:0;border-top:1px solid var(--color-border);margin:var(--space-md) 0}.project{margin-bottom:var(--space-xl)}.projectTitle{display:inline-block;font-family:var(--font-serif);font-weight:600;color:var(--color-text)}.projectBody{margin-block-start:0;margin-block-end:var(--space-md);font-size:clamp(.95rem,2vw,1.05rem);line-height:1.6}.projectBody p{margin-block-start:0;margin-block-end:var(--space-xs)}.project .divider{border:0;border-top:1px solid var(--color-border);margin-top:var(--space-lg)}.chess{width:100%;max-width:var(--content-wide);padding:0 var(--space-md);display:grid;grid-template-columns:1fr;gap:var(--space-md);justify-items:center;animation:fadeIn .4s ease}@media (min-width: 900px){.chess{grid-template-columns:repeat(2,minmax(320px,400px));justify-content:center}}.chess .header{margin-bottom:var(--space-lg)}.chessPuzzle{width:100%;max-width:400px;min-height:420px;display:flex;flex-direction:column;padding:var(--space-md);margin-bottom:var(--space-xl);background:var(--color-bg-soft);border-radius:8px;border:1px solid var(--color-border);transition:box-shadow var(--transition-smooth)}.chessPuzzle:hover{box-shadow:0 4px 12px #2c2c2c14}.chessPuzzleIframe{width:100%;min-height:360px;border:0;border-radius:4px;flex:1}.puzzleTitle{display:block;text-align:center;margin-block-start:var(--space-sm);font-family:var(--font-sans);font-weight:600;font-size:.95rem;color:var(--color-text)}.puzzleDescription{max-width:100%;text-align:center;font-size:.85rem;color:var(--color-text-muted);margin-block-start:var(--space-xs)}.whiteToMove,.blackToMove{max-width:100%;text-align:center;font-size:.9rem;margin-block-end:var(--space-sm)}@media (min-width: 640px){.chessPuzzle{width:400px;min-height:520px}.chessPuzzleIframe{min-height:420px}}.noPage{width:100%;max-width:var(--content-max);padding:var(--space-xl) var(--space-md);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;animation:fadeIn .4s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.noPagePic{height:auto;width:min(75%,280px);margin:var(--space-lg) 0}.commonPage{display:flex;justify-content:center;align-items:flex-start;flex:1;padding:var(--space-xl) var(--space-md);margin-block-end:var(--space-2xl)}.topnav{display:flex;justify-content:center;align-items:center;background-color:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--space-md) var(--space-lg);transition:background-color var(--transition-smooth)}.navComponents{width:100%;max-width:var(--content-wide);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md)}.name{color:var(--color-text);text-decoration:none;font-family:var(--font-sans);font-size:clamp(1.25rem,4vw,2rem);font-weight:700;transition:color var(--transition-fast)}.name:hover{color:var(--color-link);text-decoration:none}.links{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:clamp(var(--space-sm),2vw,var(--space-lg))}.links a{color:var(--color-text-muted);font-family:var(--font-sans);font-size:clamp(.9rem,2vw,1.1rem);font-weight:500;text-decoration:none;transition:color var(--transition-fast)}.links a:hover{color:var(--color-link);text-decoration:none}@media (max-width: 600px){.navComponents{flex-direction:column;align-items:center;text-align:center}.name{margin-right:0}.links{margin-left:0;justify-content:center}}.footerWrapper{margin-top:auto}.footer{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--space-md);max-width:100%;width:100%;padding:var(--space-lg) var(--space-md);background-color:var(--color-surface);border-top:1px solid var(--color-border)}.footer p,.footer a{margin:0;color:var(--color-text-muted);font-family:var(--font-sans);font-size:clamp(.85rem,2vw,.95rem);text-decoration:none;transition:color var(--transition-fast)}.footer a:hover{color:var(--color-link);text-decoration:none}.icon-github{height:1.25rem;width:1.25rem;vertical-align:middle}@media (max-width: 480px){.footer{flex-direction:column;text-align:center}}.admin-login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-soft)}.admin-login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:var(--space-xl);width:100%;max-width:360px}.admin-login-card h1{margin:0 0 var(--space-lg);font-family:var(--font-sans);font-size:1.25rem}.admin-login-card label{display:block;margin-bottom:var(--space-xs);font-size:.9rem}.admin-login-card input[type=password]{width:100%;padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);border:1px solid var(--color-border);border-radius:4px;font-family:var(--font-sans);font-size:1rem}.admin-login-card button{width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-link);color:var(--color-bg);border:none;border-radius:4px;font-family:var(--font-sans);font-size:1rem;cursor:pointer}.admin-login-card button:hover:not(:disabled){background:var(--color-link-hover)}.admin-login-card button:disabled{opacity:.7;cursor:not-allowed}.admin-error{color:#b71c1c;margin:0 0 var(--space-md);font-size:.9rem}.admin-layout{display:flex;min-height:100vh;background:var(--color-bg)}.admin-sidebar{width:220px;flex-shrink:0;background:var(--color-surface-strong);border-right:1px solid var(--color-border);padding:var(--space-lg);display:flex;flex-direction:column}.admin-sidebar-title{margin:0 0 var(--space-md);font-family:var(--font-sans);font-size:1.1rem}.admin-nav{display:flex;flex-direction:column;gap:var(--space-xs);flex:1}.admin-nav-link{padding:var(--space-sm) var(--space-md);border-radius:4px;text-decoration:none;color:var(--color-text);font-family:var(--font-sans);font-size:.95rem}.admin-nav-link:hover{background:var(--color-bg-soft)}.admin-nav-link.active{background:var(--color-bg-warm);color:var(--color-link-hover);font-weight:600}.admin-logout{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);background:transparent;border:1px solid var(--color-border);border-radius:4px;font-family:var(--font-sans);font-size:.9rem;cursor:pointer;color:var(--color-text-muted)}.admin-logout:hover{background:var(--color-bg-soft);color:var(--color-text)}.admin-main{flex:1;padding:var(--space-xl);overflow:auto}.admin-dashboard h1{margin:0 0 var(--space-md);font-size:1.5rem}.admin-dashboard p{margin:0 0 var(--space-lg);color:var(--color-text-muted)}.admin-dashboard-links{list-style:none;padding:0;margin:0}.admin-dashboard-links li{margin-bottom:var(--space-sm)}.admin-dashboard-links a{color:var(--color-link);text-decoration:none}.admin-dashboard-links a:hover{text-decoration:underline}.admin-editor h1{margin:0 0 var(--space-lg);font-size:1.35rem}.admin-editor label{display:block;margin-bottom:var(--space-xs);font-size:.9rem;font-family:var(--font-sans)}.admin-editor input[type=text],.admin-editor input[type=url],.admin-editor textarea{width:100%;max-width:560px;padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);border:1px solid var(--color-border);border-radius:4px;font-family:var(--font-sans);font-size:1rem}.admin-editor textarea{min-height:120px;resize:vertical}.admin-editor .admin-actions{margin-top:var(--space-lg)}.admin-editor .admin-btn{padding:var(--space-sm) var(--space-lg);margin-right:var(--space-sm);border-radius:4px;font-family:var(--font-sans);font-size:.95rem;cursor:pointer;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.admin-editor .admin-btn-primary{background:var(--color-link);color:var(--color-bg);border-color:var(--color-link)}.admin-editor .admin-btn-primary:hover{background:var(--color-link-hover);border-color:var(--color-link-hover)}.admin-editor .admin-btn:hover{background:var(--color-bg-soft)}.admin-editor .admin-message{margin-top:var(--space-md);font-size:.9rem}.admin-editor .admin-message.success{color:#2e7d32}.admin-editor .admin-message.error{color:#b71c1c}.admin-list{list-style:none;padding:0;margin:0}.admin-list-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);margin-bottom:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px}.admin-list-item-actions button{margin-left:var(--space-sm);padding:var(--space-xs) var(--space-sm);font-size:.85rem;border-radius:4px;border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;font-family:var(--font-sans)}.admin-list-item-actions button:hover{background:var(--color-bg-soft)}.admin-markdown-editor{min-height:280px;font-family:ui-monospace,monospace;font-size:.9rem}.admin-hint{margin:0 0 var(--space-sm);font-size:.9rem;color:var(--color-text-muted);line-height:1.4}.admin-hint code{font-size:.85em}.admin-file-upload input[type=file],.admin-resume-upload input[type=file]{margin-bottom:var(--space-md);font-family:var(--font-sans)}.admin-profile-preview{display:block;max-width:200px;max-height:200px;object-fit:cover;border-radius:8px;margin:0 0 var(--space-md);border:1px solid var(--color-border)}:root{--color-bg: #FDF8F3;--color-bg-soft: #FAF4ED;--color-bg-warm: #F7E7CE;--color-bg-accent: #F5D0C5;--color-text: #2C2C2C;--color-text-muted: #4A4A4A;--color-surface: #F0E6DC;--color-surface-strong: #E8DCCE;--color-border: rgba(44, 44, 44, .12);--color-link: #8B6914;--color-link-hover: #6B4F0F;--font-serif: "Source Serif 4", Georgia, serif;--font-sans: "Source Sans 3", system-ui, sans-serif;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--content-max: 720px;--content-wide: 960px;--transition-fast: .15s ease;--transition-smooth: .25s ease}*,*:before,*:after{box-sizing:border-box}body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-serif);overflow-y:scroll;overflow-x:hidden;margin:0;padding:0;min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh;width:100%;max-width:100vw}.app>hr{margin:0;border:0;border-top:1px solid var(--color-border);flex-shrink:0}
