:root { color-scheme: light; font-family: Arial, Helvetica, sans-serif; background: #f4f6f8; color: #1d252d; } * { box-sizing: border-box; } html, body { width: 100%; min-height: 100%; margin: 0; } .graphic-document { width: 100%; height: 100%; background: var(--chroma); } .graphic-document.transparent { background: transparent; } .app { display: grid; min-height: 100vh; place-items: center; padding: 32px; } .shell { width: min(920px, 100%); } .panel { display: grid; gap: 20px; padding: 28px; border: 1px solid #d9e0e7; border-radius: 8px; background: #fff; box-shadow: 0 14px 38px rgb(18 28 45 / 10%); } h1, p { margin: 0; } h1 { font-size: 28px; line-height: 1.15; } form { display: grid; gap: 14px; } label { display: grid; gap: 6px; font-size: 13px; font-weight: 700; } .row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; } input, select, textarea, button { min-height: 42px; border: 1px solid #c8d2dc; border-radius: 6px; font: inherit; } input, select, textarea { width: 100%; padding: 0 12px; background: #fff; } textarea { min-height: 128px; padding-block: 10px; resize: vertical; } button { padding: 0 18px; border-color: #153f66; background: #153f66; color: #fff; font-weight: 700; cursor: pointer; } .controls { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 10px; align-items: end; } .collage-form { padding-top: 20px; border-top: 1px solid #d9e0e7; } .collage-controls { grid-template-columns: repeat(7, minmax(0, 1fr)); } .checkbox-label { display: flex; min-height: 42px; align-items: center; gap: 8px; } .controls input[type="checkbox"] { width: 16px; min-height: 16px; } code { font-family: "Cascadia Mono", Consolas, monospace; } .graphic { width: 100vw; height: 100vh; overflow: hidden; background: var(--chroma); } .graphic.transparent { background: transparent; } .graphic.is-loading .stage { opacity: 0; } .graphic.is-ready .stage { opacity: 1; } .stage { position: relative; display: grid; width: min(100vw, var(--stage-width)); height: min(100vh, var(--stage-height)); margin: 0 auto; place-items: center; overflow: hidden; opacity: 1; transition: opacity 120ms linear; } .embed { display: grid; width: var(--embed-width, auto); height: var(--embed-height, auto); max-width: 92%; max-height: 92%; place-items: center; transform: scale(var(--scale)); transform-origin: center; } .embed > iframe, .embed > blockquote, .embed > img, .embed > video { display: block; max-width: 100%; max-height: 100%; border: 0; } .fit-cover .embed > iframe, .fit-cover .embed > img, .fit-cover .embed > video { width: 100vw; height: 100vh; object-fit: cover; } .collage-page { background: var(--chroma); } .collage-page.transparent { background: transparent; } .collage-stage { width: min(100vw, var(--stage-width)); height: min(100vh, var(--stage-height)); overflow: hidden; display: grid; justify-items: center; padding: var(--collage-spacing); -webkit-mask-image: linear-gradient( to bottom, transparent 0, #000 var(--collage-fade), #000 calc(100% - var(--collage-fade)), transparent 100% ); mask-image: linear-gradient( to bottom, transparent 0, #000 var(--collage-fade), #000 calc(100% - var(--collage-fade)), transparent 100% ); } .collage-track { display: flex; flex-direction: column; width: max-content; align-items: stretch; gap: var(--collage-spacing); animation: collage-scroll var(--collage-duration) linear infinite; will-change: transform; } .collage-group { display: grid; grid-template-columns: repeat(var(--collage-columns), minmax(0, var(--collage-card-width))); gap: var(--collage-spacing); } .collage-card { align-self: start; width: 100%; height: auto; max-width: var(--collage-card-width); overflow: hidden; transform: none; } .collage-card > iframe, .collage-card > blockquote, .collage-card > img, .collage-card > video { width: 100% !important; max-width: 100% !important; } .collage-card iframe, .collage-card blockquote, .collage-card img, .collage-card video, .collage-card twitter-widget, .collage-card .twitter-tweet, .collage-card .bluesky-embed { width: 100% !important; max-width: 100% !important; box-sizing: border-box; } @keyframes collage-scroll { from { transform: translateY(0); } to { transform: translateY(calc(-50% - (var(--collage-spacing) / 2))); } } .error { border-color: #d77; } @media (max-width: 720px) { .app { padding: 16px; } .row, .controls { grid-template-columns: 1fr; } }