:root{--font-sans:"Inter", system-ui, -apple-system, sans-serif;--bg-primary:#fff;--bg-secondary:#f7f6f3;--bg-sidebar:#fff;--text-primary:#1f2937;--text-secondary:#5f6368;--border-color:#0000000f;--hover-bg:#f1f3f4;--accent-color:#2383e2;--shadow-sm:0 1px 2px #0000000d;--sidebar-width:240px;--sidebar-collapsed-width:0px}[data-theme=dark]{--bg-primary:#191919;--bg-secondary:#202020;--bg-sidebar:#191919;--text-primary:#fff;--text-secondary:#9ca3af;--border-color:#ffffff14;--hover-bg:#2d2d2d;--accent-color:#2eaadc;--shadow-sm:0 1px 2px #0003}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);transition:background-color .3s,color .3s;overflow-x:hidden}#root{min-height:100vh;display:flex}a{color:inherit;text-decoration:none}ul{list-style:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}.sidebar{width:var(--sidebar-width);background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);z-index:100;flex-direction:column;height:100vh;transition:width .3s;display:flex;position:sticky;top:0;overflow-x:hidden}.sidebar.collapsed{width:60px}.sidebar-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;height:60px;padding:20px 16px;display:flex}.workspace-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.collapse-btn{color:var(--text-secondary);border-radius:4px;justify-content:center;align-items:center;padding:4px;transition:background-color .2s;display:flex}.collapse-btn:hover{background-color:var(--hover-bg)}.sidebar-nav{flex:1;padding:8px}.sidebar-nav li{width:100%}.sidebar-nav ul{flex-direction:column;gap:2px;display:flex}.nav-item{cursor:pointer;color:var(--text-secondary);white-space:nowrap;text-align:left;background:0 0;border:none;border-radius:4px;align-items:center;gap:12px;width:100%;padding:8px 12px;transition:background-color .2s;display:flex}.nav-item:hover,.nav-item.active{background-color:var(--hover-bg)}.nav-icon{color:var(--text-secondary);justify-content:center;align-items:center;min-width:18px;display:flex}.nav-text{color:var(--text-secondary);font-size:14px;font-weight:500;transition:color .2s}.nav-item.active .nav-text,.nav-item:hover .nav-text{color:var(--text-primary)}.sidebar-footer{border-top:1px solid var(--border-color);padding:16px 8px}.theme-toggle{width:100%;color:var(--text-primary);border-radius:4px;align-items:center;gap:12px;padding:8px 12px;transition:background-color .2s;display:flex}.theme-toggle:hover{background-color:var(--hover-bg)}.mobile-menu-btn{z-index:90;background-color:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:8px;transition:background-color .2s;display:none;position:fixed;top:16px;right:16px;box-shadow:0 4px 12px #0000001a}.mobile-menu-btn:hover{background-color:var(--hover-bg)}.mobile-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:95;background-color:#0006;display:none;position:fixed;inset:0}@media (width<=768px){.mobile-menu-btn,.mobile-overlay{display:block}.sidebar{z-index:100;position:fixed;left:0;transform:translate(0)}.sidebar.collapsed{width:var(--sidebar-width);transform:translate(-100%)}}.app-container{width:100%;min-height:100vh;display:flex}.main-content{flex-direction:column;flex:1;max-width:1100px;margin:0 auto;padding:60px 50px;display:flex}.page-section{opacity:0;margin-bottom:56px;padding-top:24px;transition:opacity .6s ease-out,transform .6s ease-out;transform:translateY(20px)}.page-section.is-visible{opacity:1;transform:translateY(0)}.page-section h1{color:var(--text-primary);margin-bottom:24px;font-size:32px;font-weight:700}.page-section p{color:var(--text-secondary);font-size:16px;line-height:1.6}*{transition:background-color .3s,color .3s,border-color .3s,box-shadow .3s}.home-section{cursor:default;border-radius:8px;margin-left:-32px;margin-right:-32px;padding:32px;transition:background-color .2s,border-radius .2s;position:relative}.home-section:hover{background-color:var(--hover-bg)}.home-content{z-index:1;align-items:flex-start;gap:32px;display:flex;position:relative}.avatar-container{flex-shrink:0}.avatar{object-fit:cover;border-radius:50%;width:140px;height:140px}.home-info{flex-direction:column;gap:16px;display:flex}.home-name{color:var(--text-primary);font-size:32px;font-weight:700;margin:0!important}.home-subtitle{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:8px;margin-top:-8px;font-size:15px;display:flex}.dot{font-size:14px;line-height:1}.home-intro p{color:var(--text-primary);opacity:.9;margin-bottom:12px;font-size:15px;line-height:1.6}.home-actions{gap:12px;margin-top:8px;display:flex}.btn-primary,.btn-secondary{border-radius:6px;align-items:center;gap:8px;padding:8px 16px;font-size:14px;font-weight:500;transition:opacity .2s,background-color .2s;display:inline-flex}.btn-primary{background-color:var(--text-primary);color:var(--bg-primary)}.btn-primary:hover{opacity:.9}[data-theme=dark] .btn-primary{color:#000}.btn-secondary{color:var(--text-primary);border:1px solid var(--border-color);background-color:#0000}.btn-secondary:hover{background-color:var(--hover-bg)}.home-skills{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.skill-tag{background-color:var(--border-color);color:var(--text-secondary);border-radius:4px;padding:4px 10px;font-size:13px;font-weight:500}.doodle{pointer-events:none;opacity:.8;z-index:0;animation:6s ease-in-out infinite float;position:absolute}[data-theme=dark] .doodle{filter:invert()opacity(.8)}.doodle-shining{width:80px;animation-delay:0s;top:-10px;right:5%}.doodle-stars{width:110px;animation-delay:1s;bottom:20px;right:10px}.doodle-star-2{width:35px;animation-delay:.5s;bottom:-20px;left:5%}@keyframes float{0%{transform:translateY(0)rotate(0)}50%{transform:translateY(-8px)rotate(2deg)}to{transform:translateY(0)rotate(0)}}.heading-icon{vertical-align:middle;width:24px;height:auto;margin-bottom:4px;margin-left:8px}[data-theme=dark] .heading-icon,[data-theme=dark] .camera-btn img,[data-theme=dark] .modal-icon{filter:invert()opacity(.9)}.page-section h1+p{border-bottom:1px solid var(--border-color);margin-bottom:24px;padding-bottom:24px}.toggle-block{border-radius:6px;margin-bottom:4px;margin-left:-8px;padding-right:8px;transition:background-color .2s}.toggle-block:hover{background-color:var(--hover-bg)}.toggle-header{cursor:pointer;color:var(--text-primary);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:6px 8px;font-weight:500;display:flex}.toggle-icon{color:var(--text-secondary);transition:transform .2s}.toggle-icon.open{transform:rotate(90deg)}.toggle-content{color:var(--text-primary);padding:6px 8px 16px 32px}.toggle-content ul{flex-direction:column;gap:8px;margin:0;padding-left:20px;list-style-type:disc;display:flex}.camera-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;transition:background-color .2s;display:inline-flex}.camera-btn:hover{background-color:var(--hover-bg)}.camera-btn img{width:20px;height:20px}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;background-color:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;flex-direction:column;width:90%;max-width:800px;max-height:85vh;display:flex;overflow:hidden;box-shadow:0 10px 40px #0003}.modal-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.modal-title{color:var(--text-primary);align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.modal-icon{width:18px;height:18px}.modal-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:4px;padding:4px}.modal-close:hover{background-color:var(--hover-bg);color:var(--text-primary)}.modal-body{padding:24px;overflow-y:auto}.sky-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.sky-grid img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--border-color);border-radius:8px;width:100%}.click-hint{color:var(--text-secondary);opacity:.8;pointer-events:none;font-size:13px;font-style:italic}@media (width<=768px){.main-content{margin-left:0;padding:24px}.home-content{text-align:center;flex-direction:column;align-items:center;gap:20px}.home-subtitle{justify-content:center}.projects-grid{grid-template-columns:1fr}}.filter-container{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.filter-btn{color:var(--text-secondary);cursor:pointer;background-color:#0000;border:none;border-radius:6px;padding:6px 14px;font-size:14px;font-weight:500;transition:all .2s}.filter-btn:hover{background-color:var(--hover-bg)}.filter-btn.active{background-color:var(--text-primary);color:var(--bg-primary)}[data-theme=dark] .filter-btn.active{color:#000}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;display:grid}.project-card{background-color:var(--bg-primary);border:1px solid var(--border-color);cursor:pointer;border-radius:8px;flex-direction:column;height:100%;transition:transform .2s,box-shadow .2s;display:flex;overflow:hidden}.project-card:hover{transform:translateY(-4px);box-shadow:0 10px 30px #0000000d}[data-theme=dark] .project-card:hover{box-shadow:0 10px 30px #0000004d}.project-card-top{width:100%;height:150px}.project-card-bottom{flex-direction:column;flex:1;padding:20px;display:flex}.project-card-bottom h3{color:var(--text-primary);margin:0 0 8px;font-size:16px;font-weight:600}.project-card-desc{color:var(--text-secondary);flex:1;margin:0 0 16px;font-size:14px;line-height:1.5}.project-tags{flex-wrap:wrap;gap:6px;display:flex}.project-tag{background-color:var(--hover-bg);color:var(--text-secondary);border-radius:4px;padding:4px 10px;font-size:12px;font-weight:500}.project-modal-container{max-width:650px;padding:0}.project-modal-hero{width:100%;height:200px}.project-modal-body{flex-direction:column;padding:0;display:flex}.project-modal-header{justify-content:space-between;align-items:center;padding:24px 24px 16px;display:flex}.project-modal-header h2{color:var(--text-primary);margin:0;font-size:20px;font-weight:700}.project-modal-content-scroll{max-height:calc(85vh - 270px);padding:0 24px 24px;overflow-y:auto}.project-modal-desc{color:var(--text-secondary);margin-bottom:24px;font-size:15px;line-height:1.6}.project-modal-section{margin-bottom:20px}.project-modal-section h4{color:var(--text-primary);margin:0 0 8px;font-size:14px;font-weight:600}.project-modal-section ul{color:var(--text-secondary);margin:0;padding-left:20px;font-size:14px;line-height:1.6}.project-modal-tags{margin:24px 0}.project-modal-actions{gap:12px;margin-top:16px;display:flex}.project-live-btn,.project-github-btn{border-radius:6px;justify-content:center;align-items:center;padding:10px 20px;font-size:14px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.project-live-btn{background-color:var(--text-primary);color:var(--bg-primary)}.project-live-btn:hover{opacity:.9}[data-theme=dark] .project-live-btn{color:#000}.project-github-btn{color:var(--text-primary);border:1px solid var(--border-color);background-color:#0000}.project-github-btn:hover{background-color:var(--hover-bg)}.contact-section h1{margin-bottom:8px}.section-divider{border:0;border-top:1px solid var(--border-color);margin:24px 0}.contact-container{gap:40px;display:flex}.contact-links{flex-direction:column;flex:1;gap:12px;display:flex}.contact-link{color:var(--text-primary);border-radius:6px;align-items:center;gap:12px;padding:12px 16px;font-size:15px;text-decoration:none;transition:background-color .2s;display:flex}.contact-link:hover{background-color:var(--hover-bg)}.contact-form{flex-direction:column;flex:1;gap:12px;display:flex}.contact-input,.contact-textarea{background-color:var(--hover-bg);width:100%;color:var(--text-primary);border:1px solid #0000;border-radius:6px;outline:none;padding:12px 16px;font-family:inherit;font-size:15px;transition:border-color .2s}.contact-input:focus,.contact-textarea:focus{border-color:var(--text-primary)}.contact-textarea{resize:vertical;min-height:120px}.send-btn{align-self:flex-start;margin-top:4px}.footer{text-align:center;border-top:1px solid var(--border-color);color:var(--text-secondary);margin-top:auto;padding:24px 0;font-size:14px}@media (width<=768px){.contact-container{flex-direction:column}}.message-toast{background-color:var(--text-primary);color:var(--bg-primary);z-index:2000;border-radius:8px;align-items:center;gap:12px;padding:12px 24px;font-size:15px;font-weight:500;animation:.3s ease-out forwards slideUp;display:flex;position:fixed;bottom:32px;right:32px;box-shadow:0 10px 40px #00000026}[data-theme=dark] .message-toast{color:#000;box-shadow:0 10px 40px #00000080}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.resume-section h1+p{border-bottom:1px solid var(--border-color);margin-bottom:24px;padding-bottom:24px}.resume-category{margin-bottom:40px}.resume-category:last-child{margin-bottom:0}.resume-category-header{color:var(--text-primary);align-items:center;gap:12px;margin-bottom:20px;display:flex}.resume-category-header h2{margin:0;font-size:18px;font-weight:600}.resume-icon{color:var(--text-secondary)}.resume-item{border-radius:8px;flex-direction:column;gap:8px;margin-left:-16px;margin-right:-16px;padding:16px;transition:background-color .2s;display:flex}@media (width>=640px){.resume-item{flex-direction:row;gap:32px}}.resume-item:hover{background-color:var(--hover-bg)}.resume-date{color:var(--text-secondary);flex-shrink:0;width:140px;padding-top:2px;font-size:14px}.resume-content{flex:1}.resume-content h3{color:var(--text-primary);margin:0 0 4px;font-size:16px;font-weight:600}.resume-content p{color:var(--text-secondary);margin:0;font-size:15px;line-height:1.5}.resume-score{opacity:.8;margin-top:4px!important;font-size:14px!important}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:24px;display:grid}.skills-card{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;flex-direction:column;gap:16px;padding:24px;transition:transform .2s,box-shadow .2s,background-color .2s;display:flex}.skills-card:hover{transform:translateY(-4px);box-shadow:0 10px 30px #0000000d}[data-theme=dark] .skills-card:hover{box-shadow:0 10px 30px #0000004d}.skills-card h3{color:var(--text-primary);margin:0;font-size:16px;font-weight:600}.skills-tags{flex-wrap:wrap;gap:8px;display:flex}.blog-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;display:grid}.blog-card{background-color:var(--bg-primary);border:1px solid var(--border-color);cursor:pointer;border-radius:8px;flex-direction:column;height:100%;min-height:240px;padding:24px;transition:transform .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.blog-card:hover{transform:translateY(-4px);box-shadow:0 10px 30px #0000000d}[data-theme=dark] .blog-card:hover{box-shadow:0 10px 30px #0000004d}.blog-card-type{color:var(--text-secondary);letter-spacing:.5px;align-items:center;gap:6px;margin-bottom:12px;font-size:12px;font-weight:600;display:inline-flex}.blog-card-title{color:var(--text-primary);margin:0 0 12px;font-size:18px;font-weight:600;line-height:1.4;transition:color .2s}.blog-card:hover .blog-card-title{color:#3b82f6}.blog-card-desc{color:var(--text-secondary);flex:1;margin:0 0 16px;font-size:14px;line-height:1.5}.blog-card-meta{align-items:center;gap:16px;margin-bottom:16px;display:flex}.blog-card-meta-item{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.blog-tags{flex-wrap:wrap;gap:8px;margin-top:auto;transition:opacity .2s;display:flex}.blog-tag{background-color:var(--hover-bg);color:var(--text-secondary);border-radius:4px;padding:4px 10px;font-size:12px;font-weight:500}.blog-read-more{color:#3b82f6;opacity:0;align-items:center;margin-top:16px;font-size:14px;font-weight:500;transition:all .2s;display:flex;position:absolute;bottom:24px;transform:translateY(10px)}.blog-card:hover .blog-tags{opacity:0;pointer-events:none}.blog-card:hover .blog-read-more{opacity:1;transform:translateY(0)}.blog-modal-container{max-width:700px;padding:0}.blog-modal-header-top{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.blog-modal-header-type{color:var(--text-secondary);letter-spacing:.5px;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.blog-modal-body{flex-direction:column;padding:0;display:flex;overflow:hidden}.blog-modal-title{color:var(--text-primary);margin:24px 24px 16px;font-size:24px;font-weight:700;line-height:1.3}.blog-modal-meta{border-bottom:1px solid var(--border-color);flex-wrap:wrap;gap:20px;margin-bottom:0;padding:0 24px 24px;display:flex}.blog-modal-meta-item{color:var(--text-secondary);align-items:center;gap:8px;font-size:14px;display:flex}.blog-modal-content-scroll{max-height:calc(85vh - 200px);padding:24px;overflow-y:auto}.blog-modal-intro{color:var(--text-primary);margin:0 0 32px;font-size:16px;line-height:1.6}.blog-section-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin:0 0 12px;font-size:14px;font-weight:600}.blog-tools-tags{flex-wrap:wrap;gap:8px;margin-bottom:32px;display:flex}.blog-tool-tag{background-color:var(--hover-bg);color:var(--text-secondary);border-radius:4px;padding:6px 12px;font-size:13px;font-weight:500}.blog-modal-section{margin-bottom:32px}.blog-section-content{color:var(--text-secondary);font-size:15px;line-height:1.6}.blog-section-images{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-top:24px;display:grid}.blog-section-images img{aspect-ratio:4/3;border:1px solid var(--border-color);object-fit:cover;cursor:pointer;border-radius:8px;width:100%;transition:transform .2s,box-shadow .2s}.blog-section-images img:hover{transform:scale(1.02);box-shadow:0 4px 12px #0000001a}.fullscreen-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:3000;background-color:#000000d9;justify-content:center;align-items:center;width:100vw;height:100vh;padding:40px;display:flex;position:fixed;top:0;left:0}.fullscreen-close{color:#fff;cursor:pointer;z-index:3001;background:#ffffff1a;border:none;border-radius:50%;padding:8px;transition:background-color .2s;position:absolute;top:24px;right:24px}.fullscreen-close:hover{background:#fff3}.fullscreen-image{object-fit:contain;border-radius:4px;max-width:100%;max-height:100%;box-shadow:0 10px 40px #0006}.blog-modal-footer-tags{margin-top:16px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}
