Source
This app’s code and revision history are public. Download a copy or explore the files below.
Public
The app’s code and revision history are public.
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 4ce232ee856d7de1ba5f2b6d
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
src/styles.css
/* Bio. Shared look comes from /kit.css; this is the app's own layout and the page themes. */
body.app-mode .landing-only { display: none !important; }
body:not(.app-mode) #app:empty { display: none; }
.page-pad { padding-block: 56px 80px; }
.narrow { max-width: 640px; }
.small { font-size: 14px; }
.count { font: 500 13px/1 var(--sans); color: var(--faint); letter-spacing: 0; }
:where(.empty-state, .error-state) > h1 { font: var(--type-title); letter-spacing: -.02em; color: var(--ink-solid); text-wrap: balance; }
:where(.error-state) > h1 { color: #7c2f1d; }
/* Landing hero: claim form on the left, an example page on the right */
.app-hero { padding: 48px 0 72px; background: var(--paper-warm); border-bottom: 1px solid #ece2cf; }
.app-hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 72px; align-items: center; }
.app-hero h1 { margin-top: 14px; }
.app-hero .lede { margin-top: 18px; }
.hero-points { list-style: none; padding: 0; margin-top: 26px; display: grid; gap: 10px; font-size: 15.5px; color: #3c4048; }
.hero-points li { display: flex; gap: 10px; align-items: baseline; }
.hero-points li::before { content: ""; flex: 0 0 8px; height: 8px; border-radius: 50%; background: var(--cobalt); transform: translateY(-2px); }
.hero-art { width: 200px; height: auto; margin-bottom: -8px; }
.hero-demo { display: flex; justify-content: center; }
@media (max-width: 900px) {
.app-hero { padding: 28px 0 48px; }
.app-hero-grid { grid-template-columns: minmax(0, 1fr); gap: 36px; }
.hero-art { width: 120px; margin-bottom: -4px; }
.hero-points { display: none; }
}
#claim { min-height: 87px; margin-top: 28px; } /* the form's height, so nothing moves when it mounts */
.claim { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; max-width: 580px; }
.claim-row { display: flex; gap: 10px; }
.prefix-input { display: flex; min-width: 0; align-items: center; border: 1px solid var(--line-strong); border-radius: var(--radius); background: #fff; transition: border-color var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out); }
@media (hover: hover) { .prefix-input:hover { border-color: #b5bdc8; } }
.prefix-input:focus-within { border-color: var(--cobalt); box-shadow: 0 0 0 3px #2e5ec41f; }
.prefix-input span { flex: 0 1 auto; min-width: 0; padding-left: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 15px; }
.prefix-input input { flex: 1 0 96px; min-width: 96px; height: 52px; padding: 0 14px 0 1px; border: 0; outline: 0; background: transparent; font-size: 16.5px; font-weight: 600; color: var(--ink-solid); }
.prefix-input input::placeholder { color: #9a9ea6; font-weight: 400; }
.claim-input { flex: 1; min-height: 54px; }
.claim-status { min-height: 1.5em; font-size: 14px; color: var(--muted); }
.claim-status.good { color: #2f5a3c; }
.claim-status.bad { color: var(--brick); }
@media (max-width: 560px) {
#claim { min-height: 151px; }
.claim-row { flex-direction: column; }
.claim-row .btn { width: 100%; }
}
/* A phone frame around a page: the landing example and the editor preview */
.phone { width: 320px; max-width: 100%; height: 640px; padding: 10px; border-radius: 46px; background: #15171b; box-shadow: 0 30px 60px -32px #1a1d2470, var(--shadow); }
.phone-screen { display: flex; flex-direction: column; height: 100%; overflow: hidden auto; border-radius: 36px; scrollbar-width: none; overscroll-behavior: contain; }
.phone-screen.skeleton { border-radius: 36px; }
.phone-screen::-webkit-scrollbar { display: none; }
.phone-screen > .bp { flex: 1 0 auto; }
.phone-screen .bp-inner { padding: 44px 18px 22px; }
.phone-demo .phone-screen { overflow: hidden; }
@media (max-width: 900px) { .phone-demo { height: 560px; } }
/* A Bio page. Themes only set colors; the layout is the same for all. */
.bp { --bg: #f8f3ea; --fg: #15171b; --muted: #5d6169; --btn: #0b0b0c; --btn-fg: #fff; --soft: #e9dfcc; --hover: #0000000d;
display: flex; flex-direction: column; background: var(--bg); color: var(--fg); font: 400 16px/1.5 var(--sans); }
.bp-ink { --bg: #fdfdfc; --soft: #eceef1; }
.bp-cobalt { --bg: #e9effa; --muted: #4a5468; --btn: #2e5ec4; --soft: #d0dcf3; }
.bp-sage { --bg: #e8f1ea; --muted: #4e5a52; --btn: #2f5a3c; --soft: #cfe1d3; }
.bp-night { --bg: #16181d; --fg: #eef0f3; --muted: #a3a8b2; --btn: #eef0f3; --btn-fg: #16181d; --soft: #2c3038; --hover: #ffffff14; }
.bp-inner { flex: 1; display: flex; flex-direction: column; align-items: center; width: min(560px, 100%); margin: 0 auto; padding: calc(64px + var(--safe-top)) max(20px, var(--safe-right)) calc(28px + var(--safe-bottom)) max(20px, var(--safe-left)); text-align: center; }
.bp-avatar { flex: none; width: 96px; height: 96px; border-radius: 50%; object-fit: cover; }
.bp-initial { display: grid; place-items: center; background: var(--soft); color: var(--fg); font: 400 42px/1 var(--serif); }
.bp-name { margin-top: 18px; font: 400 clamp(26px, 6vw, 32px)/1.15 var(--serif); letter-spacing: -.02em; overflow-wrap: anywhere; }
.bp-bio { max-width: 40ch; margin-top: 8px; color: var(--muted); overflow-wrap: anywhere; text-wrap: pretty; }
.bp-socials { display: flex; flex-wrap: wrap; justify-content: center; gap: 2px; margin-top: 14px; padding: 0; list-style: none; }
.bp-socials a { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; color: var(--fg); transition: background-color var(--motion-fast) var(--ease-out); }
@media (hover: hover) { .bp-socials a:hover { background: var(--hover); color: var(--fg); } }
.bp-socials svg { width: 22px; height: 22px; }
.bp-links { display: grid; gap: 12px; width: 100%; margin-top: 24px; padding: 0; list-style: none; }
.bp-link { display: flex; align-items: center; justify-content: center; min-height: 58px; padding: 14px 22px; border: 1.5px solid var(--btn); border-radius: 14px; background: var(--btn); color: var(--btn-fg); font: 600 15.5px/1.35 var(--sans); overflow-wrap: anywhere; transition: transform var(--motion-fast) var(--ease-out), background-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out); }
.bp-link:hover { color: var(--btn-fg); }
.bp-link:active { transform: scale(.985); }
@media (hover: hover) {
.bp-link:hover { transform: translateY(-1px); }
.bp-outline .bp-link:hover { background: var(--btn); color: var(--btn-fg); }
}
.bp-outline .bp-link { background: transparent; color: var(--btn); }
.bp-head { margin-top: 12px; }
.bp-head:first-child { margin-top: 0; }
.bp-head h2 { font: 600 15px/1.35 var(--sans); color: var(--fg); overflow-wrap: anywhere; }
.bp-hint { width: 100%; margin-top: 24px; padding: 22px 16px; border: 1.5px dashed currentColor; border-radius: 14px; color: var(--muted); font-size: 14.5px; }
.bp-credit { margin-top: auto; padding-top: 44px; font-size: 13px; color: var(--muted); }
.bp-credit a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.bp-host { margin-bottom: 4px; font-size: 14.5px; color: var(--muted); overflow-wrap: anywhere; }
.bp-host strong { color: var(--fg); }
.bp-message { justify-content: center; padding-bottom: 96px; }
.bp-message .bp-name { font-size: clamp(30px, 7vw, 40px); }
#page > .bp { min-height: 100vh; min-height: 100dvh; animation: oa-fade-in var(--motion) var(--ease-out); }
/* Your pages */
#mine:empty { display: none; }
.page-list { list-style: none; padding: 0; margin-top: 18px; border: 1px solid var(--line); border-radius: 14px; background: #fff; overflow: hidden; }
.page-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; gap: 14px; align-items: center; padding: 12px 16px; }
.page-row + .page-row { border-top: 1px solid var(--line); }
.row-avatar, .ed-photo-img { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: 50%; overflow: hidden; background: var(--paper-deep); color: var(--ink); font: 400 19px/1 var(--serif); }
.row-avatar img, .ed-photo-img img { width: 100%; height: 100%; object-fit: cover; }
.page-main { display: grid; gap: 2px; min-width: 0; }
.page-name { color: var(--ink-solid); font: 600 15.5px/1.3 var(--sans); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.page-host { font-size: 13.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.page-views { font-size: 14px; color: var(--muted); white-space: nowrap; }
.page-views strong { color: var(--ink); }
.page-actions { display: inline-flex; gap: 6px; }
@media (max-width: 640px) {
.page-row { grid-template-columns: auto minmax(0, 1fr) auto; gap: 8px 12px; }
.page-actions { grid-column: 1 / -1; }
.page-actions .btn { flex: 1; }
}
/* Landing sections */
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 28px; padding: 0; counter-reset: step; }
.steps li { list-style: none; counter-increment: step; }
.steps li::before { content: counter(step); display: grid; place-items: center; width: 34px; height: 34px; margin-bottom: 14px; border-radius: 50%; background: var(--ink-solid); color: #fff; font: 650 15px var(--sans); }
.steps h3 { font: 600 18px/1.3 var(--sans); }
.steps p { margin-top: 8px; color: #4a4e56; }
@media (max-width: 760px) { .steps { grid-template-columns: 1fr; } }
.features { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 28px; padding: 0; list-style: none; }
.features li { padding: 18px 20px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.features h3 { font: 600 16.5px/1.3 var(--sans); }
.features p { margin-top: 6px; font-size: 15px; color: #4a4e56; }
@media (max-width: 900px) { .features { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .features { grid-template-columns: minmax(0, 1fr); } }
.api-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 40px; align-items: start; }
.api-grid .code { font-size: 12.5px; }
@media (max-width: 900px) { .api-grid { grid-template-columns: minmax(0, 1fr); } }
.more-apps { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; list-style: none; padding: 0; margin-top: 22px; }
.more-apps a { display: grid; gap: 4px; padding: 16px 18px; border: 1px solid var(--line); border-radius: 14px; background: #fff; color: var(--ink); transition: border-color var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out); }
@media (hover: hover) { .more-apps a:hover { border-color: var(--line-strong); box-shadow: var(--shadow); color: var(--ink); } }
.more-apps strong { font: 400 22px/1.1 var(--serif); }
.more-apps span { color: var(--muted); font-size: 14px; }
.compare td:first-child { font-weight: 600; }
.compare { min-width: 560px; }
@media (max-width: 600px) {
.compare { min-width: 0; font-size: 14px; }
.compare th, .compare td { padding: 12px 10px; }
.compare td:first-child { width: 32%; }
}
/* Editor: header */
.ed-head { border-bottom: 1px solid #ece2cf; background: var(--paper-warm); }
.ed-head-inner { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: end; gap: 16px 36px; padding: 28px 0 24px; }
.ed-head-main { min-width: 0; }
.ed-title { margin-top: 10px; font: 360 clamp(28px, 3.6vw, 42px)/1.1 var(--serif); letter-spacing: -.025em; overflow-wrap: anywhere; }
.ed-title a { color: var(--ink-solid); }
.ed-title a:hover { color: var(--cobalt-ink); }
.ed-host { display: block; margin-bottom: 2px; font: 500 14px/1.3 var(--sans); letter-spacing: 0; color: var(--muted); }
.ed-stats { display: flex; gap: 28px; margin: 0; }
.ed-stats dt { font: var(--type-caps); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.ed-stats dd { margin: 8px 0 0; font: 360 34px/1 var(--serif); letter-spacing: -.02em; color: var(--ink-solid); font-variant-numeric: tabular-nums; }
.ed-stat-wait { display: inline-block; width: 1.4em; height: .9em; vertical-align: baseline; }
.ed-head-actions { display: flex; gap: 8px; }
.ed-head-actions .btn:disabled { opacity: 1; } /* only while the page opens, for a moment: no grey flash */
.ed-tabs { display: none; }
/* Editor: body */
.ed-body { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 48px; align-items: start; padding-top: 28px; padding-bottom: 120px; }
.ed-form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; min-width: 0; }
.ed-card { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; padding: 22px; }
.ed-card .h3 { display: flex; align-items: baseline; gap: 10px; }
.ed-card-head { flex-wrap: nowrap; }
.ed-card-hint { margin-top: -8px; }
.ed-photo { display: flex; align-items: center; gap: 16px; }
.ed-photo .ed-photo-img { width: 76px; height: 76px; font-size: 32px; }
.ed-photo-side { display: grid; gap: 8px; min-width: 0; }
.file-btn { position: relative; }
.file-btn input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.file-btn:focus-within { outline: 2px solid var(--cobalt); outline-offset: 3px; }
.ed-bio { min-height: 0; resize: none; }
.icon-btn { display: grid; place-items: center; flex: none; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 8px; background: transparent; color: var(--muted); cursor: pointer; transition: background-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out); }
@media (hover: hover) { .icon-btn:hover:not(:disabled) { background: #0000000a; color: var(--ink-solid); } }
.icon-btn:disabled { opacity: .3; cursor: default; }
@media (pointer: coarse) { .icon-btn { width: 44px; height: 44px; } }
/* Editor: links */
.ed-add { display: flex; gap: 8px; }
.ed-empty { padding: 28px 20px; }
.ed-empty h3 { font-size: 22px; }
.ed-links { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin: 0; padding: 0; list-style: none; }
.ed-links:empty { display: none; }
.ed-link { display: grid; grid-template-columns: 32px minmax(0, 1fr); grid-template-areas: "grip fields" "grip foot"; column-gap: 8px; padding: 10px 10px 4px 4px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); }
.ed-link.is-header { background: var(--paper-warm); border-color: #ece2cf; }
.ed-link.has-problem { border-color: #e6b9ab; }
.ed-link.is-dragging { position: relative; z-index: 2; background: #fff; box-shadow: var(--shadow-pop); }
.ed-links.is-sorting > .ed-link:not(.is-dragging) { transition: transform var(--motion-fast) var(--ease-out); }
.ed-grip { grid-area: grip; display: grid; place-items: center; width: 32px; min-height: 44px; padding: 0; border: 0; border-radius: 8px; background: none; color: var(--faint); cursor: grab; touch-action: none; transition: color var(--motion-fast) var(--ease-out), background-color var(--motion-fast) var(--ease-out); }
.ed-grip:active, .is-dragging .ed-grip { color: var(--ink-solid); cursor: grabbing; }
@media (hover: hover) { .ed-grip:hover { background: #0000000a; color: var(--ink-solid); } }
.ed-link-fields { grid-area: fields; display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; min-width: 0; transition: opacity var(--motion-fast) var(--ease-out); }
.ed-link-title { font-weight: 600; }
.ed-link-url { min-height: 42px; padding-block: 9px; color: #4a4e56; }
.ed-link.is-hidden .ed-link-fields { opacity: .5; }
.ed-link-foot { grid-area: foot; display: flex; align-items: center; gap: 2px; min-height: 44px; }
.ed-link-note { margin-right: auto; font-size: 13px; color: var(--muted); white-space: nowrap; }
.switch { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 8px; font: var(--type-label); color: var(--muted); cursor: pointer; }
.switch input { appearance: none; -webkit-appearance: none; position: relative; flex: none; width: 36px; height: 22px; margin: 0; border-radius: 999px; background: var(--line-strong); cursor: pointer; transition: background-color var(--motion-fast) var(--ease-out); }
.switch input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px #0000002e; transition: transform var(--motion-fast) var(--ease-out); }
.switch input:checked { background: var(--ink-solid); }
.switch input:checked::after { transform: translateX(14px); }
.switch input:focus-visible { outline: 2px solid var(--cobalt); outline-offset: 3px; }
@media (pointer: coarse) { .switch { min-height: 44px; } }
/* Editor: social icons */
.ed-socials { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; align-items: start; }
.ed-social { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; gap: 8px; align-items: start; }
.ed-social-icon { display: grid; place-items: center; height: 46px; margin-top: 23px; color: var(--ink); }
.ed-social-icon svg, .ed-menu-icon svg { width: 22px; height: 22px; }
.ed-social .icon-btn { margin-top: 26px; }
@media (pointer: coarse) { .ed-social .icon-btn { margin-top: 24px; } }
.ed-social-menu { max-height: min(360px, 60vh); overflow-y: auto; overscroll-behavior: contain; }
.ed-menu-icon { display: grid; place-items: center; width: 22px; color: var(--ink); }
/* Editor: look */
.themes { display: grid; grid-template-columns: repeat(5, minmax(0, 76px)); gap: 12px; }
.theme-swatch { display: grid; gap: 7px; justify-items: center; padding: 0; border: 0; background: none; color: var(--ink); font: 600 13px/1.2 var(--sans); cursor: pointer; }
.sw-card { display: grid; align-content: center; justify-items: center; gap: 5px; width: 100%; aspect-ratio: 3 / 4; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 12px; transition: box-shadow var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out); }
.sw-card i { display: block; width: 100%; height: 7px; border-radius: 3px; background: var(--sw-btn); }
.sw-card i:first-child { width: 14px; height: 14px; margin-bottom: 3px; border-radius: 50%; opacity: .35; }
.sw-paper, .sw-ink { --sw-btn: #0b0b0c; }
.sw-cobalt { --sw-btn: #2e5ec4; }
.sw-sage { --sw-btn: #2f5a3c; }
.sw-night { --sw-btn: #eef0f3; }
@media (hover: hover) { .theme-swatch:hover .sw-card { border-color: #b5bdc8; } }
.theme-swatch[aria-checked="true"] .sw-card { border-color: transparent; box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--ink-solid); }
.seg { display: inline-flex; gap: 3px; width: max-content; max-width: 100%; padding: 3px; border: 1px solid var(--line-strong); border-radius: 12px; background: #fff; }
.seg button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 40px; padding: 0 16px; border: 0; border-radius: 9px; background: transparent; color: var(--muted); font: var(--type-control); cursor: pointer; transition: background-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out); }
@media (hover: hover) { .seg button:hover { color: var(--ink-solid); } }
.seg button[aria-checked="true"], .seg button[aria-selected="true"] { background: var(--ink-solid); color: #fff; }
@media (pointer: coarse) { .seg button { min-height: 44px; } }
.seg-sample { width: 24px; height: 12px; border: 1.5px solid currentColor; border-radius: 4px; }
.seg-filled { background: currentColor; }
/* Editor: edit link, preview, save bar */
.ed-key { display: grid; grid-template-columns: minmax(0, 1fr); justify-items: start; gap: 10px; padding: 20px 22px; }
.ed-key p { font-size: 14.5px; color: #3a3e46; }
.ed-preview { position: sticky; top: calc(88px + var(--safe-top)); display: grid; gap: 12px; justify-items: center; }
.ed-preview .phone { height: min(680px, calc(100vh - 150px)); min-height: 480px; }
.savebar { position: fixed; inset: auto 0 0; z-index: 30; padding-bottom: var(--safe-bottom); border-top: 1px solid var(--line); background: #fdfdfcf2; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); animation: ed-bar-in var(--motion) var(--ease-out); }
.savebar.leaving { animation: ed-bar-out var(--motion-fast) var(--ease-in) forwards; }
@keyframes ed-bar-in { from { transform: translateY(100%); } }
@keyframes ed-bar-out { to { transform: translateY(100%); } }
.savebar-inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 70px; }
.savebar-inner > span { font-weight: 600; }
body:has(.savebar) .toast { bottom: calc(90px + var(--safe-bottom)); }
/* Share dialog */
.share-url { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 6px 6px 14px; border: 1px solid var(--line-strong); border-radius: var(--radius); background: var(--paper); }
.share-url span { min-width: 0; font-size: 15px; color: var(--muted); overflow-wrap: anywhere; }
.share-url strong { color: var(--ink-solid); font-weight: 600; }
.share-qr { justify-self: center; width: 208px; padding: 4px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.share-qr svg { width: 100%; height: auto; }
.share-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.share-actions .btn { flex: 1 1 180px; }
@media (max-width: 900px) {
.ed-head-inner { grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 14px 16px; padding: 18px 0 16px; }
.ed-title { font-size: 28px; }
.ed-stats { gap: 18px; }
.ed-stats dd { margin-top: 6px; font-size: 26px; }
.ed-head-actions { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; }
.ed-tabs { position: sticky; top: calc(64px + var(--safe-top)); z-index: 10; display: block; padding-block: 10px; border-bottom: 1px solid var(--line); background: #fdfdfcf2; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.ed-tabs .seg { display: flex; width: 100%; }
.ed-tabs .seg button { flex: 1; }
.ed-body { grid-template-columns: minmax(0, 1fr); padding-top: 16px; }
.tab-edit .ed-preview, .tab-preview .ed-form { display: none; }
.tab-edit .ed-form, .tab-preview .ed-preview { animation: oa-fade-in var(--motion) var(--ease-out); }
.ed-preview { position: static; }
.ed-preview .phone { width: 100%; max-width: 420px; height: auto; min-height: 0; padding: 0; border: 1px solid var(--line); border-radius: 22px; background: none; box-shadow: var(--shadow); overflow: hidden; }
.ed-preview .phone-screen { height: auto; min-height: 620px; border-radius: 0; }
}
@media (max-width: 560px) {
.ed-card { padding: 18px 14px; }
.ed-card-head { flex-wrap: wrap; }
.ed-add { width: 100%; }
.ed-add .btn { flex: 1; min-height: 44px; }
.ed-socials { grid-template-columns: minmax(0, 1fr); }
.themes { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.sw-card { padding: 0 8px; }
.ed-key { padding: 18px 16px; }
/* Buttons on the left: the OpenApps badge sits at the bottom right. */
.savebar-inner { justify-content: flex-start; }
.savebar-inner > span { display: none; }
.savebar-inner > .row { flex-direction: row-reverse; }
}
Change history
Quality pass: reorder, hide links, headers, QR share, 15 social icons, API docs
Bounded source sync
Bounded source sync
Bounded source sync
Bounded source sync
Bounded source sync
Bounded source sync