.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem}.login-box{position:relative;width:100%;max-width:450px}.login-content{background:#fffffff2;border-radius:30px;padding:3rem 2rem;box-shadow:0 20px 60px #0000004d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:relative;z-index:2}.login-icon{font-size:4rem;text-align:center;margin-bottom:1rem;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.login-title{text-align:center;font-size:2.5rem;font-family:Dancing Script,cursive;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.login-subtitle{text-align:center;color:#666;font-size:1rem;margin-bottom:2rem}.login-form{margin-bottom:1.5rem}.input-group{display:flex;flex-direction:column;gap:1rem}.password-input{width:100%;padding:1rem 1.5rem;border:2px solid #e0e0e0;border-radius:15px;font-size:1rem;transition:all .3s ease;background:#fff}.password-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.password-input.error{border-color:#ff6b6b;animation:shake .5s}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.login-button{padding:1rem 2rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:15px;font-size:1.1rem;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #667eea4d}.login-button:hover{box-shadow:0 6px 20px #667eea66;transform:translateY(-2px)}.error-message{color:#ff6b6b;text-align:center;margin-top:1rem;font-size:.9rem}.login-decoration{position:absolute;inset:0;pointer-events:none;z-index:1}.decoration-star{font-size:1.5rem;color:#ffd70099}@media (max-width: 480px){.login-content{padding:2rem 1.5rem}.login-title{font-size:2rem}.login-icon{font-size:3rem}.password-input{padding:.875rem 1.25rem}.login-button{padding:.875rem 1.5rem;font-size:1rem}}.hero{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:visible}.hero-content{text-align:center;z-index:2;position:relative;padding:2rem}.birthday-number{display:inline-flex;align-items:baseline;margin-bottom:2rem;background:linear-gradient(135deg,gold,#ffed4e);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 4px 8px rgba(255,215,0,.3))}.birthday-number .number{font-size:8rem;font-weight:700;font-family:Dancing Script,cursive;line-height:1}.birthday-number .suffix{font-size:3rem;font-weight:700;margin-left:.5rem;font-family:Dancing Script,cursive}.birthday-title{font-size:3.5rem;color:#fff;margin-bottom:1.5rem;font-family:Dancing Script,cursive;text-shadow:2px 2px 4px rgba(0,0,0,.2);display:flex;justify-content:center;flex-wrap:wrap}.birthday-title span{display:inline-block}.birthday-title .space{width:.5em}.birthday-message{font-size:1.5rem;color:#ffffffe6;margin-bottom:3rem;font-weight:300;letter-spacing:.05em}.celebration-icons{display:flex;gap:2rem;justify-content:center;font-size:4rem;margin-bottom:4rem}.scroll-indicator{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);color:#fff;text-align:center}.scroll-indicator span{font-size:.875rem;opacity:.7;display:block;margin-bottom:.5rem}.arrow-down{font-size:1.5rem;opacity:.7}.hero-background{position:absolute;inset:0;overflow:visible;z-index:1;pointer-events:none}.floating-element{position:absolute;font-size:2rem;opacity:.3;pointer-events:none}@media (max-width: 768px){.birthday-number .number{font-size:5rem}.birthday-number .suffix{font-size:2rem}.birthday-title{font-size:2.5rem}.birthday-message{font-size:1.2rem}.celebration-icons{font-size:3rem;gap:1.5rem}}@media (max-width: 480px){.birthday-number .number{font-size:4rem}.birthday-number .suffix{font-size:1.5rem}.birthday-title{font-size:2rem}.birthday-message{font-size:1rem}.celebration-icons{font-size:2.5rem;gap:1rem}}.photo-gallery{min-height:100vh;padding:40px 20px}.gallery-container{max-width:1400px;margin:0 auto}.gallery-title{text-align:center;font-size:3rem;color:#fff;margin-bottom:1rem;font-family:Dancing Script,cursive;text-shadow:2px 2px 4px rgba(0,0,0,.2)}.gallery-subtitle{text-align:center;font-size:1.2rem;color:#ffffffe6;margin-bottom:3rem;font-weight:300}.filter-buttons{display:flex;justify-content:center;gap:1rem;margin-bottom:3rem;flex-wrap:wrap}.filter-buttons button{padding:.75rem 2rem;background:#ffffff1a;border:2px solid rgba(255,255,255,.3);color:#fff;border-radius:30px;font-size:1rem;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.filter-buttons button:hover{background:#fff3;transform:translateY(-2px);box-shadow:0 5px 15px #0000004d}.filter-buttons button.active{background:#ffffff4d;border-color:#fff;box-shadow:0 5px 20px #0006}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:2rem;margin-bottom:3rem}.photo-item{cursor:pointer;border-radius:15px;overflow:hidden;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 32px #0000001a;transition:all .3s ease}.photo-wrapper{position:relative;width:100%;height:250px;overflow:hidden}.photo-image{width:100%;height:100%;object-fit:cover;border-radius:15px}.photo-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#fff3,#ffffff1a);color:#fff;font-size:1.2rem;font-weight:500;text-align:center;gap:.5rem}.photo-placeholder small{font-size:.875rem;opacity:.7}.photo-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.8),transparent);padding:1.5rem 1rem 1rem;transform:translateY(100%);transition:transform .3s ease}.photo-item:hover .photo-overlay{transform:translateY(0)}.photo-date{color:#fff;font-size:.875rem;margin-bottom:.25rem;opacity:.9}.photo-filename{color:#fff;font-size:.75rem;opacity:.7;font-family:monospace}.no-photos-message{grid-column:1 / -1;text-align:center;color:#ffffffb3;font-size:1.2rem;padding:3rem;background:#ffffff0d;border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.photo-modal{position:fixed;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:2000;padding:2rem}.modal-content{position:relative;max-width:90vw;max-height:90vh;background:#ffffff1a;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px;overflow:hidden}.modal-photo-placeholder{width:600px;height:400px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;padding:2rem}.modal-photo-placeholder h3{font-size:2rem;margin-bottom:1rem}.modal-close{position:absolute;top:1rem;right:1rem;width:40px;height:40px;border-radius:50%;background:#fff3;border:none;color:#fff;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.modal-close:hover{background:#ffffff4d;transform:rotate(90deg)}@media (max-width: 768px){.gallery-title{font-size:2rem}.gallery-subtitle{font-size:1rem}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}.filter-buttons button{padding:.5rem 1.5rem;font-size:.875rem}.modal-photo-placeholder{width:100%;height:300px}}@media (max-width: 480px){.photo-grid{grid-template-columns:1fr}.photo-wrapper{height:200px}}.confetti-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:999;overflow:hidden}.confetti-particle{position:absolute;border-radius:2px;transform-origin:center}.app{min-height:100vh;position:relative;overflow-y:auto}.main-content{width:100%}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Noto Sans JP,sans-serif;background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;overflow-x:hidden;overflow-y:auto}#root{min-height:100vh}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:#ffffff1a}::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#ffffff80}
