.home .hero{display:grid;grid-template-columns:140px 1fr;align-items:center;gap:1.25rem;padding:2rem 0 1rem}.photo{width:140px;height:140px}.photo img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;border:2px solid var(--border);background:var(--card)}.photo-placeholder{width:140px;height:140px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(ellipse at 70% 30%,color-mix(in oklab,var(--accent) 22%,transparent),transparent 60%),var(--card);border:2px dashed color-mix(in oklab,var(--accent) 65%,transparent);color:var(--accent);font-weight:800;font-size:2rem}.hero-text h1{margin:0;font-size:2rem}.hero-text p{margin:.25rem 0 0;color:var(--muted)}@media (max-width: 640px){.home .hero{grid-template-columns:1fr;text-align:center}.photo,.photo-placeholder{margin:0 auto}}.about{padding-left:calc(1rem + 6px);padding-right:calc(1rem + 6px)}.about h2{margin-top:0}.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:1rem}.tech-grid>div{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:1rem;transition:background-color .32s ease,border-color .32s ease}.tech-grid>div:hover{border-color:color-mix(in oklab,var(--accent) 30%,var(--border))}.tech-grid h3{margin:0 0 .5rem;color:var(--text)}.tech-grid ul{margin:0;padding-left:1.1rem}@media (max-width: 1200px){.tech-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}}@media (max-width: 768px){.tech-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}@media (max-width: 640px){.tech-grid{grid-template-columns:1fr}.tech-grid>div{padding:.75rem}}.contact{padding-left:calc(1rem + 6px);padding-right:calc(1rem + 6px)}.contact h2{margin-top:0}.contact-form{display:grid;gap:.75rem;max-width:640px}.contact-form label{display:grid;gap:.25rem;font-size:.95rem;color:var(--muted)}.contact-form input,.contact-form textarea,.contact-form select{width:100%;border:1px solid var(--border);border-radius:8px;padding:.6rem .7rem;background:var(--bg);color:var(--text);transition:background-color .32s ease,border-color .32s ease,color .32s ease}.custom-select{position:relative}.select-toggle{width:100%;display:grid;grid-template-columns:1fr auto;align-items:center;gap:.5rem;border:1px solid var(--border);border-radius:8px;padding:.6rem .7rem;background:var(--bg);color:var(--text);cursor:pointer}.select-toggle .chevron{transition:transform .18s ease}.custom-select[data-open=true] .select-toggle .chevron{transform:rotate(180deg)}.options{position:absolute;left:0;right:0;top:100%;background:var(--card);border:1px solid var(--border);border-top:1px solid var(--border);border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:0;margin:0;overflow:hidden;transform-origin:top;transform:scaleY(.8);opacity:0;visibility:hidden;transition:opacity .16s ease,transform .16s ease,visibility .16s step-end;box-shadow:0 8px 24px color-mix(in oklab,black 35%,transparent)}.custom-select[data-open=true] .options{transform:scaleY(1);opacity:1;visibility:visible;transition-timing-function:cubic-bezier(.2,.8,.2,1);transition-duration:.22s}.options li{list-style:none;padding:.6rem .7rem;cursor:pointer;border-top:1px solid var(--border)}.options li:first-child{border-top:none}.options li:hover,.options li[aria-selected=true]{background:color-mix(in oklab,var(--accent) 16%,transparent);color:var(--text)}.btn-primary{background:var(--accent);color:#0a0a0a;border:none;border-radius:8px;padding:.6rem .9rem;font-weight:700;cursor:pointer}.btn-primary:hover{filter:brightness(.95)}.status{margin-top:.5rem;color:var(--muted)}.custom-select[data-open=true] .select-toggle{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none}.navbar{position:sticky;top:0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:color-mix(in oklab,var(--bg) 86%,transparent);border-bottom:1px solid var(--border);z-index:10}.nav-content{display:flex;align-items:center;justify-content:space-between;padding:1.75rem 0}.brand{color:var(--text);text-decoration:none;font-weight:700;letter-spacing:.2px;display:inline-flex;align-items:center;gap:.5rem}.nav-links{display:flex;gap:1rem;position:relative}.nav-links a{color:var(--muted);text-decoration:none;padding:.6rem .8rem;margin:.5rem 0;border-radius:6px;position:relative;overflow:hidden}.nav-links a.active,.nav-links a:hover{color:var(--text);background:color-mix(in oklab,var(--accent) 18%,transparent);transition:background-color .22s ease,color .22s ease}.nav-actions{display:flex;align-items:center;gap:.75rem;position:relative;margin-left:1rem}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;border:1px solid var(--border);background:var(--card);display:grid;place-items:center;margin:.5rem .25rem}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-fallback{font-size:.75rem;font-weight:800;color:var(--accent)}.hamburger{width:40px;height:40px;display:inline-flex;flex-direction:column;justify-content:center;gap:4px;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:0 6px;margin:.5rem .25rem;cursor:pointer}.hamburger span{display:block;height:2px;width:100%;background:var(--text);border-radius:2px}.hamburger-menu{position:absolute;right:0;top:calc(100% + 8px);display:flex;gap:.75rem;padding:.6rem .7rem;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px color-mix(in oklab,black 35%,transparent);z-index:20}.icon-link{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text)}.icon-link:hover{outline:2px solid color-mix(in oklab,var(--accent) 32%,transparent)}.icon-link img{width:20px;height:20px}html[data-theme=dark] .icon-link.github img{filter:invert(1)}.nav-indicator{position:absolute;left:0;bottom:-2px;height:2px;width:0;transition:transform .26s cubic-bezier(.2,.8,.2,1);pointer-events:none}.nav-indicator-inner{display:block;height:100%;background:var(--accent);border-radius:2px;transition:width .26s cubic-bezier(.2,.8,.2,1)}.nav-indicator-inner.bump{animation:nav-bump .28s ease-out}@keyframes nav-bump{0%{transform:translate(0) scaleX(1)}50%{transform:translate(0) scaleX(1.08)}to{transform:translate(0) scaleX(1)}}.nav-ripple{position:absolute;left:calc(var(--rx) - var(--rsize) / 2);top:calc(var(--ry) - var(--rsize) / 2);width:var(--rsize);height:var(--rsize);background:radial-gradient(60% 90% at 50% 40%,color-mix(in oklab,var(--accent) 55%,transparent) 0%,transparent 70%),radial-gradient(80% 80% at 55% 45%,color-mix(in oklab,var(--accent) 30%,transparent) 0%,transparent 72%);transform:rotate(var(--rrot)) scale(.4);opacity:.45;pointer-events:none;border-radius:60% 60% 65% 65%/65% 65% 45% 45%;animation:nav-ripple .6s cubic-bezier(.2,.8,.2,1) forwards}@keyframes nav-ripple{0%{transform:rotate(var(--rrot)) scale(.4);opacity:.5}70%{transform:rotate(var(--rrot)) scale(1.05);opacity:.25}to{transform:rotate(var(--rrot)) scale(1.2);opacity:0}}.theme-toggle{position:relative;overflow:hidden;width:44px;height:40px;display:inline-flex;align-items:center;justify-content:center;gap:0;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:999px;padding:0;margin:.5rem .25rem;cursor:pointer}.theme-toggle:hover{outline:2px solid color-mix(in oklab,var(--accent) 40%,transparent)}.theme-toggle .icon{position:absolute;transition:transform .26s cubic-bezier(.2,.8,.2,1),opacity .26s ease;font-size:16px;line-height:1}.theme-toggle.dark .icon.sun{transform:translateY(140%);opacity:0}.theme-toggle.dark .icon.moon,.theme-toggle.light .icon.sun{transform:translateY(0);opacity:1}.theme-toggle.light .icon.moon{transform:translateY(-140%);opacity:0}.theme-toggle:active .icon{transition-duration:.18s}@media (max-width: 768px){.navbar .container{padding-left:calc(1.5rem + env(safe-area-inset-left));padding-right:calc(1.5rem + env(safe-area-inset-right))}}@media (max-width: 768px){.nav-links,.hamburger-menu{display:none}.mobile-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in oklab,black 55%,transparent);opacity:1;z-index:9997}.mobile-drawer{position:fixed;right:0;top:0;bottom:0;width:min(84vw,360px);background:transparent;border-left:none;box-shadow:none;transform:translate(0);z-index:9998;display:grid;align-content:start;padding:1rem;animation:drawer-in .22s cubic-bezier(.2,.8,.2,1)}.drawer-panel{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:1rem;display:grid;grid-template-rows:auto 1fr auto;gap:.75rem;box-shadow:0 10px 28px color-mix(in oklab,black 35%,transparent)}@keyframes drawer-in{0%{transform:translate(16px);opacity:.92}to{transform:translate(0);opacity:1}}.drawer-header{display:flex;align-items:center;justify-content:space-between}.drawer-title{font-weight:700}.drawer-close{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:.2rem .5rem;cursor:pointer}.drawer-links{display:grid;gap:.75rem;padding:.5rem 0 1rem}.drawer-links a{color:var(--text);text-decoration:none;padding:.8rem .9rem;border-radius:8px;border:1px solid var(--border);background:var(--bg)}.drawer-links a.active,.drawer-links a:hover{background:color-mix(in oklab,var(--accent) 18%,transparent)}.drawer-icons{display:flex;gap:.75rem}}.footer{border-top:1px solid var(--border);background:color-mix(in oklab,var(--bg) 86%,transparent)}.footer-content{display:flex;align-items:center;justify-content:space-between;padding:1rem 0}.socials{display:flex;gap:1rem}.socials a{color:var(--muted);text-decoration:none}.socials a:hover{color:var(--accent)}.not-found{text-align:center;padding:2rem}.not-found h2{margin-top:0}:root{--bg: #0f0f12;--text: #e8e8e8;--muted: #b6b6b6;--card: #16161a;--border: #232329;--accent: #00ff88}html[data-theme=light]{--bg: #f6f7fb;--text: #1b1e23;--muted: #4b5563;--card: #ffffff;--border: #e5e7eb}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,"Apple Color Emoji","Segoe UI Emoji";background:var(--bg);color:var(--text);transition:background-color .32s ease,color .32s ease}.container{max-width:1040px;margin:0 auto;padding:0 1rem}.app-container{min-height:100%;display:grid;grid-template-rows:auto 1fr auto}main.container{padding:1.5rem 0 2rem;display:flex;flex-direction:column;gap:10px}section{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:1rem;margin:0 .5rem;transition:background-color .32s ease,border-color .32s ease,color .32s ease}@media (max-width: 768px){section{margin:0 .75rem}}@media (max-width: 480px){section{margin:0 1rem}}
