*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fafaf7;--sidebar-bg:#f5f0eb;--border:#e7e0d9;--text:#1c1917;--text-secondary:#78716c;--text-muted:#a8a29e;--text-body:#57534e;--accent:#c2410c;--white:#fff;--font-serif:"DM Serif Display", serif;--font-sans:"DM Sans", sans-serif}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex}.main{flex-direction:column;flex:1;min-height:100vh;display:flex;overflow-y:auto}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:260px;height:100vh;padding:32px 24px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-logo{padding-bottom:40px}.logo-text{flex-direction:column;gap:2px;display:flex}.logo-line{font-family:var(--font-serif);color:var(--text);font-size:22px;line-height:28px}.logo-sub{color:var(--text-secondary);letter-spacing:.04em;margin-top:4px;font-size:13px;display:block}.sidebar-nav{flex-direction:column;gap:4px;display:flex}.nav-header{justify-content:space-between;align-items:center;padding-bottom:8px;display:flex}.nav-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:600}.btn-add-event{width:24px;height:24px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.btn-add-event:hover{background:var(--bg);color:var(--text)}.nav-item{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-direction:column;gap:2px;width:100%;padding:10px 12px;transition:background .15s;display:flex}.nav-item:hover{background:#fafaf780}.nav-item.active{background:var(--bg)}.nav-item-title{color:var(--text-body);font-size:14px;font-weight:400;line-height:20px}.nav-item.active .nav-item-title{color:var(--text);font-weight:500}.nav-item-date{color:var(--text-muted);font-size:12px;line-height:18px}.header-bar{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:20px 48px;display:flex}.header-tagline{color:var(--text-secondary);font-size:13px}.btn-upload-header{background:var(--text);color:var(--bg);font-family:var(--font-sans);cursor:pointer;border:none;border-radius:6px;align-items:center;gap:8px;padding:8px 16px;font-size:13px;font-weight:500;text-decoration:none;transition:opacity .15s;display:flex}.btn-upload-header:hover{opacity:.85}.cancel-link{color:var(--accent);cursor:pointer;font-size:13px;font-weight:500;font-family:var(--font-sans);background:0 0;border:none}.event-header{padding:40px 48px 24px}.event-title{font-family:var(--font-serif);letter-spacing:-.02em;color:var(--text);font-size:36px;font-weight:400;line-height:44px}.event-meta{align-items:center;gap:16px;margin-top:10px;display:flex}.event-date{color:var(--text-secondary);font-size:14px}.event-count{color:var(--accent);font-size:14px;font-weight:500}.event-desc{color:var(--text-body);max-width:560px;margin-top:14px;font-size:15px;line-height:24px}.collage{gap:4px;width:auto;padding:8px 48px 48px;display:flex}.collage-column{background-clip:padding-box;flex-direction:column;gap:4px;display:flex}.collage-item{cursor:pointer;background:var(--border);border-radius:4px;position:relative;overflow:hidden}.collage-item img{opacity:0;width:100%;height:auto;transition:opacity .4s,transform .3s;display:block}.collage-item img.loaded{opacity:1}.collage-item:hover img{transform:scale(1.03)}.collage-hover{opacity:0;background:linear-gradient(#1c191700,#1c1917a6);padding:14px 16px;transition:opacity .25s;position:absolute;bottom:0;left:0;right:0}.collage-item:hover .collage-hover{opacity:1}.collage-hover span{color:var(--bg);font-size:13px;font-weight:500}.attendees{margin-top:20px}.attendees-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px;font-size:11px;font-weight:600;display:block}.attendees-list{flex-wrap:wrap;gap:6px;display:flex}.attendee{position:relative}.avatar{width:32px;height:32px;font-family:var(--font-sans);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.heart-btn{cursor:pointer;color:#ffffffb3;font-family:var(--font-sans);background:0 0;border:none;align-items:center;gap:4px;padding:0;font-size:12px;transition:color .15s,transform .15s;display:flex}.heart-btn:hover{color:#fff;transform:scale(1.1)}.heart-btn.hearted{color:#ef4444}.collage-heart{opacity:0;transition:opacity .25s;position:absolute;bottom:10px;right:10px}.collage-heart.hearted,.collage-item:hover .collage-heart{opacity:1}.heart-count{font-size:12px}.empty-state{flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:80px 48px;display:flex}.empty-state p{color:var(--text-secondary);font-size:15px}.upload-form{flex-direction:column;gap:32px;max-width:560px;padding:56px 48px 48px;display:flex}.upload-heading{font-family:var(--font-serif);letter-spacing:-.02em;font-size:32px;font-weight:400;line-height:40px}.upload-subtitle{color:var(--text-secondary);margin-top:8px;font-size:15px;line-height:24px}.field{flex-direction:column;gap:8px;display:flex}.field-label{color:var(--text);font-size:13px;font-weight:500}.field-input{border:1px solid var(--border);background:var(--white);font-family:var(--font-sans);color:var(--text);border-radius:8px;outline:none;width:320px;padding:12px 16px;font-size:15px;transition:border-color .15s}.field-input::placeholder{color:var(--text-muted)}.field-input:focus{border-color:var(--text-secondary)}.drop-zone{border:2px dashed var(--border);cursor:pointer;background:#fdfcfb;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;transition:border-color .2s,background .2s;display:flex}.drop-zone:hover,.drop-zone.drag-over{border-color:var(--text-secondary);background:var(--sidebar-bg)}.drop-zone-input{display:none}.drop-zone-text{color:var(--text);font-size:15px;font-weight:500}.drop-zone-hint{color:var(--text-muted);font-size:13px}.preview-section{flex-direction:column;gap:10px;display:flex}.preview-count{color:var(--text-secondary);font-size:13px}.preview-thumbs{flex-wrap:wrap;gap:10px;display:flex}.preview-thumb{border-radius:8px;width:100px;height:100px;position:relative;overflow:hidden}.preview-thumb img{object-fit:cover;width:100%;height:100%}.preview-remove{background:var(--text);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;transition:opacity .15s;display:flex;position:absolute;top:-4px;right:-4px}.preview-remove:hover{opacity:.8}.submit-section{align-items:center;gap:16px;display:flex}.btn-upload{background:var(--text);color:var(--bg);font-family:var(--font-sans);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:8px;padding:12px 28px;font-size:15px;font-weight:500;transition:opacity .15s;display:flex}.btn-upload:disabled{opacity:.4;cursor:not-allowed}.btn-upload:not(:disabled):hover{opacity:.85}.submit-hint{color:var(--text-muted);font-size:13px}.lightbox{z-index:100;background:#1c1917eb;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox-close{cursor:pointer;z-index:10;background:#ffffff1a;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:background .15s;display:flex;position:absolute;top:24px;right:24px}.lightbox-close:hover{background:#fff3}.lightbox-layout{background:#1c191799;border-radius:8px;gap:0;width:90vw;max-width:1100px;max-height:80vh;display:flex;overflow:hidden}.lightbox-photo-side{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.lightbox-img{object-fit:contain;background:#0000004d;flex:1;min-height:0;max-height:calc(80vh - 52px)}.lightbox-info{flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.lightbox-meta{align-items:center;gap:8px;display:flex}.lightbox-name{color:var(--bg);font-size:15px;font-weight:500}.lightbox-event{color:#fafaf780;font-size:14px}.lightbox-actions{align-items:center;gap:16px;display:flex}.lightbox-heart{color:#fff9;font-size:14px}.lightbox-heart span{color:#fff9}.lightbox-heart.hearted span{color:#ef4444}.lightbox-nav{align-items:center;gap:12px;display:flex}.lightbox-arrow{cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:background .15s;display:flex}.lightbox-arrow:hover{background:#fff3}.lightbox-counter{color:#fafaf766;font-size:13px}.lightbox-comments{background:var(--bg);flex-direction:column;flex-shrink:0;width:280px;max-height:80vh;display:flex}.comments-heart-row{border-bottom:1px solid var(--border);padding:16px 20px}.panel-heart{color:var(--text-secondary);gap:8px}.panel-heart.hearted{color:#ef4444}.panel-heart-count{color:var(--text);font-size:13px;font-weight:500}.panel-heart.hearted .panel-heart-count{color:var(--text)}.comments-header{justify-content:space-between;align-items:center;padding:16px 20px 12px;display:flex}.comments-title{color:var(--text);font-size:14px;font-weight:500}.comments-count{color:var(--text-muted);background:var(--sidebar-bg);border-radius:10px;padding:2px 8px;font-size:12px}.comments-list{flex-direction:column;flex:1;gap:14px;padding:16px 20px;display:flex;overflow-y:auto}.comments-empty{color:var(--text-muted);text-align:center;padding:20px 0;font-size:13px}.comment{flex-direction:column;gap:2px;display:flex}.comment-author{color:var(--text);font-size:12px;font-weight:500}.comment-text{color:var(--text-body);font-size:13px;line-height:20px}.comment-form{border-top:1px solid var(--border);gap:8px;padding:16px 20px;display:flex}.comment-input{border:1px solid var(--border);background:var(--white);font-family:var(--font-sans);color:var(--text);border-radius:6px;outline:none;flex:1;padding:8px 12px;font-size:13px}.comment-input:focus{border-color:var(--text-secondary)}.comment-input::placeholder{color:var(--text-muted)}.comment-send{background:var(--text);width:32px;height:32px;color:var(--bg);cursor:pointer;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s;display:flex}.comment-send:disabled{opacity:.3;cursor:not-allowed}.comment-send:not(:disabled):hover{opacity:.85}.comment-login{color:var(--text-secondary);border:none;border-top:1px solid var(--border);cursor:pointer;font-size:13px;font-family:var(--font-sans);text-align:center;background:0 0;padding:16px 20px}.comment-login:hover{color:var(--accent)}.lightbox-mobile{display:none}.secret-n{cursor:default;-webkit-user-select:none;user-select:none}.nav-empty{color:var(--text-muted);padding:10px 12px;font-size:13px}.admin-overlay{z-index:200;background:#1c191780;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.admin-modal{background:var(--bg);border-radius:14px;width:420px;max-width:90vw;padding:32px;box-shadow:0 20px 60px #00000026}.admin-header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.admin-title{font-family:var(--font-serif);font-size:22px;font-weight:400}.admin-close{cursor:pointer;width:32px;height:32px;color:var(--text-secondary);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s;display:flex}.admin-close:hover{background:var(--sidebar-bg)}.admin-form{flex-direction:column;gap:20px;display:flex}.admin-input{width:100%}.admin-textarea{resize:vertical;width:100%;min-height:72px;font-family:var(--font-sans)}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding-top:24px}.user-info{align-items:center;gap:10px;display:flex}.user-avatar{background:var(--accent);width:32px;height:32px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.user-details{flex-direction:column;gap:1px;display:flex}.user-name{color:var(--text);font-size:13px;font-weight:500}.user-logout{color:var(--text-muted);cursor:pointer;text-align:left;font-size:12px;font-family:var(--font-sans);background:0 0;border:none;padding:0}.user-logout:hover{color:var(--accent)}.btn-login{border:1px solid var(--border);background:var(--white);width:100%;font-family:var(--font-sans);color:var(--text);cursor:pointer;border-radius:8px;padding:10px;font-size:13px;font-weight:500;transition:border-color .15s}.btn-login:hover{border-color:var(--text-secondary)}.auth-error{color:var(--accent);font-size:13px}.auth-switch{color:var(--text-secondary);cursor:pointer;font-size:13px;font-family:var(--font-sans);text-align:center;background:0 0;border:none;padding:0}.auth-switch:hover{color:var(--text)}.mobile-menu-btn{z-index:60;background:var(--sidebar-bg);width:40px;height:40px;color:var(--text);cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;display:none;position:fixed;top:16px;left:16px;box-shadow:0 2px 8px #00000014}.mobile-overlay{display:none}@media (width<=768px){.mobile-menu-btn{display:flex}.mobile-overlay{z-index:49;background:#1c191766;display:block;position:fixed;inset:0}.sidebar{z-index:50;width:260px;height:100vh;box-shadow:none;transition:left .25s;position:fixed;top:0;left:-280px}.sidebar.open{left:0;box-shadow:4px 0 24px #0000001f}.main{min-height:100vh}.header-bar{justify-content:flex-end;padding:16px 20px}.header-tagline{display:none}.event-header{padding:24px 20px 20px}.event-title{font-size:28px;line-height:36px}.event-desc{max-width:100%}.collage{padding:8px 12px 32px}.empty-state{padding:60px 20px}.upload-form{max-width:100%;padding:32px 20px}.field-input{width:100%}.lightbox-desktop{display:none}.lightbox-mobile{width:100vw;height:100vh;display:block;position:relative}.lightbox-mobile-img{object-fit:contain;width:100%;height:100%}.lightbox-mobile-bar{background:linear-gradient(#1c191700,#1c1917bf);justify-content:space-between;align-items:flex-end;padding:48px 20px 28px;display:flex;position:absolute;bottom:0;left:0;right:0}.lightbox-mobile-info{flex-direction:column;gap:2px;display:flex}.lightbox-mobile-actions{align-items:center;gap:16px;display:flex}.lightbox-mobile-comment-btn{color:#ffffffb3;font-family:var(--font-sans);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0;font-size:13px;display:flex}.lightbox-mobile-comment-btn span{color:#ffffffb3}.lightbox-mobile-prev,.lightbox-mobile-next{cursor:pointer;background:#00000040;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-mobile-prev{left:8px}.lightbox-mobile-next{right:8px}.lightbox-mobile-counter{color:#ffffff80;font-size:13px;font-family:var(--font-sans);position:absolute;top:20px;left:50%;transform:translate(-50%)}.lightbox-close{z-index:20;top:14px;right:14px}.lightbox-sheet-overlay{z-index:15;background:#0000004d;align-items:flex-end;display:flex;position:absolute;inset:0}.lightbox-sheet{flex-direction:column;width:100%;max-height:70vh;display:flex}.lightbox-sheet-handle{background:#ffffff4d;border-radius:2px;width:36px;height:4px;margin:0 auto 8px}.lightbox-sheet .lightbox-comments{border-radius:16px 16px 0 0;width:100%;max-height:65vh}.admin-modal{width:95vw;padding:24px}}
