:root{--color-bg:#111114;--color-bg-gradient:linear-gradient(135deg,#888888,#080808);--color-panel:#18181b;--color-panel-gloss:linear-gradient(120deg,#232326,#18181b);--color-border:#232326;--color-header:#fff;--color-text:#e1e1e6;--color-subtle:#adadad;--color-link:#d1d1d1;--color-link-hover:#fff;--color-accent:#fff;--color-card:#19191c;--color-card-shadow:0 2px 16px 0 rgba(255,255,255,0.13);--font-main:"Inter","Segoe UI",Arial,sans-serif;--font-heading:"Playfair Display",serif;--transition-main:0.2s cubic-bezier(.4,0,.2,1)}[data-theme=light]{--color-bg:#f6f7fa;--color-bg-gradient:linear-gradient(135deg,#888888 20%,#f6f7fa);--color-panel:#fff;--color-panel-gloss:linear-gradient(120deg,#fff,#f6f7fa);--color-border:#e5e5e5;--color-header:#111114;--color-text:#22222a;--color-subtle:#6c6c6c;--color-link:#22222a;--color-link-hover:#000;--color-accent:#000;--color-card:#f8f8fa;--color-card-shadow:0 2px 16px 0 rgba(0,0,0,0.10)}body,html{margin:0;padding:0;background:var(--color-bg-gradient);color:var(--color-text);font-family:var(--font-main);min-height:100%;box-sizing:border-box;scroll-behavior:smooth;transition:background var(--transition-main),color var(--transition-main)}*,:after,:before{box-sizing:inherit}a{color:var(--color-link);text-decoration:none;transition:color .18s}a:focus,a:hover{color:var(--color-link-hover);text-decoration:underline}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:#3a4257;border-radius:4px}[data-theme=light] ::-webkit-scrollbar-thumb{background:#dde4f1}::-webkit-scrollbar-track{background:transparent}img{max-width:100%;display:block;border-radius:10px}::selection{background:var(--color-accent);color:var(--color-header)}button,input,select,textarea{font:inherit;border-radius:6px;outline:none;transition:box-shadow .14s}a:focus,button:focus,input:focus{box-shadow:0 0 0 2px var(--color-accent)}body{overflow-x:hidden}.portfolio-root{min-height:100vh;background:var(--color-bg-gradient);color:var(--color-text);font-family:var(--font-main);letter-spacing:.01em;flex-direction:column}.portfolio-root,header{display:flex;transition:background var(--transition-main),color var(--transition-main)}header{justify-content:space-between;align-items:center;padding:2rem 5vw 1rem;background:var(--color-panel-gloss);border-bottom:1px solid var(--color-border);box-shadow:var(--color-shadow)}.header-info h1{font-family:var(--font-heading);font-size:2.6rem;letter-spacing:.02em;font-weight:700;margin-bottom:.2rem;color:var(--color-header)}.header-info h1,.header-info p{transition:color var(--transition-main)}.header-info p{font-size:1.1rem;color:var(--color-subtle);margin-top:0}.menu-btn,.theme-toggle{background:var(--color-panel);border-radius:50%;font-size:2rem;width:48px;height:48px;cursor:pointer;color:var(--color-header);display:flex;align-items:center;justify-content:center;border:2px solid #fff;transition:box-shadow var(--transition-main),background var(--transition-main),color var(--transition-main),border-color var(--transition-main)}[data-theme=light] .menu-btn,[data-theme=light] .theme-toggle{border:2px solid #111}.menu-btn:focus,.menu-btn:hover,.theme-toggle:focus,.theme-toggle:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.11);background:var(--color-card);color:var(--color-accent)}.theme-toggle{font-size:1.5rem;margin-right:.5rem}main{width:100%;max-width:950px;margin:0 auto;padding:2rem 2vw;flex:1}section{margin-bottom:3.5rem;border-radius:16px;padding:2.5rem 2rem;border:1.5px solid var(--color-border);transition:box-shadow var(--transition-main),background var(--transition-main),color var(--transition-main)}section,section:hover{background:var(--color-panel);box-shadow:var(--color-shadow)}h2{font-family:var(--font-heading);font-size:2.1rem;margin-bottom:1.2rem;color:var(--color-header);letter-spacing:.01em;transition:color var(--transition-main)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;margin-top:1.6rem}.project-card{background:var(--color-card);border-radius:16px;box-shadow:var(--color-card-shadow);border:1.5px solid var(--color-border);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .22s cubic-bezier(.4,0,.2,1),transform .17s,border-color .15s,background .18s;position:relative;text-decoration:none;color:inherit;cursor:pointer;outline:none}.project-card:focus,.project-card:hover{box-shadow:0 8px 32px 0 rgba(255,255,255,.25);border-color:var(--color-accent);background:linear-gradient(135deg,rgba(255,255,255,.03),rgba(0,0,0,.11));text-decoration:none}[data-theme=light] .project-card{box-shadow:0 2px 16px 0 rgba(0,0,0,.13)}[data-theme=light] .project-card:focus,[data-theme=light] .project-card:hover{box-shadow:0 8px 32px 0 rgba(0,0,0,.19);background:linear-gradient(135deg,rgba(0,0,0,.01),rgba(255,255,255,.08))}.project-img-wrapper{position:relative;width:100%;aspect-ratio:1/1;min-height:240px;background:linear-gradient(120deg,#232326 60%,#18181b);overflow:hidden;border-bottom:1.5px solid var(--color-border)}[data-theme=light] .project-img-wrapper{background:linear-gradient(120deg,#fff 60%,#f6f7fa)}.project-img-wrapper img{width:100%;height:100%;object-fit:cover;display:block}.img-gloss,.project-img-wrapper img{border-top-left-radius:16px;border-top-right-radius:16px}.img-gloss{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;background:linear-gradient(60deg,rgba(255,255,255,.11),rgba(255,255,255,.04) 75%);opacity:.72;mix-blend-mode:lighten}.project-info{padding:1.3rem 1.1rem 1.1rem;flex:1;display:flex;flex-direction:column;gap:.8rem}.project-info h3{font-size:1.23rem;font-weight:600;margin-bottom:.2rem;color:var(--color-header);transition:color var(--transition-main)}[data-theme=light] .project-info h3{color:#232326}.project-info p{flex:1;color:var(--color-subtle);font-size:.97rem;margin-bottom:.6rem;transition:color var(--transition-main)}.project-link-indicator{display:inline-block;border-radius:8px;padding:.5em 1.1em;font-weight:600;font-size:.97em;margin-top:.6em;background:none;color:var(--color-accent);border:1.5px solid var(--color-accent);box-shadow:none;text-align:center;transition:background .16s,color .16s,border-color .16s,box-shadow .16s}.project-card:focus .project-link-indicator,.project-card:hover .project-link-indicator{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent);box-shadow:0 2px 8px 0 rgba(0,0,0,.07)}.project-card:focus-visible{outline:2.5px solid var(--color-accent);outline-offset:2px}.sidebar{position:fixed;top:0;right:0;height:100vh;width:260px;background:var(--color-panel);box-shadow:-3px 0 24px 0 rgba(56,56,56,.11);padding:2.5rem 1.4rem 0;transform:translateX(100%);transition:transform .24s cubic-bezier(.4,0,.2,1),background var(--transition-main),color var(--transition-main);z-index:200;display:flex;flex-direction:column;gap:2.2rem}.sidebar.open{transform:translateX(0)}.sidebar .close-btn{background:none;border:none;font-size:2.2rem;color:var(--color-header);position:absolute;top:1.5rem;right:1.3rem;cursor:pointer}.sidebar a{font-size:1.2rem;margin-bottom:1.2rem;color:var(--color-header);text-decoration:none;transition:color .18s}.sidebar a:focus,.sidebar a:hover{color:var(--color-accent)}.overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;background:rgba(0,0,0,.72);opacity:0;transition:opacity .24s cubic-bezier(.4,0,.2,1);z-index:150;backdrop-filter:blur(2.5px)}.overlay.show{opacity:1;pointer-events:all}[data-theme=light] .overlay{background:rgba(255,255,255,.6)}@media (max-width:700px){main{padding:1.2rem .7rem}section{padding:1.4rem .7rem}.sidebar{width:80vw;min-width:200px}}