:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#f5f6fa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh;width:100%}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}.navbar{background:#fff;box-shadow:0 2px 10px #0000001a;position:sticky;top:0;z-index:100}.navbar-container{max-width:1400px;margin:0 auto;padding:0 20px;height:70px;display:flex;align-items:center;justify-content:space-between}.navbar-brand{display:flex;align-items:center;gap:10px}.navbar-logo{font-size:1.8rem}.navbar-title{font-size:1.5rem;font-weight:700;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.navbar-links{display:flex;gap:10px}.nav-link{padding:10px 20px;border-radius:25px;text-decoration:none;color:#555;font-weight:500;transition:background .3s,color .3s}.nav-link:hover{background:#f3f4f6}.nav-link.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.navbar-user{display:flex;align-items:center;gap:15px}.user-name{color:#555;font-weight:500}.logout-btn{padding:8px 16px;border:2px solid #667eea;border-radius:20px;background:transparent;color:#667eea;font-weight:500;cursor:pointer;transition:background .3s,color .3s}.logout-btn:hover{background:#667eea;color:#fff}@media(max-width:640px){.navbar-container{flex-wrap:wrap;height:auto;padding:15px;gap:15px}.navbar-brand{order:1}.navbar-user{order:2}.navbar-links{order:3;width:100%;justify-content:center}.user-name{display:none}}.spinner-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:15px}.spinner{width:50px;height:50px;border:4px solid #e1e1e1;border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.spinner-container p{color:#666;font-size:1rem}.login-page{min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px;box-sizing:border-box}.login-container{background:#fff;border-radius:20px;padding:40px;width:100%;max-width:420px;box-shadow:0 20px 60px #0000004d}.login-header{text-align:center;margin-bottom:30px}.logo{font-size:2.5rem;color:#667eea;margin:0}.tagline{color:#666;margin-top:8px}.login-form h2{text-align:center;color:#333;margin-bottom:25px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:#555;font-weight:500}.form-group input{width:100%;padding:12px 16px;border:2px solid #e1e1e1;border-radius:10px;font-size:1rem;transition:border-color .3s,box-shadow .3s;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.error-message{background:#fee2e2;color:#dc2626;padding:12px 16px;border-radius:10px;margin-bottom:20px;text-align:center}.submit-btn{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 20px #667eea66}.submit-btn:disabled{opacity:.7;cursor:not-allowed}.toggle-mode{text-align:center;margin-top:25px;padding-top:20px;border-top:1px solid #e1e1e1}.toggle-mode p{color:#666;margin:0}.toggle-btn{background:none;border:none;color:#667eea;font-weight:600;cursor:pointer;margin-left:5px}.toggle-btn:hover{text-decoration:underline}.gallery-page{padding:30px 20px;max-width:1400px;margin:0 auto}.gallery-header{margin-bottom:30px}.gallery-header h1{margin:0;color:#333;font-size:2rem}.photo-count{color:#666;margin-top:5px}.loading,.error{text-align:center;padding:60px 20px;color:#666}.error{color:#dc2626}.empty-gallery{text-align:center;padding:80px 20px;background:#fff;border-radius:20px;box-shadow:0 4px 20px #0000001a}.empty-icon{font-size:4rem;display:block;margin-bottom:20px}.empty-gallery h2{margin:0;color:#333}.empty-gallery p{color:#666;margin-top:10px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:25px}.photo-card{background:#fff;border-radius:15px;overflow:hidden;box-shadow:0 4px 15px #0000001a;cursor:pointer;transition:transform .3s,box-shadow .3s}.photo-card:hover{transform:translateY(-5px);box-shadow:0 8px 30px #00000026}.photo-image-container{position:relative;aspect-ratio:4/3;overflow:hidden}.photo-image-container img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.photo-card:hover .photo-image-container img{transform:scale(1.05)}.photo-overlay{position:absolute;inset:0;background:#0000004d;display:flex;align-items:flex-start;justify-content:flex-end;padding:10px;opacity:0;transition:opacity .3s}.photo-card:hover .photo-overlay{opacity:1}.delete-btn{width:36px;height:36px;border:none;border-radius:50%;background:#ffffffe6;cursor:pointer;font-size:1rem;transition:background .2s,transform .2s}.delete-btn:hover:not(:disabled){background:#fee2e2;transform:scale(1.1)}.delete-btn:disabled{opacity:.5}.photo-info{padding:15px}.photo-info h3{margin:0;color:#333;font-size:1.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-info p{margin:8px 0 0;color:#666;font-size:.9rem;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lightbox{position:fixed;inset:0;background:#000000f2;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.lightbox-close{position:absolute;top:20px;right:20px;width:44px;height:44px;border:none;border-radius:50%;background:#ffffff1a;color:#fff;font-size:1.5rem;cursor:pointer;transition:background .2s;z-index:10}.lightbox-close:hover{background:#fff3}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:50px;border:none;border-radius:50%;background:#ffffff1a;color:#fff;font-size:2rem;cursor:pointer;transition:background .2s,transform .2s;display:flex;align-items:center;justify-content:center;z-index:10}.lightbox-nav:hover{background:#ffffff40;transform:translateY(-50%) scale(1.1)}.lightbox-prev{left:20px}.lightbox-next{right:20px}.lightbox-content{max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center}.lightbox-content img{max-width:100%;max-height:70vh;object-fit:contain;border-radius:10px}.lightbox-info{text-align:center;color:#fff;margin-top:20px}.lightbox-info h2{margin:0;font-size:1.5rem}.lightbox-info p{margin:10px 0 0;color:#ccc}.photo-counter{display:block;margin-top:15px;color:#888;font-size:.9rem}@media(max-width:768px){.lightbox-nav{width:40px;height:40px;font-size:1.5rem}.lightbox-prev{left:10px}.lightbox-next{right:10px}}@media(max-width:640px){.photo-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:15px}.photo-info{padding:10px}.photo-info h3{font-size:1rem}.lightbox-nav{width:36px;height:36px;font-size:1.2rem}}.upload-page{padding:40px 20px;max-width:600px;margin:0 auto}.upload-container{background:#fff;border-radius:20px;padding:40px;box-shadow:0 4px 20px #0000001a}.upload-container h1{margin:0;color:#333;font-size:2rem}.subtitle{color:#666;margin-top:8px;margin-bottom:30px}.message{padding:12px 16px;border-radius:10px;margin-bottom:20px;text-align:center}.message.success{background:#d1fae5;color:#065f46}.message.error{background:#fee2e2;color:#dc2626}.file-upload-area{margin-bottom:25px}.file-input{display:none}.file-label{display:block;cursor:pointer}.file-placeholder{border:2px dashed #d1d5db;border-radius:15px;padding:50px 20px;text-align:center;transition:border-color .3s,background .3s;display:flex;flex-direction:column;align-items:center;gap:10px}.file-placeholder:hover{border-color:#667eea;background:#f8f9ff}.upload-icon{font-size:3rem}.file-hint{font-size:.85rem;color:#888}.preview-container{position:relative;border-radius:15px;overflow:hidden}.preview-image{width:100%;max-height:300px;object-fit:cover;display:block}.clear-btn{position:absolute;top:10px;right:10px;width:32px;height:32px;border:none;border-radius:50%;background:#0009;color:#fff;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:background .2s}.clear-btn:hover{background:#000c}.upload-form .form-group{margin-bottom:20px}.upload-form label{display:block;margin-bottom:8px;color:#555;font-weight:500}.upload-form input,.upload-form textarea{width:100%;padding:12px 16px;border:2px solid #e1e1e1;border-radius:10px;font-size:1rem;transition:border-color .3s;box-sizing:border-box;font-family:inherit}.upload-form input:focus,.upload-form textarea:focus{outline:none;border-color:#667eea}.upload-form textarea{resize:vertical;min-height:80px}.upload-btn{width:100%;padding:14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.upload-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 20px #667eea66}.upload-btn:disabled{opacity:.7;cursor:not-allowed}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;background:#f5f6fa;min-height:100vh}.main-content{min-height:calc(100vh - 70px)}
