@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";
:root{--bg-primary:#fcfbf7;--bg-secondary:#f7f5f0;--bg-tertiary:#ebe8de;--text-primary:#2d2a26;--text-secondary:#5c5852;--text-tertiary:#8c8880;--accent:#9333ea;--accent-hover:#7e22ce;--accent-light:#9333ea14;--border:#e8e5df;--border-hover:#d4cfcd;--shadow-sm:0 1px 3px #0000000a;--shadow-md:0 4px 12px #0000000f;--shadow-lg:0 8px 30px #00000014;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--transition:.2s ease;--max-width:1100px;--header-height:64px}[data-theme=dark]{--bg-primary:#121015;--bg-secondary:#1c1921;--bg-tertiary:#27242e;--text-primary:#ebe8de;--text-secondary:#b5b0aa;--text-tertiary:#8c8880;--accent:#a855f7;--accent-hover:#c084fc;--accent-light:#a855f726;--border:#333038;--border-hover:#45414b;--shadow-sm:0 1px 3px #0003;--shadow-md:0 4px 12px #0000004d;--shadow-lg:0 8px 30px #0006}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:var(--bg-primary);color:var(--text-primary);transition:background-color var(--transition), color var(--transition);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-weight:600;line-height:1.3}h1{font-size:2.5rem}h2{font-size:1.75rem}h3{font-size:1.25rem}p{color:var(--text-secondary);line-height:1.7}.container{max-width:768px;margin:0 auto;padding:0 24px}.page-content{min-height:calc(100vh - var(--header-height) - 100px);padding-top:calc(var(--header-height) + 20px);padding-bottom:80px}.header{height:var(--header-height);z-index:100;background:0 0;position:fixed;top:0;left:0;right:0}.header-inner{max-width:var(--max-width);justify-content:space-between;align-items:center;height:100%;margin:0 auto;padding:0 24px;display:flex}.header-logo{color:var(--text-primary);letter-spacing:-.02em;font-size:1.1rem;font-weight:700}.header-logo span{color:var(--accent)}.header-nav{align-items:center;gap:8px;display:flex}.header-nav a{border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition);padding:6px 14px;font-size:.875rem;font-weight:500}.header-nav a:hover,.header-nav a.active{color:var(--accent);background:var(--accent-light)}.header-actions{align-items:center;gap:4px;display:flex}.theme-toggle{border-radius:var(--radius-sm);cursor:pointer;width:36px;height:36px;color:var(--text-secondary);transition:all var(--transition);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.theme-toggle:hover{background:var(--accent-light);color:var(--accent)}.mobile-menu-btn{border-radius:var(--radius-sm);cursor:pointer;width:36px;height:36px;color:var(--text-secondary);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.2rem;display:none}@media (max-width:768px){.mobile-menu-btn{display:flex}.header-nav{top:var(--header-height);background:var(--bg-secondary);border-bottom:1px solid var(--border);opacity:0;pointer-events:none;flex-direction:column;gap:4px;padding:16px 24px;transition:all .3s;position:fixed;left:0;right:0;transform:translateY(-100%)}.header-nav.open{opacity:1;pointer-events:all;transform:translateY(0)}.header-nav a{width:100%;padding:10px 14px}}.hero{text-align:left;padding:40px 0 60px}.hero h1{letter-spacing:-.04em;color:var(--text-primary);margin-bottom:16px;font-size:3.2rem;font-weight:700}.hero p{max-width:600px;color:var(--text-secondary);margin:0 0 8px;font-size:1rem}.contact-button-wrapper{margin-top:24px}.contact-button{background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;transition:all var(--transition);border:none;border-radius:40px;align-items:center;gap:8px;padding:10px 20px;font-size:.95rem;font-weight:600;display:inline-flex}.contact-button:hover{background:var(--border)}.email-reveal{color:var(--text-secondary);margin-top:12px;font-size:.9rem}.email-reveal a{color:var(--text-primary);text-underline-offset:2px;font-weight:500;text-decoration:underline}.section{text-align:left;margin-bottom:60px}.section-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.section-header h2{letter-spacing:-.01em;font-size:1.35rem}.section-header a{color:var(--accent);transition:opacity var(--transition);font-size:.875rem;font-weight:500}.section-header a:hover{opacity:.8}.projects-list{flex-direction:column;gap:16px;padding-bottom:8px;display:flex;overflow-x:auto}.projects-list::-webkit-scrollbar{height:4px}.projects-list::-webkit-scrollbar-track{background:0 0}.projects-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.project-item{color:var(--text-secondary);white-space:nowrap;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:.95rem;line-height:1.6}.project-item .project-action{color:var(--text-secondary)}.project-item .project-title{color:var(--text-primary);transition:opacity var(--transition);font-weight:600;text-decoration:none}.project-item .project-title:hover{opacity:.8}.project-item .project-duration{background:var(--bg-tertiary);white-space:nowrap;border-radius:4px;margin-left:8px;padding:2px 6px;font-size:.8rem}.blog-list{flex-direction:column;gap:12px;display:flex}.blog-card{border-radius:var(--radius-md);transition:all var(--transition);background:0 0;align-items:flex-start;gap:16px;padding:16px 20px;display:flex}.blog-card:hover{background:var(--bg-secondary)}.blog-card-date{color:var(--text-tertiary);white-space:nowrap;min-width:80px;padding-top:2px;font-size:.8rem}.blog-card-content h3{transition:color var(--transition);margin-bottom:4px;font-size:1rem}.blog-card:hover .blog-card-content h3{color:var(--accent)}.blog-card-content p{color:var(--text-tertiary);font-size:.85rem;line-height:1.5}@media (max-width:640px){.blog-card{flex-direction:column;gap:4px}.projects-grid{grid-template-columns:1fr}.hero h1{font-size:2rem}}.blog-detail{max-width:720px;margin:0 auto}.blog-detail-header{margin-bottom:40px}.blog-detail-header h1{letter-spacing:-.02em;margin-bottom:12px;font-size:2rem}.blog-detail-meta{color:var(--text-tertiary);font-size:.875rem}.blog-detail-body{color:var(--text-secondary);font-size:1.05rem;line-height:1.8}.blog-detail-body h2{margin-top:40px;margin-bottom:16px;font-size:1.5rem}.blog-detail-body h3{margin-top:32px;margin-bottom:12px}.blog-detail-body p{margin-bottom:20px}.blog-detail-body code{background:var(--bg-tertiary);border-radius:4px;padding:2px 6px;font-family:Geist Mono,monospace;font-size:.9em}.blog-detail-body pre{background:var(--bg-tertiary);border-radius:var(--radius-md);margin-bottom:20px;padding:20px;overflow-x:auto}.blog-detail-body pre code{background:0 0;padding:0}.blog-detail-body ul,.blog-detail-body ol{margin-bottom:20px;padding-left:24px}.blog-detail-body li{color:var(--text-secondary);margin-bottom:8px}.blog-detail-body blockquote{border-left:3px solid var(--accent);color:var(--text-tertiary);margin-bottom:20px;padding-left:20px;font-style:italic}.blog-detail-body a{color:var(--accent);text-underline-offset:2px;transition:text-decoration-color var(--transition);-webkit-text-decoration:underline #6c63ff4d;text-decoration:underline #6c63ff4d}.blog-detail-body a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.back-link{color:var(--text-tertiary);transition:color var(--transition);align-items:center;gap:6px;margin-bottom:32px;font-size:.875rem;display:inline-flex}.back-link:hover{color:var(--accent)}.footer{margin-top:40px;padding:40px 0}.footer-inner{justify-content:flex-start;align-items:center;gap:24px;max-width:768px;margin:0 auto;padding:0 24px;display:flex}.footer-text{color:var(--text-tertiary);font-size:.825rem}.footer-links{gap:16px;display:flex}.footer-links a{color:var(--text-secondary);transition:color var(--transition);align-items:center;gap:6px;font-size:.875rem;font-weight:500;display:flex}.footer-links a:hover{color:var(--text-primary)}@media (max-width:640px){.footer-inner{flex-direction:column;align-items:flex-start;gap:16px}}.admin-layout{min-height:calc(100vh - var(--header-height));padding-top:var(--header-height);display:flex}.admin-sidebar{background:var(--bg-secondary);border-right:1px solid var(--border);width:220px;top:var(--header-height);transition:all var(--transition);padding:24px 16px;position:fixed;bottom:0;left:0}.admin-sidebar h3{text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:12px;padding:0 12px;font-size:.7rem}.admin-sidebar a{border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition);margin-bottom:2px;padding:8px 12px;font-size:.875rem;display:block}.admin-sidebar a:hover,.admin-sidebar a.active{background:var(--accent-light);color:var(--accent)}.admin-main{flex:1;margin-left:220px;padding:32px}@media (max-width:768px){.admin-sidebar{display:none}.admin-main{margin-left:0}}.admin-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:20px;padding:24px}.admin-card h2{margin-bottom:20px;font-size:1.25rem}.admin-stats{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:32px;display:grid}.admin-stat{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;padding:20px}.admin-stat-value{color:var(--accent);font-size:2rem;font-weight:700}.admin-stat-label{color:var(--text-tertiary);margin-top:4px;font-size:.8rem}.form-group{margin-bottom:20px}.form-group label{color:var(--text-secondary);margin-bottom:6px;font-size:.825rem;font-weight:500;display:block}.form-input,.form-textarea,.form-select{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);transition:border-color var(--transition);outline:none;padding:10px 14px;font-family:inherit;font-size:.9rem}.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--accent)}.form-textarea{resize:vertical;min-height:200px;line-height:1.6}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);border:none;justify-content:center;align-items:center;gap:6px;padding:9px 18px;font-family:inherit;font-size:.85rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{color:var(--text-secondary);border:1px solid var(--border);background:0 0}.btn-secondary:hover{border-color:var(--border-hover);color:var(--text-primary)}.btn-danger{color:#e54d4d;background:0 0;border:1px solid #e54d4d4d}.btn-danger:hover{background:#e54d4d14}.btn-sm{padding:5px 12px;font-size:.8rem}.admin-table{border-collapse:collapse;width:100%}.admin-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);border-bottom:1px solid var(--border);padding:10px 16px;font-size:.75rem;font-weight:600}.admin-table td{border-bottom:1px solid var(--border);color:var(--text-secondary);padding:12px 16px;font-size:.875rem}.admin-table tr:hover td{background:var(--accent-light)}.table-actions{gap:8px;display:flex}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:380px;padding:40px 32px}.login-card h1{text-align:center;margin-bottom:8px;font-size:1.5rem}.login-card p{text-align:center;margin-bottom:32px;font-size:.875rem}.login-error{border-radius:var(--radius-sm);color:#e54d4d;background:#e54d4d14;border:1px solid #e54d4d33;margin-bottom:20px;padding:10px 14px;font-size:.825rem}.empty-state{text-align:center;color:var(--text-tertiary);padding:60px 20px}.empty-state p{color:var(--text-tertiary);font-size:.9rem}.modal-overlay{z-index:200;background:#0006;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:560px;max-height:90vh;padding:32px;overflow-y:auto}.modal h2{margin-bottom:24px;font-size:1.25rem}.modal-actions{justify-content:flex-end;gap:8px;margin-top:24px;display:flex}
