:root{--bg:#f7f8fb;--card:#fff;--accent:#0b5fff;--muted:#6b7280;--text:#0b1220}[data-theme="dark"]{--bg:#071025;--card:#0b1220;--accent:#6366f1;--muted:#9ca3af;--text:#e6eefc}*{box-sizing:border-box}.theme-toggle{display:inline-flex;align-items:center;gap:8px;background:transparent;border:1px solid rgba(0,0,0,.06);padding:8px 10px;border-radius:8px;cursor:pointer}.icon{width:18px;height:18px;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;transition:transform .18s ease , opacity .18s ease}.theme-toggle .icon{margin-right:6px}.anchor-toggle{background:transparent;border:0;padding:8px;border-radius:8px;cursor:pointer}.anchor-toggle[aria-pressed="true"]{background:rgba(0,0,0,.04)}.drag-handle{display:flex;align-items:center;justify-content:center;cursor:grab;padding:6px 0;margin-bottom:6px}.drag-handle:active{cursor:grabbing}.sidebar.anchor-right{left:auto;right:20px;transform-origin:top right}.sidebar.anchor-right.open{transform:translateY(0) scale(1);opacity:1}.sidebar.dragging{transition:none}.hamburger{position:fixed;left:16px;top:16px;z-index:10001;background:var(--card);border:1px solid rgba(0,0,0,.06);padding:8px 10px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(12,13,24,.06);transition:transform .18s ease , background .18s}.hamburger:active{transform:scale(.98)}.sidebar{position:fixed;left:20px;top:20px;width:320px;max-width:88%;max-height:80vh;background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,.85));color:var(--text);border-radius:14px;padding:18px 16px;box-shadow:0 18px 50px rgba(2,6,23,.28);transform:translateY(-12px) scale(.98);opacity:0;transition:transform .32s cubic-bezier(.2,.9,.2,1) , opacity .28s;z-index:10000;overflow:auto;border:1px solid rgba(255,255,255,.6);backdrop-filter:blur(8px) saturate(120%)}.sidebar.open{transform:translateY(0) scale(1);opacity:1}.sidebar-inner{display:flex;flex-direction:column;min-height:0}.sidebar nav ul{list-style:none;padding:0;margin:26px 0}.sidebar nav a{display:block;padding:12px 10px;border-radius:10px;color:var(--text);text-decoration:none;transition:background .18s , transform .18s;font-weight:600}.sidebar nav a:hover{background:rgba(0,0,0,.04);transform:translateX(6px)}.sidebar-footer{margin-top:auto;padding-top:12px;border-top:1px dashed rgba(0,0,0,.04)}.sidebar-close{position:absolute;right:12px;top:10px;background:transparent;border:0;font-size:18px;cursor:pointer}.sidebar-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.28);opacity:0;visibility:hidden;transition:opacity .25s , visibility .25s;z-index:9999;backdrop-filter:blur(2px)}.sidebar-backdrop.show{opacity:1;visibility:visible}.btn,.btn-small,.hamburger,.theme-toggle{transition:background .18s ease , color .18s ease , transform .12s ease}.btn:hover{transform:translateY(-3px);box-shadow:0 10px 20px rgba(2,6,23,.08)}.btn-small:hover{transform:translateY(-2px)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:16px;transition:all .3s ease}.card{background:var(--card);border-radius:10px;overflow:hidden;box-shadow:0 6px 18px rgba(12,13,24,.06);display:flex;flex-direction:column;transform:translateY(0);transition:transform .28s cubic-bezier(.2,.8,.2,1) , box-shadow .28s}.card img{width:100%;height:160px;object-fit:cover;transition:transform .36s ease , filter .28s}.card:hover{transform:translateY(-8px);box-shadow:0 20px 40px rgba(2,6,23,.12)}.card:hover img{transform:scale(1.03);filter:brightness(.95)}@media (max-width:900px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.grid{grid-template-columns:1fr}.hamburger{left:12px;top:12px}.hero{flex-direction:column;align-items:flex-start}.avatar{width:120px;height:120px}.sidebar{width:260px}}body{font-family:Inter,system-ui,Segoe\ UI,Roboto,'Helvetica Neue',Arial,sans-serif;margin:0;background:var(--bg);color:var(--text);transition:background .2s , color .2s}.container{max-width:1100px;margin:0 auto;padding:24px}.hero{display:flex;gap:20px;align-items:center;padding:28px 0}.avatar{width:140px;height:140px;border-radius:12px;object-fit:cover;border:4px solid var(--card);box-shadow:0 6px 18px rgba(12,13,24,.06)}.hero-text h1{margin:0 0 8px;font-size:28px}.lead{color:var(--muted);margin:0 0 12px}.btn{background:var(--accent);color:#fff;padding:10px 14px;border-radius:8px;text-decoration:none;display:inline-block}.btn-outline{border:1px solid var(--accent);color:var(--accent);padding:9px 13px;border-radius:8px;text-decoration:none}.projects h2,.contact h2{margin-top:40px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:16px}.card{background:var(--card);border-radius:10px;overflow:hidden;box-shadow:0 6px 18px rgba(12,13,24,.06);display:flex;flex-direction:column}.card img{width:100%;height:160px;object-fit:cover}.card-body{padding:14px}.btn-small{background:var(--accent);color:#fff;padding:6px 8px;border-radius:6px;text-decoration:none;font-size:13px}.contact form{display:grid;gap:10px;max-width:640px}.contact label{display:block}.contact input,.contact textarea,input,textarea{width:100%;padding:10px;border-radius:8px;border:1px solid #e6e9ef}[data-theme="dark"] input,[data-theme="dark"] textarea{background:transparent;border-color:#1f2937;color:var(--text)}.notice.success{background:#ecfdf5;border:1px solid #bbf7d0;padding:10px;border-radius:8px;color:#065f46}@media (max-width:900px){.grid{grid-template-columns:repeat(2,1fr)}.hero{flex-direction:row}}@media (max-width:600px){.grid{grid-template-columns:1fr}.hero{flex-direction:column;align-items:flex-start}.avatar{width:120px;height:120px}}