*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--surface:#fff;--surface-alt:#f5f5f5;--border:#000;--border-light:#e5e5e5;--text:#000;--text-secondary:#666;--text-muted:#999;--primary:#000;--primary-hover:#333;--danger:#000;--danger-bg:#f5f5f5;--success:#000;--radius:0;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--font:"SF Mono", "JetBrains Mono", "SF Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, monospace}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.5}.app-container{max-width:1200px;padding:var(--space-lg) var(--space-md);flex-direction:column;min-height:100vh;margin:0 auto;display:flex}.app-container--centered{max-width:none;height:100vh;padding:var(--space-lg) var(--space-md);justify-content:center;align-items:center;display:flex;position:relative}.app-header{margin-bottom:var(--space-xl);border-bottom:2px solid var(--text);justify-content:space-between;align-items:center;display:flex}.app-brand{align-items:center;gap:var(--space-md);display:flex}.app-brand-text{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.app-tagline{font-family:var(--font);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;font-size:11px}.app-version{border:1px solid var(--text-secondary);color:var(--text-secondary);font-family:var(--font);cursor:pointer;text-transform:uppercase;letter-spacing:.5px;background:0 0;padding:2px 6px;font-size:10px;line-height:1}.app-version:hover{border-color:var(--text);color:var(--text)}.app-logo-wrap{align-items:center;width:120px;display:flex}.app-logo{width:100%;height:auto;display:block}.app-user{align-items:center;gap:var(--space-sm);display:flex}.btn{align-items:center;gap:var(--space-sm);border:2px solid var(--text);text-transform:uppercase;letter-spacing:.5px;cursor:pointer;font-size:12px;font-weight:600;line-height:1.4;font-family:var(--font);background:var(--surface);color:var(--text);border-radius:0;padding:8px 16px;text-decoration:none;transition:background .15s,color .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.35;cursor:not-allowed}.btn--primary{background:var(--text);color:var(--surface)}.btn--primary:hover:not(:disabled){background:var(--primary-hover)}.btn--secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn--secondary:hover:not(:disabled){background:var(--surface-alt)}.btn--danger{background:var(--surface);color:var(--text);border-color:var(--text);border-width:2px}.btn--danger:hover:not(:disabled){background:var(--text);color:var(--surface)}.btn--ghost{color:var(--text);background:0 0;border-color:#0000}.btn--ghost:hover:not(:disabled){background:var(--surface-alt)}.btn--ghost:focus-visible{border-color:var(--text)}.icon-btn{justify-content:center;align-items:center;width:36px;height:36px;padding:0;line-height:0;display:inline-flex}.google-sign-in-btn{border:2px solid var(--text);font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;cursor:pointer;background:var(--surface);color:var(--text);align-items:center;gap:10px;padding:12px 24px;font-size:13px;font-weight:600;transition:background .15s;display:inline-flex}.google-sign-in-btn:hover:not(:disabled){background:var(--surface-alt)}.link-input-form{background:var(--surface);border:2px solid var(--text);padding:var(--space-lg);margin-bottom:var(--space-lg)}.input-label{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-xs);font-size:11px;font-weight:700;display:block}.input-hint{color:var(--text-secondary);margin-bottom:var(--space-md);font-size:13px}.link-input-row{gap:var(--space-sm);display:flex}.link-input{border:2px solid var(--text);background:var(--surface-alt);font-size:14px;font-family:var(--font);flex:1;padding:10px 12px}.link-input:focus{border-color:var(--text);background:var(--surface);outline:none}.link-preview{border:2px solid var(--text);padding:var(--space-lg);margin-bottom:var(--space-lg)}.preview-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.preview-header h3{font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;font-size:14px}.file-count{color:var(--text-secondary);font-size:12px;font-family:var(--font)}.file-preview-list{margin-bottom:var(--space-md);list-style:none}.file-preview-list li{font-size:12px;font-family:var(--font);color:var(--text-secondary);border-bottom:1px solid var(--border-light);padding:4px 0}.more-files{color:var(--text-muted);font-style:italic;border-bottom:none!important}.preview-actions{justify-content:flex-end;gap:var(--space-sm);display:flex}.metadata-form{border:2px solid var(--text);padding:var(--space-lg);margin-bottom:var(--space-lg);max-width:500px}.form-field{margin-bottom:var(--space-md)}.form-field label{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-xs);font-size:11px;font-weight:600;display:block}.form-field input,.form-field select,.form-field textarea{border:2px solid var(--text);background:var(--surface-alt);width:100%;font-size:14px;font-family:var(--font);border-radius:0;padding:10px 12px}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--text);background:var(--surface);outline:none}.form-field textarea{resize:vertical;min-height:72px}.form-actions{justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-sm);display:flex}.copy-progress{border:2px solid var(--text);padding:var(--space-lg);margin-bottom:var(--space-lg)}.copy-warning{background:var(--surface-alt);border:2px solid var(--text);padding:var(--space-md);font-size:12px;font-family:var(--font);margin-bottom:var(--space-md);text-transform:uppercase;letter-spacing:.3px;line-height:1.6}.progress-bar-wrapper{margin:var(--space-md) 0}.progress-label{font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin-bottom:var(--space-xs);font-size:11px}.progress-track{background:var(--surface-alt);border:1px solid var(--text);height:6px;overflow:hidden}.progress-fill{background:var(--text);height:100%;transition:width .3s}.progress-text{font-family:var(--font);color:var(--text-secondary);margin-top:var(--space-xs);font-size:11px}.copy-fail-count{color:var(--text);font-family:var(--font);margin-top:var(--space-sm);font-size:12px;font-weight:700}.copy-result{border:2px solid var(--text);padding:var(--space-lg);margin-bottom:var(--space-lg)}.copy-result h3{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-sm);font-size:14px}.copy-result p{margin-bottom:var(--space-sm);font-size:14px}.copy-failures{margin-top:var(--space-md);font-size:13px}.copy-failures ul{margin-top:var(--space-xs);font-family:var(--font);padding-left:20px;font-size:12px}.archive-view{flex-direction:column;flex:1;display:flex}.archive-toolbar{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.archive-toolbar-actions{gap:var(--space-sm);display:flex}.archive-filters{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.search-input,.sort-select{border:2px solid var(--text);height:36px;font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;background:var(--surface);appearance:none;border-radius:0;padding:0 12px;font-size:12px}.search-input{width:180px}.search-input::placeholder{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.search-input:focus,.sort-select:focus{background:var(--surface-alt);outline:none}.roll-grid{gap:var(--space-md);flex:1;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));align-content:start;display:grid}.roll-card{border:2px solid var(--text);cursor:pointer;transition:opacity .15s}.roll-card:hover{opacity:.75}.roll-card-thumb{aspect-ratio:3/2;background:var(--surface-alt);border-bottom:2px solid var(--text);width:100%;overflow:hidden}.roll-card-thumb img{object-fit:cover;width:100%;height:100%;display:block}.roll-card-placeholder{width:100%;height:100%;font-size:14px;font-family:var(--font);text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.roll-card-info{padding:var(--space-md)}.roll-card-stock{font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs);font-size:12px;font-weight:700}.roll-card-meta{gap:var(--space-sm);font-family:var(--font);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px;font-size:11px;display:flex}.roll-card-camera{font-family:var(--font);color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;margin-top:var(--space-xs);font-size:11px}.roll-detail{max-width:1200px}.detail-header{margin-bottom:var(--space-lg);justify-content:space-between;align-items:center;display:flex}.detail-actions{gap:var(--space-sm);display:flex}.detail-meta{margin-bottom:var(--space-lg)}.detail-film-stock{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-md);font-size:22px}.detail-table{border-collapse:collapse;width:100%}.detail-table td{border-bottom:1px solid var(--border-light);padding:10px 0;font-size:13px}.detail-table td:first-child{color:var(--text-secondary);width:140px;font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.detail-edit-form{margin-bottom:var(--space-lg);max-width:500px}.detail-edit-form>.btn{margin-top:var(--space-sm)}.detail-images{padding:var(--space-lg);margin-bottom:var(--space-lg);background:#1a1a1a}.detail-images h3{color:#ccc;margin:0 0 var(--space-md);font-family:var(--font);text-transform:uppercase;letter-spacing:1px;font-size:13px;font-weight:600}.detail-image-grid{grid-template-columns:repeat(6,1fr);gap:10px;display:grid}.detail-image-item{cursor:pointer;transition:opacity .15s}.detail-image-item:hover{opacity:.7}.detail-image-frame{aspect-ratio:1;background:#1a1a1a;overflow:hidden}.detail-image-frame img{object-fit:contain;width:100%;height:100%;display:block}.frame-number{font-family:var(--font);color:#aaa;text-align:center;padding:6px 2px 0;font-size:12px;font-weight:600;display:block}.no-results{text-align:center;color:var(--text-muted);padding:var(--space-xl);font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.loading-state{text-align:center;padding:var(--space-2xl);color:var(--text-secondary);font-family:var(--font);text-transform:uppercase;letter-spacing:1px;font-size:12px}.info-btn{top:var(--space-md);left:var(--space-md);border:2px solid var(--text);background:var(--surface);width:28px;height:28px;color:var(--text);font-family:var(--font);cursor:pointer;justify-content:center;align-items:center;font-size:13px;font-weight:700;line-height:1;transition:background .15s;display:flex;position:absolute}.info-btn:hover{background:var(--surface-alt)}.empty-state{text-align:center;padding:var(--space-2xl) var(--space-lg)}.empty-state-icon{margin-bottom:var(--space-md);font-size:14px;font-family:var(--font);text-transform:uppercase;letter-spacing:1px;color:var(--text-muted)}.empty-state-logo{width:160px;height:auto;margin-bottom:var(--space-sm);margin-left:auto;margin-right:auto;display:block}.empty-state .app-tagline{margin-bottom:var(--space-lg);white-space:normal}.empty-state-title{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-sm);font-size:16px}.empty-state-desc{color:var(--text-secondary);margin-bottom:var(--space-lg);font-size:14px}.modal-overlay{z-index:100;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:var(--surface);border:2px solid var(--text);padding:var(--space-lg);min-width:320px;max-width:480px}.modal-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.modal-title{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;font-size:14px}.modal-body p{margin-bottom:var(--space-md);font-size:14px}.changelog-content{font-family:var(--font);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.6}.modal-actions{justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-md);display:flex}.checkbox-label{align-items:center;gap:var(--space-sm);font-family:var(--font);text-transform:uppercase;letter-spacing:.3px;cursor:pointer;font-size:12px;display:flex}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--text)}.error-text{color:#ff6b6b;font-family:var(--font);margin-top:var(--space-sm);font-size:12px}.lightbox-overlay{z-index:200;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox-content{box-sizing:border-box;width:90vw;height:90vh;padding-top:36px;position:relative}.lightbox-toolbar{gap:8px;display:flex;position:absolute;top:0;left:0;right:0}.lightbox-toolbar button{color:#fff;cursor:pointer;font-size:12px;font-family:var(--font);text-transform:uppercase;letter-spacing:1px;background:0 0;border:2px solid #fff;padding:6px 12px}.lightbox-set-cover{margin-right:auto}.lightbox-set-cover.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.lightbox-close{margin-left:auto}.lightbox-image{object-fit:contain;width:100%;height:100%}.lightbox-error{color:#999;text-align:center;font-family:var(--font);padding:40px}.lightbox-error a{color:#fff;text-decoration:underline}.ingest-flow{max-width:700px;margin:0 auto}.ingest-flow h2{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-md);font-size:16px}@media (width<=600px){.app-container{padding:var(--space-md) var(--space-sm)}.app-header{align-items:flex-start;gap:var(--space-md);flex-direction:column}.app-tagline{white-space:normal}.app-user{flex-wrap:wrap;width:100%}.archive-toolbar{flex-direction:column;align-items:stretch}.archive-filters{flex-direction:column}.search-input,.sort-select{width:100%}.roll-grid{grid-template-columns:1fr}.link-input-row{flex-direction:column}.detail-image-grid{grid-template-columns:repeat(3,1fr)}}.app-footer{color:#ccc;margin:var(--space-xl) calc(-50vw + 50%) 0;padding:var(--space-md) calc(50vw - 50%);text-align:center;background:#000;width:100vw;margin-top:auto}.footer-inner{max-width:1200px;margin:0 auto}.footer-desc{font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-sm);color:#999;font-size:11px}.footer-links{justify-content:center;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);display:flex}.footer-links .btn--ghost{color:#fff}.footer-links .btn--ghost:hover{color:#fff;background:#ffffff1a}.btn--trakteer{color:#111!important;background:#ffc147!important;border-color:#ffc147!important}.btn--trakteer:hover{opacity:.85}.footer-link-btn{cursor:pointer;font-family:var(--font);background:0 0;border:none;padding:0}.footer-copy{color:#777;font-size:10px}.privacy-page{max-width:720px;margin:0 auto}.privacy-header{margin-bottom:var(--space-lg)}.privacy-content h1{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-sm);font-size:24px;font-weight:700}.privacy-updated{color:var(--text-secondary);font-family:var(--font);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xl);font-size:11px}.privacy-content section{margin-bottom:var(--space-lg)}.privacy-content h2{font-family:var(--font);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-sm);font-size:14px;font-weight:600}.privacy-content p{color:var(--text-secondary);margin-bottom:var(--space-sm);font-size:14px;line-height:1.7}.privacy-content ul{margin:var(--space-sm) 0;padding-left:20px}.privacy-content li{color:var(--text-secondary);margin-bottom:var(--space-xs);font-size:14px;line-height:1.7}.privacy-content a{color:var(--text);text-decoration:underline}.pagination{padding:var(--space-lg) 0;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;display:flex}.pagination-btn{background:var(--surface);border:2px solid var(--text);color:var(--text);cursor:pointer;text-align:center;min-width:36px;padding:6px 12px;font-family:inherit;font-size:14px;transition:opacity .15s}.pagination-btn:hover:not(:disabled){opacity:.75}.pagination-btn:disabled{opacity:.3;cursor:default}.pagination-btn--active{background:var(--text);color:var(--surface)}.pagination-ellipsis{color:var(--text-secondary);padding:6px 4px;font-size:14px}.pagination-info{margin-left:var(--space-sm);color:var(--text-secondary);font-size:13px}
