카드와 버튼, 차트가 모두 갖춰진 인터페이스도 자세히 보면 신경 쓰이는 부분이 남아 있다. 패널 테두리가 지나치게 무겁거나, 이미지 가장자리가 갑자기 사라지거나, 숫자가 바뀔 때 옆 글자를 밀어내거나, 메뉴가 이전 동작을 계속 재생하는 식이다. 여기서 말하는 ‘AI 같은 인상’은 아직 다듬지 못한 이런 관계에 있다.

나는 깨끗한 흰색을 바탕으로, 가까이 봐야 층이 드러나는 절제된 인터페이스를 좋아한다. 윤곽은 알아볼 수 있고 그림자는 표면에 가깝게 붙어 있어야 한다. 글자와 아이콘, 여백에는 공통된 리듬이 있고, 조작 피드백도 손의 움직임을 따라와야 한다. 이 선택들이 함께 성립할 때 섬세함이 생긴다.

아래에서는 직접 만든 예시로 하나씩 나누어 본다. 회백색은 이 시편의 배색이며 수치도 이번 선택에 한정된다. 도해의 치수는 원래 CSS 픽셀을 기준으로 하고 부분 확대에는 배율을 따로 적었다. 이미지를 누르면 전체 출력을 볼 수 있지만, 선과 글자의 무게를 판단할 때는 실제 표시 크기로 돌아와야 한다.

경계와 두께

같은 윤곽을 더 가늘게

내가 가장 신경 쓰는 것은 패널이 어디서 시작하는지 보이면서도 가장자리가 딱딱한 틀처럼 느껴지지 않는 것이다. 이 시편은 바깥 윤곽을 ring에 맡긴다. 흐림이 없는 바깥 그림자로 표면을 한 바퀴 두르고, 깊이는 다른 그림자로 표현한다. 또렷한 가장자리는 유지하면서 폭과 불투명도를 따로 조정할 수 있고 레이아웃 공간도 차지하지 않는다.

여기서 hairline은 같은 ring을 가늘게 만드는 것을 뜻한다. 첫 도해는 확산값(spread)만 1 px에서 0.5 px로 바꾼다. 어두운 색, 12% 불투명도, 바탕색과 크기는 그대로 두고 깊이 그림자도 넣지 않았다. 폭이 절반으로 줄어들면 윤곽의 시각적 무게도 줄어든다.

크기와 바탕색이 같은 흰 카드 두 장. 왼쪽 ring은 1 px, 오른쪽은 0.5 px이며 불투명도는 모두 12%다. 깊이 그림자는 없다.
Ring의 폭만 바꿨다. Hairline은 같은 윤곽을 가늘게 만들며 선을 한 겹 더 얹지 않는다.

가늘게 만든 뒤, 선명도를 결정하기

선을 가늘게 만든 다음에는 불투명도를 조금 높여 식별성을 보완할 수 있다. 두 번째 도해는 0.5 px를 고정하고 12%와 18%만 비교한다. 형태와 채움, 그림자는 같다. 오른쪽은 더 선명하면서도 가는 윤곽의 성격을 유지한다.

나는 0.5 px, 12%의 무채색 어두운 ring을 이 불투명 표면의 출발점으로 삼았다. 18%는 불투명도 보정의 효과를 살펴보기 위한 값이며 모든 요소에 그대로 쓰지는 않는다. 큰 패널, 흰 선택 면, 유리가 가로지르는 배경은 서로 다르므로 필요한 경계의 강도도 다르다. 선폭을 절반으로 줄였다고 불투명도에 일정한 배수를 곱해야 하는 것은 아니다.

흰 카드 두 장의 ring은 모두 0.5 px다. 왼쪽 불투명도는 12%, 오른쪽은 18%로 윤곽의 농도만 다르다.
선폭을 고정하고 불투명도를 비교한다. 다시 두껍게 만들지 않고도 경계를 더 선명하게 할 수 있다.

0.5 px도 어디에 쓰는지에 따라 다르다. border-width는 장치 픽셀에 맞춰 정렬되지만, box-shadow의 소수 spread는 픽셀을 부분적으로 덮어 표현될 수 있다. 둘을 같은 그리기 방식으로 보면 안 된다. 이 시편의 WebKit 1× 검사에서는 0.25 px ring의 직선 가장자리가 식별할 수 있게 그려지지 않았고, 0.5 px도 좌우 무게가 고르지 않은 경우가 있었다. 가늘게 다듬은 뒤에도 원래 크기와 픽셀 밀도, 확대·축소를 함께 확인해야 한다.

윤곽을 따라 명암 나누기

윤곽의 무게는 형태를 따라 달라질 수도 있다. 앞의 ring은 전체 둘레가 같은 농도였지만, 여기서는 가장자리 대비(edge contrast)를 형태에 따라 분배한다. 어떤 부분은 조금 물러나고 다른 부분은 또렷하게 마무리된다. 나는 이 차이를 좁은 가장자리에 남겨 두고 중앙 표면은 조용하게 유지하는 편을 좋아한다.

이 시편의 경계 폭은 0.5 px로 고정했다. 왼쪽은 전체 둘레에 12% 불투명도를 쓰고, 오른쪽은 6%에서 18% 사이로 분포시켰다. 표면 채움과 크기, 뒤쪽 도형은 같다. 밝은 면에는 어두운 윤곽을 써서 왼쪽 위는 연하게, 오른쪽 아래는 조금 무겁게 만들었다. 변화는 직선과 모서리를 함께 따라간다.

밝은 반투명 카드에서 균일한 윤곽과 방향에 따라 달라지는 윤곽을 비교한다. 바깥 폭은 모두 0.5 px이며 오른쪽은 가장자리를 따른 불투명도 분포만 바꾼다. 아래에는 같은 모서리를 확대했다.
가는 가장자리의 폭은 같고 명암만 윤곽을 따라 나뉜다. 중앙 채움과 투과 정도는 바꾸지 않았다.

여기서는 마스크 합성(mask compositing)으로 중앙을 비우고 바깥의 좁은 고리만 남겨 그 안에 그라데이션을 그렸다. 앞의 ring처럼 외형을 정하는 역할은 유지하고, 명암 분포는 그라데이션에 맡긴 것이다. 뒤쪽의 비스듬한 회색 띠는 표면을 똑같이 비쳐 보인다. 가장자리를 바꾸면서 카드 전체까지 어둡게 덮지는 않았다.

어두운 시편에는 밝은 윤곽을 쓰고 명암의 방향도 뒤집었다. 왼쪽 위는 조금 밝고 오른쪽 아래로 갈수록 연해져 빛이 들어오는 방향을 일관되게 암시한다. 나는 바탕면과 함께 보면서 형태를 설명할 정도로만 윤곽을 남기고, 전체 둘레에 같은 무게의 밝은 선을 쌓지 않는다.

어두운 카드의 0.5 px 밝은 윤곽 비교. 왼쪽은 전체가 균일하고 오른쪽은 왼쪽 위가 밝고 오른쪽 아래가 연하다. 뒤 회색 띠와 표면 채움은 같다.
바탕면이 어두워져도 밝은 윤곽의 분포는 같은 빛 방향 안에서 판단한다.

고정된 콘텐츠 면은 균일하고 연한 ring으로도 외형을 안정시킬 수 있다. 방향에 따른 변화는 재질을 암시할 필요가 있는 소수의 떠 있는 면에 더 어울린다. 모든 카드가 같은 모서리를 강조하면 가장자리가 콘텐츠의 주의를 빼앗는다.

윤곽은 형태를, 부드러운 그림자는 거리를

Ring이 외형을 잡았으니 깊이 그림자(depth shadow)는 조금 물러나도 된다. 여기에는 두 층을 더했다. 가까운 그림자는 1 px 이동, 2 px 흐림에 −1 px spread로 폭을 좁혔다. 먼 그림자는 3 px 이동, 8 px 흐림에 −3 px spread로 범위를 제한했다. 불투명도는 각각 4%와 2%다.

가까운 그림자는 접촉을 설명하고, 먼 그림자는 어두운 부분을 바탕면으로 부드럽게 돌려보낸다. 이 감쇠(falloff)는 ring과 함께 봐야 한다. 아래쪽이 짙은 선으로 뭉치면 대개 가까운 그림자의 무게나 범위를 조정해야 한다. 전체 둘레가 회색으로 흐려지면 먼 그림자가 너무 넓게 퍼졌는지 확인한다. 나는 표면이 바탕에 붙어 있고 가장자리 바깥은 금방 깨끗해지는 편을 선호한다.

흰 패널 일부를 4배 확대했다. 위쪽 지시선은 0.5 px의 흐림 없는 ring을, 아래쪽은 가까운 그림자와 확산된 부드러운 그림자가 이루는 연한 아랫그림자를 가리킨다.
같은 가장자리의 세 역할: ring은 형태를, 가까운 그림자는 접촉을, 먼 그림자는 감쇠를 맡는다.

불투명 표면에는 안쪽 빛(inner light)을 기본으로 두르지 않는다. 흰색에 가까운 패널은 이미 충분히 밝고, 조금 어두운 트랙에 흰빛까지 얹으면 딱딱한 밝은 선이 드러나기 쉽다. 먼저 윤곽과 바탕색, 그림자로 층을 만들고, 밝은 가장자리는 재질을 설명해야 하는 부분에 남긴다.

어두운 표면은 먼저 명도로 구분하기

어두운 면으로 바꿀 때는 먼저 위쪽 표면을 조금 밝힌다. 도해의 바탕면은 #171717, 카드는 #242424이며 여기에 0.5 px, 12%의 흰 ring을 더했다. 검은 깊이 그림자는 아래에 따로 놓았다. 표면의 차이가 먼저 카드를 드러내고 가는 선이 윤곽을 보완한다.

짙은 회색 바탕 위에 조금 밝은 어두운 카드가 있다. 바깥은 0.5 px의 연한 흰 ring, 아래는 짧은 검은 그림자다. 지시선은 윤곽과 밝힌 표면을 가리킨다.
표면 명도를 먼저 나누고 아주 가는 밝은 윤곽을 더한다. 안쪽 둘레 전체에 흰빛을 깔지 않는다.

표면과 감싸는 구조

비슷한 흰색에도 각자의 역할을

표면의 위계(surface hierarchy)는 명도의 역할부터 나눌 수 있다. 이 밝은 시편의 캔버스는 #F7F7F7, 외곽 셸은 거의 중성인 #F1F1F2, 콘텐츠 면은 #FCFCFC이며 흰색은 일부 조작 면에 남겨 두었다. 색 편향은 아주 적다. 차이는 드러나는 면적과 함께 봐야 한다. 좁은 회색 고리와 넓은 회색 바탕의 무게는 같지 않다.

밝은 회색 셸이 흰색에 가까운 작업 면을 감싼다. 안에는 요약과 흰 조작 버튼이 놓여 있다. 지시선은 셸 F1F1F2와 작업 면 FCFCFC를 표시한다.
셸과 콘텐츠 면, 조작 면의 역할을 나눈다. 낮은 대비는 주로 바탕색에 남긴다.

글자는 여전히 주종이 명확해야 한다. 이름과 숫자, 현재 선택 항목은 어두운 색으로 안정시키고 설명은 한 단계 뒤로 물린다. 나는 표면이 조용하길 바라지만, 정보를 읽을 때까지 눈을 가늘게 뜨고 찾게 하고 싶지는 않다.

그라데이션을 평면으로 부드럽게 되돌리기

표면에 약간의 명암 변화가 필요할 때는 그라데이션이 어떻게 시작하고 바탕색으로 돌아가는지 본다. 이징 그라데이션(eased gradient)은 공간 안에서 변화하는 속도를 조정한다. 평면에 가까워질 때는 천천히, 중간에서는 더 빠르게 변해 시작과 끝을 쉽게 알아차리지 못하게 한다. 화면 자체는 정지해 있다.

이 비교는 같은 무채색을 사용한다. 최대 불투명도는 모두 16%, 변화 범위는 패널의 20%에서 80% 사이다. 왼쪽은 일정한 속도로 0까지 줄이고 오른쪽은 이징 분포를 쓴다. 양쪽 모두 색상 정지점 33개를 쓰며 불투명도의 적분값도 같다. 명암의 분포만 바꾸었고 전체 무게까지 함께 줄이지는 않았다.

밝은 패널에서 선형 그라데이션과 이징 그라데이션을 비교한다. 끝점과 범위, 불투명도 총량은 같다. 아래 곡선은 오른쪽의 변화가 시작과 끝에서 더 느려짐을 보여 준다.
끝점은 같고 전환 속도는 다르다. 아래 곡선은 같은 구간의 불투명도 분포에 대응한다.

도해의 선형 그라데이션은 평면에 닿는 순간 변화 속도가 갑자기 멈춘다. 이징 분포는 그 근처에서 점차 느려진다. 어두운 비교에서도 같은 관계를 유지해 약한 밝기가 짙은 회색으로 천천히 돌아가게 했다.

어두운 패널에서 같은 끝점과 불투명도 총량으로 선형 감쇠와 이징 감쇠를 비교한다. 오른쪽은 평면에 가까워질수록 명암 변화가 느려지며 아래에 분포 곡선이 있다.
같은 전환 관계를 어두운 면에 놓아도 원래 바탕색으로 어떻게 돌아가는지 본다.

여기서는 중간 색상 정지점으로 매끄러운 함수를 근사했다. 실제 CSS는 여전히 인접한 정지점 사이를 선형 보간한다. 16%는 차이를 관찰하기 위한 시편의 값이다. 깨끗한 흰 인터페이스에 넣을 때는 면적에 따라 무게를 낮추고, 좁은 마스크의 페이드나 재질 전환에 한정한다. 이 비교는 감쇠가 평면에 닿는 부분을 설명하며, 정지점 수를 모든 밴딩 문제의 해결책으로 보지는 않는다.

좁은 틈과 콘텐츠 여백은 따로 재기

감싸는 구조에는 두 종류의 안쪽 여백(padding)이 있다. 외곽 셸에서 패널까지의 좁은 틈과 패널에서 콘텐츠까지의 여백이다. 여기서는 각각 8 px와 24 px다. 앞의 값은 이음새의 긴밀함을 정하고, 뒤의 값은 제목과 정보 행을 여유 있게 배치한다.

바깥 ring은 레이아웃 공간을 차지하지 않는다. 패널은 그대로 8 px의 안쪽 여백에 놓이고, 0.5 px ring이 바깥쪽 틈으로 그려진다. 따라서 직선 부분에 실제로 드러나는 셸은 약 7.5 px다. 콘텐츠의 24 px는 패널 표면 경계에서 재며, 물리적 테두리 한 겹을 다시 빼지 않는다.

정보 패널을 2배 확대했다. 치수선이 셸에서 패널 표면까지의 8 px 레이아웃 여백과 패널 표면에서 콘텐츠까지의 24 px 여백을 각각 잰다.
8 px는 레이아웃 거리다. 바깥 ring이 틈으로 그려져도 콘텐츠 여백은 따로 남는다.

모서리도 같은 간격을 따라가기

이 등간격 예시의 중첩 반지름(nested radii)은 R24, 8 px 안쪽 여백, R16이다. 두 표면의 원 중심이 같아 틈이 모서리를 돌아갈 때도 연속성을 유지한다. 이 뺄셈 관계는 도해처럼 등간격이고 물리적 테두리가 없는 기하에 한정된다. 모든 컨테이너의 고정 공식으로 삼을 필요는 없다.

패널이 바깥으로 0.5 px ring을 그리면 그려진 바깥 가장자리의 반지름은 R16.5다. 표면 자체는 여전히 R16이며 콘텐츠도 원래 표면 경계에서 시작한다. 레이아웃을 재는지 실제 그려지는 범위를 보는지, 어느 가장자리를 다루는지 구분해야 한다.

모서리를 6배 확대했다. R24 셸과 R16 패널의 원호는 중심을 공유한다. 연한 점선은 바깥으로 0.5 px 그려진 ring의 R16.5 가장자리를 나타낸다.
24 − 8 = 16. Ring은 그려지는 범위를 바꾸지만 패널 크기와 콘텐츠 시작점은 바꾸지 않는다.

휘어지는 정도도 직선과 이어지게

반지름은 모서리가 차지하는 크기를 정한다. 접점에는 다른 문제도 있다. 직선에서 곡선으로 들어갈 때 휘어지는 정도가 어떻게 바뀌는가다. 원호는 직선과 접선 연속성(tangent continuity)을 이룰 수 있어 방향은 이어진다. 하지만 직선의 곡률은 0이고 원호에 들어서는 순간 일정한 휘어짐으로 바뀐다.

곡률 연속성(curvature continuity)은 이 변화까지 다룬다. 오른쪽의 3차 베지어 곡선은 접점에서 곡률을 0으로 내려 휘어지는 정도가 직선으로 이어지게 한다. 양쪽의 외접 크기, 채움, 선과 32 px 모서리 범위는 고정했다. 관찰하는 것은 모서리 곡선뿐이다.

밝은 카드에서 원호와 곡률이 연속인 베지어 모서리를 비교한다. 아래 6배 확대 그림의 보조선은 같은 직선 접점을 표시한다. 오른쪽 곡률은 접점에서 0이 된다.
방향이 이어진 다음에는 휘어지는 정도가 어떻게 연결되는지도 본다. 양쪽 모서리 범위는 모두 32 px다.

양쪽에서 32 px가 뜻하는 바는 다르다. 왼쪽은 R32 원호지만 오른쪽은 곡선이 어디서 휘기 시작하는지만 나타낸다. 하나의 원 중심이나 고정 반지름은 없다. 오른쪽은 이 시편의 단순화된 베지어 모델이다. 중첩 컨테이너에 쓸 때는 안팎 곡선 사이의 좁은 틈을 다시 확인해야 하며, 원 반지름의 뺄셈 관계를 그대로 쓸 수 없다.

어두운 카드에서 같은 모서리 범위의 원호와 곡률 연속 모서리를 비교한다. 외형 크기와 선은 같고 확대 그림이 접점 주변의 곡선 차이를 보여 준다.
곡률이 연속적이어도 형태는 더 각질 수 있다. 연결 방식과 모양의 취향을 함께 판단한다.

나는 전체 윤곽 안에서 다시 본다. 오른쪽은 접점이 연속적이지만 휘어짐이 더 집중돼 원호보다 각진 모양이다. 어울리는지는 비례와 여백, 이웃 요소를 함께 봐야 한다. 여기서는 접점을 해체해 설명하는 데 쓰고, 마지막 전체 작업 공간에는 원래의 원호 모서리를 유지했다.

이미지 안쪽 가장자리 마감

이미지 안쪽에 연한 윤곽 얹기

이미지 바깥 가장자리의 내용은 한쪽이 거의 흰색이고 다른 쪽은 아주 어두울 수 있다. 패널에 넣으면 밝은 부분은 바탕색과 섞이고 어두운 부분은 스스로 강한 경계를 만든다. 나는 안쪽 윤곽(inset outline)으로 무게가 다른 이 가장자리들을 조금 정돈하는 것을 좋아한다.

여기서는 이미지 안쪽에 1 px, 불투명도 10%의 순수한 검은 윤곽을 덮었다. 크기와 크롭, 모서리는 바꾸지 않았다. 윤곽이 원래 픽셀과 겹치므로 밝은 부분에서 변화가 더 쉽게 보인다. 이 선은 이미지의 마감을 설명하고, 바깥에는 컨테이너를 별도로 둘 수 있다.

같은 창작 이미지를 같은 밝은 회색 컨테이너에 넣었다. 오른쪽만 이미지 안쪽에 1 px, 10% 순수 검은 윤곽을 더했다. 이미지 크기와 크롭은 같다.
윤곽이 이미지 안에 덮여 밝은 부분의 마감이 또렷해진다. 바깥 컨테이너 크기는 같다.

어두운 컨테이너에서는 폭과 불투명도가 같은 순수한 흰 윤곽으로 바꿔 가장자리의 어두운 부분에 아주 얇은 경계를 만들었다. 두 도해는 같은 창작 이미지를 써서 가장자리에 집중할 수 있게 했다.

같은 창작 이미지를 어두운 컨테이너에 넣었다. 오른쪽에는 1 px, 10% 순수 흰 안쪽 윤곽을 더하고 원래 이미지와 모서리는 유지했다.
어두운 컨테이너에서 연한 흰 안쪽 선이 가장자리의 어두운 부분에 경계를 더한다.

이미지 자체는 R12이고 그 둘레의 8 px 바탕은 R20 컨테이너가 감싼다. 안쪽 윤곽은 이미 크롭된 이미지 안에 그려져 추가 공간을 차지하지 않는다. 바깥 컨테이너의 간격은 원래 레이아웃대로 계산한다. 이 처리는 완전한 직사각형 경계가 있는 사진과 스크린샷, 그림에 더 어울린다. 투명 로고나 불규칙한 일러스트에는 원래 윤곽이 숨 쉴 공간을 남겨도 좋다.

아바타를 겹치기 전에, 줄어드는 공간부터

여러 참여자를 보여 줄 때는 나란히 놓거나 일부를 겹칠 수 있다. 아바타 그룹(avatar group)은 누가 있는지 설명하고, 아바타 스택(avatar stack)은 겹침으로 전체 폭을 줄인다. 나는 촘촘한 정보 행에서 스택을 사용한다. 각 얼굴을 식별해야 한다면 나란한 배치와 이름에 더 많은 공간을 줄 수 있다.

이 비교에는 직접 만든 가상 인물 사진 세 장을 썼다. 원형 틀은 모두 32 px이며 왼쪽은 이웃 간격 6 px, 오른쪽은 겹침 8 px다. 사진과 크롭, 이미지 안쪽 선, 바깥 분리 고리 2 px를 모두 고정했다. 두 그룹의 시작점과 세로 중심도 각 표시 영역 안에서 같다.

직접 만든 같은 가상 인물 세 명을 4배 확대했다. 왼쪽 간격은 6 px, 오른쪽 겹침은 8 px다. 양쪽 지름 32 px, 크롭, 이미지 안쪽 선과 2 px 바깥 분리 고리는 같고 그룹 시작점도 맞췄다.
시작점은 그대로 두고 겹침으로 전체 길이를 줄인다. 각 사진의 크기와 크롭은 같다.

세 개의 레이아웃 폭은 108 px에서 80 px로 줄어든다. 바깥 분리 고리는 레이아웃 공간을 차지하지 않지만 좌우 끝에 각각 2 px씩 더 그려지므로 실제 그려진 범위는 112 px와 84 px다. 이 수치는 같은 크기의 원 세 개와 물리적 테두리가 없는 이 도해의 구성에 한정된다. 컨테이너에 넣을 때도 바깥 고리가 잘리는지 확인해야 한다.

어두운 버전도 같은 배치를 쓰고 가장자리만 놓인 표면에 맞춘다. 이것은 배치를 해체해 보는 개념 비교다. 마지막 작업 공간은 원래부터 스택을 사용했으며, 예시를 위해 행 전체를 키우지 않고 22 px 아바타와 5 px 겹침을 유지했다.

같은 인물 사진 세 장을 어두운 표면에서 나란히 배치하거나 겹쳤다. 양쪽 크기와 연한 흰 안쪽 선, 2 px 분리 고리, 시작점을 고정했다. 분리 고리는 표면의 짙은 회색을 쓴다.
어두운 표면에서도 같은 배치를 비교한다. 바깥 분리 고리는 바탕면을 따라 어두워지고 겹침은 여전히 구분된다.

바깥 분리와 이미지 안쪽 선의 역할 나누기

겹친 사진 두 장은 경계에서 하나로 붙어 보이기 쉽다. 바깥 분리 고리(separation ring)는 놓인 표면과 같은 불투명한 색으로 겹치는 부분을 가려 식별할 수 있는 틈을 남긴다. 아바타를 띄우기 위한 장치는 아니다. 나는 이 틈이 바탕면으로 스며들면서 겹친 곳에서 각자의 원호가 보이도록 한다.

그래서 분리 고리도 상태를 따라 바뀌어야 한다. 흰 카드와 선택된 데이터 행, 어두운 표면의 바탕색은 다르다. 고정된 흰 고리를 어두운 면에 놓으면 배경에 속하지 않는 밝은 선이 생긴다. 투명하거나 무늬가 있는 배경에서는 단색으로 아래 내용을 복원할 수 없다. 실제 마스크로 비우거나 겹치지 않게 배치해야 한다. 이 조작 시편은 무늬가 있는 바탕에서 나란히 배치한다.

사진 안쪽에는 앞서 본 안쪽 윤곽을 이어 이미지 안쪽 선(image inner stroke)으로 사진 자체를 마감한다. 아래 양쪽은 스택과 바깥 고리를 같게 두었다. 밝은 버전에서는 1 px, 10% 순수 검은 안쪽 선의 유무만 비교한다. 가는 선을 크롭된 사진 위에 덮었으며, 이미지를 줄이거나 바깥 고리를 두껍게 만들지 않았다.

밝은 표면에 같은 아바타 스택 두 개를 놓았다. 사진과 크롭, 크기, 2 px 분리 고리를 고정하고 오른쪽만 이미지 안쪽에 1 px, 10% 순수 검은 선을 덮었다.
바깥 고리는 겹침을 나누고, 이미지 안의 연한 선은 사진 자체의 마감을 정돈한다.

어두운 안쪽 선 비교에서는 1 px, 8% 흰색을 썼다. 원형 컨테이너의 장식 레이어를 사진 앞에 덮는 방식이다. 불투명 이미지 뒤에 안쪽 그림자를 바로 넣으면 같은 효과가 보이지 않을 수 있다. 나는 이 선이 가장자리 가까이에서만 느껴지고 중앙 얼굴과 크롭은 그대로인 편을 좋아한다.

어두운 표면의 같은 아바타 스택 두 개. 바깥의 짙은 회색 분리 고리는 같고 오른쪽만 1 px, 8% 순수 흰 안쪽 선을 더했다. 중앙 이미지와 크롭은 같다.
연한 흰 안쪽 선은 사진의 마감만 다듬고 바깥 고리는 계속 바탕면을 따른다.

사람이 많아지면 쓸 수 있는 입구 남기기

보이는 아바타와 실제 인원도 따로 정해야 한다. 이 프로토타입은 네 자리를 남겨 일곱 명이면 세 개와 +4, 네 명이면 네 개를 보여 준다. 사진을 불러오지 못해도 이니셜이나 기본 도형이 같은 크기를 차지한다. 숫자와 이미지 때문에 원이 갑자기 커져서는 안 된다.

전체 명단이 필요할 때는 아바타 그룹 전체로 참여자 목록을 열고, 여유 있는 곳에서 이름을 읽게 한다. 겹친 작은 원마다 클릭 영역을 넓히면 서로 덮기 쉽다. 목록에서 조작 행을 분리하면 키보드로 열고 닫거나 초점을 되돌리는 동작도 명확해진다. 조작 시편에서 표면, 배치, 인원, 이미지 실패 상태를 바꿔 바깥 고리와 안쪽 선의 역할을 각각 살펴볼 수 있다.

글자, 숫자와 광학 정렬

줄바꿈도 구성에 참여시키기

제목의 마지막 줄에 아주 짧은 단어만 남으면 아래 여백이 한쪽으로 기울기 쉽다. 균형 줄바꿈(balanced wrapping)은 주어진 폭 안에서 글자를 재배치해 각 줄의 무게를 가깝게 만든다. 이 비교는 줄 너비 220 px, 문구, 글자 크기와 자간을 고정하고 줄바꿈 방식만 바꾼다.

같은 영어 제목을 220 px 줄 너비, 같은 글자 크기와 자간에서 자연 줄바꿈과 균형 줄바꿈으로 비교한다.
줄바꿈 방식만 바꾸어 각 줄의 무게를 살핀다.

짧은 설명은 문제가 조금 다르다. 나는 읽을 때 자연스러운 줄 길이를 유지하면서 마지막 줄이 지나치게 외롭지 않은지 본다. 다듬은 줄바꿈(pretty wrapping)은 브라우저가 줄이 바뀌는 지점을 다시 정해 짧은 꼬리 줄을 줄일 여지를 준다. 도해의 문구와 줄 너비도 완전히 같다.

같은 짧은 영어 설명의 너비와 조판을 유지하고 자연 줄바꿈과 pretty 줄바꿈의 마지막 줄 분포를 비교한다.
짧은 글의 읽는 리듬을 유지하면서 마지막 줄에도 충분한 글자가 이어지게 한다.

이 선택들은 실제 문구와 함께 봐야 한다. 제목에는 의미상 멈춤이 있고 짧은 글에도 읽기 좋은 폭이 있다. 영어 단어와 번체 중국어 문장부호는 줄을 나눌 수 있는 조건이 다르며 브라우저 결과도 달라질 수 있다. 나는 컨테이너가 합리적으로 늘고 줄 공간부터 마련하고, 좁은 화면과 긴 번역문을 확인한 뒤 balance나 pretty를 쓸지 결정한다.

숫자가 갱신돼도 각 자리는 안정적으로

타이머가 11:11에서 08:08로 바뀔 때 글리프 폭이 다르면 숫자열 전체의 무게가 달라진다. 고정폭 숫자(tabular figures)는 각 숫자가 같은 폭을 차지하게 한다. 갱신되는 값과 카운터, 훑어봐야 하는 숫자 열에 어울린다.

양쪽 모두 Geist를 쓰고 글자 크기와 내용도 같다. 숫자 기능만 비례폭에서 고정폭으로 바꾸었다. 도해의 작은 표시는 별도의 고정폭 글꼴을 쓰지만 주된 숫자는 같은 글꼴 안에서 비교한다.

같은 Geist 글꼴로 11:11, 08:08, 12:34를 비례폭 숫자와 고정폭 숫자로 나열했다. 오른쪽은 각 숫자가 같은 폭을 차지한다.
같은 글꼴에서 고정폭 숫자를 켜면 각 자리의 폭이 고정된다.

자릿수가 늘어날 공간도 미리 마련하기

고정폭 숫자가 각 자리를 안정시켜도 9에서 99, 다시 100으로 늘면 글자 수가 많아진다. 도해는 양쪽 모두 고정폭 숫자를 켰다. 오른쪽은 세 자리 폭을 먼저 확보하고 오른쪽으로 정렬해 뒤의 설명이 같은 자리에서 시작하게 했다.

같은 카운터 두 그룹이 모두 고정폭 숫자를 쓴다. 9, 99, 100으로 늘어날 때 오른쪽은 세 자리 폭을 확보해 뒤 설명의 시작점을 유지한다.
자릿수는 늘어난다. 미리 확보한 공간이 뒤 설명의 위치를 지킨다.

세 자리 폭은 이 카운터의 예상 범위다. 천 단위 구분 기호나 음수 부호, 더 큰 값이 들어오면 공간을 다시 마련해야 한다. 날짜와 카운트다운, 백분율도 각각 가장 긴 형식이 있다. 나는 숫자가 확보한 범위 안에서 변하고 주변 글자와 조작은 안정적으로 남게 한다.

금액을 소수점에 맞춰 정렬하기

한 열의 금액을 빠르게 비교하려면 표시 정밀도와 숫자 폭, 정렬 방향을 함께 정해야 한다. 이 도해는 음수를 포함하고 소수점 이하 두 자리와 고정폭 숫자를 고정한 뒤 금액의 정렬 방향만 바꾼다. 오른쪽으로 맞추면 소수점과 일의 자리도 같은 선에 놓인다.

음수를 포함한 같은 미국 달러 금액 세 줄을 소수점 이하 두 자리와 고정폭 숫자로 표시했다. 오른쪽만 금액을 오른쪽 정렬해 소수점을 맞추고 USD는 별도 열에 남겼다.
양수와 음수의 정밀도를 같게 한 뒤 숫자와 단위에 각자의 자리를 준다.

단위는 별도의 가벼운 열에 두고 금액과 일정한 거리를 유지한다. 여기서 소수점이 맞는 것은 표시 정밀도가 같기 때문이다. 같은 열에서 소수 자릿수를 섞어야 한다면 정수부와 소수부를 다시 나누어 배치해야 한다. 음수 부호도 숫자 안에 남겨야 하며 정렬을 위해 생략하면 안 된다. 고정폭 숫자는 출발점이다. 실제 글꼴의 커닝도 배열에 영향을 줄 수 있으므로, 나는 설정을 켰는지만 보지 않고 같은 양수와 음수로 확인한다.

중앙에 놓은 뒤, 보이는 형태를 보기

광학적 중앙 정렬(optical centering)은 보이는 형태의 무게를 다룬다. 오른쪽을 가리키는 삼각형은 면적이 왼쪽에 치우쳐 있어 외접 상자를 중앙에 놓아도 왼쪽으로 보일 수 있다. 여기서는 버튼을 고정하고 같은 도형을 오른쪽으로 1 px만 옮겼다. 이 값은 도해의 삼각형에 해당하며 다른 아이콘은 다시 봐야 한다.

재생 버튼 두 개를 3배 확대했다. 보조선은 버튼 원 중심과 삼각형 외접 상자를 표시하며 오른쪽 삼각형은 원래 크기 기준 1 px 오른쪽으로 조정했다.
기하학적 위치를 먼저 고정한 뒤 보이는 형태의 무게를 판단한다.

글자 상자를 맞춘 뒤, 글자의 높이 보기

텍스트의 레이아웃 범위에는 글꼴이 위아래에 남기는 공간이 포함되며 보이는 글자는 그중 일부만 차지한다. Flex 레이아웃으로 버튼의 중앙에 놓아도 글자가 조금 높거나 낮아 보일 수 있다. 도해는 같은 Save, 같은 글꼴과 줄 높이를 사용한다. 왼쪽은 글자 상자를 유지하고 오른쪽은 대문자 높이와 기준선을 따라 위아래를 다듬은 다음 같은 높이의 버튼에 넣었다.

같은 Save 버튼을 3배 확대했다. 왼쪽은 텍스트 행 상자를 중앙에 놓고 오른쪽은 대문자 높이와 기준선까지 다듬었다. 모서리 표시는 보이는 글자를, 중심선은 버튼 중앙을 가리킨다.
보이는 글자와 레이아웃 글자 상자는 다르다. 다듬은 뒤에도 실제 문구로 판단한다.

텍스트 박스 트리밍(text-box trimming)은 이 공간을 글꼴의 경계에 맞춰 다룬다. 도해의 가는 모서리 표시와 중심선은 차이를 보기 위한 것이다. 실제 선택에서는 글자의 어센더와 디센더, 옆 아이콘까지 확인해야 한다. 번체 중국어와 가나, 한글은 각 글꼴의 보이는 글자에 맞춰 다시 판단해야 한다. 영어의 cap/baseline 값으로 모든 언어의 광학 정렬을 대신할 수는 없다. 트리밍을 지원하지 않는 환경에서는 원래의 글자 상자 레이아웃을 유지한다.

아이콘 쪽 여백은 보이는 무게에 맞춰

글자에 화살표를 더하면 화살표 주위의 빈 공간도 묶음 전체의 무게에 영향을 준다. 여기서는 글자와 도형, 사이 간격과 위아래 안쪽 여백을 고정하고 아이콘 쪽 가로 안쪽 여백만 16 px에서 14 px로 줄여 조금 더 긴밀하게 묶었다.

같은 Continue와 화살표 버튼을 3배 확대했다. 왼쪽 가로 안쪽 여백은 양쪽 16 px, 오른쪽은 화살표 쪽만 14 px다. 아래 치수선은 실제 여백을 나타낸다.
아이콘 쪽 안쪽 여백만 미세 조정해 글자와 도형 묶음을 더 알맞게 만든다.

2 px는 이 화살표와 문구의 조정량이다. 채워진 아이콘이나 다른 글꼴을 쓰거나 아이콘을 글자 앞에 놓으면 전체 형태를 다시 봐야 한다. 아이콘이 자기 캔버스 안에서 이미 치우쳤다면 원본 도형을 먼저 바로잡아 버튼에 추가하는 보정을 줄일 수 있다.

작은 아이콘의 선폭은 다시 판단하기

획의 굵기(stroke weight)도 아이콘 크기와 함께 줄이기만 해서는 안 된다. 이 14 px 폴더는 왼쪽에서 24 px 원본의 1.5 px 선을 같은 비율인 0.875 px로 줄였고, 오른쪽에서는 1.25 px로 조정했다. 도형 크기는 그대로 두고 최종 획만 바꾼 것이다.

나는 실제 크기에서 선 끝과 모서리, 내부 여백, 옆 글자를 함께 본다. 이 아이콘에 필요한 무게가 더 복잡한 다른 형태에도 맞는 것은 아니다.

같은 14 px 폴더 아이콘을 5배 확대했다. 왼쪽 획은 0.875 px, 오른쪽은 1.25 px이며 도형 크기와 위치는 같다.
형태는 유지하고 획을 다시 조정한다. 확대 검사 뒤에도 원래 크기로 돌아와 결정한다.

작은 레이블에도 고유한 자간을

모두 대문자인 영어 레이블은 숫자나 제목 가까이에 놓이는 경우가 많다. 글자들이 붙으면 작은 글자가 무거운 한 덩어리로 보일 수 있다. 자간(tracking)을 조금 넓히면 분명한 리듬을 유지하는 데 도움이 된다.

이 시편은 10 px, 굵기 500, 같은 대문자 레이블을 고정하고 자간 0과 0.05 em만 비교한다. 아래 내용과 레이블 사이 간격을 비롯한 나머지는 그대로다.

같은 10 px, 굵기 500의 영어 대문자 레이블. 왼쪽 자간은 0, 오른쪽은 0.05 em이며 카드와 아래 내용, 다른 간격은 같다.
작은 레이블의 자간을 따로 비교하되 값은 글꼴과 언어에 맞춘다.

나는 글자 크기와 굵기, 문구 길이를 함께 본다. 이 대문자 레이블은 약간의 숨 쉴 공간이 어울리지만 번체 중국어의 작은 제목과 일반 본문은 보이는 밀도가 다르다. 역할마다 알맞은 무게가 필요하고 전체 텍스트 위계는 여전히 단순해야 한다.

간격, 요소와 상태

정보를 같은 시작점에 맞추기

간격의 리듬(spacing rhythm)은 반복되는 관계에서 나온다. 도해의 행 높이는 64 px, 아이콘과 글자 사이는 12 px, 패널 안쪽 여백은 24 px다. 이름과 설명, 구분선이 글자 시작점을 공유하고 아이콘은 자기 영역에 남는다. 열 머리글은 내용 묶음 전체의 시작점에 맞춰 열의 범위를 설명한다.

프로젝트 정보 세 행을 1.5배 확대했다. 점선은 이름과 설명, 구분선이 공유하는 시작점을 지나고 오른쪽 치수선은 64 px 행 높이를 표시한다.
같은 시작점이 훑어 읽기를 돕는다. 64 px는 이 시편의 행 높이이며 전체 인터페이스는 더 촘촘할 수 있다.

묶음 안은 가깝게, 묶음 사이는 여유 있게

같은 시작점은 내용을 정돈하고 근접성(proximity)은 관계를 드러낸다. 여기서는 두 내비게이션의 글자와 행 높이, 묶음 안의 8 px 간격을 유지하고 묶음 사이만 8 px에서 24 px로 늘렸다. Workspace와 Personal의 구분이 더 쉽게 읽힌다.

내비게이션 두 그룹의 항목과 행 높이는 같다. 왼쪽은 그룹 안과 그룹 사이가 모두 8 px, 오른쪽은 그룹 사이만 24 px로 바꿨다.
그룹 안과 그룹 사이의 쉼을 다르게 두면 공간에서 묶음이 읽힌다.

24 px는 이 콘텐츠 묶음의 쉼이며 모든 내비게이션에 그대로 넣을 필요는 없다. 작업 공간이 촘촘해도 묶음은 알아볼 수 있어야 한다. 구분선을 넣는다면 콘텐츠의 시작점을 따라 배치한다. 나는 간격으로 관계를 먼저 설명하고 어디에 선이 더 필요한지 결정한다.

트랙과 선택 면을 함께 보기

분할 선택 컨트롤(segmented control)의 트랙은 끊김 없이 유지하고, 흰 선택 면은 자신의 ring과 짧은 그림자로 현재 위치를 가리킨다. 이 시편은 트랙에 아주 연한 안쪽 그림자만 주었다. 흰 면은 앞서 본 윤곽과 두 층의 깊이를 이어 쓰고 안쪽 빛은 더하지 않았다.

트랙은 R14, 안쪽 여백 4 px, 선택 면은 R10이다. 큰 패널과 마찬가지로 4 px는 레이아웃 거리다. 0.5 px ring이 바깥으로 그려지면 직선 부분에 드러나는 회색 바탕은 약 3.5 px다. 나는 부품이 끼워진 느낌을 좋아하지만 선택 면을 높이 띄울 필요는 없다.

3분할 컨트롤을 2배 확대했다. 흰 Library 선택 면이 연한 회색 트랙에 들어간다. 지시선은 가는 ring, 부드러운 그림자, 4 px 레이아웃 여백을 표시하며 아래에는 층의 단면 모식도가 있다.
트랙과 흰 면이 함께 좁은 틈을 정한다. 아래 단면은 층만 나타내며 실제 높이를 뜻하지 않는다.

같은 조작 묶음에는 이음새 하나만

공유 이음새(shared seam)는 날짜와 화살표를 하나의 외형으로 감싸고 내부에는 1 px 구분선 하나만 둔다. 독립된 두 윤곽이 맞닿는 부분에서 겹쳐 짙어지지 않게 한다. 선은 틀의 위아래에서 각각 8 px 물리고 끝을 조금 둥글게 했다. 조작 영역을 나누는 선이므로 외곽까지 닿을 필요는 없다.

날짜와 화살표 조작을 3배 확대했다. 바깥 ring 하나를 공유하고 내부에는 1 px 구분선 하나만 있다. 치수선은 틀 위에서 8 px 물러난 거리를 표시한다.
외형은 공유하고 내부는 한 번만 나눈다. 끝에 여백을 남기면 이음새가 벽처럼 굳지 않는다.

눌러도 내용은 움직이지 않게

지속되는 선택과 짧은 누름 상태(pressed state)는 역할이 다르다. 선택은 현재 위치를, 누름은 지금의 동작을 알려 준다. 도해는 눌렀을 때 바깥 깊이를 연한 안쪽 그림자로 바꾸고 흰색을 #F5F5F5로 조금 낮춘다. Ring과 아이콘, 글자, 요소 전체의 크기는 바꾸지 않는다.

같은 Library 버튼을 2.5배 확대해 Rest와 Pressed를 비교한다. 외형과 내용의 정렬은 같고 채움, 안팎 그림자만 바꿨다.
바깥 그림자를 거두고 안쪽 그림자로 바꾼다. 피드백은 표면에서 일어나고 내용은 제자리에 남는다.

진행 트랙에도 감싸는 구조를

얕게 들어간 트랙(recessed track)은 같은 관계를 작게 줄인다. 높이 6 px, R3의 바깥 트랙에 1 px 안쪽 여백을 두고 높이 4 px, R2의 채움을 넣었다. 75%는 안쪽 여백을 뺀 사용 가능한 너비를 기준으로 계산하며 끝 주변에도 바탕색 한 겹을 남긴다.

75% 진행 막대를 4배 확대했다. 높이 6 px, R3의 얕은 트랙이 높이 4 px, R2의 채움을 감싸며 사이에는 1 px를 남겼다.
트랙과 채움, 끝점을 함께 마무리한다. 오른쪽 백분율은 고정폭이어서 값이 바뀌어도 행 전체를 밀지 않는다.

여기서는 트랙의 안쪽 위 가장자리에 짧고 어두운 그림자만 남기고 채움의 위 가장자리에는 아주 약한 재질의 밝기를 두었다. 몇 픽셀짜리 부품에 국한된 역할이므로 모든 불투명 패널의 흰 안쪽 빛으로 확장하지 않는다.

작은 아이콘에도 누르기 쉬운 범위를

보이는 아이콘 크기와 클릭 영역(hit area)은 따로 정할 수 있다. 도해의 닫기 기호는 16 × 16 px를 유지하지만 버튼 영역은 44 × 44 px여서 손가락과 포인터가 닿을 공간을 마련한다. 보조 상자는 도해에만 표시한다.

닫기 버튼을 4배 확대했다. 보조 상자는 가운데 16 × 16 px 아이콘과 그 주위 44 × 44 px 클릭 영역을 표시한다.
도형 크기와 조작 영역을 따로 정한다. 44 px는 이 시편의 값이다.

44 px는 이 시편의 선택이다. 조밀한 도구 모음에 넣을 때는 이웃 조작과의 간격과 클릭 영역이 서로 겹치지 않는지도 함께 봐야 한다. 아이콘은 작아도 주위에는 합리적인 조작 공간이 필요하다.

조용한 표면에서도 초점은 드러나게

키보드 초점(keyboard focus)은 지금 조작할 요소를 알려 주므로 알아볼 만큼 분명해야 한다. 양쪽 버튼의 ring과 채움, 크기는 유지하고 오른쪽에는 버튼과 3 px 떨어진 2 px 윤곽을 추가했다. 표면의 가는 선은 계속 형태를 설명하고 초점은 위치를 분명하게 가리킨다.

같은 버튼의 일반 상태와 키보드 초점을 비교한다. 오른쪽은 버튼 외형에서 3 px 떨어진 2 px 윤곽을 더하고 나머지 표면 처리는 같다.
초점은 조작 위치를 나타낸다. 그 무게는 표면의 가는 윤곽과 따로 정한다.

나는 절제된 표면을 좋아하지만 조작 위치도 한눈에 보이길 바란다. 초점 윤곽은 주위 바탕색과 함께 확인하고 패널의 클리핑과 이웃 컨트롤도 살펴야 한다. 선택과 누름, 초점은 각자 역할이 있으므로 동시에 성립할 수 있다.

동작 피드백

상태가 바뀌면 아이콘도 부드럽게 연결하기

저장에서 저장 완료로 바뀌면 아이콘과 글자가 함께 결과를 알려 준다. 이 교차 페이드(cross-fade)는 같은 칸에 놓인 두 아이콘의 불투명도만 바꾸고 버튼 너비와 글자 위치는 고정한다. 왼쪽은 즉시 교체하고 오른쪽은 150 ms ease-out으로 연결한다. 어느 예시 버튼을 눌러도 양쪽은 같은 상태로 바뀐다.

상태 전환150 ms / 불투명도
즉시 교체
150 ms 페이드
정적 비교: 저장 아이콘과 완료 아이콘으로 동작 전후 상태를 보여 줍니다.

나는 이런 작은 동작을 가끔 일어나는 상태 변화에 남겨 둔다. 자주 바꾸는 탭이나 각 행의 반복 조작에는 더 직접적인 반응이 필요하다. 글자와 아이콘 자체도 현재 상태를 명확하게 나타내야 한다. 누름 피드백에는 앞의 표면 명암과 그림자를 쓰고 내용은 제자리에 둔다.

동작이 끝나기 전에도 다음 입력 받기

패널이 다 열리기도 전에 손은 닫기를 누를 수 있다. 중단 가능한 전환(interruptible transition)은 현재 위치에서 새 상태로 방향을 바꿔 연속 조작을 더 매끄럽게 만든다. 아래 양쪽의 거리와 200 ms 시간, 이징은 같다. 왼쪽은 매번 지정된 출발점에서 다시 재생하고, 오른쪽은 현재 위치에서 새 도착점으로 이어진다.

도중에 방향 바꾸기200 ms / 같은 이징
처음부터 재생
닫힌 상태
열기
현재 위치에서 전환
닫힌 상태
열기
정적 비교: 닫힌 상태와 열린 상태 사이를 전환 동작이 연결합니다.

진행 중에 빠르게 바꿔 패널이 갑자기 위치를 옮기는지 살펴볼 수 있다. 이 시편은 CSS transition으로 상태를 따른다. 타임라인 애니메이션도 별도의 재생 제어로 중단을 처리할 수 있다. 핵심은 실제 조작이 이어지는지다. 동작을 끄면 상태 글자와 정적인 전후 비교는 그대로 남는다.

등장과 퇴장은 사용 시점에 맞추기

처음 나타날 때는 제목과 설명, 조작을 묶어 읽는 순서를 조금씩 펼칠 수 있다. 나갈 때는 이동과 시간의 무게를 낮추고 다음 콘텐츠에 주의를 넘긴다. 나는 이런 리듬을 잠시 멈춰 볼 만한 순간에 남겨 두고, 일상적인 여닫기와 반복 조작은 직접적으로 유지한다.

동작 줄이기 설정을 켜면 이동은 거두고 상태는 분명하게 남긴다. 두 예시는 모두 조작으로 시작하며 처음 불러올 때는 초기 상태에 멈춰 있다. 읽는 동안 언제 비교할지 직접 정할 수 있다.

재질이 만나는 곳

유리에는 구체적인 자리를

나는 약간의 유리 느낌을 떠 있는 도구 모음에 남겼다. 불투명도 72%의 흰색에 가까운 채움, 10 px 배경 흐림(backdrop blur)에 선명한 전경 글자와 아이콘을 더했다. 도구 모음이 컨테이너의 아래 가장자리를 가로질러야 아래 명암이 비쳐 보인다. 주된 데이터 행을 피해서 놓으면 재질에도 실제 경계가 생긴다.

유리는 0.5 px, 6%의 무채색 어두운 ring으로 윤곽을 잡고 안쪽에는 부드러운 미광만 남긴다. 아래의 연한 그림자 세 층은 접촉부에서 24 px 흐림의 바깥까지 이어져 떠 있는 느낌을 넓게 퍼뜨린다. 투명한 표면은 이미 배경의 명암을 빌리므로 불투명 요소보다 ring을 연하게 하고 짙은 경계를 더하지 않는다.

불투명 프로젝트 패널과 아래 가장자리를 가로지르는 반투명 도구 모음을 1.5배 확대했다. 도구 모음에는 연한 어두운 ring과 안쪽 미광, 바깥으로 퍼지는 부드러운 그림자가 있다. 배경은 흐리고 전경은 또렷하다.
연한 어두운 윤곽은 경계를, 확산된 부드러운 그림자는 거리를 설명한다. 안쪽 빛은 재질상 역할이 있는 이런 부분에만 남긴다.

나는 실제로 가로지르는 배경에서 확인한다. 온통 흰 바탕에서는 윤곽만 남을 수 있고 아래가 너무 복잡하면 글자를 방해할 수 있다. 이 시편은 투과와 흐림만 표현하며 실제 굴절을 흉내 내지는 않는다.

이 방식을 Master Design으로 정리하기

이 글에서 다룬 세부 기준을 AI 편집 도구에 설치할 수 있는 디자인 skill인 Master Design으로 정리했다. 경계와 기하, 이미지, 글자, 간격, 상태, 동작, 재질을 주제별로 불러온다. 각 항목은 눈에 보이는 문제와 처리 원리, 적용 조건, 확인 방법을 설명한다. 저장소에는 직접 만든 도해의 원본과 조작 가능한 예시도 남겨 실제 결과와 비교할 수 있다.

기본적으로 프로젝트의 기존 브랜드와 글꼴, 프레임워크, 밀도를 이어 간다. 이 글처럼 깨끗하고 절제된 처리를 원하면 Aron preferences를 명시하면 된다. 반 픽셀 윤곽과 그림자 값은 여전히 시편의 선택이므로 실제 화면에서 판단해야 한다.

npx skills add master-co/design --skill master-design

설치한 뒤에는 도구에 ‘$master-design으로 이 인터페이스를 다듬되 기존 브랜드와 밀도를 유지하고, 영향을 받는 상태를 구현하고 확인해 줘’라고 요청할 수 있다. Skill은 선택과 검증을 작업 흐름에 남긴다. 완성도는 실제 콘텐츠와 조작으로 확인해야 한다.

완성된 인터페이스

마지막으로 하나의 완성된 작업 공간으로 돌아온다. 내가 좋아하는 섬세함은 디테일이 서로 이어지면서도 전체가 깨끗하고 차분하게 남는 것이다.

조작 가능한 프로토타입에서 내보낸 프로젝트 대시보드. 촘촘한 사이드바, 요약 카드, 선 그래프, 검토 목록, 프로젝트 표가 같은 간격과 모서리를 쓴다. 두 행이 선택돼 있고 연한 유리 도구 모음에서 선택을 지울 수 있다.
가는 경계와 감싸는 구조, 배열의 리듬이 전체 인터페이스에서 만난다. 이 프로토타입 사용하기. 프로젝트와 사람, 데이터는 모두 예시다.