@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--color-bg:#f8fafc;--color-surface:#fff;--color-surface-elevated:#fff;--color-border:#e5e7eb;--color-text:#111827;--color-text-body:#4b5563;--color-text-secondary:#64748b;--color-text-inverse:#fff;--color-muted:#9ca3af;--color-primary:#2563eb;--color-primary-soft:#2563eb1a;--color-success-bg:#dcfce7;--color-success-border:#bbf7d0;--color-success-text:#166534;--color-warning-bg:#fef3c7;--color-warning-border:#fde68a;--color-warning-text:#92400e;--color-danger-bg:#fee2e2;--color-danger-border:#fca5a5;--color-danger-text:#b91c1c;--color-info-bg:#dbeafe;--color-info-border:#bfdbfe;--color-info-text:#1e40af;--radius:12px;--shadow:0 4px 6px -1px #0000000d, 0 2px 4px -1px #00000008}@media (prefers-color-scheme:dark){:root{--color-bg:#0f1115;--color-surface:#1a1d24;--color-surface-elevated:#22262e;--color-border:#2d333b;--color-text:#f9fafb;--color-text-body:#9ca3af;--color-text-secondary:#94a3b8;--color-text-inverse:#0f1115;--color-muted:#6b7280;--color-success-bg:#22c55e26;--color-success-border:#22c55e4d;--color-success-text:#86efac;--color-warning-bg:#f59e0b26;--color-warning-border:#f59e0b4d;--color-warning-text:#fcd34d;--color-danger-bg:#ef444426;--color-danger-border:#ef44444d;--color-danger-text:#fca5a5;--color-info-bg:#3b82f626;--color-info-border:#3b82f64d;--color-info-text:#93bbfd}}*{box-sizing:border-box}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-muted)}html,body{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}body{background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}.page-wrapper{width:100%;padding:2rem 3%}.page-header{text-align:center;margin-bottom:4rem}.page-title{letter-spacing:-.02em;margin-bottom:1rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:800}.page-subtitle{color:var(--color-text-body);max-width:600px;margin:0 auto;font-size:1.25rem}.grid-responsive{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:2rem;display:grid}.grid-projects-wide{grid-template-columns:repeat(2,1fr);gap:2rem;max-width:1200px;margin:0 auto}@media (max-width:1200px){.grid-projects-wide{grid-template-columns:repeat(2,1fr)}}@media (max-width:900px){.grid-projects-wide{grid-template-columns:1fr;gap:2rem}}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;height:100%;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s cubic-bezier(.16,1,.3,1),border-color .4s cubic-bezier(.16,1,.3,1);display:flex;overflow:hidden;transform:translateZ(0)}@media (hover:hover) and (pointer:fine){.project-card:hover{border-color:#2563eb4d;transform:translateY(-6px)scale(1.01);box-shadow:0 20px 40px -8px #00000026,0 0 0 1px #2563eb0d}}.project-card:active{transform:translateY(-2px)scale(.995)}.project-card-image-wrapper{background:radial-gradient(circle,#2d333b 0%,#0f1115 100%);width:100%;height:240px;position:relative;overflow:hidden}.project-card-image-wrapper img{will-change:transform, opacity;transition:transform .6s cubic-bezier(.16,1,.3,1)!important}@media (hover:hover) and (pointer:fine){.project-card:hover .project-card-image-wrapper img{transform:scale(1.05)!important}}.project-card-image-link{display:block}.project-card-image-link:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.project-card-content{flex-direction:column;flex-grow:1;padding:1.5rem;display:flex}.project-card-title{margin:0;font-size:1.25rem;font-weight:600}.project-status{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:.25rem .6rem;font-size:.7rem;font-weight:700}.project-card-description{color:var(--color-text-body);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:1rem;margin-bottom:1.5rem;font-size:1rem;display:-webkit-box;overflow:hidden}.project-tech-tags{flex-wrap:wrap;gap:.5rem;margin-top:auto;margin-bottom:1.5rem;display:flex}.tech-tag{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-body);border-radius:6px;padding:.25rem .75rem;font-size:.75rem;font-weight:500}.project-card-link{color:var(--color-primary);align-items:center;gap:.25rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:transform .25s cubic-bezier(.16,1,.3,1),opacity .25s;display:inline-flex}.project-card-link:hover{transform:translate(4px)}.project-card-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px;border-radius:6px}.back-link{color:var(--color-text-body);margin-bottom:2rem;font-weight:500;text-decoration:none;display:inline-block}.back-link:hover{color:var(--color-text)}.project-detail-header{border-radius:var(--radius);text-align:center;background-position:50%;background-size:cover;margin-bottom:4rem;padding:6rem 2rem}.project-detail-content{grid-template-columns:1fr;gap:4rem;display:grid}@media (min-width:768px){.project-detail-content{grid-template-columns:250px 1fr}}.project-sidebar h3{text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);margin-bottom:.5rem;font-size:.85rem}.project-sidebar a{color:var(--color-primary);font-weight:500;text-decoration:none}.skeleton{background:#94a3b824;border-radius:4px;animation:1.2s ease-in-out infinite skeletonPulse}.skeleton-card{border-color:var(--color-border)}.skeleton-img{border-radius:0;height:240px}.skeleton-title-row{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.8rem;display:flex}.skeleton-title{border-radius:6px;width:70%;height:18px}.skeleton-status{border-radius:999px;width:90px;height:18px}.skeleton-line{border-radius:6px;width:95%;height:14px;margin-bottom:10px}.skeleton-line-short{width:82%;margin-bottom:16px}.skeleton-tag{border-style:dashed;padding:0;overflow:hidden}.skeleton-pill{border-radius:6px;width:70px;height:22px;display:block}.skeleton-cta{border-radius:6px;width:120px;height:16px;margin-top:18px}@keyframes skeletonPulse{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}@media (prefers-reduced-motion:reduce){.skeleton{opacity:.85;animation:none}}.project-controls{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;gap:1.5rem;margin-bottom:2rem;padding:1.25rem;display:flex}.filter-group{align-items:center;gap:.75rem;display:flex}.filter-group label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);font-size:.85rem;font-weight:600}.filter-group select{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;border-radius:6px;outline:none;padding:.5rem 10px;font-size:.95rem;transition:transform .2s cubic-bezier(.16,1,.3,1),border-color .2s,box-shadow .2s}.filter-group select:hover{border-color:#2563eb59;transform:translateY(-1px)}.filter-group select:focus-visible{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb33}.empty-state{text-align:center;border:2px dashed var(--color-border);border-radius:var(--radius);margin:2rem 0;padding:4rem 2rem}.empty-state h3{margin-bottom:.5rem;font-size:1.5rem}.empty-state p{color:var(--color-text-body);margin-bottom:1.5rem}.empty-icon{margin-bottom:1rem;font-size:3rem}.reset-btn{background:var(--color-text);color:var(--color-bg);cursor:pointer;border:none;border-radius:6px;padding:.5rem 1.5rem;font-weight:600;transition:transform .2s cubic-bezier(.16,1,.3,1),opacity .2s}.reset-btn:hover{transform:translateY(-1px)}.reset-btn:active{opacity:.92;transform:translateY(0)}.reset-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.feed-loading{opacity:.85;transition:opacity .2s}.spinner{color:var(--color-text-body);align-items:center;gap:.6rem;font-weight:600;display:inline-flex}.spinner:before{content:"";border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:999px;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{background:var(--color-danger-bg);color:var(--color-danger-text);border-radius:var(--radius);border:1px solid var(--color-danger-border);margin-bottom:2rem;padding:1rem}.blog-feed-grid{grid-template-columns:repeat(2,1fr);gap:2rem;max-width:1200px;margin:0 auto;display:grid}@media (max-width:1000px){.blog-feed-grid{grid-template-columns:1fr}}.blog-stream-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;height:100%;transition:all .4s cubic-bezier(.16,1,.3,1);display:flex;overflow:hidden}@media (hover:hover) and (pointer:fine){.blog-stream-item:hover{border-color:#9333ea4d;transform:translateY(-6px)scale(1.01);box-shadow:0 20px 40px -8px #00000026,0 0 0 1px #9333ea0d}}.blog-stream-image-wrapper img{transition:transform .6s cubic-bezier(.16,1,.3,1)!important}@media (hover:hover) and (pointer:fine){.blog-stream-item:hover .blog-stream-image-wrapper img{transform:scale(1.05)!important}}.blog-stream-image-wrapper{background-color:var(--color-border);width:100%;height:220px;position:relative}.blog-stream-image-link{display:block}.blog-stream-image-link:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.blog-stream-content{flex-direction:column;flex-grow:1;padding:1.5rem 1.75rem;display:flex}.blog-meta-tags{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:.8rem;font-weight:500;display:flex}.blog-category{color:var(--color-primary);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.blog-stream-title{margin:0 0 1rem;font-size:1.4rem;font-weight:800;line-height:1.35}.blog-stream-excerpt{color:var(--color-text-body);-webkit-line-clamp:4;-webkit-box-orient:vertical;margin-bottom:1.5rem;font-size:.95rem;line-height:1.6;display:-webkit-box;overflow:hidden}.blog-tech-tags{flex-wrap:wrap;gap:.5rem;margin-top:auto;display:flex}.blog-category-nav{border-bottom:1px solid var(--color-border);margin-bottom:2rem;padding-bottom:1rem}.category-pill{color:var(--color-text-body);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:.5rem 1rem;font-size:.95rem;font-weight:600;transition:background .1s}.category-pill:hover:not(.active){background:var(--color-border)}.category-pill.active{background:var(--color-text);color:var(--color-bg)}.category-pill:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.blog-article-wrapper{flex-direction:column;max-width:900px;margin:0 auto;padding:2rem 1.5rem 6rem;display:flex}.blog-article-header{text-align:center;margin-bottom:3rem}.blog-article-title{letter-spacing:-.02em;margin:0 0 1.5rem;font-size:clamp(2rem,5vw,2.5rem);font-weight:900;line-height:1.2}.blog-article-excerpt{color:var(--color-text-body);max-width:70ch;margin:0 auto 3rem;font-size:clamp(1.05rem,2vw,1.2rem);line-height:1.6}.blog-article-cover-wrapper{border-radius:12px;width:100%;height:450px;position:relative;overflow:hidden;box-shadow:0 4px 20px #00000014}.blog-article-content{max-width:70ch;color:var(--color-text);white-space:pre-wrap;margin:0 auto;font-size:1.15rem;line-height:1.8}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-transition-enter{animation:.3s cubic-bezier(.16,1,.3,1) forwards pageFadeIn}.global-navbar{z-index:100;-webkit-backdrop-filter:blur(16px);background:#fffc;border-bottom:1px solid #0000000f;padding:.75rem 2rem;transition:all .3s;position:sticky;top:0}@media (prefers-color-scheme:dark){.global-navbar{border-bottom-color:var(--color-border);background:#0f1115cc}}.nav-container{grid-template-columns:1fr auto 1fr;align-items:center;width:100%;display:grid}@media (max-width:600px){.nav-container{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}.nav-links{order:3;justify-content:center;width:100%}}.nav-links{-webkit-overflow-scrolling:touch;align-items:center;gap:1rem;display:flex;overflow-x:auto}.nav-link{color:var(--color-muted);border-radius:6px;padding:.4rem .8rem;font-size:.95rem;font-weight:500;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1)}.nav-link:hover{color:var(--color-text);background:#0000000a}@media (prefers-color-scheme:dark){.nav-link:hover{background:#ffffff0f}}.nav-active{color:var(--color-text);background:#0000000f;font-weight:600}@media (prefers-color-scheme:dark){.nav-active{background:#ffffff14}}.admin-portal-link{font-size:.85rem;font-family:var(--font-geist-mono);color:var(--color-muted);border:1px solid #0000;border-radius:4px;padding:.3rem .6rem;text-decoration:none;transition:all .2s}.admin-portal-link:hover{border-color:var(--color-border)}.nav-brand{align-items:center;display:flex}.nav-brand-logo{border:none;align-items:center;gap:.6rem;text-decoration:none;display:flex}.nav-brand-text{color:var(--color-text);letter-spacing:-.04em;font-size:1.25rem;font-weight:900}.nav-brand-accent{color:var(--color-primary)}.nav-links{position:relative}.nav-indicator{z-index:-1;background:#0000000f;border-radius:6px;transition:all .3s cubic-bezier(.4,0,.2,1);position:absolute;top:0;bottom:0}@media (prefers-color-scheme:dark){.nav-indicator{background:#ffffff14}}.nav-admin{justify-content:flex-end;display:flex}@keyframes cardRise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.card-stagger-enter{opacity:0;height:100%;animation:.5s cubic-bezier(.16,1,.3,1) forwards cardRise}@keyframes pageFadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.page-transition-exit{pointer-events:none;animation:.2s cubic-bezier(.4,0,1,1) forwards pageFadeOut!important}.form-group{text-align:left;flex-direction:column;gap:.5rem;margin-bottom:1.5rem;display:flex}.form-group label{color:var(--color-text-secondary);font-size:.95rem;font-weight:600}.form-group .required-mark{color:var(--color-danger-text)}.form-group input:not([type=checkbox]),.form-group textarea,.form-group select{background:var(--color-surface);border:2px solid var(--color-border);width:100%;color:var(--color-text);border-radius:8px;padding:.75rem 1rem;font-family:inherit;font-size:1rem;transition:all .3s cubic-bezier(.16,1,.3,1)}.form-group textarea{resize:vertical;min-height:120px}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px var(--color-primary-soft);outline:none}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--color-muted);opacity:.6}.form-group input[type=checkbox]{width:1.2rem;height:1.2rem;accent-color:var(--color-primary);cursor:pointer;margin:0}.form-row{gap:1.5rem;display:grid}.form-row-2{grid-template-columns:1fr 1fr}.form-row-3{grid-template-columns:1fr 1fr 1fr}.form-row-2-1{grid-template-columns:2fr 1fr}@media (max-width:768px){.form-row-2,.form-row-3,.form-row-2-1{grid-template-columns:1fr}}.form-actions{border-top:1px solid var(--color-border);justify-content:flex-end;gap:1rem;margin-top:1rem;padding-top:1.5rem;display:flex}.admin-nav{background:var(--color-text);color:var(--color-bg);border-radius:8px;grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:2rem;padding:1rem 2rem;display:grid}.admin-nav-brand a{color:inherit;text-decoration:none}.admin-nav-links{justify-content:center;gap:2rem;font-size:.9rem;display:flex}.admin-nav-links a{color:var(--color-muted);text-decoration:none;transition:color .15s}.admin-nav-links a:hover{color:var(--color-bg)}.admin-nav-right{justify-content:flex-end;align-items:center;gap:1.5rem;display:flex}.admin-nav-email{opacity:.7;font-size:.85rem}.admin-nav-logout{cursor:pointer;color:#fff;background:#dc2626;border:none;border-radius:4px;padding:8px 16px;font-weight:700;transition:opacity .15s}.admin-nav-logout:hover{opacity:.85}.admin-nav-logout:disabled{cursor:not-allowed;opacity:.7}@media (max-width:768px){.admin-nav{text-align:center;grid-template-columns:1fr;gap:1rem;padding:1rem}.admin-nav-links{flex-wrap:wrap;justify-content:center;gap:1rem}.admin-nav-right{flex-wrap:wrap;justify-content:center}}.admin-dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:1.5rem;display:grid}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);text-align:center;padding:1.5rem;transition:all .4s cubic-bezier(.16,1,.3,1)}.stat-card:hover{border-color:#2563eb4d;transform:translateY(-6px);box-shadow:0 20px 40px -8px #0000001a,0 0 0 1px #2563eb0d}.stat-card h3{color:var(--color-muted);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:.9rem}.stat-card .stat-number{letter-spacing:-.05em;margin:1rem 0 .5rem;font-size:3.5rem;font-weight:900;line-height:1}.stat-card-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin:0;font-size:.8rem}.stat-card-subtitle{color:var(--color-muted);margin:0;font-size:.85rem}.stat-card-link{color:inherit;cursor:pointer;flex-direction:column;justify-content:center;text-decoration:none;display:flex}.stat-card-link .stat-number{color:var(--color-primary);margin-top:1rem;margin-bottom:.7rem;font-size:2.8rem}.stat-card-link-cta{color:var(--color-primary);margin:0;font-size:.85rem;font-weight:600}.admin-dashboard-title{letter-spacing:-.02em;margin:0;font-size:2rem}.admin-dashboard-header{margin-bottom:1.5rem}.admin-panel-title{margin:0;font-size:1.2rem}.admin-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;transition:all .4s cubic-bezier(.16,1,.3,1)}.admin-panel:hover{border-color:#2563eb4d;transform:translateY(-6px);box-shadow:0 20px 40px -8px #0000001a,0 0 0 1px #2563eb0d}.admin-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.admin-btn{background:var(--color-text);color:var(--color-bg);cursor:pointer;border:none;border-radius:6px;padding:.5rem 1rem;font-size:.85rem;font-weight:600;text-decoration:none;transition:opacity .2s;display:inline-block}.admin-btn.danger{color:#fff;background:#dc2626}.admin-btn.success{color:#fff;background:#22c55e}.admin-btn.ghost{border:1px solid var(--color-border);color:var(--color-text);background:0 0}.admin-btn:hover{opacity:.8}.admin-btn-sm{padding:.4rem .8rem}.admin-table{border-collapse:collapse;width:100%}.admin-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);border-bottom:2px solid var(--color-border);background:var(--color-bg);padding:.75rem 1rem;font-size:.8rem;font-weight:600}.admin-table th.text-right{text-align:right}.admin-table td{border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:top;padding:1rem}.admin-table tbody tr{transition:background .15s}.admin-table tbody tr:hover{background:var(--color-bg)}.admin-table-cell-title{font-weight:600}.admin-table-cell-slug{color:var(--color-muted);margin-top:4px;font-size:.75rem;font-weight:400}.admin-table-actions{justify-content:flex-end;gap:.5rem;display:flex}.admin-table-empty td{text-align:center;color:var(--color-text-body);padding:3rem}.admin-list-page{padding-bottom:4rem}.admin-header-title{margin:0;font-size:1.8rem}.admin-panel-scrollable{overflow-x:auto}.admin-table-cell-title a{color:inherit;text-decoration:none}.admin-order-cell{color:var(--color-primary);font-family:monospace}.admin-row-pending{background:var(--color-surface)}.admin-comment-content-cell{color:var(--color-text-body);padding-right:2rem;font-size:.95rem;line-height:1.5}.admin-th-author{width:15%}.admin-th-content{width:50%}.admin-row-deleted{opacity:.4}.admin-comment-row.admin-comment-removed{background:var(--color-danger-bg);border-left:4px solid var(--color-danger-text)}.admin-comment-row.admin-comment-removed:hover{background:var(--color-danger-bg)}.admin-comment-row.admin-comment-pending{border-left:4px solid var(--color-warning-text)}.admin-comment-removed-text{opacity:.7;text-decoration:line-through}.admin-comment-badges{align-items:center;gap:.75rem;display:flex}.admin-rejected-badge{background:var(--color-danger-bg);color:var(--color-danger-text);border:1px solid var(--color-danger-border);border-radius:999px;padding:.5rem 1rem;font-size:.85rem;font-weight:600}.admin-btn-purge{letter-spacing:.03em;border:2px solid #dc2626;font-weight:700;transition:all .2s;box-shadow:0 2px 8px #dc26264d;color:#fff!important;background:linear-gradient(135deg,#dc2626,#991b1b)!important}.admin-btn-purge:hover{transform:translateY(-1px);box-shadow:0 4px 16px #dc262680;opacity:1!important}.badge{text-transform:uppercase;letter-spacing:.02em;border-radius:4px;padding:4px 8px;font-size:.8rem;font-weight:700;display:inline-block}.badge-success{background:var(--color-success-bg);color:var(--color-success-text);border:1px solid var(--color-success-border)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-text);border:1px solid var(--color-warning-border)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger-text);border:1px solid var(--color-danger-border)}.badge-info{background:var(--color-info-bg);color:var(--color-info-text);border:1px solid var(--color-info-border)}.badge-neutral{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border)}.admin-success-banner{background:var(--color-success-bg);color:var(--color-success-text);border:1px solid var(--color-success-border);border-radius:8px;margin-bottom:2rem;padding:1rem;font-weight:700}.admin-pending-badge{background:var(--color-warning-bg);color:var(--color-warning-text);border-radius:999px;padding:.5rem 1rem;font-size:.85rem;font-weight:600}.admin-pending-badge.none{background:var(--color-bg);color:var(--color-muted)}.admin-editor-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);grid-template-columns:1fr;gap:1rem;max-width:900px;margin:0 auto;padding:2.5rem;display:grid}@media (max-width:768px){.admin-editor-form{padding:1.5rem}}.admin-panel-desc{color:var(--color-text-body);margin-bottom:1.5rem}.admin-panel-grid{grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}@media (max-width:768px){.admin-panel-grid{grid-template-columns:1fr}}.admin-reply-inline{background:var(--color-primary-soft);border-left:3px solid var(--color-primary);border-radius:4px;margin-top:1rem;padding:.75rem}.admin-reply-inline strong{color:var(--color-primary);margin-bottom:.25rem;font-size:.8rem;display:block}.admin-reply-form{gap:.5rem;margin-top:1rem;display:flex}.admin-reply-form input{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:4px;flex:1;padding:.4rem}.login-layout{background-color:var(--color-surface);min-height:100vh;display:flex}.login-branding-pane{background-color:var(--color-bg);border-right:1px solid var(--color-border);flex-direction:column;flex:1;justify-content:center;align-items:center;padding:4rem;display:none;position:relative;overflow:hidden}@media (min-width:900px){.login-branding-pane{display:flex}}.login-branding-content{z-index:1;text-align:center;max-width:450px}.login-branding-title{color:var(--color-text);letter-spacing:-.04em;white-space:nowrap;min-height:4.5rem;margin-bottom:1.5rem;font-size:3.5rem;font-weight:900;line-height:1.1}.login-branding-accent{color:var(--color-primary)}.login-branding-subtitle{color:var(--color-text-secondary);font-size:1.1rem;font-weight:500;line-height:1.6}.login-branding-orb{border-radius:50%;position:absolute}.login-branding-orb-1{background:radial-gradient(circle, var(--color-primary-soft) 0%, transparent 70%);width:40vw;height:40vw;top:-10%;left:-10%}.login-branding-orb-2{background:radial-gradient(circle,#9333ea0f 0%,#0000 70%);width:30vw;height:30vw;bottom:-10%;right:-10%}@media (prefers-color-scheme:dark){.login-branding-orb-1{background:radial-gradient(circle,#2563eb14 0%,#0000 70%)}.login-branding-orb-2{background:radial-gradient(circle,#9333ea0f 0%,#0000 70%)}}.login-form-pane{background-color:var(--color-surface);flex-direction:column;justify-content:center;width:100%;max-width:500px;margin:0 auto;padding:3rem;display:flex}.login-card{text-align:center;width:100%;max-width:380px;height:auto;margin:0 auto}.login-heading{letter-spacing:-.03em;color:var(--color-text);margin:0 0 .5rem;font-size:2.2rem;font-weight:800}.login-subheading{color:var(--color-text-secondary);margin:0;font-size:1.05rem}.login-error{background:var(--color-danger-bg);color:var(--color-danger-text);border:1px solid var(--color-danger-border);border-radius:8px;margin-bottom:2rem;padding:1rem;font-size:.9rem;font-weight:500}.login-google-btn{cursor:pointer;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;justify-content:center;align-items:center;gap:.75rem;width:100%;padding:14px 24px;font-size:1.05rem;font-weight:600;transition:all .2s;display:flex}.login-google-btn:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-muted)}.login-google-btn:disabled{cursor:not-allowed;opacity:.6}.typewriter-cursor{color:var(--color-primary);margin-left:2px;font-weight:300;animation:.7s step-end infinite typewriterBlink;display:inline}@keyframes typewriterBlink{0%,to{opacity:1}50%{opacity:0}}.about-container{max-width:800px;margin:0 auto}.about-hero{text-align:center;margin-bottom:4rem}.about-hero-title{letter-spacing:-.04em;color:var(--color-text);margin-bottom:1.5rem;font-size:3rem;font-weight:900;line-height:1.1}.about-hero-title span{color:var(--color-primary)}.about-hero-subtitle{color:var(--color-text-body);font-size:1.25rem}.about-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:2rem;padding:2.5rem}.about-section-header{align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.about-section-icon{font-size:2rem}.about-section-title{margin:0;font-size:1.5rem;font-weight:700}.about-section p,.about-section li{color:var(--color-text-body);line-height:1.7}.about-section ul{margin:0;padding-left:1.25rem}.about-footer{text-align:center;border-top:1px solid var(--color-border);margin-top:4rem;padding:2.5rem}.about-footer h3{margin-bottom:1rem;font-size:1.25rem;font-weight:600}.about-footer p{color:var(--color-text-body);max-width:600px;margin:0 auto 2rem;line-height:1.6}.about-github-btn{background:var(--color-text);color:var(--color-bg);border-radius:8px;padding:.75rem 2rem;font-weight:600;text-decoration:none;transition:opacity .2s;display:inline-flex}.about-github-btn:hover{opacity:.85}.interaction-dock{align-items:center;gap:.75rem;padding:1rem 0;display:flex}.interaction-btn{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-weight:600;transition:all .15s;display:flex}.interaction-btn:disabled{cursor:not-allowed;opacity:.7}.interaction-btn.active-like{background:var(--color-success-bg);color:var(--color-success-text);border-color:#22c55e}.interaction-btn.active-dislike{background:var(--color-danger-bg);color:var(--color-danger-text);border-color:#ef4444}.interaction-emoji{opacity:.5}.interaction-emoji.active{opacity:1}.comment-thread{border-top:1px solid var(--color-border);margin-top:4rem;padding-top:2rem}.comment-thread-title{margin-bottom:2rem;font-size:1.5rem}.comment-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;flex-direction:column;gap:1rem;margin-bottom:3rem;padding:1.5rem;display:flex}.comment-form h4{margin:0}.comment-form-success{background:var(--color-success-bg);color:var(--color-success-text);border-radius:6px;padding:.75rem;font-size:.9rem;font-weight:600}.comment-form input,.comment-form textarea{border:1px solid var(--color-border);background:var(--color-surface);width:100%;color:var(--color-text);border-radius:6px;padding:.75rem;font-family:inherit}.comment-form textarea{resize:vertical}.comment-form-actions{justify-content:flex-end;display:flex}.comment-form-submit{background:var(--color-text);color:var(--color-bg);cursor:pointer;border:none;border-radius:6px;padding:.75rem 1.5rem;font-weight:600;transition:opacity .15s}.comment-form-submit:hover{opacity:.85}.comment-form-submit:disabled{opacity:.7;cursor:not-allowed}.comments-list{flex-direction:column;gap:1.5rem;display:flex}.comment-empty{color:var(--color-muted);text-align:center;padding:2rem 0;font-style:italic}.comment-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:1.5rem}.comment-header{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.comment-avatar{background:var(--color-border);width:30px;height:30px;color:var(--color-text);border-radius:50%;justify-content:center;align-items:center;font-size:.8rem;font-weight:700;display:flex}.comment-author{font-weight:600}.comment-date{color:var(--color-muted);font-size:.8rem}.comment-body{color:var(--color-text-body);white-space:pre-wrap;margin:0;line-height:1.6}.comment-admin-reply{background:var(--color-bg);border-left:4px solid var(--color-primary);border-radius:8px;margin-top:1rem;padding:1.25rem}.comment-admin-badge{background:var(--color-primary);color:var(--color-text-inverse);text-transform:uppercase;border-radius:4px;padding:2px 6px;font-size:.7rem;font-weight:700}.comment-admin-reply-header{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.comment-admin-reply-body{color:var(--color-text);white-space:pre-wrap;margin:0;line-height:1.6}.scroll-progress{background:linear-gradient(90deg, var(--color-primary), #a855f7);z-index:99999;pointer-events:none;height:3px;position:fixed;top:0;left:0;box-shadow:0 0 10px #a855f780}.auto-slider{z-index:0;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.auto-slider-slide{background-position:50%;background-size:cover;width:100%;height:100%;transition:opacity 1s cubic-bezier(.4,0,.2,1);position:absolute;top:0;left:0}.carousel-dots{z-index:10;gap:6px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.carousel-dots.large{gap:8px;bottom:24px}.carousel-dot{cursor:pointer;background:#d1d5db;border:none;border-radius:50%;width:6px;height:6px;padding:0;transition:background-color .3s;box-shadow:0 1px 3px #0000004d}.carousel-dot.large{width:8px;height:8px;box-shadow:0 2px 4px #0003}.carousel-dot.active{background:#ff3f6c}.not-found-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:60vh;display:flex}.not-found-icon{opacity:.2;margin-bottom:1rem;font-size:4rem}.not-found-title{letter-spacing:-.02em;margin-bottom:1rem;font-size:2.5rem;font-weight:800}.not-found-desc{color:var(--color-text-body);max-width:500px;margin-bottom:2rem;font-size:1.25rem}.not-found-btn{background:var(--color-text);color:var(--color-bg);cursor:pointer;border:none;border-radius:8px;padding:12px 24px;font-weight:700;text-decoration:none;transition:opacity .2s}.not-found-btn:hover{opacity:.85}.error-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:50vh;display:flex}.error-page-title{color:var(--color-danger-text);margin-bottom:1rem;font-size:2rem}.error-page-desc{color:var(--color-text-body);max-width:500px;margin-bottom:2rem}.project-card-header-row{justify-content:space-between;align-items:flex-start;margin-bottom:.5rem;display:flex}.project-card-image-wrapper,.blog-stream-image-wrapper{position:relative}.project-card-title a,.blog-stream-title a{color:var(--color-text);text-decoration:none}.project-tech-tags-auto{margin-top:auto}.feed-observer-anchor{text-align:center;padding:3rem}.feed-end-marker{text-align:center;color:var(--color-muted);padding:3rem;font-weight:500}.comment-form .error-banner{margin:0;padding:.75rem}.comment-form .form-group{margin-bottom:0}.login-card-header{margin-bottom:2.5rem}.login-fallback-text{color:var(--color-text-secondary);font-weight:500}.editor-monospace-textarea{font-family:monospace}.page-wrapper-padded{padding-top:2rem}.page-wrapper-padded-lg{padding-top:4rem}.about-section p+p{margin-top:0}.about-section p:last-of-type{margin-bottom:0}.about-section p:not(:last-of-type){margin-bottom:1rem}.page-transition-container{flex-direction:column;flex:1;width:100%;height:100%;display:flex}.admin-btn-delete{padding:.4rem .8rem}.project-detail-header-overlay{z-index:10;position:relative}.project-detail-title{color:#fff;margin-bottom:1.5rem;font-size:clamp(2rem,5vw,3.5rem)}.project-detail-tech-tags{justify-content:center}.project-detail-tech-tag{color:#fff;background:#ffffff26;border:none}.project-detail-intro{margin-bottom:2rem;font-size:1.25rem;font-weight:500;line-height:1.6}.project-detail-body{color:var(--color-text-body);font-size:1.1rem;line-height:1.8}.project-detail-interactions{margin-top:4rem}.project-sidebar-section{margin-bottom:2rem}.project-sidebar-links{margin:0;padding:0;list-style:none}.project-sidebar-links li{margin-bottom:.5rem}.project-sidebar-status{font-weight:500}.blog-detail-meta-tags{justify-content:center;margin-bottom:1.5rem;font-size:1rem}.blog-detail-interactions{max-width:70ch;margin:2rem auto}.blog-detail-tags{margin-top:4rem;padding-bottom:2rem}.admin-editor-page{padding-bottom:4rem}.admin-header .back-link{margin-bottom:.5rem}.admin-header h1{margin:0}.admin-header-desc{color:var(--color-muted);margin:.5rem 0 0}.secure-admin-layout{flex-direction:column;min-height:100vh;padding:1.5rem 3%;display:flex}.secure-admin-content{flex-direction:column;flex:1;display:flex}html.switchy-prehide #main-content-layout,html.switchy-prehide .global-navbar{visibility:hidden}
