*{margin:0;padding:0;box-sizing:border-box}:root{--bg-color: #1a1a1a;--text-color: #e0e0e0;--text-muted: #888;--accent-color: #ff6b6b;--success-color: #2e7d32;--danger-color: #c0392b;--whatsapp-color: #25D366;--padding: clamp(12px, 3vmin, 24px);--drop-duration: 1.3s}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:Inter,system-ui,-apple-system,sans-serif;background-color:var(--bg-color);color:var(--text-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.status{font-size:.875rem;color:var(--text-muted)}.error{color:var(--accent-color)}.app{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--padding);overflow:hidden}.title{font-family:Limelight,cursive;font-size:clamp(1rem,4vw,1.8rem);font-weight:400;color:#e8e8e8;margin-bottom:var(--padding);text-align:center;letter-spacing:.05em;flex-shrink:0;padding-top:2rem;padding-bottom:2rem}.polaroid-stack{position:relative;flex:1;display:flex;align-items:center;justify-content:center;width:100%;min-height:0;padding:var(--padding);cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none}.empty-message{font-family:Caveat,cursive;font-size:clamp(1.8rem,5vw,2.5rem);color:#cac6c2;animation:fadeInMessage 1s ease-out forwards}@keyframes fadeInMessage{0%{opacity:0}to{opacity:1}}.polaroid{position:absolute;background:linear-gradient(155deg,#f5edd8,#efe5c8 30%,#e8dbb8 70%,#dfd0a8);padding:14px 14px 10px;border-radius:3px 4px 4px 3px;display:inline-flex;flex-direction:column;transform:rotate(var(--rotation, 0deg)) scale(1);opacity:1;width:auto;height:auto}.polaroid-top{animation:dropIn var(--drop-duration) ease-out forwards}@keyframes dropIn{0%{opacity:0;transform:rotate(0) translateY(-180px) scale(2)}10%{opacity:1}to{opacity:1;transform:rotate(var(--rotation, 0deg)) scale(1)}}.polaroid-image{line-height:0;position:relative;border-radius:1px;display:inline-block}.polaroid-image img{max-width:calc(100vw - var(--padding) * 4 - 32px);max-height:calc(100vh - var(--padding) * 4 - 200px);width:auto;height:auto;display:block;border-radius:3px}.polaroid-gloss{position:absolute;inset:0;pointer-events:none;border-radius:1px;z-index:10;background:linear-gradient(125deg,rgba(255,255,255,.5) 0%,rgba(255,255,255,.25) 15%,rgba(255,255,255,.1) 30%,transparent 50%,transparent 100%)}.vintage-filter img{filter:sepia(.35) saturate(1.1) contrast(.95) brightness(1.05) hue-rotate(-10deg);position:relative;z-index:1}.vintage-filter:before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:1px;box-shadow:inset 0 0 60px #140a0080,inset 0 0 100px #28140066,inset 0 0 150px #3c1e0a4d;z-index:3}.polaroid-caption{padding:16px 10px 14px;min-height:70px;display:flex;flex-direction:column;justify-content:center;gap:8px;font-family:Caveat,cursive;position:relative}.polaroid-text{font-size:clamp(1.4rem,4vw,1.9rem);font-weight:800;margin:0;line-height:1.4;color:#3a3530}.polaroid-title{font-size:clamp(1.4rem,4vw,1.9rem);font-weight:800;color:#2a2520}.polaroid-note{font-size:clamp(1.4rem,3vw,1.8rem);color:#4a4540;font-weight:700}.polaroid-sender{font-size:clamp(1.4rem,2.5vw,1.8rem);color:#6a6560;margin:0;text-align:right;font-weight:600;font-style:italic}.camera-button{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;border:none;background:var(--accent-color);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0000004d;transition:transform .2s,box-shadow .2s,opacity .3s ease;z-index:50;opacity:.4}.camera-button.solid{opacity:1}.camera-button:hover{transform:scale(1.1);box-shadow:0 6px 20px #0006;opacity:1}.camera-button:active{transform:scale(.95)}.camera-button svg{width:28px;height:28px}.modal-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.request-modal{background:#252525;border-radius:16px;padding:2rem;max-width:400px;width:100%;position:relative;max-height:90vh;overflow-y:auto}.modal-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border:none;border-radius:50%;background:#333;color:#fff;font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.modal-close:hover{background:#444}.request-intro,.request-success{text-align:center}.request-intro h2,.request-success h2{color:var(--text-color);margin-bottom:1rem;font-size:1.5rem}.request-intro p,.request-success p{color:var(--text-muted);margin-bottom:.75rem;line-height:1.5}.file-select-btn{display:inline-block;margin-top:1rem;padding:.75rem 2rem;background:var(--whatsapp-color);color:#fff;border-radius:8px;cursor:pointer;font-size:1rem;transition:background .2s}.file-select-btn:hover{background:#20bd5a}.request-form{display:flex;flex-direction:column;gap:1rem}.request-preview{width:100%;aspect-ratio:1;border-radius:8px;overflow:hidden;background:#1a1a1a}.request-preview img{width:100%;height:100%;object-fit:cover}.request-form input,.request-form textarea{padding:.75rem 1rem;border:none;border-radius:8px;background:#333;color:var(--text-color);font-size:1rem;font-family:inherit;resize:none}.request-form input:focus,.request-form textarea:focus{outline:2px solid var(--whatsapp-color)}.request-form .error{color:var(--accent-color);font-size:.875rem;text-align:center}.request-actions{display:flex;gap:1rem;margin-top:.5rem}.request-actions button{flex:1;padding:.75rem;border:none;border-radius:8px;font-size:1rem;cursor:pointer;transition:background .2s}.request-actions button:first-child{background:#444;color:#fff}.request-actions button:first-child:hover{background:#555}.request-actions button:last-child{background:var(--whatsapp-color);color:#fff}.request-actions button:last-child:hover{background:#20bd5a}.request-actions button:disabled{background:#555;cursor:not-allowed}.request-success button{margin-top:1.5rem;padding:.75rem 2rem;background:#444;color:#fff;border:none;border-radius:8px;font-size:1rem;cursor:pointer}.request-success button:hover{background:#555}.admin-login,.admin{touch-action:pan-x pan-y;overscroll-behavior:none;-webkit-overflow-scrolling:auto}.admin-login{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-color)}.admin-login form{display:flex;flex-direction:column;gap:1rem;padding:2rem;background:#252525;border-radius:12px;min-width:280px}.admin-login h1{font-size:1.5rem;color:var(--text-color);text-align:center;margin-bottom:.5rem}.admin-login input{padding:.75rem 1rem;border:none;border-radius:8px;background:#333;color:var(--text-color);font-size:1rem}.admin-login input:focus{outline:2px solid #555}.admin-login button{padding:.75rem 1rem;border:none;border-radius:8px;background:#444;color:var(--text-color);font-size:1rem;cursor:pointer}.admin-login button:hover{background:#555}.admin-login .error{color:var(--accent-color);text-align:center;font-size:.875rem}.admin{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg-color);overflow:hidden}.admin .status{padding:2rem;text-align:center}.admin-header{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem;background:#222;flex-shrink:0}.admin-header-top{display:flex;align-items:center;justify-content:space-between}.admin-header h1{font-size:1.25rem;color:var(--text-color);margin:0}.admin-header-actions{display:flex;gap:.5rem}.photo-count{color:var(--text-muted);font-size:.875rem}.upload-btn{width:36px;height:36px;border:none;border-radius:50%;background:var(--success-color);color:#fff;cursor:pointer;font-size:1.5rem;display:flex;align-items:center;justify-content:center;line-height:1}.upload-btn:hover{background:#388e3c}.logout-btn{padding:.5rem .75rem;border:none;border-radius:6px;background:#3a3a3a;color:#aaa;cursor:pointer;font-size:.8rem;font-weight:500;transition:all .15s}.logout-btn:hover{background:#4a4a4a;color:#fff}.admin-tabs{display:flex;gap:.25rem;background:#1a1a1a;padding:.25rem;border-radius:8px}.admin-tabs button{flex:1;padding:.6rem .75rem;border:none;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;font-size:.875rem;display:flex;align-items:center;justify-content:center;gap:.4rem;transition:all .15s}.admin-tabs button:hover{background:#2a2a2a}.admin-tabs button.active{background:#333;color:var(--text-color)}.tab-count{color:var(--text-muted);font-size:.75rem}.badge{background:#e74c3c;color:#fff;padding:.15rem .5rem;border-radius:10px;font-size:.7rem;font-weight:600}.photo-grid{flex:1;display:grid;grid-template-columns:repeat(3,1fr);gap:2px;overflow-y:auto;padding:2px}@media(min-width:600px){.photo-grid{grid-template-columns:repeat(4,1fr);gap:4px;padding:4px}}@media(min-width:900px){.photo-grid{grid-template-columns:repeat(5,1fr)}}.photo-thumb{aspect-ratio:1;overflow:hidden;cursor:pointer;background:#222}.photo-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .2s,opacity .2s}.photo-thumb:hover img{transform:scale(1.05);opacity:.85}.gallery-view{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#000}.gallery-main{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;position:relative;padding:.5rem}.gallery-photo-container{flex:1;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;height:100%}.gallery-photo{max-width:100%;max-height:100%;object-fit:contain;border-radius:2px}.gallery-nav{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border:none;border-radius:50%;background:#ffffff26;color:#fff;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.gallery-nav:hover{background:#ffffff40}.gallery-nav:active{transform:translateY(-50%) scale(.95)}.gallery-prev{left:.5rem}.gallery-next{right:.5rem}.gallery-info{padding:.5rem 1rem;background:linear-gradient(to top,#000000e6,#000000b3);display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap}.gallery-photo-info{text-align:center}.photo-title{color:#fff;font-size:1rem;font-weight:500;margin:0;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gallery-actions{display:flex;gap:.4rem}.gallery-actions button{padding:.4rem .8rem;border:none;border-radius:6px;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .15s}.rename-btn,.close-gallery-btn{background:#ffffff1a;color:#fff}.rename-btn:hover,.close-gallery-btn:hover{background:#fff3}.delete-btn{background:#c0392bcc;color:#fff}.delete-btn:hover{background:var(--danger-color)}.edit-meta-btn{background:#2563eb;color:#fff}.edit-meta-btn:hover{background:#3b82f6}.rename-form{display:flex;gap:.4rem;align-items:center}.rename-form input{padding:.4rem .6rem;border:none;border-radius:6px;background:#ffffff1a;color:var(--text-color);font-size:.8rem;min-width:120px}.rename-form input:focus{outline:1px solid rgba(255,255,255,.3)}.rename-form button{padding:.4rem .6rem;border:none;border-radius:6px;background:#ffffff1a;color:#fff;cursor:pointer;font-size:.75rem;font-weight:500}.rename-form button[type=submit]{background:var(--success-color)}.meta-form{display:flex;flex-direction:column;gap:.4rem;width:100%;max-width:300px}.meta-form input{padding:.4rem .6rem;border:none;border-radius:6px;background:#ffffff1a;color:var(--text-color);font-size:.8rem}.meta-form input:focus{outline:1px solid rgba(255,255,255,.3)}.meta-form input::placeholder{color:#666}.meta-form-actions{display:flex;gap:.4rem;margin-top:.25rem}.meta-form-actions button{flex:1;padding:.4rem .6rem;border:none;border-radius:6px;font-size:.75rem;font-weight:500;cursor:pointer}.meta-form-actions button[type=submit]{background:var(--success-color);color:#fff}.meta-form-actions button[type=button]{background:#ffffff1a;color:#fff}.filter-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.4rem 0;color:var(--text-color);font-size:.85rem}.filter-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--success-color);cursor:pointer}.gallery-thumbnails{display:flex;gap:3px;padding:6px 8px;background:#000000f2;overflow-x:auto;flex-shrink:0;scroll-behavior:smooth;justify-content:center}.gallery-thumb{flex-shrink:0;width:48px;height:48px;border-radius:3px;overflow:hidden;cursor:pointer;opacity:.4;transition:all .15s;border:2px solid transparent}.gallery-thumb:hover{opacity:.7}.gallery-thumb.active{opacity:1;border-color:#fff}.gallery-thumb img{width:100%;height:100%;object-fit:cover}@media(min-width:600px){.gallery-thumb{width:56px;height:56px}.gallery-thumbnails{gap:4px;padding:8px}}.upload-preview-list{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.upload-preview-item{display:flex;align-items:center;gap:1rem;background:#252525;padding:.75rem;border-radius:8px}.upload-preview-item img{width:80px;height:80px;object-fit:cover;border-radius:6px;flex-shrink:0}.upload-preview-item input{flex:1;padding:.6rem .8rem;border:none;border-radius:6px;background:#333;color:var(--text-color);font-size:1rem}.upload-preview-item input:focus{outline:2px solid #555}.upload-actions{display:flex;gap:1rem;padding:1rem;background:#222;justify-content:center}.upload-actions button{padding:.75rem 2rem;border:none;border-radius:8px;font-size:1rem;cursor:pointer}.cancel-btn{background:#444;color:#fff}.cancel-btn:hover{background:#555}.confirm-btn{background:var(--success-color);color:#fff}.confirm-btn:hover{background:#388e3c}.confirm-btn:disabled{background:#555;cursor:not-allowed}.accept-btn{background:var(--success-color);color:#fff}.accept-btn:hover{background:#388e3c}.decline-btn{background:var(--danger-color);color:#fff}.decline-btn:hover{background:#e74c3c}.requests-grid{flex:1;overflow-y:auto;padding:.5rem;display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;align-content:start}@media(min-width:500px){.requests-grid{grid-template-columns:repeat(3,1fr);padding:1rem;gap:1rem}}@media(min-width:768px){.requests-grid{grid-template-columns:repeat(4,1fr)}}.request-card{display:flex;flex-direction:column;background:#252525;border-radius:12px;overflow:hidden}.request-card.accepted{opacity:.5}.request-card.declined{opacity:.35}.request-card-image{position:relative;width:100%;aspect-ratio:1}.request-card-image img{width:100%;height:100%;object-fit:cover}.dismiss-btn{position:absolute;top:.5rem;right:.5rem;width:28px;height:28px;border:none;border-radius:50%;background:#0009;color:#fff;font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;opacity:0;transition:opacity .2s}.request-card:hover .dismiss-btn,.request-card:active .dismiss-btn{opacity:1}.dismiss-btn:hover{background:#c0392be6}.dismiss-confirm{position:absolute;inset:0;background:#000000d9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;border-radius:12px 12px 0 0}.dismiss-confirm p{color:#fff;font-size:.9rem;font-weight:500}.dismiss-confirm-actions{display:flex;gap:.5rem}.dismiss-confirm-actions button{padding:.4rem 1rem;border:none;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s}.dismiss-confirm-actions button:first-child{background:var(--danger-color);color:#fff}.dismiss-confirm-actions button:first-child:hover{background:#e74c3c}.dismiss-confirm-actions button:last-child{background:#fff3;color:#fff}.dismiss-confirm-actions button:last-child:hover{background:#ffffff4d}.request-card-content{padding:.75rem;display:flex;flex-direction:column;gap:.35rem}.request-title{color:var(--text-color);font-size:.9rem;font-weight:600;margin:0;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.request-note{color:var(--text-muted);font-size:.8rem;font-style:italic;line-height:1.3;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.request-meta{color:#666;font-size:.7rem;margin:0}.request-status-badge{font-size:.7rem;font-weight:600;padding:.25rem .5rem;border-radius:4px;text-align:center;margin-top:.25rem}.request-status-badge.accepted{background:#2ecc7133;color:#2ecc71}.request-status-badge.declined{background:#e74c3c33;color:#e74c3c}.request-card-actions{margin-top:.5rem}.request-action-buttons{display:flex;gap:.5rem}.request-action-buttons button{flex:1;padding:.6rem .5rem;border:none;border-radius:8px;font-size:.85rem;font-weight:600;cursor:pointer}.request-name-input{display:flex;flex-direction:column;gap:.5rem}.request-name-input input{width:100%;padding:.5rem .6rem;border:none;border-radius:6px;background:#333;color:var(--text-color);font-size:.85rem;box-sizing:border-box}.request-name-buttons{display:flex;gap:.5rem}.request-name-buttons button{flex:1;padding:.5rem;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer}.request-name-buttons .confirm-btn{background:var(--success-color);color:#fff}.request-name-buttons .cancel-btn{background:#444;color:#fff}
