:root { font-family: system-ui, sans-serif; color: #111827; background: #f8fafc; } body { margin: 0; } main { display: grid; justify-items: center; gap: 24px; min-height: 100dvh; padding: 48px 16px; box-sizing: border-box; } .avatar-host { width: min(100%, 360px); min-height: 280px; display: grid; place-items: center; border: 1px solid #cbd5e1; border-radius: 24px; background: white; } .avatar-overlay { position: fixed; right: 24px; bottom: 24px; z-index: 10; width: 128px; height: 128px; } .expression-picker { width: min(100%, 720px); } .expression-picker__heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; } .expression-picker h2 { margin: 0; font-size: 1.125rem; } .expression-picker output { color: #475569; } .expression-picker__list { display: grid; grid-template-areas: 'up-left up-center up-right' 'middle-left middle-center middle-right' 'down-left down-center down-right'; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: 1fr 3fr 1fr; align-items: center; aspect-ratio: 1; min-height: 640px; gap: 12px; margin-top: 16px; padding: 32px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 50%; background: radial-gradient(circle, #ffffff 0 28%, #eef2ff 28.25% 100%); } .expression-picker__group { min-width: 0; } .expression-picker__group h3 { margin: 0 0 8px; color: #475569; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-align: center; text-transform: uppercase; } .expression-picker__group--up-left { grid-area: up-left; } .expression-picker__group--up-center { grid-area: up-center; } .expression-picker__group--up-right { grid-area: up-right; } .expression-picker__group--middle-left { grid-area: middle-left; } .expression-picker__group--middle-center { grid-area: middle-center; padding: 16px; border-radius: 24px; background: white; box-shadow: 0 8px 24px rgb(15 23 42 / 8%); } .expression-picker__group--middle-center .expression-picker__group-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } .expression-picker__group--middle-right { grid-area: middle-right; } .expression-picker__group--down-left { grid-area: down-left; } .expression-picker__group--down-center { grid-area: down-center; } .expression-picker__group--down-right { grid-area: down-right; } .expression-picker__group-list { display: grid; gap: 8px; } .expression-picker__group button { width: 100%; min-height: 52px; padding: 8px 12px; border: 1px solid #cbd5e1; border-radius: 12px; color: #1e293b; background: white; font-size: 0.875rem; font-weight: 600; line-height: 1.25; transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease, transform 160ms ease; } .expression-picker__group button:hover { border-color: #818cf8; background: #eef2ff; } .expression-picker__group button:active { transform: scale(0.98); } button { min-height: 44px; padding: 0 20px; border: 0; border-radius: 999px; color: white; background: #4338ca; font: inherit; cursor: pointer; } button.is-selected { border-color: #312e81; background: #312e81; color: white; box-shadow: 0 0 0 3px #c7d2fe; } button:focus-visible { outline: 3px solid #4338ca; outline-offset: 3px; } @media (max-width: 640px) { .expression-picker__heading { align-items: flex-start; flex-direction: column; gap: 4px; } .expression-picker__list { grid-template-areas: none; grid-template-columns: 1fr; grid-template-rows: none; aspect-ratio: auto; min-height: 0; gap: 20px; padding: 0; border: 0; border-radius: 0; background: none; } .expression-picker__group { grid-area: auto; } .expression-picker__group--middle-center { padding: 0; border-radius: 0; background: none; box-shadow: none; } }