body{margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.add-memory-modal{background:linear-gradient(145deg,#fff,#f8f8f8);border:1px solid #ffffff4d;border-radius:16px;box-shadow:0 25px 60px #00000080,0 10px 30px #0000004d,inset 0 1px 0 #ffffffe6;max-height:90vh;max-width:600px;overflow-y:auto;width:90vw}.modal-header{align-items:center;border-bottom:1px solid #0000001a;display:flex;justify-content:space-between;padding:2rem 2rem 1rem}.modal-header h2{color:#000;font-size:1.8rem;font-weight:500;letter-spacing:-.5px;margin:0}.memory-form{padding:2rem}.form-group{margin-bottom:2rem}.form-group label{color:#333;display:block;font-size:1rem;font-weight:500;margin-bottom:.5rem}.form-group input,.form-group textarea{background:#fffc;border:2px solid #0000001a;border-radius:8px;font-family:inherit;font-size:1rem;padding:.8rem 1rem;transition:all .3s ease;width:100%}.form-group input:focus,.form-group textarea:focus{background:#fff;border-color:#0000004d;box-shadow:0 0 0 3px #0000001a;outline:none}.form-group textarea{min-height:80px;resize:vertical}.form-help{color:#666;display:block;font-size:.9rem;margin-top:.5rem}.file-drop-zone{background:#ffffff80;border:2px dashed #0003;border-radius:12px;cursor:pointer;padding:2rem;text-align:center;transition:all .3s ease}.file-drop-zone.drag-active,.file-drop-zone:hover{background:#fffc;border-color:#0006;transform:scale(1.02)}.drop-zone-content{align-items:center;display:flex;flex-direction:column;gap:1rem}.upload-icon{font-size:3rem;opacity:.6}.drop-zone-content p{color:#666;font-size:1rem;margin:0}.change-photo-btn,.select-file-btn{background:linear-gradient(135deg,#000,#333);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:.8rem 1.5rem;transition:all .3s ease}.change-photo-btn:hover,.select-file-btn:hover{background:linear-gradient(135deg,#333,#555);transform:translateY(-2px)}.preview-container{align-items:center;display:flex;flex-direction:column;gap:1rem}.preview-image{border-radius:8px;box-shadow:0 4px 15px #0003;max-height:200px;max-width:200px;object-fit:cover}.has-preview{background:#ffffffe6;border-color:#0003;border-style:solid}.form-actions{border-top:1px solid #0000001a;display:flex;gap:1rem;justify-content:flex-end;margin-top:2rem;padding-top:2rem}.add-btn,.cancel-btn{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:500;padding:.8rem 2rem;transition:all .3s ease}.cancel-btn{background:#0000001a;border:1px solid #0003;color:#333}.cancel-btn:hover{background:#0003;transform:translateY(-1px)}.add-btn{background:linear-gradient(135deg,#000,#333);box-shadow:0 4px 15px #0003;color:#fff}.add-btn:hover{background:linear-gradient(135deg,#333,#555);box-shadow:0 6px 20px #0000004d;transform:translateY(-2px)}@media (max-width:768px){.add-memory-modal{margin:1rem;width:95vw}.memory-form,.modal-header{padding:1.5rem}.form-actions{flex-direction:column}.add-btn,.cancel-btn{width:100%}.preview-image{max-height:150px;max-width:150px}}.file-info{color:#888;display:block;font-size:.85rem;font-style:italic;margin-top:.5rem}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#0a0a0a,#1a1a1a 50%,#2a2a2a);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh}.App{min-height:100vh;text-align:center}.App,.App-header{display:flex;flex-direction:column}.App-header{align-items:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#000c;border-bottom:1px solid #ffffff1a;box-shadow:0 4px 30px #0000004d;color:#fff;gap:1.5rem;margin-bottom:3rem;padding:3rem 2rem}.App-header h1{font-size:3rem;font-weight:300;letter-spacing:-1px;margin-bottom:.5rem;text-shadow:none}.App-header p{font-size:1.3rem;font-weight:300;margin:0;opacity:.8}.add-memory-btn{background:linear-gradient(135deg,#fff,#f0f0f0);border:1px solid #ffffff4d;border-radius:12px;box-shadow:0 8px 25px #0000004d,0 3px 10px #0003,inset 0 1px 0 #fffc;color:#000;cursor:pointer;font-size:1.1rem;font-weight:500;letter-spacing:.5px;padding:1rem 2rem;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.add-memory-btn:hover{background:linear-gradient(135deg,#f0f0f0,#e0e0e0);box-shadow:0 15px 35px #0006,0 8px 20px #0000004d,inset 0 1px 0 #ffffffe6;transform:translateY(-3px) scale(1.05)}.photo-gallery{grid-gap:1.5rem;display:grid;flex:1 1;gap:1.5rem;grid-auto-rows:10px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));margin:0 auto;max-width:1400px;padding:0 2rem}.photo-item{background:linear-gradient(145deg,#fff,#f0f0f0);border:1px solid #fff3;border-radius:12px;box-shadow:0 10px 30px #0000004d,0 1px 8px #0003,inset 0 1px 0 #fffc;cursor:pointer;overflow:hidden;position:relative;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.photo-item:hover{box-shadow:0 25px 50px #0006,0 10px 20px #0000004d,inset 0 1px 0 #ffffffe6;transform:translateY(-8px) scale(1.02)}.photo-thumbnail{display:block;height:100%;object-fit:cover;width:100%}.photo-overlay{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(#0000,#000000e6);bottom:0;color:#fff;display:flex;flex-direction:column;gap:1rem;left:0;padding:2rem 1rem 1rem;position:absolute;right:0;transform:translateY(100%);transition:transform .4s cubic-bezier(.25,.46,.45,.94)}.photo-item:hover .photo-overlay{transform:translateY(0)}.photo-overlay span{font-size:1.2rem;font-weight:500;letter-spacing:.5px;text-shadow:none}.photo-actions{display:flex;gap:.5rem;justify-content:center}.full-page-btn,.quick-view-btn{border:none;border-radius:8px;cursor:pointer;display:inline-block;font-size:.9rem;font-weight:500;letter-spacing:.5px;padding:.6rem 1.2rem;text-align:center;text-decoration:none;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.quick-view-btn{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:1px solid #fff3;color:#fff}.quick-view-btn:hover{background:#fff3;border-color:#fff6;transform:translateY(-2px)}.full-page-btn{background:linear-gradient(135deg,#fff,#f0f0f0);box-shadow:0 4px 15px #0003;color:#000}.full-page-btn:hover{background:linear-gradient(135deg,#f0f0f0,#e0e0e0);box-shadow:0 6px 20px #0000004d;transform:translateY(-2px)}.modal-overlay{align-items:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#000000f2;bottom:0;display:flex;justify-content:center;left:0;padding:2rem;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:linear-gradient(145deg,#fff,#f8f8f8);border:1px solid #ffffff4d;border-radius:16px;box-shadow:0 25px 60px #00000080,0 10px 30px #0000004d,inset 0 1px 0 #ffffffe6;max-height:90vh;max-width:90vw;overflow:hidden;position:relative}.close-button{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#000c;border:1px solid #fff3;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.5rem;height:44px;justify-content:center;position:absolute;right:1rem;top:1rem;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:44px;z-index:1001}.close-button:hover{background:#ffffffe6;color:#000;transform:scale(1.1)}.modal-image{display:block;height:auto;max-height:80vh;object-fit:contain;width:100%}.modal-content h3{background:#2c3e50e6;border-top:2px solid #8b4513;color:#ecf0f1;font-size:1.3rem;margin:0;padding:1rem}.modal-footer{align-items:center;background:linear-gradient(145deg,#f8f8f8,#fff);border-top:1px solid #0000001a;display:flex;justify-content:space-between;padding:1.5rem}.modal-footer h3{background:none;border:none;color:#000;font-size:1.4rem;font-weight:500;margin:0;padding:0}.modal-full-page-link{color:#666;font-weight:500;letter-spacing:.5px;text-decoration:none;transition:color .3s ease}.modal-full-page-link:hover{color:#000}.App-footer{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#000c;border-top:1px solid #ffffff1a;color:#fff;margin-top:4rem;padding:2rem}.App-footer p{font-size:1rem;opacity:.9}@media (max-width:768px){.photo-gallery{gap:1.5rem;grid-template-columns:1fr;padding:0 1rem}.App-header h1{font-size:2.5rem}.App-header p{font-size:1.1rem}.photo-overlay{background:#000c;transform:translateY(0)}.modal-footer,.photo-actions{flex-direction:column}.modal-footer{gap:1rem;text-align:center}}.photo-page{background:linear-gradient(135deg,#0a0a0a,#1a1a1a 50%,#2a2a2a);color:#fff;display:flex;flex-direction:column;min-height:100vh}.photo-header{align-items:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#000c;border-bottom:1px solid #ffffff1a;display:flex;gap:2rem;left:0;padding:1rem 2rem;position:absolute;right:0;top:0;transition:opacity .3s ease;z-index:100}.back-link{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid #fff3;border-radius:8px;color:#fff;font-size:1rem;font-weight:500;padding:.5rem 1rem;text-decoration:none;transition:all .3s ease}.back-link:hover{background:#ffffff1a;border-color:#fff6;transform:translateX(-2px)}.photo-header h1{font-size:1.5rem;font-weight:300;letter-spacing:-.5px;margin:0}.photo-main{flex:1 1;flex-direction:column;gap:1rem;padding:0}.photo-container,.photo-main{align-items:center;display:flex;position:relative}.photo-container{background:#0003;height:100vh;justify-content:center;width:100vw}.featured-photo{border-radius:8px;box-shadow:0 25px 60px #000c,0 10px 30px #0009;max-height:95vh;max-width:95vw;object-fit:contain}.photo-details{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:linear-gradient(145deg,#fffffff2,#f0f0f0f2);border:1px solid #ffffff4d;border-radius:16px;bottom:2rem;box-shadow:0 15px 35px #0000004d,0 5px 15px #0003,inset 0 1px 0 #fffc;color:#000;left:50%;max-width:600px;opacity:0;padding:2rem;position:absolute;text-align:center;transform:translateX(-50%);transition:all .4s cubic-bezier(.25,.46,.45,.94);z-index:50}.photo-page:hover .photo-details{opacity:1;transform:translateX(-50%) translateY(-10px)}.photo-details h2{color:#000;font-size:1.8rem;font-weight:500;letter-spacing:-.5px;margin-bottom:.5rem}.photo-date{color:#666;font-size:1rem;font-weight:500;letter-spacing:.5px;margin-bottom:1rem}.photo-description{color:#333;font-size:1.1rem;font-weight:400;line-height:1.6;margin-bottom:0}.fireworks-container{height:100vh;left:0;overflow:hidden;pointer-events:none;position:fixed;top:0;width:100vw;z-index:1000}.firework{animation:firework 2s ease-out forwards;border-radius:50%;height:4px;position:absolute;width:4px}.firework.gold{background:radial-gradient(circle,gold,#ffed4e);box-shadow:0 0 10px gold}.firework.orange{background:radial-gradient(circle,#ff6b35,#ff8c42);box-shadow:0 0 10px #ff6b35}.firework.red{background:radial-gradient(circle,#ff4757,#ff6b7a);box-shadow:0 0 10px #ff4757}.firework.blue{background:radial-gradient(circle,#3742fa,#5352ed);box-shadow:0 0 10px #3742fa}.firework.green{background:radial-gradient(circle,#2ed573,#7bed9f);box-shadow:0 0 10px #2ed573}@keyframes firework{0%{opacity:1;transform:scale(0) rotate(0deg)}50%{opacity:1;transform:scale(1) rotate(180deg)}to{opacity:0;transform:scale(0) rotate(1turn)}}.sparkle{animation:sparkle 1.5s ease-out forwards;background:#fff;border-radius:50%;height:2px;position:absolute;width:2px}@keyframes sparkle{0%{opacity:1;transform:scale(0) translateY(0)}50%{opacity:1;transform:scale(1) translateY(-20px)}to{opacity:0;transform:scale(0) translateY(-40px)}}.photo-not-found{align-items:center;display:flex;flex-direction:column;gap:2rem;justify-content:center;min-height:100vh}.photo-not-found h2{color:#fff;font-size:2rem;font-weight:300}@media (max-width:768px){.photo-header{flex-direction:column;gap:.5rem;padding:1rem;text-align:center}.photo-header h1{font-size:1.3rem}.photo-details{margin:1rem;max-width:calc(100vw - 2rem);opacity:1;position:static;transform:none}.photo-details h2{font-size:1.5rem}.photo-description{font-size:1rem}.featured-photo{max-height:70vh;max-width:100vw}.photo-page:hover .photo-details{transform:none}}.memory-detail{background:#000;color:#fff;min-height:100vh;overflow:hidden;position:relative}.memory-detail-content{align-items:center;display:flex;height:100vh;justify-content:center;position:relative;width:100%}.memory-detail-image{height:100vh;object-fit:contain;object-position:center;width:100%}.memory-detail-info{background:linear-gradient(#0000,#000000b3 50%,#000000e6);bottom:0;left:0;padding:4rem 2rem 2rem;position:absolute;right:0;text-align:center;z-index:10}.memory-detail-title{color:#f5f5f5;font-size:2.5rem;font-weight:300;margin-bottom:.5rem;text-shadow:0 2px 4px #00000080}.memory-detail-date{color:#ccc;font-size:1.1rem;font-style:italic;margin-bottom:1rem;text-shadow:0 1px 2px #00000080}.memory-detail-description{color:#ddd;font-size:1rem;line-height:1.5;margin:0 auto;max-width:600px;text-shadow:0 1px 2px #00000080}.memory-detail-error,.memory-detail-loading{align-items:center;background:#000;color:#888;display:flex;font-size:1.5rem;justify-content:center;min-height:100vh}.memory-detail-back{left:2rem;position:fixed;top:2rem;z-index:20}.back-btn{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0009;border:1px solid #ffffff4d;border-radius:25px;color:#fff;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;text-shadow:none;transition:all .3s ease}.back-btn:hover{background:#000c;border-color:#ffffff80;transform:translateY(-2px)}.memory-detail-admin{position:fixed;right:2rem;top:4.5rem;z-index:20}.delete-trigger-btn{align-items:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0000004d;border:none;border-radius:50%;color:#fff6;cursor:pointer;display:flex;font-size:1.5rem;height:40px;justify-content:center;padding:.5rem;transition:all .3s ease;width:40px}.delete-trigger-btn:hover{background:#0009;color:#ffffffb3}.delete-form{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#000000e6;border:1px solid #fff3;border-radius:12px;min-width:250px;padding:1.5rem}.delete-password-input{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;color:#fff;font-size:1rem;margin-bottom:1rem;padding:.75rem;width:100%}.delete-password-input::placeholder{color:#ffffff80}.delete-password-input:focus{background:#ffffff26;border-color:#fff9;outline:none}.delete-form-buttons{display:flex;gap:.75rem}.delete-cancel-btn,.delete-confirm-btn{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:.9rem;padding:.75rem;transition:all .3s ease}.delete-confirm-btn{background:#dc3545;color:#fff}.delete-confirm-btn:hover:not(:disabled){background:#c82333}.delete-confirm-btn:disabled{cursor:not-allowed;opacity:.6}.delete-cancel-btn{background:#ffffff1a;border:1px solid #ffffff4d;color:#fff}.delete-cancel-btn:hover{background:#fff3}.delete-error{color:#ff6b6b;font-size:.9rem;margin-top:.75rem;text-align:center}.memory-navigation{left:0;pointer-events:none;position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:15}.memory-counter{background:#0009;border-radius:20px;font-size:.9rem;opacity:.8;padding:.5rem 1rem;position:fixed;right:2rem;top:2rem;transition:opacity .3s ease;z-index:20}.memory-counter,.nav-arrow{animation:fadeOut .3s ease-in-out 2s forwards;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;pointer-events:auto}.nav-arrow{align-items:center;background:#0006;border:none;border-radius:50%;cursor:pointer;display:flex;font-size:3rem;height:60px;justify-content:center;opacity:.7;position:absolute;top:50%;transform:translateY(-50%);transition:all .3s ease;width:60px}.nav-arrow:hover{animation:none;background:#000000b3;opacity:1;transform:translateY(-50%) scale(1.1)}.nav-arrow-left{left:2rem}.nav-arrow-right{right:2rem}.nav-click-area{bottom:0;cursor:pointer;pointer-events:auto;position:fixed;top:0;width:25%;z-index:10}.nav-click-area-left{left:0}.nav-click-area-right{right:0}.memory-counter:hover,.memory-navigation:hover .nav-arrow,.nav-click-area-left:hover~.memory-navigation .nav-arrow-left,.nav-click-area-right:hover~.memory-navigation .nav-arrow-right,.nav-click-area:hover~.memory-counter{animation:none;opacity:1}@keyframes fadeOut{0%{opacity:.8}to{opacity:0}}@media (max-width:768px){.nav-arrow{font-size:2rem;height:50px;width:50px}.nav-arrow-left{left:1rem}.nav-arrow-right{right:1rem}.memory-counter{font-size:.8rem;padding:.4rem .8rem;right:1rem;top:1rem}.memory-detail-title{font-size:2rem}.memory-detail-info{padding:3rem 1.5rem 1.5rem}.memory-detail-admin{right:1rem;top:3.5rem}.memory-detail-back{left:1rem;top:1rem}.delete-form{min-width:200px}}@media (max-width:480px){.memory-detail-title{font-size:1.5rem}.memory-detail-date{font-size:1rem}.memory-detail-description{font-size:.9rem}.memory-detail-info{padding:2rem 1rem 1rem}}
/*# sourceMappingURL=main.bb893f8d.css.map*/