@import"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;700&family=Playfair+Display:wght@700;900&display=swap";:root{--color-primary: #ff69b4;--color-secondary: #9b59b6;--color-tertiary: #5dade2;--color-accent: #f39c12;--color-light: #f8f5f1;--color-dark: #2c3e50;--gradient-main: linear-gradient( 135deg, rgba(255, 192, 203, .4), rgba(216, 191, 216, .4), rgba(176, 224, 230, .4) );--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--transition-smooth: all .3s cubic-bezier(.25, .46, .45, .94)}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow-x:hidden}body{font-family:Poppins,sans-serif;color:var(--color-dark);background:var(--color-light);line-height:1.6}#root{width:100%;min-height:100vh}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-secondary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}.floating-hearts-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:hidden}.floating-heart{position:absolute;bottom:-50px;font-size:2rem;opacity:.7;animation:float 8s infinite ease-in;-webkit-user-select:none;user-select:none}@keyframes float{0%{opacity:.7;transform:translateY(0) rotate(0) scale(1)}50%{opacity:.8;transform:translateY(-50vh) rotate(10deg) scale(1.1)}to{opacity:0;transform:translateY(-100vh) rotate(20deg) scale(.8)}}.floating-heart:nth-child(1){animation-duration:7s;animation-delay:0s}.floating-heart:nth-child(2){animation-duration:9s;animation-delay:1s}.floating-heart:nth-child(3){animation-duration:8s;animation-delay:2s}@media(max-width:768px){.floating-heart{font-size:1.5rem}}.music-player-container{position:fixed;bottom:2rem;right:2rem;z-index:1000;display:flex;align-items:center;gap:.5rem}.volume-control{background:linear-gradient(135deg,#ff69b4,#9b59b6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:1rem;border-radius:15px;display:flex;align-items:center;gap:.8rem;box-shadow:0 8px 25px #ff69b466;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.volume-slider{width:120px;height:6px;border-radius:3px;background:#ffffff4d;outline:none;-webkit-appearance:none;appearance:none;cursor:pointer}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 2px 8px #0003}.volume-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;cursor:pointer;border:none;box-shadow:0 2px 8px #0003}.volume-label{color:#fff;font-weight:600;min-width:35px;font-size:.9rem}.volume-button{width:50px;height:50px}.music-player-button{width:60px;height:60px;border-radius:50%;border:none;background:linear-gradient(135deg,#ff69b4,#9b59b6);color:#fff;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 25px #ff69b466;transition:var(--transition-smooth);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.music-player-button:hover{transform:scale(1.1);box-shadow:0 12px 35px #ff69b499}.music-player-button:active{transform:scale(.95)}@media(max-width:768px){.music-player-container{bottom:1.5rem;right:1.5rem}.music-player-button{width:50px;height:50px}.volume-button{width:45px;height:45px}.volume-control{padding:.8rem;gap:.5rem}.volume-slider{width:80px}}.layout-container{position:relative;width:100%;min-height:100vh;overflow-x:hidden}.animated-background{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(-45deg,#ff69b4,#9b59b6,#5dade2,#ff69b4);background-size:400% 400%;animation:gradient 15s ease infinite;z-index:-1}@keyframes gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.layout-main{position:relative;z-index:1;width:100%;min-height:100vh;display:flex;flex-direction:column}@media(max-width:768px){.layout-main{width:100%}}.counter-container{display:flex;align-items:center;justify-content:center;gap:var(--spacing-lg);margin:var(--spacing-xl) 0;animation:fadeIn .8s ease-out .3s both}.counter-card{background:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:20px;padding:var(--spacing-md) var(--spacing-lg);text-align:center;box-shadow:0 8px 32px #ff69b433;transition:var(--transition-smooth);min-width:140px}.counter-card:hover{transform:translateY(-10px);box-shadow:0 12px 40px #ff69b44d}.counter-number{font-size:3rem;font-weight:700;background:linear-gradient(135deg,#ff69b4,#9b59b6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-family:Playfair Display,serif}.counter-label{font-size:.9rem;color:var(--color-dark);font-weight:500;margin-top:var(--spacing-xs);line-height:1.4}.counter-divider{font-size:1.5rem;opacity:.6}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.counter-container{gap:var(--spacing-md);margin:var(--spacing-lg) 0}.counter-card{padding:var(--spacing-md);min-width:120px}.counter-number{font-size:2rem}.counter-label{font-size:.8rem}}.home-container{width:100%;height:100vh;display:flex;flex-direction:column;animation:fadeInUp .8s ease-out}.home-header{background:#ffffff1a;border-bottom:1px solid rgba(255,255,255,.2);padding:1rem 2rem;position:sticky;top:0;z-index:100}.home-header-content{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto}.home-header-title{font-size:1.5rem;font-weight:700;color:#fff;margin:0;text-shadow:0 2px 10px rgba(0,0,0,.2)}.menu-container{position:relative}.menu-toggle{background:#fff3;border:2px solid rgba(255,255,255,.3);color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.menu-toggle:hover{background:#ffffff4d;transform:scale(1.1)}.menu-dropdown{position:absolute;top:100%;right:0;background:#fffffff2;border-radius:12px;box-shadow:0 8px 32px #00000026;overflow:hidden;min-width:200px;margin-top:.5rem;border:1px solid rgba(255,255,255,.5);animation:slideDown .2s ease-out}.menu-item{width:100%;padding:1rem;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;gap:.75rem;font-weight:600;transition:all .2s ease;border-bottom:1px solid rgba(0,0,0,.05)}.menu-item:last-child{border-bottom:none}.menu-item.admin-item{color:#10b981}.menu-item.admin-item:hover{background:#10b9811a;transform:translate(4px)}.menu-item.logout-item{color:#ef4444}.menu-item.logout-item:hover{background:#ef44441a;transform:translate(4px)}.home-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;gap:1.5rem}.home-title{font-family:Playfair Display,serif;font-size:3.5rem;font-weight:900;color:#fff;line-height:1.2;margin:0;max-width:100%;word-break:break-word;text-shadow:0 4px 20px rgba(0,0,0,.5),0 2px 10px rgba(0,0,0,.3)}.home-subtitle{font-size:1.2rem;color:#fff;font-weight:300;opacity:1;margin:0;text-shadow:0 3px 15px rgba(0,0,0,.4)}.home-main-buttons{display:flex;flex-direction:column;gap:1.5rem;align-items:center;margin:2rem 0}.home-button-main{display:flex;align-items:center;justify-content:center;gap:1rem;background:linear-gradient(135deg,#ff69b4,#9b59b6);color:#fff;border:none;padding:1.2rem 3rem;border-radius:50px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 10px 30px #ff69b466;text-transform:uppercase;letter-spacing:1px;min-width:280px}.home-button-main:hover{transform:translateY(-5px);box-shadow:0 15px 40px #ff69b499}.home-button-main:active{transform:translateY(-2px)}.home-nav-hints{margin-top:1.5rem;padding-top:1.5rem;border-top:2px solid rgba(255,255,255,.3)}.hint-text{font-size:1rem;color:#fff;opacity:1;font-style:italic;font-weight:500;margin:0;text-shadow:0 3px 15px rgba(0,0,0,.4)}.home-secondary-buttons-inline{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;width:100%}.home-button-secondary{display:flex;align-items:center;justify-content:center;gap:.5rem;color:#fff;border:2px solid rgba(255,255,255,.3);background:#ffffff1a;padding:.8rem 1.5rem;border-radius:50px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .3s ease;text-transform:uppercase;letter-spacing:.5px}.home-button-secondary:hover{background:#fff3;border-color:#ffffff80;transform:translateY(-2px);box-shadow:0 8px 20px #00000026}@media(max-width:1024px){.home-title{font-size:2.8rem}.home-button-main{padding:1rem 2.5rem;font-size:1rem;min-width:240px}}@media(max-width:768px){.home-header{padding:.75rem 1rem}.home-header-title{font-size:1.2rem}.home-content{padding:1.5rem;gap:1.2rem}.home-title{font-size:2rem}.home-subtitle{font-size:.95rem}.home-button-main{padding:.9rem 2rem;font-size:.95rem;min-width:200px;gap:.75rem}.home-secondary-buttons-inline{gap:.75rem}.home-button-secondary{padding:.7rem 1.2rem;font-size:.85rem;flex:1}}@media(max-width:480px){.home-header{padding:.5rem .75rem}.home-header-title{font-size:1rem}.home-content{padding:1rem;gap:1rem}.home-title{font-size:1.6rem}.home-subtitle{font-size:.85rem}.home-button-main{padding:.8rem 1.5rem;font-size:.9rem;min-width:170px;gap:.5rem}.home-main-buttons{gap:1rem;margin:1.5rem 0}.home-secondary-buttons-inline{gap:.5rem}.home-button-secondary{padding:.6rem 1rem;font-size:.8rem;flex:1;min-width:140px}.menu-dropdown{min-width:180px}}.letter-page{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2.5rem 1.5rem;box-sizing:border-box}.letter-container{width:100%;max-width:700px;background:#ffffffd9;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:25px;padding:3rem;box-shadow:0 20px 60px #0000001a;border:1px solid rgba(255,255,255,.5);animation:fadeInUp .6s ease-out}.letter-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.letter-back-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:linear-gradient(135deg,#ff69b4,#9b59b6);color:#fff;border:none;border-radius:50%;cursor:pointer;transition:var(--transition-smooth);text-decoration:none}.letter-back-button:hover{transform:scale(1.1)}.letter-title{flex:1;font-family:Playfair Display,serif;font-size:2rem;font-weight:700;background:linear-gradient(135deg,#ff69b4,#9b59b6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0}.letter-date{font-size:.95rem;color:var(--color-secondary);text-transform:capitalize;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid rgba(255,105,180,.2)}.letter-image-container{width:100%;max-width:500px;margin:2rem auto;border-radius:20px;overflow:hidden;box-shadow:0 15px 40px #ff69b440;transition:var(--transition-smooth)}.letter-image-container:hover{transform:translateY(-5px);box-shadow:0 20px 50px #ff69b459}.letter-image{width:100%;height:400px;display:block;object-fit:cover;animation:fadeIn .6s ease-out}.letter-content-wrapper{margin:2rem 0;max-height:60vh;overflow-y:auto;padding-right:.5rem}.letter-content{font-size:1.1rem;line-height:1.8;color:var(--color-dark);font-family:Poppins,sans-serif}.letter-content p{margin-bottom:1.5rem;text-align:justify;-webkit-hyphens:auto;hyphens:auto}.letter-content p:last-child{margin-bottom:0}.letter-navigation{display:flex;justify-content:space-between;gap:1rem;margin-top:2rem;padding-top:2rem;border-top:1px solid rgba(155,89,182,.2)}.nav-button{display:inline-flex;align-items:center;gap:.5rem;padding:.8rem 1.5rem;background:#ff69b433;color:var(--color-secondary);border:2px solid var(--color-secondary);border-radius:50px;cursor:pointer;text-decoration:none;transition:var(--transition-smooth);font-weight:600;font-size:.95rem}.nav-button:hover{background:var(--color-secondary);color:#fff;transform:translateY(-3px)}.nav-button.prev{justify-content:flex-start}.nav-button.next{justify-content:flex-end;margin-left:auto}.letter-autogenerated-note{display:flex;align-items:center;gap:.5rem;margin-top:1.5rem;padding:1rem;background:#f39c121a;border-left:3px solid #f39c12;border-radius:5px;font-size:.9rem;color:var(--color-dark)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.letter-container{padding:1.5rem;border-radius:15px}.letter-header{flex-direction:column;align-items:flex-start}.letter-title{font-size:1.5rem}.letter-content{font-size:1rem}.letter-navigation{flex-direction:column}.nav-button{justify-content:center;width:100%}.nav-button.next{margin-left:0}}.dedication-page{position:fixed;top:0;left:0;width:100%;height:100vh;overflow:hidden;background:linear-gradient(135deg,#2d1b4e,#1a0033,#2d1b4e);display:flex;align-items:center;justify-content:center;z-index:1000}.dedication-background{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.3;pointer-events:none}.floating-hearts{position:relative;width:100%;height:100%}.heart{position:absolute;bottom:-50px;font-size:3rem;animation:float-up 15s infinite linear;opacity:.6}@keyframes float-up{0%{transform:translateY(0) rotate(0);opacity:0}10%{opacity:.6}90%{opacity:.6}to{transform:translateY(-100vh) rotate(360deg);opacity:0}}.dedication-content{position:relative;z-index:10;width:90%;max-width:900px;height:90vh;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;animation:fadeInDown .8s ease-out}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}.dedication-header{padding-top:2rem}.dedication-title{font-family:Playfair Display,serif;font-size:4rem;font-weight:900;background:linear-gradient(135deg,#ff69b4,#ff1493);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0;text-shadow:0 0 30px rgba(255,105,180,.5);animation:pulse 3s ease-in-out infinite}@keyframes pulse{0%,to{text-shadow:0 0 30px rgba(255,105,180,.5)}50%{text-shadow:0 0 60px rgba(255,105,180,.9)}}.dedication-artist{font-size:1.5rem;color:#fffc;margin:.5rem 0 0;font-weight:300;letter-spacing:2px}.lyrics-display{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;padding:2rem;min-height:300px}.lyrics-current{min-height:100px}.lyric-line{color:#fff;margin:0;line-height:1.4;transition:all .8s cubic-bezier(.4,0,.2,1)}.lyric-line.current{font-family:Playfair Display,serif;font-size:3rem;font-weight:700;background:linear-gradient(135deg,#ff69b4,#ff1493);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:slideInFade .8s cubic-bezier(.4,0,.2,1);text-shadow:0 0 20px rgba(255,105,180,.4)}@keyframes slideInFade{0%{opacity:0;transform:translateY(30px) scale(.95)}50%{opacity:.7}to{opacity:1;transform:translateY(0) scale(1)}}.lyric-line.next{font-size:1.3rem;opacity:.6;font-weight:300;animation:slideInNextFade .8s cubic-bezier(.4,0,.2,1)}@keyframes slideInNextFade{0%{opacity:0;transform:translateY(20px)}to{opacity:.6;transform:translateY(0)}}.player-controls{width:100%;padding:2rem;display:flex;flex-direction:column;gap:2rem;align-items:center}.progress-section{width:100%;max-width:600px}.progress-container{width:100%;height:8px;background:#fff3;border-radius:4px;cursor:pointer;margin-bottom:1rem;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.progress-bar{height:100%;background:linear-gradient(90deg,#ff69b4,#ff1493);border-radius:4px;transition:width .1s linear;box-shadow:0 0 20px #ff69b4cc}.time-display{display:flex;justify-content:space-between;font-size:.9rem;color:#fffc;letter-spacing:1px}.player-buttons{display:flex;align-items:center;gap:3rem;justify-content:center}.play-button{background:linear-gradient(135deg,#ff69b4,#ff1493);border:none;border-radius:50%;cursor:pointer;color:#fff;padding:1rem;display:flex;align-items:center;justify-content:center;transition:all .3s ease;box-shadow:0 0 30px #ff69b480}.play-button:hover{transform:scale(1.15);box-shadow:0 0 50px #ff69b4e6}.play-button:active{transform:scale(.95)}.volume-section{display:flex;align-items:center;gap:1rem;color:#fff;background:#ffffff1a;padding:.8rem 1.5rem;border-radius:50px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.volume-slider{width:100px;height:4px;border-radius:2px;background:#fff3;outline:none;-webkit-appearance:none;appearance:none;cursor:pointer}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:linear-gradient(135deg,#ff69b4,#ff1493);cursor:pointer;box-shadow:0 0 10px #ff69b4cc}.volume-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:linear-gradient(135deg,#ff69b4,#ff1493);cursor:pointer;border:none;box-shadow:0 0 10px #ff69b4cc}.volume-text{min-width:40px;font-size:.9rem;font-weight:600}.dedication-footer{padding-bottom:2rem}.dedication-footer p{font-size:1.2rem;color:#fffc;margin:0;font-weight:300;letter-spacing:1px}@media(max-width:768px){.dedication-page{padding:1rem}.dedication-title{font-size:2.5rem}.dedication-artist{font-size:1rem}.lyric-line.current{font-size:2rem}.lyric-line.next{font-size:1rem}.player-buttons{gap:1.5rem}.play-button{padding:.7rem}.volume-section{flex-direction:column;gap:.5rem}.volume-slider{width:80px}.heart{font-size:1.5rem}}.back-button{position:absolute;top:2rem;left:2rem;background:#ffffff1a;border:2px solid rgba(255,105,180,.6);color:#ff69b4;width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s ease;font-size:1.5rem;z-index:100}.back-button:hover{background:#ff69b433;border-color:#ff69b4;transform:scale(1.1);box-shadow:0 0 15px #ff69b499}.back-button:active{transform:scale(.95)}.login-page{position:fixed;top:0;left:0;width:100%;height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(135deg,#1a0033,#2d1b4e,#1a0033);z-index:1000}.login-background{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.3}.animated-gradient{width:100%;height:100%;background:linear-gradient(45deg,#ff69b4,#ff1493,#ff69b4,#ff1493);background-size:400% 400%;animation:gradientShift 15s ease infinite}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.login-container{position:relative;z-index:10;width:100%;max-width:none;height:100%;padding:2.5rem;display:flex;align-items:center;justify-content:center}.login-card{background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:20px;padding:3rem 2.5rem;width:min(560px,100%);min-height:70vh;display:flex;flex-direction:column;justify-content:center;box-shadow:0 20px 60px #ff69b44d;animation:slideInUp .6s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:2rem}.login-title{font-size:2.5rem;font-weight:900;background:linear-gradient(135deg,#ff69b4,#ff1493);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0;margin-bottom:.5rem;font-family:Playfair Display,serif}.login-subtitle{color:#666;font-size:1rem;margin:0;font-weight:500;letter-spacing:.5px}.login-form{display:flex;flex-direction:column;gap:1.5rem}.form-group label{font-weight:600;color:#333;font-size:.95rem}.form-input{padding:.9rem 1rem;border:2px solid #e0e0e0;border-radius:10px;font-size:1rem;transition:all .3s ease;font-family:inherit;background:#f9f9f9}.form-input:focus{outline:none;border-color:#ff69b4;background:#fff;box-shadow:0 0 0 3px #ff69b41a}.form-input:disabled{opacity:.6;cursor:not-allowed}.password-input-wrapper{position:relative;display:flex;align-items:center}.password-input-wrapper .form-input{width:100%;padding-right:2.5rem}.toggle-password{position:absolute;right:.8rem;background:none;border:none;color:#999;cursor:pointer;padding:.4rem;display:flex;align-items:center;justify-content:center;transition:color .3s ease}.toggle-password:hover{color:#ff69b4}.error-message{background:#fee;border-left:4px solid #f55;color:#c33;padding:.8rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;animation:shake .3s ease}.login-button{padding:1rem;background:linear-gradient(135deg,#ff69b4,#ff1493);color:#fff;border:none;border-radius:10px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:.5rem;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 10px 25px #ff69b44d}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 15px 35px #ff69b466}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.7;cursor:not-allowed}.login-button .spinning{animation:spin 1s linear infinite}.login-footer{text-align:center;margin-top:2rem;padding-top:1.5rem;border-top:1px solid #eee;color:#666;font-size:.9rem}.login-footer p{margin:0}.contact-admin{color:#ff69b4;font-weight:600;cursor:pointer;transition:color .3s ease}.contact-admin:hover{color:#ff1493}.floating-hearts-login{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.heart-login{position:absolute;bottom:-50px;font-size:2rem;animation:float-up-login 6s ease-in-out infinite;opacity:.4;z-index:0}@keyframes float-up-login{0%{transform:translateY(0) rotate(0);opacity:0}10%{opacity:.4}90%{opacity:.4}to{transform:translateY(-100vh) rotate(360deg);opacity:0}}@media(max-width:600px){.login-card{padding:2rem 1.5rem;min-height:80vh}.login-title{font-size:2rem}.login-subtitle{font-size:.9rem}.form-input{padding:.8rem .9rem;font-size:16px}.login-button{padding:.9rem;font-size:.95rem}.heart-login{font-size:1.5rem}}.admin-page{min-height:100vh;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);padding-bottom:2rem}.admin-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2rem;box-shadow:0 4px 6px #0000001a;position:sticky;top:0;z-index:100}.admin-header-content{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:2rem}.admin-header h1{margin:0;font-size:2rem;font-weight:700}.header-right{display:flex;align-items:center;gap:1.5rem}.user-email{font-size:.95rem;opacity:.9}.logout-button{background:#fff3;color:#fff;border:2px solid white;padding:.5rem 1rem;border-radius:8px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .3s ease}.logout-button:hover{background:#ffffff4d;transform:translateY(-2px)}.admin-container{max-width:1200px;margin:0 auto;padding:2rem;display:grid;grid-template-columns:1fr 1fr;gap:2rem}.form-section{background:#fff;padding:2rem;border-radius:15px;box-shadow:0 10px 30px #0000001a}.form-section h2{color:#333;margin-top:0;margin-bottom:1.5rem;font-size:1.5rem}.form-group{margin-bottom:1.5rem}.form-week-info{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.week-chip{display:inline-flex;align-items:center;padding:.3rem .85rem;border-radius:999px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.85rem;font-weight:600}.publish-date{font-size:.9rem;color:#555;font-weight:500}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:#555}.form-group input,.form-group textarea{width:100%;padding:.8rem;border:2px solid #e0e0e0;border-radius:8px;font-family:inherit;font-size:1rem;transition:all .3s ease;background:#f9f9f9}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#667eea;background:#fff;box-shadow:0 0 0 3px #667eea1a}.message{padding:1rem;border-radius:8px;margin-bottom:1.5rem;animation:slideIn .3s ease}.message.success{background:#d4edda;color:#155724;border-left:4px solid #28a745}.message.error{background:#f8d7da;color:#721c24;border-left:4px solid #f5c6cb}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.form-buttons{display:flex;gap:1rem;margin-top:2rem}.form-migration{margin-top:1rem}.form-migration .btn{width:100%}.btn{padding:.8rem 1.5rem;border:none;border-radius:8px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .3s ease;text-transform:uppercase;font-size:.9rem;flex:1;justify-content:center}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 15px #667eea66}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea99}.btn-secondary{background:#e0e0e0;color:#333}.btn-secondary:hover:not(:disabled){background:#d0d0d0}.btn:disabled{opacity:.6;cursor:not-allowed}.spinning{animation:spin 1s linear infinite}.letters-section{background:#fff;padding:2rem;border-radius:15px;box-shadow:0 10px 30px #0000001a}.letters-section h2{color:#333;margin-top:0;margin-bottom:1.5rem;font-size:1.5rem}.no-letters{text-align:center;padding:2rem;color:#999}.letters-grid{display:flex;flex-direction:column;gap:1rem;max-height:600px;overflow-y:auto}.letter-card{border:2px solid #e0e0e0;border-radius:10px;padding:1.5rem;transition:all .3s ease;cursor:pointer;background:#f9f9f9}.letter-card:hover{border-color:#667eea;background:#fff;box-shadow:0 4px 12px #667eea33}.letter-header-card{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.75rem}.letter-card h3{margin:0;color:#333;font-size:1.1rem;flex:1}.week-badge{display:inline-block;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600;white-space:nowrap}.letter-preview{color:#666;font-size:.9rem;margin:.5rem 0;line-height:1.4}.letter-meta{display:flex;flex-direction:column;gap:.5rem;margin:1rem 0;font-size:.85rem;color:#999}.meta-item{display:flex;align-items:center;gap:.5rem}color: #999; font-size: .85rem; margin-bottom: 1rem; } .letter-actions{display:flex;gap:.5rem}.btn-icon{background:none;border:2px solid #ddd;color:#666;width:36px;height:36px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;padding:0}.btn-icon.edit:hover{border-color:#667eea;color:#667eea;background:#667eea0d}.btn-icon.delete:hover{border-color:#e74c3c;color:#e74c3c;background:#e74c3c0d}.admin-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);color:#667eea;font-size:1.2rem}.admin-loading .spinning{font-size:2rem;margin-bottom:1rem}@media(max-width:1024px){.admin-container{grid-template-columns:1fr}.admin-header-content{flex-direction:column;align-items:flex-start}.header-right{flex-direction:column;align-items:flex-start;width:100%}}@media(max-width:768px){.admin-header{padding:1.5rem 1rem}.admin-header h1{font-size:1.5rem}.admin-container{padding:1rem;gap:1.5rem}.form-section,.letters-section{padding:1.5rem}.form-buttons{flex-direction:column}.btn{width:100%}}.create-memory-container{min-height:100vh;background:linear-gradient(135deg,#fecaca,#fdba74,#fbbf24);display:flex;align-items:center;justify-content:center;padding:2rem 1rem;font-family:Poppins,sans-serif}.create-memory-card{background:#fff;border-radius:2rem;box-shadow:0 20px 60px #00000026;padding:2.5rem;max-width:600px;width:100%;animation:slideUp .5s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.create-memory-title{font-size:2rem;font-weight:700;color:#ec4899;margin-bottom:2rem;display:flex;align-items:center;gap:1rem;text-align:center;justify-content:center}.create-memory-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:600;color:#374151;font-size:.95rem}.form-group input,.form-group textarea{padding:.75rem 1rem;border:2px solid #e5e7eb;border-radius:.75rem;font-family:Poppins,sans-serif;font-size:1rem;transition:all .3s ease;background:#fafafa}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:#ec4899;background:#fff;box-shadow:0 0 0 3px #ec48991a}.form-group input:disabled,.form-group textarea:disabled{opacity:.6;cursor:not-allowed}.form-group textarea{resize:vertical;min-height:120px}.image-upload-wrapper{position:relative;background:#faf5ff;border:2px dashed #d8b4fe;border-radius:1rem;padding:2rem;text-align:center;cursor:pointer;transition:all .3s ease}.image-upload-wrapper:hover{border-color:#ec4899;background:#fce7f3}.image-input{display:none}.upload-label{display:flex;flex-direction:column;align-items:center;gap:.75rem;cursor:pointer;color:#9333ea;font-weight:600;-webkit-user-select:none;user-select:none}.upload-label span{font-size:.95rem}.image-preview{position:relative;margin-top:1rem;border-radius:1rem;overflow:hidden;border:2px solid #ec4899;background:#fff}.image-preview img{width:100%;height:300px;object-fit:cover}.remove-image-btn{position:absolute;top:.5rem;right:.5rem;background:#f00c;color:#fff;border:none;border-radius:.5rem;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s ease}.remove-image-btn:hover{background:red}.remove-image-btn:disabled{opacity:.5;cursor:not-allowed}.message{padding:1rem;border-radius:.75rem;text-align:center;font-weight:600;animation:slideDown .3s ease-out}.message.error{background:#fee2e2;color:#dc2626;border-left:4px solid #dc2626;animation:shake .3s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.form-actions{display:flex;gap:1rem;margin-top:1rem}.btn-primary,.btn-secondary{padding:.75rem 1.5rem;border:none;border-radius:.75rem;font-weight:600;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:all .3s ease;font-family:Poppins,sans-serif;flex:1}.btn-primary{background:linear-gradient(135deg,#ec4899,#d946ef);color:#fff;box-shadow:0 4px 15px #ec489966}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #ec489999}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:#f3f4f6;color:#6b7280;border:2px solid #e5e7eb}.btn-secondary:hover:not(:disabled){background:#e5e7eb;border-color:#d1d5db}.btn-secondary:disabled{opacity:.6;cursor:not-allowed}@media(max-width:768px){.create-memory-container{padding:1rem}.create-memory-card{padding:1.5rem;border-radius:1.5rem}.create-memory-title{font-size:1.5rem}.form-actions{flex-direction:column}.image-preview img{height:250px}}.memories-container{min-height:100vh;background:linear-gradient(135deg,#fecaca,#fbcfe8,#f0e7fe);padding:2rem 1rem 3rem;font-family:Poppins,sans-serif}.memories-shell{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;gap:1.5rem}.memories-topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.memories-header{text-align:center;padding:2.5rem 2rem;background:#ffffffe6;border-radius:1.75rem;box-shadow:0 20px 50px #ec489926;border:1px solid rgba(255,255,255,.6)}.memories-header h1{font-size:2.5rem;font-weight:700;color:#ec4899;margin-bottom:.5rem;display:flex;align-items:center;justify-content:center;gap:1rem}.header-subtitle{font-size:1.1rem;color:#9333ea;font-weight:500}.create-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.85rem 1.4rem;background:linear-gradient(135deg,#ec4899,#d946ef);color:#fff;border:none;border-radius:999px;font-weight:600;font-size:.95rem;cursor:pointer;box-shadow:0 4px 15px #ec489966;transition:all .3s ease;font-family:Poppins,sans-serif}.create-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #ec489999}.message{max-width:600px;margin:0 auto;padding:1rem;border-radius:1rem;text-align:center;font-weight:600;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.message.success{background:#dcfce7;color:#16a34a;border-left:4px solid #16a34a}.message.error{background:#fee2e2;color:#dc2626;border-left:4px solid #dc2626}.no-memories{text-align:center;padding:4rem 2rem;background:#fff;border-radius:1.5rem;box-shadow:0 10px 30px #0000001a}.no-memories svg{color:#d946ef;margin-bottom:1rem;opacity:.5}.no-memories p{font-size:1.2rem;color:#9333ea;margin-bottom:1.5rem;font-weight:500}.btn-create{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:linear-gradient(135deg,#ec4899,#d946ef);color:#fff;border:none;border-radius:.75rem;font-weight:600;cursor:pointer;transition:all .3s ease;font-family:Poppins,sans-serif}.btn-create:hover{transform:translateY(-2px);box-shadow:0 4px 15px #ec489966}.memories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2rem}.memory-card{background:#fff;border-radius:1.5rem;overflow:hidden;box-shadow:0 10px 30px #0000001a;transition:all .3s ease;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.6);cursor:pointer}.memory-card:hover{transform:translateY(-5px);box-shadow:0 15px 40px #ec489933}.memory-image{width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#fecaca,#fbcfe8)}.memory-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.memory-card:hover .memory-image img{transform:scale(1.05)}.memory-content{padding:1.5rem;display:flex;flex-direction:column;flex:1}.memory-title{font-size:1.2rem;font-weight:700;color:#1f2937;margin-bottom:.5rem;line-height:1.4}.memory-text{font-size:.95rem;color:#6b7280;margin-bottom:1rem;flex:1;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.memory-readmore{align-self:flex-start;background:transparent;border:none;color:#9333ea;font-weight:600;font-size:.9rem;cursor:pointer;padding:0;margin-bottom:1rem;transition:color .2s ease}.memory-readmore:hover{color:#7c3aed}.memory-modal-overlay{position:fixed;inset:0;background:#11182799;display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:2000}.memory-modal{background:#fff;width:min(720px,100%);max-height:90vh;border-radius:1.5rem;overflow:hidden;box-shadow:0 30px 80px #00000059;position:relative;display:flex;flex-direction:column}.memory-modal-close{position:absolute;top:1rem;right:1rem;border:none;background:#0000000d;color:#6b7280;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.memory-modal-close:hover{background:#0000001a;color:#111827}.memory-modal-image{width:100%;max-height:320px;overflow:hidden;background:linear-gradient(135deg,#fecaca,#fbcfe8)}.memory-modal-image img{width:100%;height:100%;object-fit:cover;display:block}.memory-modal-content{padding:2rem;overflow-y:auto}.memory-modal-content h2{margin:0 0 .5rem;font-size:1.6rem;color:#111827}.memory-modal-date{display:flex;align-items:center;gap:.5rem;color:#6b7280;margin-bottom:1.5rem;font-size:.95rem}.memory-modal-text p{margin:0 0 1rem;color:#374151;line-height:1.7}.memory-modal-text p:last-child{margin-bottom:0}.memory-date{font-size:.85rem;color:#9ca3af;display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.memory-actions{display:flex;gap:.5rem;margin-top:auto;padding-top:1rem;border-top:1px solid #e5e7eb}.btn-delete{flex:1;padding:.5rem;background:#fee2e2;color:#dc2626;border:none;border-radius:.5rem;font-weight:600;font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.4rem;transition:all .3s ease;font-family:Poppins,sans-serif}.btn-delete:hover:not(:disabled){background:#fecaca}.btn-delete:disabled{opacity:.6;cursor:not-allowed}.spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-back{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.4rem;background:#ffffffe6;color:#6b7280;border:2px solid rgba(255,255,255,.6);border-radius:999px;font-weight:600;cursor:pointer;transition:all .3s ease;font-family:Poppins,sans-serif;font-size:1rem}.btn-back:hover{background:#fff;border-color:#fff;box-shadow:0 4px 15px #0000001a}.loading-spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:1rem}.spinner{width:50px;height:50px;border:4px solid rgba(236,72,153,.2);border-top-color:#ec4899;border-radius:50%;animation:spin 1s linear infinite}@media(max-width:768px){.memories-header h1{font-size:2rem}.memories-grid{grid-template-columns:1fr}.memory-card{max-width:100%}.btn-back{width:100%;justify-content:center}.memories-topbar{flex-direction:column-reverse;align-items:stretch}.create-btn{width:100%}.memory-modal-content{padding:1.5rem}}
