.login{min-height:400px;display:flex;align-items:center;justify-content:center}.login-content{max-width:400px;text-align:center}.login-content h2{font-size:2rem;margin-bottom:.5rem}.login-content p{opacity:.9;margin-bottom:2rem}.login form{display:flex;flex-direction:column;gap:1rem}.login input{width:100%;padding:1rem;border:2px solid rgba(255,255,255,.2);border-radius:12px;background:#ffffff1a;color:#fff;font-size:1.2rem;font-family:inherit;text-align:center;letter-spacing:.2rem;transition:all .3s ease}.login input::placeholder{color:#fff9;letter-spacing:normal}.login input:focus{outline:none;border-color:#fff6;background:#ffffff26}.login .error{color:#ff6b6b;font-size:.9rem;margin:-.5rem 0 0;animation:shake .3s}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.login button{padding:1rem 2rem;border:none;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #667eea66}.login button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea99}.login button:disabled{opacity:.5;cursor:not-allowed}.gratitude-form{margin-bottom:2rem}.week-info{text-align:center;margin-bottom:1.5rem}.week-info h2{font-size:1.8rem;margin-bottom:.25rem}.week-range{opacity:.8;font-size:.9rem}.gratitude-form form{display:flex;flex-direction:column;gap:1rem}.gratitude-form textarea{width:100%;padding:1rem;border:2px solid rgba(255,255,255,.2);border-radius:12px;background:#ffffff1a;color:#fff;font-size:1rem;font-family:inherit;resize:vertical;min-height:100px;transition:all .3s ease}.gratitude-form textarea::placeholder{color:#fff9}.gratitude-form textarea:focus{outline:none;border-color:#fff6;background:#ffffff26}.gratitude-form textarea:disabled{opacity:.6;cursor:not-allowed}.form-footer{display:flex;justify-content:space-between;align-items:center}.char-count{font-size:.85rem;opacity:.7}.gratitude-form button{padding:.75rem 2rem;border:none;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #667eea66}.gratitude-form button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea99}.gratitude-form button:disabled{opacity:.5;cursor:not-allowed;transform:none}.gratitude-list{margin-top:3rem}.gratitude-list h3{font-size:1.5rem;margin-bottom:.5rem;text-align:center}.privacy-note{text-align:center;font-size:.9rem;opacity:.8;margin-bottom:1.5rem}.gratitude-list.empty{text-align:center;padding:3rem 1rem;opacity:.7}.gratitude-list.empty .privacy-note{margin-top:1rem;font-size:.85rem}.missing-weeks{background:#ffc86426;border:2px solid rgba(255,200,100,.4);border-radius:12px;padding:1.5rem;margin-bottom:2rem}.missing-weeks h4{margin-bottom:.75rem;font-size:1.2rem}.missing-weeks>p{margin-bottom:1rem;font-size:.95rem}.missing-week-list{display:grid;gap:.5rem;margin-bottom:1rem;max-height:200px;overflow-y:auto}.missing-week-item{background:#ffffff1a;padding:.75rem;border-radius:6px;font-size:.9rem;border-left:3px solid rgba(255,200,100,.6);border:1px solid rgba(255,200,100,.3);color:inherit;cursor:pointer;transition:all .2s ease;text-align:left;width:100%}.missing-week-item:hover{background:#ffc86433;border-color:#ffc86499;transform:translate(4px)}.reminder-note{font-size:.85rem;opacity:.9;margin-top:1rem}.gratitudes{display:grid;gap:1rem}.gratitude-card{background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:1.5rem;border:1px solid rgba(255,255,255,.2);transition:all .3s ease}.gratitude-card:hover{background:#ffffff26;transform:translateY(-2px);box-shadow:0 4px 20px #0000001a}.gratitude-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid rgba(255,255,255,.2)}.week-label{font-weight:600;font-size:.95rem}.week-date{font-size:.85rem;opacity:.8}.gratitude-content{margin-bottom:1rem}.gratitude-content p{line-height:1.6;font-size:1rem}.gratitude-footer{display:flex;justify-content:flex-end}.user-name{font-size:.85rem;opacity:.7;font-style:italic}.admin-view{position:fixed;inset:0;background:linear-gradient(135deg,#667eea,#764ba2);z-index:1000;overflow-y:auto;padding:2rem}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:1.5rem;border-radius:12px}.admin-header h2{color:#fff;margin:0;font-size:1.8rem}.close-btn{background:#fff3;border:2px solid rgba(255,255,255,.3);color:#fff;width:40px;height:40px;border-radius:50%;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.close-btn:hover{background:#ffffff4d;transform:rotate(90deg)}.admin-loading{text-align:center;color:#fff;font-size:1.2rem;padding:3rem}.admin-content{max-width:1200px;margin:0 auto}.passcode-prompt{background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:3rem;border-radius:12px;text-align:center;max-width:500px;margin:2rem auto}.passcode-prompt h3{color:#fff;font-size:1.5rem;margin-bottom:1rem}.passcode-prompt p{color:#fffc;margin-bottom:2rem;line-height:1.6}.passcode-input{width:100%;padding:1rem;border:2px solid rgba(255,255,255,.3);border-radius:8px;background:#ffffff1a;color:#fff;font-size:1.1rem;margin-bottom:1.5rem;text-align:center}.passcode-input::placeholder{color:#ffffff80}.passcode-input:focus{outline:none;border-color:#667eeacc;background:#ffffff26}.submit-passcode-btn{padding:1rem 2rem;background:#667eea99;border:2px solid rgba(102,126,234,.8);border-radius:8px;color:#fff;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.submit-passcode-btn:hover:not(:disabled){background:#667eeacc;transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.submit-passcode-btn:disabled{opacity:.5;cursor:not-allowed}.year-selector{display:flex;gap:1rem;margin-bottom:2rem;justify-content:center}.year-btn{padding:.75rem 2rem;background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid rgba(255,255,255,.3);border-radius:8px;color:#fff;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease}.year-btn:hover{background:#ffffff40;border-color:#ffffff80;transform:translateY(-2px)}.year-btn.active{background:#667eea99;border-color:#667eeacc;box-shadow:0 4px 12px #667eea66}.year-stats{display:flex;gap:2rem;margin-bottom:2rem;background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:1.5rem;border-radius:12px}.stat{display:flex;flex-direction:column;gap:.5rem}.stat-label{color:#fffc;font-size:.9rem;text-transform:uppercase;letter-spacing:.5px}.stat-value{color:#fff;font-size:1.8rem;font-weight:700}.weeks-container{display:flex;flex-direction:column;gap:1.5rem}.week-section{background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:1.5rem;border:1px solid rgba(255,255,255,.2)}.week-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:2px solid rgba(255,255,255,.2)}.week-header h3{color:#fff;margin:0;font-size:1.3rem}.week-date{color:#ffffffb3;font-size:.9rem}.no-gratitudes{color:#ffffff80;font-style:italic;padding:1rem;text-align:center}.week-gratitudes{display:flex;flex-direction:column;gap:1rem}.gratitude-item{padding:1rem 1.5rem;border-radius:8px;position:relative}.gratitude-item.mine{background:#667eea4d;border-left:4px solid #667eea;text-align:left}.gratitude-item.partner{background:#764ba24d;border-right:4px solid #764ba2;text-align:right}.gratitude-author{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.5rem;color:#ffffffe6}.gratitude-text{color:#fff;font-size:1rem;line-height:1.6}@media(max-width:768px){.admin-view,.admin-header{padding:1rem}.admin-header h2{font-size:1.3rem}.year-stats{flex-direction:column;gap:1rem}.week-header{flex-direction:column;align-items:flex-start;gap:.5rem}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2rem}header{text-align:center;margin-bottom:3rem}header h1{font-size:3rem;margin-bottom:.5rem}header p{font-size:1.2rem;opacity:.9}.user-info{margin-top:1rem;display:flex;align-items:center;justify-content:center;gap:1rem}.admin-btn,.logout-btn{padding:.5rem 1rem;border:1px solid rgba(255,255,255,.3);border-radius:6px;background:#ffffff1a;color:#fff;font-size:.9rem;cursor:pointer;transition:all .3s ease}.admin-btn:hover,.logout-btn:hover{background:#fff3;border-color:#ffffff80}.loading{text-align:center;padding:3rem;font-size:1.2rem}main{max-width:800px;margin:0 auto;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:20px;padding:2rem;box-shadow:0 8px 32px #1f26875e}
