.album-viewer-page{min-height:100vh;padding:var(--spacing-xl);max-width:1400px;margin:0 auto}.album-viewer-header,.tabs-container{margin-bottom:var(--spacing-xl)}.tabs-container{display:flex;gap:var(--spacing-sm);border-bottom:2px solid var(--color-border-light);padding-bottom:var(--spacing-sm)}.tab-button{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--border-radius-md) var(--border-radius-md) 0 0;font-size:16px;font-weight:600;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth);background:transparent;color:var(--color-text-secondary);border:none;border-bottom:2px solid transparent;margin-bottom:-2px}.tab-button:hover{color:var(--color-text-primary);background:var(--color-background-secondary)}.tab-button[style*="var(--color-primary)"]{border-bottom-color:var(--color-primary)}.back-link{display:inline-block;color:var(--color-text-secondary);text-decoration:none;font-size:14px;margin-bottom:var(--spacing-md);transition:color var(--animation-normal) var(--easing-smooth)}.back-link:hover{color:var(--color-primary)}.album-header-content{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg)}.album-header-content h1{margin:0}.album-header-content h1,.album-name-input{font-size:32px;font-weight:700;color:var(--color-text-primary);flex:1 1}.album-name-input{background:transparent;border:2px solid var(--color-primary);border-radius:var(--border-radius-md);padding:var(--spacing-sm) var(--spacing-md);font-family:inherit}.album-name-input:focus{outline:none;box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.1)}.album-header-actions{display:flex;gap:var(--spacing-md)}.share-button{padding:var(--spacing-md) var(--spacing-lg);background:var(--color-primary);color:white;border:none;border-radius:var(--border-radius-md);font-size:16px;font-weight:600;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth)}.share-button:hover{background:var(--color-primary-dark);transform:translateY(-2px);box-shadow:var(--shadow-md)}.album-upload-section{margin-bottom:var(--spacing-2xl)}.photo-uploader{border:2px dashed var(--color-border);border-radius:var(--border-radius-lg);padding:var(--spacing-2xl);text-align:center;background:var(--color-background-secondary);transition:all var(--animation-normal) var(--easing-smooth);position:relative}.photo-uploader:hover{border-color:var(--color-primary);background:var(--color-background-tertiary)}.photo-uploader.dragging{border-color:var(--color-primary);background:var(--color-primary-subtle);border-width:3px;transform:scale(1.02);box-shadow:var(--shadow-lg)}.upload-label{cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.upload-icon{font-size:48px}.upload-text{color:var(--color-text-primary);font-size:16px;font-weight:600;margin:0}.upload-subtext{color:var(--color-text-secondary);font-size:14px;margin:0}.upload-actions{margin-top:var(--spacing-lg)}.file-list{margin-bottom:var(--spacing-md);text-align:left}.file-item{font-size:14px;color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.upload-button{width:100%;padding:var(--spacing-md) var(--spacing-lg);background:var(--color-primary);color:white;border:none;border-radius:var(--border-radius-md);font-size:16px;font-weight:600;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth)}.upload-button:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-2px);box-shadow:var(--shadow-md)}.upload-button:disabled{opacity:.6;cursor:not-allowed}.upload-error{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);border-radius:var(--border-radius-md);color:#dc2626}.upload-error,.upload-success{margin-top:var(--spacing-md);padding:var(--spacing-md);font-size:14px}.upload-success{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.3);border-radius:var(--border-radius-md);color:#16a34a}.album-viewer-empty,.album-viewer-error,.album-viewer-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center}.loading-spinner{width:48px;height:48px;border:4px solid var(--color-border-light);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.album-viewer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:var(--spacing-lg);gap:var(--spacing-lg)}.album-viewer-photo{position:relative;border-radius:var(--border-radius-lg);overflow:hidden;background:var(--color-background-secondary);box-shadow:var(--shadow-sm);transition:all var(--animation-normal) var(--easing-smooth)}.album-viewer-photo:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.album-viewer-photo img{width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover}.delete-photo-button{position:absolute;top:8px;right:8px;background:rgba(239,68,68,.9);color:white;border:none;border-radius:50%;width:32px;height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;transition:all var(--animation-normal) var(--easing-smooth);opacity:0}.album-viewer-photo:hover .delete-photo-button{opacity:1}.delete-photo-button:hover:not(:disabled){background:rgba(220,38,38,1);transform:scale(1.1)}.delete-photo-button:disabled{opacity:.6;cursor:not-allowed}.photo-caption{padding:var(--spacing-md);font-size:14px;color:var(--color-text-secondary);margin:0}.error-message{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);border-radius:var(--border-radius-md);color:#dc2626}.error-message,.success-message{padding:var(--spacing-md);font-size:14px}.success-message{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.3);color:#16a34a}.back-button,.success-message{border-radius:var(--border-radius-md)}.back-button{display:inline-block;margin-top:var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);background:var(--color-background-secondary);color:var(--color-text-primary);text-decoration:none;border:1px solid var(--color-border);transition:all var(--animation-normal) var(--easing-smooth)}.back-button:hover{background:var(--color-background-tertiary);border-color:var(--color-primary)}.album-template-section{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) 0;border-bottom:1px solid var(--color-border-light)}.template-select{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border-light);border-radius:var(--border-radius-md);background:var(--color-background);color:var(--color-text-primary);font-size:14px;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth);min-width:250px}.template-select:focus,.template-select:hover{border-color:var(--color-primary)}.template-select:focus{outline:none;box-shadow:0 0 0 3px rgba(255,107,107,.1)}.template-select:disabled{opacity:.6;cursor:not-allowed}.preview-button{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius-md);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth)}.preview-button:hover{opacity:.9;transform:translateY(-1px)}.preview-fullscreen-wrapper{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;background:transparent;display:flex;flex-direction:column}.preview-top-bar{position:relative;z-index:1001;display:flex!important;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:#ffffff!important;border-bottom:2px solid var(--color-border);box-shadow:0 2px 8px rgba(0,0,0,.15);min-height:60px;flex-shrink:0;width:100%}.preview-back-button{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:white;border:none;border-radius:var(--border-radius-md);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth);white-space:nowrap}.preview-back-button:hover{background:var(--color-primary-dark);transform:translateY(-1px);box-shadow:var(--shadow-md)}.preview-back-button:active{transform:translateY(0)}.preview-title{font-size:1.1rem;font-weight:600;color:var(--color-text-primary);margin:0;flex:1 1;text-align:center}.refresh-preview-button{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:white;border:none;border-radius:var(--border-radius-md);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth)}.refresh-preview-button:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-1px)}.refresh-preview-button:disabled{opacity:.6;cursor:not-allowed}.preview-container{flex:1 1;display:flex;flex-direction:column;overflow:hidden;background:var(--color-background-secondary);min-height:calc(100vh - 200px)}.preview-content{flex:1 1;width:100%;height:100%;min-height:600px;margin:0;padding:0;border:none;display:block;background:white}.preview-empty,.preview-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1 1;text-align:center;color:var(--color-text-secondary);background:var(--color-background-primary)}.preview-empty p{margin:0}.album-password-section{margin-top:var(--spacing-md);padding:var(--spacing-md);background:var(--color-background-secondary);border-radius:var(--border-radius-md);border:1px solid var(--color-border)}.album-password-input{flex:1 1;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius-md);font-size:14px;background:var(--color-background-primary);color:var(--color-text-primary)}.album-password-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.1)}.cancel-password-button,.edit-password-button,.save-password-button{padding:var(--spacing-sm) var(--spacing-md);border:none;border-radius:var(--border-radius-md);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--animation-normal) var(--easing-smooth)}.save-password-button{background:var(--color-primary);color:white}.save-password-button:hover{background:var(--color-primary-dark)}.cancel-password-button{background:var(--color-background-tertiary);color:var(--color-text-primary);border:1px solid var(--color-border)}.cancel-password-button:hover{background:var(--color-background-secondary)}.edit-password-button{background:var(--color-background-tertiary);color:var(--color-text-primary);border:1px solid var(--color-border)}.edit-password-button:hover{background:var(--color-background-secondary);border-color:var(--color-primary)}.lightbox-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.95);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2000;display:flex;align-items:center;justify-content:center;animation:fadeIn var(--animation-normal) var(--easing-smooth);cursor:pointer}.lightbox-content{position:relative;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;cursor:default}.lightbox-image{max-width:100%;max-height:85vh;object-fit:contain;box-shadow:var(--shadow-2xl)}.lightbox-caption,.lightbox-image{border-radius:var(--border-radius-md)}.lightbox-caption{margin-top:var(--spacing-md);color:white;font-size:16px;text-align:center;max-width:80vw;padding:var(--spacing-md);background:rgba(0,0,0,.5)}.lightbox-close{position:absolute;top:-40px;right:0;background:rgba(255,255,255,.2);border:none;color:white;font-size:32px;width:40px;height:40px;border-radius:var(--border-radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--animation-normal) var(--easing-smooth);line-height:1}.lightbox-close:hover{background:rgba(255,255,255,.3);transform:scale(1.1)}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.2);border:none;color:white;font-size:48px;width:60px;height:60px;border-radius:var(--border-radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--animation-normal) var(--easing-smooth);line-height:1}.lightbox-nav:hover{background:rgba(255,255,255,.3);transform:translateY(-50%) scale(1.1)}.lightbox-prev{left:-80px}.lightbox-next{right:-80px}@media (max-width:768px){.lightbox-next,.lightbox-prev{left:10px;right:auto;width:40px;height:40px;font-size:32px}.lightbox-next{right:10px;left:auto}.lightbox-close{top:10px;right:10px}}