GODRICH
#css애니메이션#버튼#로딩#전환효과#스크롤#대시보드#실전ui#디자인트렌드

saas 랜딩페이지 신뢰감 디자인 키트, 클린 섹션 9개

saas 랜딩페이지 디자인은 흰색과 오프화이트 두 톤 배경 위에 파란색 브랜드 컬러 하나만 얹고, 그림자는 회색 계열로 얕게, 모서리는 절제된 반경으로 통일해 화려하지 않으면서도 진지해 보이게 만드는 스타일입니다.

핀터레스트에 저장해 둔 스트라이프·리니어 같은 화면을 실제로 만든 원페이지로 아래에 그대로 올렸습니다. 위쪽 내비부터 맨 아래 푸터까지 눌러 보면서 색이 정말 파란색 하나뿐인지 직접 세어 보세요.

새 창에서 원페이지 열기

저 원페이지를 만든 부품 아홉 개를 각각 뜯어내 아래 격자에 따로 늘어놓았습니다. 방문자 시선이 실제로 움직이는 차례 — 눈길 끌기, 기능 둘러보기, 가격 확인, 신뢰, 행동 유도 — 를 그대로 따랐습니다. 색은 파란색 하나뿐이고 나머지는 전부 흰색·회색이라는 것이 이 키트 전체의 원칙입니다.

자동 재생 · 눌러서 해당 항목으로 · 전부 한 zip

기업 웹사이트 디자인에 쓰는 이 키트의 색은 여덟 개로 끝납니다. 브랜드 컬러를 작은 글자에 직접 쓰지 않는 것이 읽히는 신뢰감의 조건입니다. 같은 design 기둥에서 색 수를 늘려 과일처럼 쨍하게 간 쪽이 시트러스 컬러 랜딩 키트이고, 종이를 오려 층을 쌓은 쪽이 종이 질감 랜딩 키트입니다.

역할 색 쓰는 곳
오프화이트 #f7f9fc 페이지 바탕
블루 틴트 #eaf1ff 카드 격자 무대·아이콘 배경
그레이 틴트 #f1f5f9 내비·로고 무대
민트 틴트 #eaf6f1 체크 아이콘·인풋 무대
브랜드 블루 #2f6df6 버튼·아이콘·테두리·강조
블루 딥 #1d4ed8 CTA 밴드 배경·버튼 눌림
슬레이트 #475569 보조 글자
잉크 #17141a 제목·본문 글자

01소프트 그리드 히어로

b2b 랜딩페이지에서 무엇이 보이나

오프화이트 배경 위에 아주 옅은 점 격자가 깔리고, 그 앞의 흰 카드가 완만하게 위아래로 떠오릅니다.

소프트 그리드 히어로
새 창에서 열기

01 · 소프트 그리드 히어로 — 측정 누적면적 11.469% · 움직인 프레임 23/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

점 격자 배경중립 그림자radius 16

코드에서 볼 곳

그림자는 회색 계열로 얕게, 강조는 파란 배지 하나로만 줍니다.

<section class="dotgrid relative overflow-hidden rounded-card py-20">
  <div class="relative mx-auto flex max-w-xl flex-col items-start gap-4
              rounded-card bg-white p-10 shadow-soft">
    <p class="text-xs font-bold uppercase tracking-widest text-brand">Trusted by teams</p>
    <h1 class="text-4xl font-bold leading-tight">신뢰가 필요한 팀을 위한 SaaS 랜딩</h1>
    <button class="rounded-pill bg-brand px-6 py-3 text-sm font-bold text-white shadow-brand">무료로 시작</button>
  </div>
</section>

02언더라인 내비

화면에서 일어나는 일

메뉴 글자 아래로 파란 밑줄 하나가 활성 탭을 따라 옆칸으로 미끄러져 이동합니다.

언더라인 내비
새 창에서 열기

02 · 언더라인 내비 — 측정 누적면적 8.271% · 움직인 프레임 9/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

translateX 이동slideUnderlineradius pill

코드 읽는 법

실제 데모에서는 밑줄과 함께 옅은 파란 하이라이트 블록도 같은 박자로 움직여, 얇은 선 하나만으로는 잘 안 보이는 이동을 눈에 띄게 만듭니다.

<nav class="mx-auto flex max-w-5xl items-center gap-6 rounded-pill bg-white px-5 py-3 shadow-soft-sm">
  <span class="relative whitespace-nowrap text-xs font-semibold pb-1
               after:absolute after:-bottom-[13px] after:left-0
               after:h-[3px] after:w-full after:rounded-control after:bg-brand">홈</span>
  <span class="whitespace-nowrap text-xs font-semibold text-slate">기능</span>
</nav>

03아이콘 카드 격자

어떤 움직임인가

흰 카드 네 장이 아주 얕은 그림자만 진 채 격자에 놓이고, 카드 안 아이콘을 담은 파란 원이 시작 시각을 어긋내 순서대로 살짝 커지며 배경색이 진해집니다.

아이콘 카드 격자
새 창에서 열기

03 · 아이콘 카드 격자 — 측정 누적면적 7.384% · 움직인 프레임 23/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

단일 브랜드 컬러scale 호버2열→1열

어디를 바꾸면 되나

색은 전부 같은 파란색 하나입니다.

<div class="flex flex-col items-start gap-3 rounded-card bg-white p-5 shadow-soft-sm">
  <span class="grid h-9 w-9 place-items-center rounded-full bg-bluetint text-brand">
    <svg><!-- ph:shield-check-duotone --></svg>
  </span>
  <p class="text-sm font-bold">보안</p>
</div>

04체크 기능 목록

무엇이 보이나

행마다 민트 배경 원 안에 파란 체크가 그려지고, 목록이 화면에 들어올 때 위에서부터 순서대로 미끄러져 나타났다 사라지기를 반복합니다.

체크 기능 목록
새 창에서 열기

04 · 체크 기능 목록 — 측정 누적면적 29.301% · 움직인 프레임 16/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

두 막대 체크순차 슬라이드인radius pill

코드에서 볼 곳

체크는 손으로 그린 도형이 아니라 Phosphor Duotone 세트의 실제 체크 아이콘입니다.

<li class="flex items-center gap-3 rounded-pill bg-white px-5 py-3 shadow-soft-sm">
  <span class="grid h-7 w-7 shrink-0 place-items-center rounded-full bg-mint text-brand">
    <svg><!-- ph:check-duotone --></svg>
  </span>
  <span class="text-sm font-semibold">무제한 팀원 초대</span>
</li>

05심플 요금제

화면에서 일어나는 일

세 요금제를 전부 같은 흰 카드로 두되 추천 플랜만 얇은 파란 테두리와 살짝 짙은 그림자를 얹어 구분합니다.

심플 요금제
새 창에서 열기

05 · 심플 요금제 — 측정 누적면적 2.276% · 움직인 프레임 23/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

테두리 위계그림자 깊이차radius card

코드 읽는 법

화려한 배경색 대신 테두리 굵기와 그림자 깊이만으로 위계를 만드는 것이 이 스타일의 핵심입니다.

<div class="relative flex-1 max-w-[240px] rounded-card border-2 border-brand
            bg-white p-6 text-center shadow-brand">
  <span class="absolute -top-3 left-1/2 -translate-x-1/2 rounded-pill
               bg-brand px-3 py-1 text-[11px] font-bold text-white">추천</span>
  <p class="text-sm font-bold">프로</p>
</div>

06로고 신뢰 후기

어떤 움직임인가

후기 카드 위로 회색 로고 칩 여섯 개가 원본과 복제본을 이어 붙여 이음새 없이 무한히 옆으로 흘러가며, 이 서비스를 쓰는 회사들을 보여줍니다.

로고 신뢰 후기
새 창에서 열기

06 · 로고 신뢰 후기 — 측정 누적면적 5.942% · 움직인 프레임 23/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

무한 로고 마퀴grayscale 호버 해제margin-right 간격

어디를 바꾸면 되나

마우스를 올린 칩만 파란색으로 돌아와 눈길을 받습니다.

<div class="track flex w-max" style="animation: scrollLogos 6s linear infinite">
  <span class="mr-3 shrink-0 rounded-pill bg-white px-5 py-2 text-xs
               font-bold text-slate shadow-soft-sm">Nimbus</span>
  <!-- 원본 6개 다음 복제본 6개를 그대로 이어 붙인다 -->
</div>

07솔리드 CTA 밴드

무엇이 보이나

밴드 배경을 그라디언트 없이 브랜드 파란색 단색으로 채우고, 안의 흰 버튼만 눌렸다가 떠오르기를 반복합니다.

솔리드 CTA 밴드
새 창에서 열기

07 · 솔리드 CTA 밴드 — 측정 누적면적 1.019% · 움직인 프레임 22/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

단색 배경버튼 lift 호버radius pill

코드에서 볼 곳

색을 하나로 줄이는 것이 이 스타일의 절제입니다.

<div class="rounded-card bg-brand-deep px-10 py-14 shadow-brand-deep text-center">
  <h2 class="text-3xl font-bold text-white">지금 무료로 시작하세요</h2>
  <button class="mt-4 rounded-pill bg-white px-8 py-3 text-sm font-bold text-brand-deep">데모 신청</button>
</div>

08미니멀 4열 푸터

화면에서 일어나는 일

옅은 회색 구분선 하나 위에 4열 링크 목록을 놓고, 소셜 아이콘 원은 마우스를 올리면(데모에서는 순서대로 자동으로) 배경이 파랗게 채워지며 살짝 커집니다.

미니멀 4열 푸터
새 창에서 열기

08 · 미니멀 4열 푸터 — 측정 누적면적 4.968% · 움직인 프레임 23/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

단일 구분선아이콘 배경 채움4열→1열

코드 읽는 법

장식은 구분선 하나뿐입니다.

<div class="grid h-9 w-9 place-items-center rounded-full bg-graytint text-slate
            transition hover:bg-brand hover:text-white">
  <svg><!-- ph:twitter-logo-duotone --></svg>
</div>

09클린 버튼·인풋

어떤 움직임인가

버튼은 마우스를 올리면 배경이 짙어지며 1px 위로 떠오르고, 입력창은 포커스를 받으면 얇은 회색 테두리가 파란 두 겹 링으로 부드럽게 바뀝니다.

클린 버튼·인풋
새 창에서 열기

09 · 클린 버튼·인풋 — 측정 누적면적 10.641% · 움직인 프레임 12/23GODRICH 원작 · zip 에 SCSS·React 포함 · 비밀번호 보기

1px lift 호버focus 2중 링radius 12

어디를 바꾸면 되나

신뢰 키트의 손맛을 하나로 묶은 항목입니다.

<input class="w-full rounded-control border border-border bg-white px-4 py-3
              text-sm outline-none focus:border-brand
              focus:ring-4 focus:ring-brand/20" placeholder="[email protected]">
<button class="rounded-control bg-brand px-6 py-3 text-sm font-bold text-white
               shadow-brand hover:bg-brand-deep hover:-translate-y-px">계속하기</button>

tailwind.config 커스텀

배경 두 톤과 브랜드 블루 하나, 그림자 네 종(회색 shadow-soft·shadow-soft-sm 둘, 브랜드 블루가 섞인 shadow-brand·shadow-brand-deep 둘)을 이 한 곳에 적어 두면 원페이지와 부품 아홉 개가 전부 같은 절제를 따라갑니다. 히어로 CTA·프로 요금제 카드·CTA 밴드·버튼처럼 강조가 필요한 자리에만 브랜드 그림자를 쓰고 나머지는 회색 그림자로 남깁니다.

theme: {
  extend: {
    colors: {
      offwhite: "#f7f9fc", bluetint: "#eaf1ff", graytint: "#f1f5f9", mint: "#eaf6f1",
      ink: "#17141a", slate: "#475569", brand: "#2f6df6", "brand-deep": "#1d4ed8",
      border: "#e2e8f0",
    },
    borderRadius: { card: "16px", control: "12px", pill: "999px" },
    boxShadow: {
      soft: "0 14px 28px rgba(23,20,26,.08)",
      "soft-sm": "0 8px 16px rgba(23,20,26,.07)",
      brand: "0 10px 22px rgba(47,109,246,.28)",
      "brand-deep": "0 16px 30px rgba(29,78,216,.32)",
    },
  },
},

바이브코딩 프롬프트

위 설정을 프로젝트에 심었다면, Claude Code나 Cursor에 넘길 지시는 아래 한 덩어리로 끝납니다. 규칙이 열 줄인 이유는 캔디·시트러스 계열과 정반대로 "무엇을 안 쓰는지"를 못박아야 하기 때문입니다. 줄이지 않은 원문은 zip 안의 prompt.md 에 들어 있습니다.

배경은 흰색과 offwhite(#f7f9fc) 두 톤만 쓴다. 브랜드 컬러는 brand(#2f6df6) 하나뿐이고
카드는 전부 흰색이다. 그림자는 회색 계열(shadow-soft)로 얕게만 쓰고 색 그림자는 쓰지
않는다. 글자는 ink 또는 slate 고정, brand 를 작은 글자 색으로 쓰지 않는다. 위계는
테두리·그림자 깊이로 만들고 카드 배경색을 바꾸지 않는다.

이 지시를 page/index.html 에 그대로 적용한 뒤 1280px 뷰포트로 전체 페이지를 스크린샷한 결과가 아래 그림입니다.

결과

어디서 깨지는가 — 함정

가장 먼저 겪은 것은 내비 인디케이터의 이동량이었습니다. 처음에는 얇은 밑줄(3px)만 옮겼는데, 렌더된 gif를 눈으로 보니 480×300 무대에서는 잘 보여도 이동 자체가 시각적으로 약해 "움직이는지 모르겠다"는 인상이었습니다. 실측해 보니 밑줄 하나만으로는 누적 변화 면적이 작아서, 탭 너비만큼 넓은 옅은 파란 하이라이트 블록을 밑줄과 같은 박자로 함께 옮기고 나서야 이동이 눈에 들어왔습니다.

두 번째는 화면 폭입니다. 처음 내비 탭 3개를 각각 108px로 두고 좌우 여백까지 더하니 전체 폭이 332px가 되어, 320px 폰 화면 기준에서 12px가 넘쳤습니다. 탭 폭을 92px로 줄이고 전체를 284px로 맞춘 뒤에야 320×200 렌더에서 가로 넘침이 사라졌습니다. 세 번째는 요금제 카드의 "엔터프라이즈"라는 글자였습니다 — 92px 카드 폭 안에서 이 단어가 "엔터프라이 즈"처럼 단어 중간이 줄바꿈되어 어색했고, "기업용"이라는 세 글자로 바꾸고 나서야 한 줄에 들어왔습니다. 이 절제된 파랑이 메일 본문에서 어디까지 버티는지는 뉴스레터 디자인 9종에서 따로 확인했습니다. 이 세 가지를 다 손본 완성본을, 이 비밀번호 8h4q5uur이 걸린 zip을 받아 그대로 열어 확인할 수 있습니다.

아홉 개 데모 전부 MDN prefers-reduced-motion 문서가 정의한 미디어 쿼리를 감지하면 애니메이션을 멈추고 각 요소를 정지 상태(카드는 뜨기 전 위치, 목록 행은 다 나타난 상태, 인풋 링은 사라진 상태)로 되돌려 고정합니다. 동작을 줄인 방문자에게는 카드가 떠오르거나 로고가 흐르는 움직임이 안 보이는 대신, 카드·버튼·입력창 자체의 정보는 그대로 남습니다.

접근성

이 스타일이 접근성 면에서 파스텔·캔디 계열보다 유리한 이유는 배경이 거의 항상 흰색·오프화이트라 대비 계산이 단순해지기 때문입니다. 실제로 계산해 보면, 잉크(#17141a) 글자는 흰 배경에서 18.24:1, 보조 글자로 쓰는 슬레이트(#475569)는 7.58:1로 WCAG 2.1 최소 대비 기준의 본문 기준(4.5:1)을 여유 있게 넘습니다. 다만 브랜드 블루(#2f6df6)를 흰 배경 위에 글자로 직접 쓰면 대비가 4.53:1로 기준선에 딱 걸쳐 있어, 이 편의 코드는 브랜드 블루를 버튼·아이콘·테두리 같은 큰 면적이나 굵은 강조에만 쓰고 본문 글자 색으로는 절대 쓰지 않았습니다. CTA 밴드처럼 브랜드 블루를 배경으로 쓸 때는 더 짙은 블루 딥(#1d4ed8)을 써서 흰 글자와 6.70:1을 확보했습니다. MDN box-shadow 문서가 안내하는 문법대로 그림자 투명도를 0.07~0.32로 낮춰 테두리 역할을 대신하지 않게 했고, 버튼·입력창의 키보드 초점은 :focus-visible 아웃라인과 두 겹 파란 링으로 별도로 그렸습니다.

신뢰감 있는 SaaS 랜딩 말고 다른 홈페이지 유행이 궁금하면 디자인 트렌드 카테고리를 훑어보시고, 이 블로그가 통째로 뭘 다루는지는 소개 페이지에 정리해 뒀습니다.

FAQ

깔끔한 웹디자인인데 밝은 톤이면 파스텔 캔디처럼 보이지 않나요?

밝기의 원천이 다르기 때문입니다. 파스텔 캔디는 여러 색(핑크·레몬·민트·라벤더)을 카드마다 다르게 써서 밝고 귀엽게 보이고, 이 스타일은 배경을 흰색·오프화이트 두 톤으로 고정하고 브랜드 컬러 하나만 더해 밝으면서도 색 수를 최소화합니다. 색이 많을수록 캐주얼해지고, 색이 적을수록 진지해집니다. 신뢰를 색이 아니라 사람 목소리로 세우는 구간은 고객 후기 디자인 패턴 9종이 맡습니다.

파란색 대신 다른 브랜드 컬러를 써도 되나요?

됩니다. 다만 흰 배경 위 텍스트로 쓸 색이라면 4.5:1 대비를 반드시 계산해야 합니다. 이 편의 블루(#2f6df6)는 4.53:1로 기준선에 걸쳐 있어 본문 글자에는 쓰지 않았는데, 예를 들어 초록이나 보라 계열은 같은 밝기에서 대비가 더 낮게 나올 수 있어 직접 계산 없이 옮기면 안 됩니다.

카드마다 옅은 색 배경을 넣어도 신뢰감 스타일인가요?

카드 표면 자체를 색으로 채우면 이 스타일에서 벗어납니다. 이 키트에서 카드는 항상 흰색이고, 옅은 색은 무대(카드 바깥의 큰 배경 영역)나 아이콘 원 같은 작은 강조 요소에만 씁니다. 카드 배경까지 물들이는 순간 캔디·프루트 계열의 "귀여운 밝음" 쪽으로 넘어갑니다.

압축 비밀번호를 입력하세요

비밀번호는 이 글 본문 안에 있습니다. 읽다 보면 나옵니다.