:root{color-scheme:light;font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,"Liberation Mono",monospace;font-size:16px;color:#111;background:#fff;--hairline:#d4d4d4}
*{box-sizing:border-box}
body{margin:0}
button,input,a{font:inherit}
button{cursor:pointer;border:0;border-radius:0;background:transparent;color:inherit}
button:disabled{cursor:not-allowed;opacity:.4}
a{color:inherit;text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:4px}
button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #111;outline-offset:3px}
[hidden]{display:none!important}
.site-head{height:72px;border-bottom:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-between;gap:20px;padding-inline:max(24px,calc((100vw - 1192px)/2));font-size:.79rem;letter-spacing:.03em}
.site-head .brand{white-space:nowrap;font-weight:400}.site-nav{display:flex;align-items:center;justify-content:flex-end;gap:clamp(18px,3vw,42px)}.site-nav a{white-space:nowrap}.project-link{display:inline-flex;align-items:center;gap:8px}.project-link svg{display:block;width:17px;height:17px;flex:none}
main{max-width:1240px;margin:auto;padding:0 24px}
.intro{padding:48px 0 35px;border-bottom:1px solid #111}
h1{font-size:clamp(2.1rem,4vw,3.55rem);font-weight:400;letter-spacing:-.07em;line-height:1.08;margin:0}
.workbench{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:36px;padding:36px 0 60px}
.controls,.result{min-width:0}
.section-head{min-height:42px;display:flex;align-items:start;justify-content:space-between;gap:12px;font-size:.75rem;border-bottom:1px solid #111}
.section-head span:last-child{text-align:right;color:#777;font-size:.7rem;white-space:nowrap}
.upload,.make{width:100%;min-height:62px;border:1px solid #111;display:flex;justify-content:space-between;align-items:center;gap:14px;text-align:left;padding:0 17px;font-size:.78rem;margin-top:18px}
.upload{cursor:pointer}.upload:hover,.make:not(:disabled):hover{background:#333;color:#fff}
.source-actions{display:grid;grid-template-columns:1fr;gap:8px;margin-top:16px}.source-actions .upload{min-height:56px;margin:0;font-size:.72rem;padding-inline:16px;white-space:nowrap}.source-actions .upload svg{width:20px;height:20px;display:block;flex:none}.source-actions .choose-artwork{background:#111;color:#fff}.source-actions .choose-artwork:hover{background:#333}
#upload{position:absolute;left:-9999px}
.source-image{width:100%;aspect-ratio:1;margin-top:16px;border:1px solid var(--hairline);display:grid;place-items:center;overflow:hidden;color:#999;font-size:.72rem}
.source-image img{width:100%;height:100%;object-fit:contain}
.source-caption{min-height:48px;border-bottom:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.65rem;line-height:1.35;color:#777}.source-caption span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-caption a{color:#111;white-space:nowrap}
.source-links{flex:none;display:flex;align-items:center;gap:10px}.source-links button{padding:0;border-bottom:1px solid #111;font-size:inherit;white-space:nowrap;color:#111}.source-links button:hover{color:#777}
.spacing{margin-top:32px}
.size-options{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--hairline);margin-top:16px}
.size-options button{min-height:48px;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);font-size:.75rem}
.size-options button:nth-child(3n){border-right:0}.size-options button:nth-last-child(-n+3){border-bottom:0}
.size-options button.selected{background:#111;color:#fff;border-color:#111}
.size-options button:not(.selected):not(:disabled):hover{background:#f4f4f4}
.size-options button:disabled{background:#fafafa}
.make{background:#111;color:#fff;margin-top:16px}.make:disabled{background:#eee;border-color:#eee;color:#555}
.status{color:#777;line-height:1.55;padding-top:13px;font-size:.7rem}.status:empty{display:none}
.viewer{min-width:0;background:#fff;position:relative;margin-top:16px}
.mosaic-frame{width:100%;aspect-ratio:1;border:1px solid var(--hairline);position:relative;overflow:auto;background:#fff;scrollbar-width:none;touch-action:auto}
.mosaic-frame::-webkit-scrollbar{display:none}
.mosaic-stage{min-width:100%;min-height:100%;display:flex;align-items:center;justify-content:center}
.mosaic-frame canvas{display:none;flex:none;max-width:none;image-rendering:pixelated;cursor:crosshair}
.mosaic-frame canvas.reduced{image-rendering:auto}
.mosaic-frame canvas.visible{display:block}.mosaic-frame canvas.zoomed{cursor:grab}.mosaic-frame canvas.dragging{cursor:grabbing}
#empty-state{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#999;font-size:.72rem;white-space:nowrap}
.mosaic-foot{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-height:84px;color:#777;font-size:.7rem}
.viewer-tools{display:flex;align-items:center;gap:20px;padding-top:11px;flex:none}.fullscreen-toggle{display:inline-flex;align-items:center;gap:4px;min-height:32px;font-size:.7rem;line-height:1;white-space:nowrap}.fullscreen-toggle:hover:not(:disabled){text-decoration:underline;text-underline-offset:4px}
.zoom-controls{display:flex;align-items:center;color:#111}.zoom-controls button{width:32px;height:32px;border:1px solid var(--hairline);font-size:1.1rem;line-height:1}.zoom-controls button:hover:not(:disabled){background:#111;color:#fff}.zoom-controls span{min-width:66px;text-align:center;font-size:.72rem}
.viewer.expanded{position:fixed;inset:0;z-index:100;width:100vw;height:100vh;display:flex;flex-direction:column;margin:0;padding:0;background:#fff}
.viewer.expanded .mosaic-frame{flex:1;min-height:0;width:100%;height:auto;aspect-ratio:auto;border:0}
.viewer.expanded .mosaic-foot{flex:none;align-items:center;justify-content:flex-end;padding:0 20px;min-height:56px;border-top:1px solid var(--hairline);border-bottom:0}.viewer.expanded .viewer-tools{padding-top:0}
.viewer-open{overflow:hidden}
.hover-credit{position:absolute;top:16px;left:16px;z-index:2;display:grid;grid-template-columns:72px 1fr;width:230px;min-height:72px;background:#fff;border:1px solid #111;pointer-events:none;font-size:.62rem;color:#777}.hover-credit-art{border-right:1px solid var(--hairline)}.hover-credit-art svg{display:block;width:100%;height:100%;image-rendering:pixelated}.hover-credit-copy{display:flex;flex-direction:column;justify-content:center;gap:8px;padding:8px 12px}.hover-credit-copy strong{font-weight:400;color:#111;font-size:.9rem}
.viewer:not(.expanded) .mosaic-foot{border:1px solid var(--hairline);border-top:0;padding-right:11px}.viewer:not(.expanded) .detail-art{border-width:0 1px 0 0;margin-top:0}
.viewer:not(.expanded) .hover-credit{display:none}.viewer.expanded .credit-readout{display:none}
.credit-readout{display:flex;min-width:0;min-height:84px;flex:1;color:#777}.detail-art{width:84px;height:84px;flex:none;border:1px solid var(--hairline);margin-top:-1px;background:#fff}.detail-art svg{display:block;width:100%;height:100%;image-rendering:pixelated}.detail-copy{display:flex;flex-direction:column;justify-content:flex-start;gap:8px;min-width:0;padding:19px 12px 0;font-size:.7rem}.detail-copy strong{font-weight:400;color:#111;font-size:1rem}
.result-actions{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #111;margin-top:16px}
.result-actions button{min-height:62px;text-align:left;padding:0 14px;font-size:.72rem}.result-actions button+button{border-left:1px solid #111}.result-actions button:hover:not(:disabled){background:#f4f4f4}.result-actions button:first-child{background:#111;color:#fff}.result-actions button:first-child:hover:not(:disabled){background:#333}
footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px;border-top:1px solid #111;padding:28px 0 60px;font-size:.7rem;line-height:1.5;color:#777}
.artwork-dialog{width:min(1000px,calc(100vw - 40px));max-height:min(92vh,1000px);padding:0;border:1px solid #111;background:#fff;color:#111;box-shadow:none;overflow:hidden}.artwork-dialog[open]{display:flex;flex-direction:column}.artwork-dialog::backdrop{background:rgba(0,0,0,.58)}
.dialog-head{min-height:62px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #111;padding:0 22px;font-size:.78rem}.dialog-head button{font-size:1.45rem;line-height:1;width:30px;height:30px;text-align:center}.dialog-head button:hover{color:#777}
.dialog-subhead{display:flex;justify-content:space-between;gap:12px;padding:19px 22px 16px;color:#777;font-size:.68rem}.artwork-filters{display:flex;gap:6px;flex-wrap:wrap;padding:0 22px 20px;border-bottom:1px solid var(--hairline)}.artwork-filters button{min-height:34px;border:1px solid var(--hairline);padding:0 11px;font-size:.68rem}.artwork-filters button.active,.artwork-filters button:hover{background:#111;border-color:#111;color:#fff}
.crop-dialog{width:min(560px,calc(100vw - 24px));max-height:95vh;padding:0;border:1px solid #111;background:#fff;color:#111;box-shadow:none;overflow:auto}.crop-dialog::backdrop{background:rgba(0,0,0,.58)}.crop-workspace{padding:20px;display:grid;place-items:center}.crop-workspace canvas{display:block;width:min(100%,460px);height:auto;aspect-ratio:1;border:1px solid var(--hairline);cursor:grab;touch-action:none}.crop-workspace canvas.dragging{cursor:grabbing}.crop-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px 20px;font-size:.68rem;color:#777}.crop-actions{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #111}.crop-actions button{min-height:62px;padding:0 16px;text-align:left;font-size:.72rem}.crop-actions button+button{border-left:1px solid #111;background:#111;color:#fff}.crop-actions button:hover:not(:disabled){background:#eee}.crop-actions button+button:hover:not(:disabled){background:#333}
.thanks-dialog{width:min(95vw,520px);max-width:none;max-height:90vh;overflow-y:auto;padding:0;border:1px solid #111;border-radius:0;background:#fff;color:#111;box-shadow:0 14px 60px #0002}.thanks-dialog::backdrop{background:#0008}.thanks-dialog .dialog-head{min-height:0;padding:20px 25px;border-bottom:1px solid var(--hairline)}.thanks-dialog .dialog-head button{font-size:1.5rem}.thanks-dialog [data-dialog-title]:focus{outline:none}.thanks-dialog h2{margin:0;padding:34px 25px 25px;font-size:1.9rem;font-weight:400;letter-spacing:-.055em}.thanks-instructions{border-top:1px solid var(--hairline);padding:21px 25px 24px}.thanks-instructions span{font-size:.7rem;color:#777}.thanks-instructions p{font-size:.83rem;line-height:1.6;margin:9px 0 0}.thanks-tip{margin:0;border-top:1px solid var(--hairline);padding:19px 25px 25px;font-size:.8rem;line-height:1.6}.thanks-tip strong{font-weight:600}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--hairline);font-size:.78rem}.dialog-actions>*{min-height:68px;display:grid;place-items:center;text-align:center}.dialog-actions>*:first-child{border-right:1px solid var(--hairline)}.dialog-actions>*:hover{background:#f4f4f4;text-decoration:none}.crypto-copy{display:block;width:100%;min-height:46px;border-top:1px solid var(--hairline);font-size:.7rem;color:#666;letter-spacing:.02em}.crypto-copy:hover{background:#f4f4f4}
.artwork-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;min-height:0;overflow:auto;align-content:start}.artwork-card{display:block;width:100%;text-align:left;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);padding:16px}.artwork-card:nth-child(4n){border-right:0}.artwork-card:hover,.artwork-card.selected{background:#f3f3f3}.artwork-card.selected .artwork-thumb{outline:2px solid #111;outline-offset:2px}.artwork-thumb{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:#eee}.artwork-title{display:block;margin-top:12px;font-size:.74rem;line-height:1.3}.artwork-artist{display:block;margin-top:5px;font-size:.66rem;color:#777;line-height:1.3}.dialog-foot{padding:17px 22px;font-size:.65rem;color:#777;flex:none}
@media(max-width:850px){.workbench{grid-template-columns:1fr;gap:34px}.controls{max-width:560px}.intro{padding:38px 0 30px}}
@media(max-width:650px){.site-head{height:auto;display:grid;grid-template-columns:1fr;padding:0 20px;font-size:.68rem;gap:0}.site-head .brand{display:flex;align-items:center;min-height:58px}.site-nav{border-top:1px solid var(--hairline);min-height:44px;justify-content:space-between;gap:10px;font-size:.63rem}.project-link{gap:5px}.project-link svg{width:15px;height:15px}main{padding:0 20px}.intro{padding:34px 0 25px}.workbench{padding:25px 0 42px}.section-head{font-size:.7rem}.result-actions{grid-template-columns:1fr 1fr}.result-actions button:first-child{grid-column:1/-1;border-bottom:1px solid #111}.result-actions button:nth-child(2){border-left:0}footer{flex-direction:column;gap:10px;padding-bottom:45px;font-size:.65rem}.viewer-tools{gap:8px}.fullscreen-toggle{font-size:.62rem}.zoom-controls span{min-width:46px}.artwork-dialog{width:calc(100vw - 20px);max-height:94vh}.artwork-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.artwork-card:nth-child(4n){border-right:1px solid var(--hairline)}.artwork-card:nth-child(2n){border-right:0}.artwork-card{padding:11px}.dialog-head,.dialog-subhead,.dialog-foot{padding-inline:15px}.thanks-dialog .dialog-head{padding-inline:20px}.thanks-dialog h2{font-size:1.7rem;padding:28px 20px 22px}.thanks-instructions,.thanks-tip{padding-inline:20px}.artwork-filters{padding-inline:15px}.dialog-subhead{font-size:.6rem}}
@media(max-width:360px){.site-head{padding:0 16px;font-size:.64rem}.site-nav{font-size:.58rem;gap:6px}main{padding:0 16px}.section-head span:last-child{font-size:.6rem}.size-options button{font-size:.67rem}.result-actions button{font-size:.65rem}}
@media(max-width:650px){.mosaic-foot{min-height:68px;gap:4px}.credit-readout{min-height:68px}.detail-art{width:68px;height:68px}.detail-copy{gap:6px;padding:13px 7px 0;font-size:.62rem}.detail-copy strong{font-size:.84rem}.viewer-tools{gap:5px;padding-top:8px}.fullscreen-toggle{min-height:28px}.zoom-controls button{width:28px;height:28px}.zoom-controls span{min-width:38px;font-size:.65rem}}
@media(max-width:380px){.mosaic-foot,.credit-readout{min-height:62px}.detail-art{width:62px;height:62px}.detail-copy{padding:10px 5px 0}.fullscreen-toggle{width:24px;justify-content:center}.fullscreen-toggle .view-label{display:none}.zoom-controls span{min-width:34px}}

/* Image | GIF switch, centered in the header */
.site-head{display:grid;grid-template-columns:1fr auto 1fr}
.site-nav{justify-self:end}
.mode-toggle{display:flex;height:34px;border:1px solid #111}
.mode-toggle a{display:inline-flex;align-items:center;gap:7px;padding:0 13px;font-size:.7rem;white-space:nowrap}
.mode-toggle a+a{border-left:1px solid #111}
.mode-toggle a[aria-current=page]{background:#111;color:#fff}
.mode-toggle a:not([aria-current]):hover{background:#f4f4f4}
.mode-toggle svg{display:block;width:15px;height:15px;flex:none}
@media(max-width:650px){.site-head{grid-template-columns:1fr auto;align-items:center}.site-nav{grid-column:1/-1;justify-self:stretch}.mode-toggle{height:30px}.mode-toggle a{gap:5px;padding:0 9px;font-size:.6rem}.mode-toggle svg{width:13px;height:13px}}
