*{margin:0;padding:0;box-sizing:border-box}:root{font-family:Instrument Sans,sans-serif}body{min-height:100vh;color:#000;background-color:#fff;box-sizing:border-box}@media(prefers-color-scheme:dark){body{color:#fff;background-color:#000}}:root{--gallery-padding: 56px;--gallery-gap: 48px;--wall-label-font-size: .7rem}@media(max-width:768px){:root{--gallery-padding: 24px;--gallery-gap: 24px;--wall-label-font-size: .75rem}}@media(max-width:480px){:root{--gallery-padding: 16px;--gallery-gap: 16px;--wall-label-font-size: .7rem}}.home-container{height:100vh;padding:var(--gallery-padding);box-sizing:border-box;display:flex;align-items:center;justify-content:center}.gallery-image-hidden{position:absolute;visibility:hidden;pointer-events:none}.wall-label{font-family:IBM Plex Mono,monospace;font-size:var(--wall-label-font-size);line-height:1.4;word-wrap:break-word;overflow-wrap:break-word;word-break:break-word;max-width:100%;box-sizing:border-box}.wall-label p{margin:0;padding:0;word-wrap:break-word;overflow-wrap:break-word}.wall-label a{color:#000;text-decoration:none}.wall-label a:hover{color:#00e;text-decoration:underline}.portrait-layout{display:flex;gap:var(--gallery-gap);align-items:center;justify-content:center;width:100%}.portrait-spacer-left,.portrait-spacer-right{flex:1}.portrait-center-group{display:flex;gap:var(--gallery-gap);align-items:stretch;flex-shrink:0}.gallery-image-portrait{display:block;flex-shrink:0;object-fit:contain}.portrait-text-column{display:flex;align-items:flex-end;min-width:0;max-width:200px;flex-shrink:1}.wall-label-portrait{text-align:left;width:100%}.landscape-layout{display:flex;flex-direction:column;gap:var(--gallery-gap);align-items:center;justify-content:center;height:calc(100vh - calc(var(--gallery-padding) * 2))}.landscape-spacer-top,.landscape-spacer-bottom{flex:1}.landscape-center-group{display:flex;flex-direction:column;gap:var(--gallery-gap);align-items:stretch;flex-shrink:0}.gallery-image-landscape{display:block;flex-shrink:0;object-fit:contain}.landscape-text-row{display:flex;justify-content:flex-end;align-items:flex-start}.wall-label-landscape{text-align:right}@media(max-width:768px){.portrait-center-group{flex-direction:column;align-items:center;flex-shrink:1;width:100%;max-width:100%}.portrait-text-column{align-items:flex-start;width:100%;min-width:0;max-width:100%}.wall-label-portrait{text-align:left;width:100%;min-width:0;max-width:100%}.landscape-center-group{width:100%;max-width:100%}.landscape-text-row{justify-content:flex-start;width:100%;max-width:100%}.wall-label-landscape{text-align:left;width:100%;min-width:0;max-width:100%}.wall-label a{min-height:44px;padding:4px 0}}@media(max-width:480px){.portrait-center-group,.landscape-center-group{width:100%;max-width:100%}}.admin-container{padding:2rem;max-width:1400px;margin:0 auto}.admin-container p{overflow:hidden;max-width:100%}.admin-container a{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.admin-container h2{margin-bottom:1rem;margin-top:2rem}.admin-container h2:first-child{margin-top:0}.admin-header-buttons{justify-content:flex-end;margin-bottom:1rem}.admin-signin-container{padding:2rem}.preview-section{margin-bottom:3rem}.preview-grid{display:flex;gap:1rem;flex-wrap:wrap}.preview-item{flex:1;min-width:150px;border:1px solid currentColor;padding:1rem}.preview-item.current{border-width:2px;font-weight:700}.preview-label{font-weight:700;margin:0 0 .5rem}.preview-thumbnail{width:100%;height:auto;max-height:200px;object-fit:contain;margin-bottom:.5rem}.preview-title{font-size:.9em;margin:.5rem 0;opacity:.8}.preview-url{font-size:.85em;margin:.5rem 0;word-break:break-all}.preview-url a{color:#00e;text-decoration:none}.preview-url a:hover{text-decoration:underline}.no-value{color:#999;opacity:.65}.preview-placeholder{padding:2rem;text-align:center;opacity:.5}.preview-buttons{margin-top:1rem}.preview-buttons button{width:auto}.upload-section{margin-bottom:3rem}.upload-form{max-width:400px}.analyzing-text{margin-top:.5rem;font-style:italic;background-color:#111}.preview-container{text-align:center}.upload-preview{max-width:100%;max-height:300px;object-fit:contain;border:1px solid currentColor}.upload-queue{margin-top:1.5rem;border:1px solid currentColor;padding:1rem}.queue-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:.25rem}.queue-header h3{margin:0}.queue-header .button-group{margin-top:1rem}.queue-header .button-group button{width:auto}.queue-items{display:flex;flex-direction:column;gap:1rem}.queue-item{display:flex;gap:1rem;padding:1rem;border:1px solid currentColor;align-items:flex-start}.queue-item.duplicate{background-color:#111;border-style:dashed}.queue-item.error{border-color:#c00}.queue-item-preview{flex-shrink:0;width:100px;height:100px}.queue-thumbnail{width:100%;height:100%;object-fit:cover;border:1px solid currentColor}.queue-thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;border:1px dashed currentColor;font-size:.8rem;opacity:.5}.queue-item-content{flex:1;min-width:0}.queue-item-filename{font-size:.85rem;background-color:#111;margin-bottom:.5rem;word-break:break-all}.queue-item-fields{display:flex;flex-direction:column;gap:.25rem}.queue-item-fields input{width:100%;padding:.4em;font-size:.9em;font-family:inherit;border:1px solid #000;color:currentColor}.queue-item-actions{flex-direction:column}.queue-item-actions button{width:auto}.duplicate-badge{display:inline-block;padding:.2em .5em;font-size:.75rem;font-weight:700;border:1px solid currentColor;margin-bottom:.5rem}.existing-info{font-size:.85rem;opacity:.8}.error-text{color:#c00;font-size:.85rem}.duplicates-section{width:100%;margin-top:1rem}.duplicates-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background-color:#000;border:1px solid currentColor;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .2s}.duplicates-header:hover{background-color:#111}.duplicates-header.collapsed{border-bottom:none}.collapse-indicator{font-size:.8em;background-color:#111;transition:transform .2s}.duplicates-list{border:1px solid currentColor;border-top:none;display:flex;flex-direction:column;gap:1rem;padding:1rem;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;max-height:0}to{background-color:#111;max-height:5000px}}@media(max-width:888px){.queue-item{flex-direction:column}.queue-item-preview{width:100%;height:auto;max-height:150px}.queue-thumbnail{height:auto;max-height:150px;width:auto;max-width:100%}.queue-item-actions{flex-direction:row}.queue-item-actions button{flex:1}}.images-section{margin-bottom:2rem}.images-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:2rem;margin-top:1rem}.image-item{border:1px solid currentColor;padding:1rem}.image-item .image-details .button-group{margin-top:1rem}.image-thumbnail{width:100%;height:auto;max-height:300px;object-fit:contain;margin-bottom:1rem}.image-details{font-size:.9em}.image-details p{margin:.5rem 0}.image-details a{color:#00e;text-decoration:none}.image-details a:hover{text-decoration:underline}.image-item[draggable=true]{cursor:move}.image-item.dragging{opacity:.5;border-style:dashed}.image-item.drag-over-left{border-left:3px dashed currentColor;padding-left:2px}.image-item.drag-over-right{border-right:3px dashed currentColor;padding-right:2px}.reordering-text{font-style:italic;background-color:#111;margin-bottom:.5rem}.button-container,.button-group,.admin-header-buttons,.preview-buttons,.queue-item-actions{display:flex;gap:.25rem;flex-wrap:wrap;align-items:center}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem}.form-group input{width:100%;padding:.6em;font-size:.9em;font-family:inherit;border:1px solid #000;color:currentColor}.form-group input[type=file]{background-color:transparent;border:1px solid #000;cursor:pointer}.form-group input:disabled{opacity:.5;cursor:not-allowed}.button-group{margin-top:1rem}.button-group button{width:auto}button{width:100%;padding:.5em 1em;font-size:.9em;font-family:inherit;background-color:transparent;color:currentColor;border:1px solid currentColor;cursor:pointer;opacity:1}button:hover:not(:disabled){background-color:#111}button[data-button-type=edit]:hover:not(:disabled){background-color:#00e;color:#fff;border-color:#00e}button[data-button-type=replace]:hover:not(:disabled){background-color:#0a0;color:#fff;border-color:#0a0}button[data-button-type=delete]:hover:not(:disabled),button[data-button-type=kill-cache]:hover:not(:disabled){background-color:#c00;color:#fff;border-color:#c00}button[data-button-type=sign-out]:hover:not(:disabled){background-color:#a0a;color:#fff;border-color:#a0a}button:disabled{opacity:.5;cursor:not-allowed}.edit-form{margin-top:1rem}.edit-form .form-group{margin-bottom:1rem}.edit-form .form-group label{display:block;margin-bottom:.25rem;font-size:.9em}.edit-form input{width:100%;padding:.5em;font-size:.9em;border:1px solid #000}.replace-form{margin-top:1rem;padding-top:1rem;border-top:1px solid currentColor}.replace-form input[type=file]{background-color:transparent;border:1px solid #000;margin-bottom:.5rem}.error,.success{margin:1rem 0}.info{margin-top:1rem;display:flex;align-items:center;gap:1rem}.info a{color:#fff;text-decoration:none}.info a:hover{text-decoration:underline}.sign-out-button{width:auto}
