@import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,300;0,14..32,400;0,14..32,500;0,14..32,600&display=swap";:root{--color-bg: #FFFFFF;--color-surface: #F8F8F7;--color-border: #E8E8E6;--color-text-primary: #111111;--color-text-secondary:#6B6B6B;--color-text-tertiary: #ADADAD;--color-accent: #111111;--color-accent-hover: #333333;--color-error: #C0392B;--color-overlay: rgba(0,0,0,.45);--font-body: "Inter", sans-serif;--font-condensed: "Inter", sans-serif;--text-xs: 11px;--text-sm: 13px;--text-base: 15px;--text-lg: 18px;--text-xl: 24px;--text-2xl: 32px;--text-3xl: 48px;--text-hero: clamp(3rem, 8vw, 7rem);--weight-light: 300;--weight-regular: 400;--weight-medium: 500;--weight-semibold:600;--leading-tight: 1.1;--leading-normal: 1.5;--leading-loose: 1.75;--tracking-wide: .08em;--tracking-tight: -.02em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--space-10: 128px;--max-width: 1400px;--page-padding: clamp(16px, 4vw, 64px);--radius-sm: 2px;--radius: 4px;--radius-lg: 8px;--transition: .15s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-regular);line-height:var(--leading-normal);color:var(--color-text-primary);background:var(--color-bg);min-height:100vh}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}.nav{position:sticky;top:0;z-index:100;background:var(--color-bg);padding:0 var(--page-padding);height:56px;display:flex;align-items:center;justify-content:space-between}.nav-brand{font-size:var(--text-lg);font-weight:var(--weight-semibold);font-stretch:condensed;letter-spacing:var(--tracking-tight);color:var(--color-text-primary)}.nav-actions{display:flex;align-items:center;gap:var(--space-4)}.nav-link{font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-secondary);transition:color var(--transition)}.nav-link:hover{color:var(--color-text-primary)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-condensed);font-stretch:condensed;font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;padding:10px 20px;border-radius:var(--radius-sm);transition:background var(--transition),color var(--transition),border-color var(--transition);white-space:nowrap}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover{background:var(--color-accent-hover)}.btn-ghost{background:transparent;border:1px solid var(--color-border);color:var(--color-text-primary)}.btn-ghost:hover{border-color:var(--color-text-primary)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover{background:#a93226}.btn-sm{font-size:var(--text-xs);padding:6px 12px}.btn:disabled{opacity:.4;cursor:not-allowed}.page{max-width:var(--max-width);margin:0 auto;padding:0 var(--page-padding)}.album-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);padding:var(--space-8) 0 var(--space-8)}@media(min-width:640px){.album-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.album-grid{grid-template-columns:repeat(3,1fr)}}.album-card{cursor:pointer;display:block}.album-card-image-wrap{position:relative;overflow:hidden;background:var(--color-surface);aspect-ratio:4/3}.album-card-image-wrap img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}.album-card:hover .album-card-image-wrap img{transform:scale(1.03)}.album-card-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,rgba(0,0,0,.55) 0%,transparent 55%);pointer-events:none}.album-card-title{position:absolute;bottom:var(--space-4);left:var(--space-4);right:var(--space-4);color:#fff;font-size:var(--text-xl);font-weight:var(--weight-semibold);font-stretch:condensed;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.album-card-badge{position:absolute;top:var(--space-3);right:var(--space-3);background:#0000008c;color:#fff;font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;padding:4px 8px;border-radius:var(--radius-sm)}.album-card-meta{padding:var(--space-3) 0 0}.album-card-desc{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-normal);margin-top:var(--space-1)}.hero{padding:var(--space-9) 0 var(--space-7);margin-bottom:var(--space-7)}.hero-title{font-size:var(--text-hero);font-weight:var(--weight-light);font-stretch:condensed;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);color:var(--color-text-primary)}.hero-sub{font-size:var(--text-lg);color:var(--color-text-secondary);margin-top:var(--space-3);font-weight:var(--weight-light)}.album-hero{position:relative;width:100%;height:clamp(300px,55vh,600px);overflow:hidden;background:var(--color-surface)}.album-hero img{width:100%;height:100%;object-fit:cover}.album-hero-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,rgba(0,0,0,.6) 0%,rgba(0,0,0,.1) 50%,transparent 100%);display:flex;align-items:flex-end;padding:var(--space-7) var(--page-padding)}.album-hero-text{color:#fff;flex:1}.album-hero-title{font-size:clamp(2rem,5vw,4rem);font-weight:var(--weight-semibold);font-stretch:condensed;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.album-hero-desc{margin-top:var(--space-2);font-size:var(--text-base);opacity:.85}.album-back{color:#fffc;font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;align-self:flex-start;padding:var(--space-7) var(--page-padding);transition:color var(--transition)}.album-back:hover{color:#fff}.toolbar{position:sticky;top:56px;z-index:90;background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:var(--space-3) var(--page-padding);display:flex;align-items:center;gap:var(--space-3);transition:transform .2s ease,opacity .2s ease}.toolbar[hidden]{display:none}.photo-grid{columns:1;column-gap:var(--space-3);padding:var(--space-6) var(--page-padding)}@media(min-width:480px){.photo-grid{columns:2}}@media(min-width:768px){.photo-grid{columns:3}}@media(min-width:1100px){.photo-grid{columns:4}}.photo-card{break-inside:avoid;position:relative;margin-bottom:var(--space-3);cursor:pointer;overflow:hidden;background:var(--color-surface);display:block}.photo-card img{width:100%;display:block;transition:transform .3s ease}.photo-card:hover img{transform:scale(1.02)}.photo-card-dl{position:absolute;bottom:var(--space-2);right:var(--space-2);width:30px;height:30px;border-radius:50%;background:#ffffffe6;color:#111;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition);z-index:2;font-size:15px;line-height:1;cursor:pointer;border:none}.photo-card:hover .photo-card-dl{opacity:1}.photo-card-dl:hover{background:#fff}.photo-card-checkbox{position:absolute;top:var(--space-3);left:var(--space-3);width:22px;height:22px;border:2px solid rgba(255,255,255,.8);border-radius:var(--radius-sm);background:#0000004d;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition);cursor:pointer;z-index:2}.photo-card:hover .photo-card-checkbox,.photo-card.selected .photo-card-checkbox{opacity:1}.photo-card.selected .photo-card-checkbox{background:var(--color-accent);border-color:var(--color-accent)}.photo-card.selected img{outline:3px solid var(--color-accent);outline-offset:-3px}.check-icon{width:12px;height:12px;color:#fff;opacity:0}.photo-card.selected .check-icon{opacity:1}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000000eb;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.lightbox.open{opacity:1;visibility:visible}.lightbox-img{max-width:95vw;max-height:95vh;object-fit:contain;display:block;-webkit-user-select:none;user-select:none}.lightbox-close{position:absolute;top:var(--space-5);right:var(--space-5);width:44px;height:44px;border-radius:50%;background:#ffffff1a;color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;transition:background var(--transition)}.lightbox-close:hover{background:#fff3}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:64px;background:#ffffff14;color:#fff;font-size:22px;display:flex;align-items:center;justify-content:center;transition:background var(--transition);border-radius:var(--radius)}.lightbox-nav:hover{background:#ffffff2e}.lightbox-prev{left:var(--space-4)}.lightbox-next{right:var(--space-4)}.lightbox-download{position:absolute;bottom:var(--space-5);right:var(--space-5);color:#fff;border-color:#fff6}.lightbox-download:hover{border-color:#fff;background:#ffffff1a}.empty{text-align:center;padding:var(--space-10) var(--page-padding);color:var(--color-text-secondary)}.empty-title{font-size:var(--text-xl);font-weight:var(--weight-light);margin-bottom:var(--space-2)}.footer{padding:var(--space-6) var(--page-padding);font-size:var(--text-sm);color:var(--color-text-tertiary);display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-9);line-height:var(--leading-loose)}.admin-nav{position:sticky;top:0;z-index:100;background:var(--color-text-primary);color:#fff;padding:0 var(--page-padding);height:56px;display:flex;align-items:center;justify-content:space-between}.admin-nav-brand{font-size:var(--text-base);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase}.admin-nav-link{font-size:var(--text-sm);color:#ffffffb3;transition:color var(--transition)}.admin-nav-link:hover{color:#fff}.admin-page{max-width:1100px;margin:0 auto;padding:var(--space-7) var(--page-padding)}.admin-section-title{font-size:var(--text-xl);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);margin-bottom:var(--space-5)}.album-list{list-style:none}.album-row{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border);background:var(--color-bg);margin-bottom:var(--space-2);border-radius:var(--radius);cursor:grab;transition:box-shadow var(--transition),background var(--transition)}.album-row:active{cursor:grabbing}.album-row.dragging{opacity:.5}.album-row.drag-over{box-shadow:0 0 0 2px var(--color-accent)}.album-row-thumb{width:64px;height:48px;object-fit:cover;border-radius:var(--radius-sm);background:var(--color-surface);flex-shrink:0}.album-row-info{flex:1;min-width:0}.album-row-title{font-weight:var(--weight-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-row-meta{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:2px}.album-row-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.status-badge{font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;padding:3px 8px;border-radius:var(--radius-sm)}.status-badge.published{background:#dcfce7;color:#166534}.status-badge.draft{background:var(--color-surface);color:var(--color-text-secondary)}.form-group{margin-bottom:var(--space-5)}.form-label{display:block;font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.form-input{width:100%;padding:10px 14px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);font-size:var(--text-base);transition:border-color var(--transition);outline:none}.form-input:focus{border-color:var(--color-text-primary)}.form-input[type=textarea],textarea.form-input{resize:vertical;min-height:80px}.form-row{display:flex;gap:var(--space-4);flex-wrap:wrap}.form-row .form-group{flex:1;min-width:200px}.settings-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-7)}.settings-panel-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--space-5)}.admin-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}@media(min-width:640px){.admin-photo-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}.admin-photo-card{position:relative;background:var(--color-surface);border-radius:var(--radius);overflow:hidden;border:2px solid transparent;transition:border-color var(--transition);cursor:grab}.admin-photo-card:active{cursor:grabbing}.admin-photo-card.dragging{opacity:.4}.admin-photo-card.drag-over,.admin-photo-card.selected{border-color:var(--color-accent)}.admin-photo-card img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.admin-photo-card-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000;transition:background var(--transition);display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-2)}.admin-photo-card:hover .admin-photo-card-overlay{background:#0003}.admin-photo-checkbox{width:20px;height:20px;border:2px solid rgba(255,255,255,.8);border-radius:var(--radius-sm);background:#0000004d;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.admin-photo-card.selected .admin-photo-checkbox{background:var(--color-accent);border-color:var(--color-accent)}.admin-photo-menu{background:#00000080;color:#fff;border-radius:var(--radius-sm);padding:4px 6px;font-size:var(--text-xs);cursor:pointer;opacity:0;transition:opacity var(--transition)}.admin-photo-card:hover .admin-photo-menu{opacity:1}.admin-photo-cover-badge{position:absolute;bottom:var(--space-2);left:var(--space-2);background:var(--color-accent);color:#fff;font-size:var(--text-xs);padding:2px 6px;border-radius:var(--radius-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase}.context-menu{position:fixed;z-index:200;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 16px #0000001f;min-width:180px;overflow:hidden}.context-menu-item{display:block;width:100%;text-align:left;padding:10px 16px;font-size:var(--text-sm);color:var(--color-text-primary);transition:background var(--transition);cursor:pointer;border:none;background:none;font-family:inherit}.context-menu-item:hover{background:var(--color-surface)}.context-menu-item.danger{color:var(--color-error)}.upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8) var(--space-6);text-align:center;cursor:pointer;transition:border-color var(--transition),background var(--transition);margin-bottom:var(--space-6)}.upload-zone:hover,.upload-zone.drag-active{border-color:var(--color-accent);background:var(--color-surface)}.upload-zone-icon{font-size:36px;margin-bottom:var(--space-3);color:var(--color-text-tertiary)}.upload-zone-title{font-size:var(--text-lg);font-weight:var(--weight-medium);margin-bottom:var(--space-1)}.upload-zone-hint{font-size:var(--text-sm);color:var(--color-text-secondary)}.upload-queue{margin-bottom:var(--space-5)}.upload-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border)}.upload-item-name{flex:1;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-item-size{font-size:var(--text-sm);color:var(--color-text-secondary);flex-shrink:0}.upload-item-status{font-size:var(--text-sm);flex-shrink:0;width:80px;text-align:right;color:var(--color-text-secondary)}.upload-item-status.done{color:#166534}.upload-item-status.error{color:var(--color-error)}.upload-progress{height:3px;background:var(--color-border);border-radius:99px;overflow:hidden;width:100px;flex-shrink:0}.upload-progress-bar{height:100%;background:var(--color-accent);transition:width .2s ease;border-radius:99px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-surface);padding:var(--page-padding)}.login-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);width:100%;max-width:400px;box-shadow:0 4px 24px #0000000f}.login-brand{font-size:var(--text-2xl);font-weight:var(--weight-semibold);font-stretch:condensed;letter-spacing:var(--tracking-tight);margin-bottom:var(--space-6);text-align:center}.login-subtitle{font-size:var(--text-sm);color:var(--color-text-secondary);text-align:center;margin-bottom:var(--space-6)}.login-error{color:var(--color-error);font-size:var(--text-sm);margin-top:var(--space-3);text-align:center;min-height:20px}.divider{height:1px;background:var(--color-border);margin:var(--space-6) 0}.toggle-group{display:flex;gap:var(--space-4)}.toggle-option{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm)}.toggle-option input[type=radio]{accent-color:var(--color-accent)}.bulk-bar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;margin-bottom:var(--space-4);min-height:48px}.bulk-bar-count{font-size:var(--text-sm);color:var(--color-text-secondary);flex:1}.skeleton{background:linear-gradient(90deg,var(--color-surface) 25%,var(--color-border) 50%,var(--color-surface) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.download-bar{position:fixed;bottom:var(--space-5);right:var(--space-5);background:var(--color-text-primary);color:#fff;padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);box-shadow:0 8px 32px #00000040;min-width:260px;z-index:500;display:none}.download-bar.visible{display:block}.download-bar-title{font-size:var(--text-sm);font-weight:var(--weight-medium);margin-bottom:var(--space-2)}.download-bar-progress{height:3px;background:#fff3;border-radius:99px;overflow:hidden;margin-bottom:var(--space-2)}.download-bar-progress-fill{height:100%;background:#fff;border-radius:99px;transition:width .2s ease}.download-bar-label{font-size:var(--text-xs);opacity:.7}@media(max-width:480px){.hide-mobile{display:none}}
