:root{color:#111;background:#fff;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;line-height:1.5}html,body,#root{height:100%}.footer{margin-top:auto}.app-layout{flex-direction:column;min-height:100vh;display:flex}.app-main{flex:1}*{box-sizing:border-box;margin:0;padding:0}body{min-width:320px}a{color:inherit;text-decoration:none}nav{border-bottom:1px solid #e5e5e5;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}nav div{gap:1rem;display:flex}main{padding:2rem}.project-wrapper{flex-direction:column;gap:2rem;display:flex}.project-hero{margin-bottom:1.5rem}.project-hero,.project-layout,.grid{animation:.45s fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.btn{cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:.55rem 1rem;font-size:.85rem;font-weight:500;transition:all .18s;display:inline-flex}.btn-back{color:#666;background:0 0;padding:.4rem 0;font-size:.85rem}.btn-back:hover{color:#111}.grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;margin-top:2rem;display:grid}.card{background:#fff;border:1px solid #ececec;border-radius:18px;flex-direction:column;height:100%;transition:transform .25s,box-shadow .25s,border-color .25s;display:flex;overflow:hidden}.card:hover{border-color:#ddd;transform:translateY(-6px);box-shadow:0 14px 32px #00000017}.card-image{position:relative;overflow:hidden}.card-image img{object-fit:cover;width:100%;height:240px;transition:transform .35s;display:block}.card:hover .card-image img{transform:scale(1.03)}.card-icons{color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111111b8;border-radius:999px;align-items:center;gap:.4rem;padding:.45rem .6rem;display:flex;position:absolute;top:12px;right:12px;box-shadow:0 8px 18px #00000024}.card-icons svg{stroke-width:1.9px;width:15px;height:15px}.card-body{flex-direction:column;flex:1;gap:.75rem;padding:1rem;display:flex}.card-category{text-transform:uppercase;letter-spacing:.08em;color:#777;font-size:.78rem}.card-body h3{font-size:1.05rem;line-height:1.3}.card-tags{flex-wrap:wrap;gap:.45rem;min-height:2.2rem;display:flex}.card-tag{color:#444;background:#f4f4f4;border-radius:999px;padding:.3rem .6rem;font-size:.8rem}.more-tag{background:#ececec}.card-meta{color:#666;justify-content:space-between;margin-top:auto;font-size:.9rem;display:flex}.card-link{color:inherit;text-decoration:none;display:block}.project-page{max-width:1100px;margin:0 auto;padding:0 1.5rem}.project-hero{flex-direction:column;gap:1.25rem;margin-bottom:1.5rem;display:flex}.empty-media{color:#666;background:#fafafa;border:1px solid #ececec;border-radius:16px;justify-content:center;align-items:center;width:100%;min-height:260px;font-size:.95rem;display:flex}.project-hero img{border-radius:16px;width:100%;display:block}.project-content{flex-direction:column;gap:1.2rem;margin-top:1rem;display:flex}.project-content h1{font-size:1.8rem;line-height:1.3}.project-description{white-space:pre-line;color:#333;max-width:700px;font-size:1rem}.project-category{color:#666;text-transform:uppercase;letter-spacing:.08em;font-size:.9rem}.project-stats{color:#555;gap:1.25rem;font-size:.95rem;display:flex}.project-tags{flex-wrap:wrap;gap:.75rem;display:flex}.project-facts{background:#fafafa;border:1px solid #eee;border-radius:12px;flex-direction:column;gap:.5rem;padding:1rem;display:flex}.project-facts strong{color:#111}.tag{background:#f4f4f4;border-radius:999px;padding:.45rem .8rem;font-size:.9rem}.back-button{color:#444;cursor:pointer;background:0 0;border:none;margin-top:1rem;margin-bottom:1.5rem;padding:.4rem .8rem;font-size:.9rem;transition:color .2s,transform .2s}.back-button:hover{color:#000;transform:translate(-2px)}.image-gallery{flex-direction:column;gap:1rem;display:flex}.image-gallery-main img{border-radius:16px;width:100%;display:block}.image-gallery-thumbs{flex-wrap:wrap;gap:.75rem;display:flex}.thumb-button{cursor:pointer;opacity:.75;background:0 0;border:none;border-radius:12px;padding:0;transition:opacity .2s,transform .2s;overflow:hidden}.thumb-button:hover{opacity:1;transform:translateY(-2px)}.thumb-button.active{opacity:1;outline:2px solid #111}.thumb-button img{object-fit:cover;width:100px;height:70px;display:block}.search-bar{margin-top:1rem}.search-bar input{border:1px solid #ddd;border-radius:10px;width:100%;padding:.75rem 1rem;font-size:.95rem}.tag-filter{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.tag-button{cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:999px;padding:.45rem .75rem;font-size:.85rem;transition:all .2s}.tag-button:hover{color:#111;border-color:#111;transform:translateY(-1px)}.tag-button.active{color:#fff;background:#111;border-color:#111}.empty-state{color:#666;margin-top:2rem;font-size:.95rem}.video-player{border-radius:16px;width:100%;padding-top:56.25%;position:relative;overflow:hidden}.video-player iframe{border:none;width:100%;height:100%;position:absolute;top:0;left:0}.audio-player iframe{border:none;border-radius:12px;width:100%;height:166px}.pdf-viewer{flex-direction:column;gap:1rem;display:flex}.pdf-viewer iframe{background:#f5f5f5;border:none;border-radius:16px;width:100%;height:700px}.pdf-open-link{color:#fff;background:#111;border-radius:10px;width:fit-content;padding:.6rem 1rem;font-size:.9rem;text-decoration:none}.pdf-open-link:hover{background:#333}.code-viewer{color:#f5f5f5;background:#111;border:1px solid #2a2a2a;border-radius:16px;overflow:hidden;box-shadow:0 14px 32px #0000001f}.code-viewer-header{color:#aaa;text-transform:uppercase;letter-spacing:.06em;background:#1b1b1b;border-bottom:1px solid #2a2a2a;justify-content:space-between;align-items:center;padding:.65rem 1rem;font-size:.8rem;display:flex}.code-viewer-dot-group{gap:.35rem;display:flex}.code-viewer-dot-group span{background:#555;border-radius:999px;width:10px;height:10px}.code-viewer pre{margin:0;padding:1.1rem;overflow-x:auto}.code-viewer code{white-space:pre;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.9rem;line-height:1.7}.project-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:2.5rem;margin-top:2rem;display:grid}.project-main{min-width:0}.project-side{flex-direction:column;gap:1rem;display:flex;position:sticky;top:2rem}.project-content-blocks{flex-direction:column;gap:1.35rem;margin-top:2.75rem;display:flex}.content-spacer{height:.9rem}.content-heading{margin-top:.75rem;font-size:1.5rem;line-height:1.25}.content-subheading{color:#222;margin-top:.25rem;font-size:1.12rem;line-height:1.4}.content-paragraph{color:#333;max-width:760px;font-size:1rem;line-height:1.9}.content-image-wrap{margin-top:.5rem}.content-image{border-radius:16px;width:100%;max-width:900px;display:block}.content-quote{color:#333;background:#f7f7f7;border-left:4px solid #111;border-radius:0 12px 12px 0;max-width:760px;padding:1rem 1.25rem;font-style:italic}.content-paragraph strong{color:#111;font-weight:700}.content-paragraph em{font-style:italic}.inline-underline{text-underline-offset:.16em;text-decoration:underline}.content-heading+.content-paragraph{margin-top:-.25rem}.content-list{color:#333;max-width:760px;padding-left:1.25rem;line-height:1.9}.content-list li{margin-bottom:.5rem}.content-divider{border:none;border-top:1px solid #e5e5e5;width:100%;max-width:900px;margin:.5rem 0}.content-references{max-width:760px;margin-top:1rem}.content-references ul{padding-left:1.2rem;line-height:1.8}.content-references li{margin-bottom:.4rem}.project-links{flex-direction:column;gap:.75rem;display:flex}.project-link-button{color:#fff;background:#111;border-radius:10px;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.95rem;text-decoration:none;transition:background .2s,transform .2s,box-shadow .2s;display:inline-flex}.project-link-button:hover{background:#333;transform:translateY(-2px);box-shadow:0 8px 18px #0000001f}@media (width<=900px){.project-layout{grid-template-columns:1fr;gap:1.5rem}.project-side{position:static}.admin-layout{grid-template-columns:1fr}.admin-sidebar{border-bottom:1px solid #ececec;border-right:none}.admin-nav{flex-flow:wrap}}.admin-layout{grid-template-columns:240px 1fr;min-height:calc(100vh - 73px);display:grid}.admin-sidebar{background:#fafafa;border-right:1px solid #ececec;align-items:stretch;padding:1.5rem 1rem}.admin-title{text-align:center;margin-top:1.5rem;margin-bottom:1.25rem;font-size:1.2rem}.admin-nav{flex-direction:column;gap:.75rem;display:flex}.admin-nav a{color:#333;border-radius:10px;padding:.6rem .8rem;text-decoration:none;transition:background .2s,color .2s}.admin-nav a:hover{color:#fff;background:#111}.admin-content{padding:2rem}.admin-project-list{flex-direction:column;gap:1rem;margin-top:1.5rem;display:flex}.admin-project-card{background:#fff;border:1px solid #ececec;border-radius:12px;align-items:center;gap:1rem;padding:1rem;transition:transform .15s,box-shadow .15s;display:flex}.admin-project-card:hover{transform:translateY(-2px);box-shadow:0 10px 20px #0000000f}.admin-project-image{object-fit:cover;border-radius:8px;width:120px;height:80px}.admin-project-image-fallback{color:#777;text-align:center;background:#fafafa;border:1px solid #ececec;justify-content:center;align-items:center;font-size:.8rem;display:flex}.admin-project-info{flex-direction:column;gap:.4rem;min-width:0;display:flex}.admin-project-meta{color:#666;gap:1rem;font-size:.85rem;display:flex}.admin-project-tags{flex-wrap:wrap;gap:.4rem;display:flex}.admin-tag{background:#f0f0f0;border-radius:999px;padding:.2rem .5rem;font-size:.75rem}.admin-empty-state{background:#fff;border:1px solid #ececec;border-radius:14px;flex-direction:column;align-items:flex-start;gap:.75rem;margin-top:1.5rem;padding:2rem;display:flex}.admin-empty-state h2{color:#111;font-size:1.2rem}.admin-empty-state p{color:#666}.admin-form-group select{width:100%;font:inherit;background:#fff;border:1px solid #ddd;border-radius:10px;padding:.85rem 1rem}.admin-form-group select:focus{border-color:#111;outline:none}.format-toolbar{flex-wrap:wrap;gap:.45rem;display:flex}.format-toolbar button{color:#333;font:inherit;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:10px;padding:.4rem .65rem;font-size:.8rem;transition:background .2s,border-color .2s,transform .2s}.format-toolbar button:hover{color:#fff;background:#111;border-color:#111;transform:translateY(-1px)}@media (width<=700px){.admin-project-card{flex-direction:column}.admin-project-actions{flex-direction:row;flex-shrink:0;min-width:auto;margin-left:auto}}.upload-preview{align-items:center;gap:.75rem;margin-top:.75rem;display:flex}.upload-preview img{object-fit:cover;border:1px solid #ececec;border-radius:10px;width:120px;height:80px}.upload-preview button,.upload-preview-item button{cursor:pointer;font:inherit;background:#fff;border:1px solid #ddd;border-radius:999px;padding:.45rem .7rem;font-size:.8rem}.upload-preview-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.75rem;margin-top:.75rem;display:grid}.upload-preview-item{flex-direction:column;gap:.45rem;display:flex}.upload-preview-item img{object-fit:cover;border:1px solid #ececec;border-radius:10px;width:100%;height:90px}.admin-page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.admin-back-button-container{margin-top:1rem;margin-bottom:1.25rem}.admin-edit-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.admin-back-button{color:#111;background:0 0;border:1px solid #0000}.admin-back-button:hover{color:#111;background:#f5f5f5;transform:translate(-2px)}.admin-reset-button{color:#111;background:#f3f3f3;border:1px solid #e5e5e5}.admin-reset-button:hover{color:#111;background:#e9e9e9;transform:translateY(-1px)}.admin-page-header .admin-project-actions{flex-flow:wrap;min-width:auto}.admin-primary-button,.admin-secondary-button,.admin-danger-button{cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;padding:.7rem 1rem;font-size:.9rem;text-decoration:none;transition:background .2s,transform .2s,color .2s;display:inline-flex}.admin-primary-button{color:#fff;background:#111}.admin-primary-button:hover{background:#000;transform:translateY(-1px)}.admin-secondary-button{color:#111;background:#f5f5f5}.admin-secondary-button:hover{background:#eaeaea;transform:translateY(-1px)}.admin-danger-button{color:#fff;background:#ef4444}.admin-danger-button:hover{background:#dc2626;transform:translateY(-1px)}.admin-project-info{flex-direction:column;flex:1;gap:.4rem;display:flex}.admin-project-actions{flex-direction:column;gap:.6rem;min-width:120px;display:flex}.admin-form{flex-direction:column;gap:1.25rem;max-width:900px;margin-top:1.5rem;display:flex}.admin-form-group{flex-direction:column;gap:.45rem;display:flex}.admin-form-group label{color:#111;font-weight:600}.admin-form-group input,.admin-form-group textarea{width:100%;font:inherit;background:#fff;border:1px solid #ddd;border-radius:10px;padding:.85rem 1rem}.admin-form-group input:focus,.admin-form-group textarea:focus{border-color:#111;outline:none}.admin-form-group small{color:#666;font-size:.85rem}.admin-form-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.admin-form-actions{gap:.75rem;margin-top:.5rem;display:flex}@media (width<=700px){.admin-form-grid{grid-template-columns:1fr}}.admin-inline-form{flex-wrap:wrap;gap:.75rem;max-width:700px;margin-top:1.5rem;display:flex}.admin-inline-form input{min-width:220px;font:inherit;border:1px solid #ddd;border-radius:10px;flex:1;padding:.85rem 1rem}.admin-inline-form input:focus{border-color:#111;outline:none}.admin-tag-list{flex-direction:column;gap:.75rem;max-width:700px;margin-top:1.5rem;display:flex}.admin-tag-row{background:#fff;border:1px solid #ececec;border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1rem;display:flex}.admin-tag-name{color:#111;font-size:.95rem}.admin-tag-actions{gap:.6rem;display:flex}.admin-tag-edit-input{min-width:220px;font:inherit;border:1px solid #ddd;border-radius:10px;flex:1;padding:.75rem .9rem}.admin-tag-edit-input:focus{border-color:#111;outline:none}@media (width<=700px){.admin-tag-row{flex-direction:column;align-items:flex-start}.admin-tag-actions{flex-wrap:wrap;width:100%}}@media (width<=1000px){.admin-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=600px){.admin-stats-grid{grid-template-columns:1fr}}@media (width<=700px){.admin-recent-row{flex-direction:column;align-items:flex-start}}.admin-stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:1.5rem;display:grid}.admin-stat-card{background:#fff;border:1px solid #ececec;border-radius:14px;padding:1.25rem;transition:transform .2s,box-shadow .2s}.admin-stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px #0000000d}.admin-stat-label{color:#666;margin-bottom:.5rem;font-size:.9rem}.admin-stat-card h2{color:#111;font-size:1.8rem;line-height:1.2}.admin-section{margin-top:2rem}.admin-section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.admin-section-header h2{color:#111;font-size:1.2rem}.admin-recent-list{flex-direction:column;gap:.75rem;display:flex}.admin-recent-row{background:#fff;border:1px solid #ececec;border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;display:flex}.admin-recent-image{object-fit:cover;border:1px solid #ececec;border-radius:10px;flex-shrink:0;width:72px;height:52px}.admin-recent-image-fallback{color:#777;text-align:center;background:#fafafa;justify-content:center;align-items:center;font-size:.75rem;display:flex}.admin-recent-info{flex:1;min-width:0;margin:5rem}.admin-recent-info h3{float:right;font-size:.95rem}.admin-recent-info p{color:#777;margin:0;font-size:.8rem}.toast{color:#fff;background:#111;border-radius:10px;padding:.75rem 1rem;font-size:.9rem;animation:.2s fadeInUp;position:fixed;bottom:20px;right:20px;box-shadow:0 8px 20px #00000026}.modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{text-align:center;background:#fff;border-radius:14px;width:100%;max-width:320px;padding:1.5rem}.modal p{color:#111;font-size:.95rem}.modal-actions{justify-content:center;gap:.5rem;margin-top:1rem;display:flex}.nav-button{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.auth-page{background:#fafafa;justify-content:center;align-items:center;min-height:calc(100vh - 73px);padding:2rem;display:flex}.auth-form{background:#fff;border:1px solid #ececec;border-radius:18px;flex-direction:column;gap:1rem;width:100%;max-width:420px;padding:2rem;display:flex;box-shadow:0 12px 30px #0000000f}.auth-form h1{color:#111;margin-bottom:.25rem;font-size:1.6rem;line-height:1.2}.auth-form p{color:#666;font-size:.95rem}.auth-form input{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;padding:.6rem;font-size:.9rem;transition:border-color .2s,box-shadow .2s}.auth-form input:focus{border-color:#111;outline:none;box-shadow:0 0 0 3px #11111114}.auth-form button{width:100%;margin-top:.25rem}.auth-error{color:#b42318;background:#fff1f1;border:1px solid #ffd6d6;border-radius:10px;padding:.75rem .9rem;font-size:.9rem}.auth-subtext{color:#666;margin-bottom:.5rem;font-size:.9rem}.auth-form{gap:1.1rem}@media (width<=600px){.auth-page{padding:1rem}.auth-form{border-radius:14px;padding:1.5rem}.auth-form h1{font-size:1.4rem}}.logo{font-weight:700}.navbar a{color:#111;text-decoration:none}.navbar a,.nav-link-text{color:#111;font:inherit;text-decoration:none}.navbar a:hover,.nav-link-text:hover{text-decoration:underline}.nav-link-text.logout{color:#b42318}.nav-link-text.logout:hover{color:#8f1d14}.nav-link-text{cursor:pointer;color:inherit;font:inherit;text-decoration:none;transition:opacity .2s}.nav-link-text:hover{opacity:.8;text-decoration:underline}.auth-success{color:#067647;background:#ecfdf3;border:1px solid #abefc6;border-radius:10px;padding:.75rem .9rem;font-size:.9rem}.auth-secondary-button{color:#111;width:100%;font:inherit;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:10px;padding:.75rem 1rem}.auth-secondary-button:hover{background:#f5f5f5}.admin-delete-button{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:10px;margin-top:1rem;padding:.6rem 1rem}.admin-delete-button:hover{background:#dc2626}.admin-user-info{color:#000;margin-top:.5rem;padding:.4rem .7rem;font-size:.85rem;display:inline-block}.account-info{align-items:right;flex-direction:column;display:flex}.card-image-fallback{color:#777;background:#fafafa;border-bottom:1px solid #ececec;justify-content:center;align-items:center;width:100%;height:240px;font-size:.9rem;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#777;margin-bottom:.75rem;font-size:.8rem}.about-page,.resume-page{max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.about-hero,.resume-header{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:2rem;display:grid}.about-hero h1,.resume-header h1{max-width:800px;font-size:clamp(2rem,5vw,4rem);line-height:1.05}.about-hero p,.resume-header p,.about-section p,.resume-section p,.resume-sidebar p{color:#555;margin-top:1rem;line-height:1.8}.about-card,.resume-sidebar{background:#fafafa;border:1px solid #ececec;border-radius:18px;padding:1.5rem}.about-card h2,.resume-sidebar h2,.resume-section h2{margin-bottom:1rem;font-size:1.1rem}.about-card ul{color:#444;padding-left:1.2rem;line-height:1.9}.about-section{max-width:760px;margin-top:3rem}.about-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:2rem;display:grid}.about-grid div{background:#fff;border:1px solid #ececec;border-radius:16px;padding:1.25rem}.about-grid h3{margin-bottom:.5rem}.about-grid p{color:#555;line-height:1.7}.resume-download{color:#fff;background:#111;border-radius:12px;justify-content:center;align-items:center;padding:.8rem 1rem;text-decoration:none;transition:background .2s,transform .2s;display:inline-flex}.resume-download:hover{background:#333;transform:translateY(-2px)}.resume-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:2rem;margin-top:3rem;display:grid}.resume-main,.resume-sidebar{flex-direction:column;gap:2rem;display:flex}.resume-section{border-bottom:1px solid #ececec;padding-bottom:2rem}.resume-item{margin-top:1rem}.resume-item h3{color:#111;font-size:1rem}.skill-list{flex-wrap:wrap;gap:.5rem;display:flex}.skill-list span{background:#fff;border:1px solid #e5e5e5;border-radius:999px;padding:.4rem .7rem;font-size:.85rem}@media (width<=900px){.about-hero,.resume-header,.resume-layout,.about-grid{grid-template-columns:1fr}}.project-stats{color:#666;align-items:center;gap:.8rem;font-size:.85rem;display:flex}.stat-item{align-items:center;gap:.35rem;transition:all .2s;display:inline-flex}.stat-item svg{stroke-width:1.8px}.stat-item:hover{color:#111}.like-button{cursor:pointer;color:inherit;background:0 0;border:none}.like-button:disabled{cursor:default;opacity:.6}.like-button:hover:not(:disabled){transform:translateY(-1px)}.like-button.liked svg{fill:currentColor}.like-button:active{transform:scale(.95)}.footer{background:#fafafa;border-top:1px solid #ececec;margin-top:3rem}.footer-content{text-align:center;flex-direction:column;align-items:center;gap:.6rem;max-width:1100px;margin:0 auto;padding:1.5rem;display:flex}.footer-name{color:#111;font-weight:600}.footer-links{gap:1rem;font-size:.9rem;display:flex}.footer-link{color:#666;transition:color .2s}.footer-link:hover{color:#111}.footer-copy{color:#888;font-size:.8rem}
