*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden;background:#000;font-family:Courier New,Courier,monospace}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}.app{--bg: #000000;--fg: #ffffff;--fg-muted: rgba(255, 255, 255, .5);--fg-subtle: rgba(255, 255, 255, .3);--fg-faint: rgba(255, 255, 255, .15);--fg-hint: rgba(255, 255, 255, .25);--fg-footer: rgba(255, 255, 255, .65);--fg-scroll: rgba(255, 255, 255, .4);--border-hover: rgba(255, 255, 255, .35)}.app.light{--bg: #ffffff;--fg: #000000;--fg-muted: rgba(0, 0, 0, .5);--fg-subtle: rgba(0, 0, 0, .3);--fg-faint: rgba(0, 0, 0, .15);--fg-hint: rgba(0, 0, 0, .25);--fg-footer: rgba(0, 0, 0, .65);--fg-scroll: rgba(0, 0, 0, .4);--border-hover: rgba(0, 0, 0, .35)}.app{width:100vw;height:100vh;overflow:hidden;position:relative;background:var(--bg);color:var(--fg);transition:background .4s,color .4s}.skip-link{position:fixed;top:-100%;left:16px;z-index:999;background:var(--fg);color:var(--bg);padding:8px 16px;font-size:13px;font-family:Courier New,Courier,monospace;letter-spacing:1px;text-transform:uppercase}.skip-link:focus{top:16px}.dot-grid-canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.theme-toggle{background:none;border:1px solid var(--fg-faint);border-radius:0;color:var(--fg-muted);font-family:Courier New,Courier,monospace;font-size:11px;padding:6px 10px;cursor:pointer;letter-spacing:1px;text-transform:uppercase;transition:color .3s,border-color .3s}.theme-toggle:hover{color:var(--fg);border-color:var(--fg)}.contact-controls{position:absolute;right:24px;top:50%;transform:translateY(-50%);display:flex;gap:8px}.contact-btn{padding:6px 14px;font-size:11px}.contact-panel{position:fixed;top:0;left:0;width:100%;z-index:100;background:var(--bg);border-bottom:1px solid var(--fg);transform:translateY(-100%);transition:transform .4s cubic-bezier(.25,.46,.45,.94);display:flex;align-items:center;justify-content:center;gap:48px;padding:32px 24px}.contact-panel.open{transform:translateY(0)}.contact-panel a{font-size:14px;letter-spacing:2px;text-transform:uppercase;padding:8px 0;color:var(--fg-muted);border-bottom:1px solid transparent;transition:border-color .2s,color .2s}.contact-panel a:hover,.contact-panel a:focus-visible{color:var(--fg);border-bottom-color:var(--fg)}.scroll-hint{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:50;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--fg);transition:opacity .4s;pointer-events:none}.scroll-hint.hidden{opacity:0}.scroll-hint-arrow{display:block;text-align:center;margin-top:4px;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.grid-wrapper{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;z-index:10;pointer-events:none}.grid{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:1px;width:100vw;max-width:100%;aspect-ratio:2.4 / 1;max-height:100vh;transition:transform .05s linear,grid-template-columns .45s cubic-bezier(.25,.46,.45,.94),grid-template-rows .45s cubic-bezier(.25,.46,.45,.94);will-change:transform,grid-template-columns,grid-template-rows;pointer-events:auto}.cell{border:1px solid var(--fg-faint);display:flex;flex-direction:column;justify-content:space-between;padding:28px 32px;position:relative;overflow:hidden;min-width:0;min-height:0;transition:border-color .3s;cursor:default;text-decoration:none;color:inherit}.cell:hover{border-color:var(--border-hover)}.cell.active{border:2px solid var(--fg)}.cell:focus-visible{outline:2px solid var(--fg);outline-offset:-2px}.cell.landing{display:flex;flex-direction:row;justify-content:center;align-items:center;text-align:left;overflow:hidden;gap:24px}.landing-avatar{width:0;min-width:0;height:160px;border-radius:4px;background:var(--fg-faint);flex-shrink:0;opacity:0;transition:width .6s cubic-bezier(.22,1,.36,1),min-width .6s cubic-bezier(.22,1,.36,1),opacity .5s cubic-bezier(.22,1,.36,1)}.landing-avatar.visible{width:140px;min-width:140px;opacity:1}.landing-avatar img{width:100%;height:100%;object-fit:cover;border-radius:4px}.landing-text{display:flex;flex-direction:column;align-items:center;transition:align-items 0s .3s}.cell.landing.expanded .landing-text{align-items:flex-start;transition:align-items 0s 0s}.landing-name{font-size:clamp(20px,2.4vw,40px);font-weight:700;letter-spacing:4px;text-transform:uppercase;margin-bottom:10px;cursor:pointer;transition:font-size .6s cubic-bezier(.22,1,.36,1),margin .6s cubic-bezier(.22,1,.36,1)}.cell.landing.expanded .landing-name{font-size:clamp(16px,2vw,32px);margin-bottom:4px}.landing-tagline{font-size:clamp(10px,.85vw,12px);letter-spacing:3px;text-transform:uppercase;color:var(--fg-subtle);margin-top:8px;font-weight:400;transition:margin .6s cubic-bezier(.22,1,.36,1)}.cell.landing.expanded .landing-tagline{margin-top:2px}.landing-about{font-size:clamp(10px,.8vw,13px);color:var(--fg-subtle);letter-spacing:.5px;line-height:1.5;margin-top:12px;max-width:300px;max-height:0;opacity:0;overflow:hidden;transition:max-height .6s cubic-bezier(.22,1,.36,1),opacity .4s ease,margin .6s cubic-bezier(.22,1,.36,1)}.landing-about.visible{max-height:200px;opacity:1}.cell.project{cursor:pointer;padding:0}.project-rest{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:space-between;padding:28px 32px;transition:opacity .4s cubic-bezier(.23,1,.32,1);z-index:2}.cell.project.has-images:hover .project-rest,.cell.project.has-images:focus-visible .project-rest{opacity:0}.project-index{font-size:11px;letter-spacing:2px;color:var(--fg-subtle)}.project-info{display:flex;flex-direction:column;gap:6px}.project-title{font-size:clamp(15px,1.6vw,26px);font-weight:700;letter-spacing:1px;text-transform:uppercase}.project-desc{font-size:clamp(10px,.85vw,13px);color:var(--fg-muted);line-height:1.6;max-width:320px;font-weight:400}.project-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.project-tag{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--fg-subtle);border:1px solid var(--fg-faint);padding:2px 8px}.project-link-icon{position:absolute;top:12px;right:14px;font-size:16px;color:var(--fg-subtle);opacity:0;transition:opacity .25s,transform .25s;transform:translate(-2px,2px);z-index:3}.cell.project:hover .project-link-icon,.cell.project:focus-visible .project-link-icon{opacity:1;transform:translate(0)}.project-images{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:0;z-index:1;opacity:0;transform:scale(.96);transition:opacity .4s cubic-bezier(.23,1,.32,1),transform .4s cubic-bezier(.23,1,.32,1)}.cell.project.has-images:hover .project-images,.cell.project.has-images:focus-visible .project-images{opacity:1;transform:scale(1)}.img-slot{background:#1a1a1a;border:1px solid #ffffff;opacity:0;transition:opacity .4s cubic-bezier(.23,1,.32,1);transition-delay:calc(var(--slot-i) * 60ms);overflow:hidden;position:relative}.img-slot-photo{width:100%;height:100%;object-fit:cover;display:block}.app.light .img-slot{background:#f0f0f0;border-color:#000}.cell.project.has-images:hover .img-slot,.cell.project.has-images:focus-visible .img-slot{opacity:1}.project-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:flex-end;padding:20px 24px;opacity:0;transition:opacity .4s cubic-bezier(.23,1,.32,1);pointer-events:none}.cell.project.has-images:hover .project-overlay,.cell.project.has-images:focus-visible .project-overlay{opacity:1}.project-overlay-scrim{position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);pointer-events:none}.app.light .project-overlay-scrim{background:linear-gradient(to top,rgba(255,255,255,.7),transparent)}.overlay-index{position:absolute;bottom:20px;left:24px;font-size:10px;letter-spacing:2px;color:#ffffff80}.app.light .overlay-index{color:#00000080}.overlay-title{position:absolute;bottom:20px;left:54px;font-size:clamp(14px,1.4vw,22px);font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#fff}.app.light .overlay-title{color:#000}.overlay-arrow{position:absolute;bottom:20px;right:24px;font-size:18px;color:#ffffffb3}.app.light .overlay-arrow{color:#000000b3}.contact-hint{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:50;font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--fg);transition:opacity .4s;pointer-events:none}.contact-hint.hidden{opacity:0}.contact-hint-arrow{display:block;text-align:center;margin-bottom:4px;animation:bounce-up 2s infinite}@keyframes bounce-up{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.footer{position:fixed;bottom:12px;left:50%;transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:10px;font-size:11px;letter-spacing:1px;color:var(--fg-footer);transition:opacity .4s;white-space:nowrap}.footer.hidden{opacity:0;pointer-events:none}.footer a{color:var(--fg-footer);transition:color .2s}.footer a:hover{color:var(--fg)}.footer-sep{color:var(--fg-faint)}.loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .4s ease,visibility .4s ease}.loader.done{opacity:0;visibility:hidden;pointer-events:none}.loader-line{width:48px;height:1px;background:var(--fg-subtle);position:relative;overflow:hidden}.loader-line:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--fg);animation:loader-sweep 1s cubic-bezier(.4,0,.2,1) forwards}@keyframes loader-sweep{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(max-width:900px){.grid{grid-template-columns:1fr 1fr!important;grid-template-rows:auto auto auto!important;aspect-ratio:auto;width:94vw;height:auto;max-height:none}.cell.landing{grid-column:1 / -1;padding:28px 24px}.cell{min-height:100px}.project-desc{font-size:12px;max-width:100%}.contact-panel{flex-wrap:wrap;gap:24px;padding:24px 16px}.contact-controls{position:static;transform:none;margin-top:8px;justify-content:center}}@media(max-width:560px){.grid-wrapper.mobile-stack{align-items:center;justify-content:center;overflow:visible;padding:0}.grid-wrapper.mobile-stack .grid{display:flex!important;flex-direction:column;align-items:center;width:100%;aspect-ratio:auto;max-height:none;gap:0;position:relative;padding:32px 0 80px}.grid-wrapper.mobile-stack .cell{width:88vw;min-height:150px;padding:24px 22px;border:1px solid var(--fg-faint);background:var(--bg);border-radius:10px;margin-bottom:14px;transition:transform .4s cubic-bezier(.22,1,.36,1),opacity .4s cubic-bezier(.22,1,.36,1);will-change:transform,opacity;transform-origin:center top;box-shadow:0 2px 20px #0006}.grid-wrapper.mobile-stack .cell.landing{grid-column:1;padding:40px 22px;min-height:160px;text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center}.grid-wrapper.mobile-stack .cell.project{min-height:160px}.grid-wrapper.mobile-stack .cell.project .project-rest{position:relative;padding:0;inset:auto}.landing-name{font-size:24px;letter-spacing:2px;word-break:break-word}.landing-tagline{font-size:12px;letter-spacing:2px;margin-top:8px}.project-index{font-size:12px;margin-bottom:8px;display:block}.project-title{font-size:20px}.project-desc{font-size:13px;max-width:100%;line-height:1.6;margin-top:6px}.project-tag{font-size:11px;padding:3px 10px}.project-tags{margin-top:10px}.contact-panel{flex-direction:column;gap:16px;padding:24px 20px;align-items:flex-start}.contact-panel a{font-size:14px}.contact-controls{align-self:flex-end}.footer{font-size:11px;gap:6px}.scroll-hint{font-size:11px;bottom:20px}.contact-hint{font-size:11px}.cell.project.has-images:hover .project-rest,.cell.project.has-images:focus-visible .project-rest{opacity:1}.cell.project.has-images:hover .project-images,.cell.project.has-images:focus-visible .project-images{opacity:0;transform:scale(.96)}.cell.project.has-images:hover .project-overlay,.cell.project.has-images:focus-visible .project-overlay{opacity:0}.project-link-icon{top:16px;right:18px;opacity:.4;font-size:18px}}.login-page{width:100vw;height:100vh;background:#000;display:flex;align-items:center;justify-content:center;font-family:Courier New,Courier,monospace;color:#fff}.login-form{width:100%;max-width:380px;padding:0 24px;display:flex;flex-direction:column;gap:20px}.login-header{text-align:center;margin-bottom:12px}.login-lock{display:block;font-size:20px;margin-bottom:16px;color:#fff9}.login-header h1{font-size:18px;font-weight:700;letter-spacing:6px;text-transform:uppercase;margin-bottom:8px}.login-header p{font-size:11px;color:#fff9;letter-spacing:1px}.login-error{font-size:11px;color:#f44;text-align:center;letter-spacing:1px;padding:10px;border:1px solid rgba(255,68,68,.3)}.login-label{display:flex;flex-direction:column;gap:6px}.login-label span{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#ffffffb3}.login-label input{background:#ffffff0a;border:1px solid rgba(255,255,255,.3);color:#fff;font-family:Courier New,Courier,monospace;font-size:14px;padding:12px 14px;outline:none;transition:border-color .3s}.login-label input:focus{border-color:#ffffffb3}.login-btn{background:#fff;color:#000;border:none;font-family:Courier New,Courier,monospace;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;padding:14px;cursor:pointer;transition:opacity .3s,transform .2s;margin-top:8px}.login-btn:hover:not(:disabled){opacity:.85}.login-btn:active:not(:disabled){transform:scale(.98)}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-btn.loading{animation:pulse-btn 1s infinite}@keyframes pulse-btn{0%,to{opacity:.5}50%{opacity:.7}}.login-back{display:block;text-align:center;font-size:11px;color:#ffffff80;letter-spacing:1px;text-decoration:none;transition:color .2s;margin-top:4px}.login-back:hover{color:#ffffffb3}.dash{display:flex;width:100vw;height:100vh;background:#0a0a0a;color:#fff;font-family:Courier New,Courier,monospace;overflow:hidden}.dash-sidebar{width:220px;min-width:220px;background:#050505;border-right:1px solid rgba(255,255,255,.15);display:flex;flex-direction:column;padding:0}.dash-brand{display:flex;align-items:center;gap:10px;padding:24px 20px;font-size:13px;font-weight:700;letter-spacing:3px;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.15)}.dash-brand-icon{font-size:10px;color:#ffffffb3}.dash-nav{flex:1;display:flex;flex-direction:column;padding:12px 0}.dash-nav-item{display:flex;align-items:center;gap:12px;width:100%;padding:11px 20px;background:none;border:none;color:#ffffff8c;font-family:Courier New,Courier,monospace;font-size:12px;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:color .2s,background .2s;text-align:left;text-decoration:none}.dash-nav-item:hover{color:#fff;background:#ffffff0f}.dash-nav-item.active{color:#fff;background:#ffffff1a}.dash-nav-icon{font-size:11px;width:16px;text-align:center}.dash-sidebar-footer{border-top:1px solid rgba(255,255,255,.15);padding:8px 0}.dash-menu-toggle{display:none;position:fixed;top:14px;left:14px;z-index:200;background:#000;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:18px;width:40px;height:40px;cursor:pointer;font-family:Courier New,Courier,monospace}.dash-overlay{display:none}.dash-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.dash-topbar{display:flex;align-items:center;justify-content:space-between;padding:20px 32px;border-bottom:1px solid rgba(255,255,255,.15);min-height:64px}.dash-page-title{font-size:14px;font-weight:700;letter-spacing:4px;text-transform:uppercase}.dash-user{font-size:11px;color:#fff9;letter-spacing:1px;text-transform:uppercase}.dash-content{flex:1;overflow-y:auto;padding:32px}.dash-content::-webkit-scrollbar{width:4px}.dash-content::-webkit-scrollbar-track{background:transparent}.dash-content::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.dash-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}.stat-card{border:1px solid rgba(255,255,255,.2);background:#ffffff08;padding:24px 20px;display:flex;flex-direction:column;gap:8px}.stat-value{font-size:36px;font-weight:700;letter-spacing:2px}.stat-label{font-size:10px;color:#fff9;letter-spacing:2px;text-transform:uppercase}.dash-section{margin-bottom:32px}.dash-section h2{font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:#ffffffbf;margin-bottom:16px}.dash-section h3{font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#ffffffa6;margin-bottom:12px}.dash-actions{display:flex;gap:12px;flex-wrap:wrap}.dash-action-btn{background:#ffffff0a;border:1px solid rgba(255,255,255,.25);color:#fffc;font-family:Courier New,Courier,monospace;font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:10px 18px;cursor:pointer;transition:color .2s,border-color .2s,background .2s;text-decoration:none;display:inline-block}.dash-action-btn:hover{color:#fff;border-color:#ffffff80;background:#ffffff14}.dash-action-btn.danger-btn{color:#ff6b6b;border-color:#ff50504d}.dash-action-btn.danger-btn:hover{color:#ff5050;border-color:#ff50508c;background:#ff32320f}.dash-table-wrap{overflow-x:auto}.dash-table{width:100%;border-collapse:collapse;font-size:13px}.dash-table th{text-align:left;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#ffffff8c;padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.15)}.dash-table td{padding:14px;border-bottom:1px solid rgba(255,255,255,.08);color:#ffffffd9}.dash-table tr:hover td{background:#ffffff0a}.table-index{color:#fff6;font-size:12px;letter-spacing:1px}.table-tags{color:#ffffff8c;font-size:12px}.status-badge{font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:4px 12px;border:1px solid;font-weight:700}.status-badge.live{color:#4cff8e;border-color:#4cff8e66;background:#4cff8e0f}.status-badge.draft{color:#ffffff80;border-color:#fff3;background:#ffffff08}.dash-projects-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.dash-projects-header h2{font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#ffffffbf}.dash-btn-primary{background:#fff;color:#000;border:none;font-family:Courier New,Courier,monospace;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:10px 20px;cursor:pointer;transition:opacity .2s}.dash-btn-primary:hover{opacity:.85}.dash-project-list{display:flex;flex-direction:column;gap:12px}.dash-project-card{border:1px solid rgba(255,255,255,.15);background:#ffffff05;padding:24px;transition:border-color .2s,background .2s}.dash-project-card:hover{border-color:#ffffff4d;background:#ffffff0a}.dash-project-card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:10px}.dash-project-card-header>div{display:flex;align-items:center;gap:12px}.dash-project-idx{font-size:12px;color:#fff6;letter-spacing:1px}.dash-project-card h3{font-size:16px;font-weight:700;letter-spacing:1px;text-transform:uppercase}.dash-project-desc{font-size:12px;color:#ffffffa6;line-height:1.6;margin-bottom:10px}.dash-project-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.dash-tag{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#ffffff8c;border:1px solid rgba(255,255,255,.2);padding:3px 10px;background:#ffffff08}.dash-project-url{display:inline-block;font-size:11px;color:#ffffff80;text-decoration:none;margin-bottom:14px;transition:color .2s}.dash-project-url:hover{color:#ffffffd9}.dash-project-actions{display:flex;gap:8px}.dash-project-actions button{background:#ffffff08;border:1px solid rgba(255,255,255,.2);color:#ffffffb3;font-family:Courier New,Courier,monospace;font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:7px 16px;cursor:pointer;transition:color .2s,border-color .2s,background .2s}.dash-project-actions button:hover{color:#fff;border-color:#ffffff73;background:#ffffff0f}.dash-project-actions button.danger{color:#ff6b6b;border-color:#ff505040}.dash-project-actions button.danger:hover{color:#ff5050;border-color:#ff505080;background:#ff32320f}.dash-image-preview{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.dash-image-thumb{aspect-ratio:4 / 3;overflow:hidden;border:1px solid rgba(255,255,255,.2);background:#ffffff08}.dash-image-thumb img{width:100%;height:100%;object-fit:cover;display:block}.editor-images{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:4px}.editor-image-item{position:relative;aspect-ratio:4 / 3;overflow:hidden;border:1px solid rgba(255,255,255,.25);background:#ffffff08}.editor-image-item img{width:100%;height:100%;object-fit:cover;display:block}.editor-image-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;background:#000000bf;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s}.editor-image-item:hover .editor-image-remove{opacity:1}.editor-image-idx{position:absolute;bottom:4px;left:6px;font-size:10px;color:#ffffff80;letter-spacing:1px}.editor-image-add{aspect-ratio:4 / 3;border:2px dashed rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:28px;color:#ffffff4d;cursor:pointer;transition:border-color .2s,color .2s,background .2s}.editor-image-add:hover{border-color:#ffffff73;color:#ffffffb3;background:#ffffff0a}.editor-image-add.uploading{opacity:.5;cursor:wait;animation:pulse-upload 1s infinite}@keyframes pulse-upload{0%,to{opacity:.3}50%{opacity:.6}}.dash-avatar-upload{margin-top:6px}.dash-avatar-preview{position:relative;width:120px;height:140px;border-radius:4px;overflow:hidden;border:1px solid rgba(255,255,255,.15)}.dash-avatar-preview img{width:100%;height:100%;object-fit:cover}.dash-avatar-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;background:#000000b3;color:#fff;border:none;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s}.dash-avatar-preview:hover .dash-avatar-remove{opacity:1}.dash-avatar-add{width:120px;height:140px;border:2px dashed rgba(255,255,255,.2);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff6;cursor:pointer;letter-spacing:.5px;transition:border-color .2s,color .2s}.dash-avatar-add:hover{border-color:#ffffff73;color:#ffffffb3}.project-editor{display:flex;flex-direction:column;gap:14px}.editor-buttons{display:flex;gap:8px;margin-top:4px}.editor-buttons button{background:none;border:1px solid rgba(255,255,255,.25);color:#ffffffb3;font-family:Courier New,Courier,monospace;font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:8px 18px;cursor:pointer;transition:color .2s,border-color .2s}.editor-buttons button:hover{color:#fff;border-color:#ffffff80}.editor-buttons .dash-btn-primary{background:#fff;color:#000;border:none}.dash-form{max-width:480px;display:flex;flex-direction:column;gap:18px}.dash-field{display:flex;flex-direction:column;gap:6px}.dash-field span{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#ffffffa6}.dash-field input,.dash-field textarea{background:#ffffff0a;border:1px solid rgba(255,255,255,.25);color:#fff;font-family:Courier New,Courier,monospace;font-size:13px;padding:10px 12px;outline:none;transition:border-color .2s;resize:vertical}.dash-field input:focus,.dash-field textarea:focus{border-color:#fff9}.dash-profile h2{font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:#ffffffbf;margin-bottom:24px}.dash-settings h2{font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:#ffffffbf;margin-bottom:28px}.dash-about-text{font-size:12px;color:#ffffff8c;line-height:1.8;letter-spacing:.5px}.dash-toast{position:fixed;bottom:24px;right:24px;z-index:300;background:#fff;color:#000;font-family:Courier New,Courier,monospace;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:12px 24px;animation:toast-in .3s ease,toast-out .3s ease 2.2s forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}@media(max-width:768px){.dash-menu-toggle{display:flex;align-items:center;justify-content:center}.dash-sidebar{position:fixed;top:0;left:0;height:100vh;z-index:150;transform:translate(-100%);transition:transform .3s cubic-bezier(.25,.46,.45,.94)}.dash-sidebar.open{transform:translate(0)}.dash-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:140;background:#0009}.dash-topbar{padding:20px 16px 20px 64px}.dash-content{padding:20px 16px}.dash-stats{grid-template-columns:repeat(2,1fr)}.dash-project-card{padding:18px}.dash-toast{left:16px;right:16px;bottom:16px;text-align:center}}@media(max-width:480px){.dash-stats{grid-template-columns:1fr}.dash-actions{flex-direction:column}.dash-action-btn{text-align:center}}
