diff --git a/apps/site/src/components/Hero.astro b/apps/site/src/components/Hero.astro index 3dcb6cf..470d1ce 100644 --- a/apps/site/src/components/Hero.astro +++ b/apps/site/src/components/Hero.astro @@ -33,7 +33,7 @@ const { c, ui } = Astro.props; diff --git a/apps/site/src/components/Install.astro b/apps/site/src/components/Install.astro index e6951b0..b2d531e 100644 --- a/apps/site/src/components/Install.astro +++ b/apps/site/src/components/Install.astro @@ -30,7 +30,7 @@ const { c, ui } = Astro.props;
{ c.commands.map((x) => ( -
+
{x.cmd}
{x.what}
diff --git a/apps/site/src/components/Materials.astro b/apps/site/src/components/Materials.astro index f5f2732..adc9c4d 100644 --- a/apps/site/src/components/Materials.astro +++ b/apps/site/src/components/Materials.astro @@ -23,7 +23,7 @@ const { c } = Astro.props; { c.tiles.map((t, i) => (
  • -
    +
    diff --git a/apps/site/src/components/Metrics.astro b/apps/site/src/components/Metrics.astro index 05ab418..b680f88 100644 --- a/apps/site/src/components/Metrics.astro +++ b/apps/site/src/components/Metrics.astro @@ -16,7 +16,7 @@ const rest = c.items.filter((m) => !m.feature);
    { feature.map((m, i) => ( -
    +
    {m.value} {m.label} {m.note} @@ -25,7 +25,7 @@ const rest = c.items.filter((m) => !m.feature); } { rest.map((m, i) => ( -
    +
    {m.value} {m.label} {m.note} diff --git a/apps/site/src/components/Pipeline.astro b/apps/site/src/components/Pipeline.astro index a81986a..0e70e18 100644 --- a/apps/site/src/components/Pipeline.astro +++ b/apps/site/src/components/Pipeline.astro @@ -114,6 +114,15 @@ const { c } = Astro.props; padding-left: var(--space-3); border-left: 2px solid var(--accent); } + @media (prefers-reduced-motion: no-preference) { + .stop::before { + transition: transform var(--dur-quick) var(--ease-out); + } + .stop:hover::before { transform: scale(1.5); } + .stop-becomes { transition: border-color var(--dur-quick) var(--ease-out); } + .stop:hover .stop-becomes { border-color: var(--ink); } + } + .stop-becomes.mono { font-family: var(--font-mono); font-size: var(--mono-size); diff --git a/apps/site/src/components/Preflight.astro b/apps/site/src/components/Preflight.astro index 36a4f3e..85e66db 100644 --- a/apps/site/src/components/Preflight.astro +++ b/apps/site/src/components/Preflight.astro @@ -13,7 +13,7 @@ const { c } = Astro.props;
    { c.items.map((i, idx) => ( -
    +

    { c.items.map((r, i) => ( -
    +
    {r.rule}
    {r.why}
    diff --git a/apps/site/src/components/Showcase.astro b/apps/site/src/components/Showcase.astro index d989f86..c38ec0a 100644 --- a/apps/site/src/components/Showcase.astro +++ b/apps/site/src/components/Showcase.astro @@ -18,7 +18,7 @@ const shots = [shotCoffee, shotSaas]; { c.items.map((item, i) => (
    -
    +
    {item.alt} diff --git a/apps/site/src/styles/base.css b/apps/site/src/styles/base.css index d20f20c..4d3b11c 100644 --- a/apps/site/src/styles/base.css +++ b/apps/site/src/styles/base.css @@ -271,6 +271,46 @@ a:hover { color: var(--accent); } .reveal.is-in { transform: none; } } +/* ---- 상호작용 모션 ------------------------------------------ + 모션은 이유가 있어야 붙인다. 여기 있는 것은 전부 피드백이다. + "지금 이 카드를 보고 있다", "이 버튼은 눌린다"를 말한다. + transform 과 opacity 만 움직인다(하드 게이트 8). */ +@media (prefers-reduced-motion: no-preference) { + /* 유리 카드는 커서 아래에서 아주 조금 떠오른다 */ + .lift { + transition: + transform var(--dur-quick) var(--ease-out), + box-shadow var(--dur-quick) var(--ease-out); + } + .lift:hover { + transform: translate3d(0, -3px, 0); + box-shadow: var(--glass-hi), var(--shadow-3); + } + + /* 링크 밑줄이 커서 쪽에서 자란다 */ + .link-grow { + position: relative; + text-decoration: none; + } + .link-grow::after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -3px; + height: 1px; + background: currentColor; + transform: scaleX(0); + transform-origin: left; + transition: transform var(--dur-quick) var(--ease-out); + } + .link-grow:hover::after { transform: scaleX(1); } + + /* 쇼케이스 판은 들여다보면 조금 다가온다 */ + .zoom-in { transition: transform var(--dur-normal) var(--ease-out); } + .zoom-in:hover { transform: scale(1.012); } +} + /* ---- 패럴랙스 ----------------------------------------------- scroll-driven animation 으로만 만든다. scroll 리스너는 쓰지 않는다. 움직이는 것은 transform 뿐이라 지원되지 않는 브라우저에서는