diff --git a/src/App.vue b/src/App.vue index 6b7844c..03ff741 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,50 +1,96 @@ - - - + + + + + - - + + + + - - + + diff --git a/src/assets/base.css b/src/assets/base.css index 8816868..5709bab 100644 --- a/src/assets/base.css +++ b/src/assets/base.css @@ -1,86 +1,41 @@ -/* color palette from */ :root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-black: #181818; - --vt-c-black-soft: #222222; - --vt-c-black-mute: #282828; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); - --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --vt-c-text-dark-1: var(--vt-c-white); - --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --section-gap: 160px; -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--vt-c-black); - --color-background-soft: var(--vt-c-black-soft); - --color-background-mute: var(--vt-c-black-mute); - - --color-border: var(--vt-c-divider-dark-2); - --color-border-hover: var(--vt-c-divider-dark-1); - - --color-heading: var(--vt-c-text-dark-1); - --color-text: var(--vt-c-text-dark-2); - } + --green-900: #123d2d; + --green-800: #1a5a42; + --green-700: #237556; + --green-600: #2f8f68; + --green-500: #43a879; + --green-200: #d9f1e5; + --green-100: #eef9f3; + --surface: #f7fbf8; + --surface-strong: #ffffff; + --text-primary: #1b2a23; + --text-secondary: #4b6156; + --border-soft: #d6e6dc; + --shadow-soft: 0 14px 30px rgba(19, 61, 45, 0.09); + --shadow-strong: 0 20px 45px rgba(19, 61, 45, 0.16); } *, *::before, *::after { box-sizing: border-box; - margin: 0; - font-weight: normal; +} + +html, +body, +#app { + min-height: 100%; } body { - min-height: 100vh; - color: var(--color-text); - background: var(--color-background); - transition: - color 0.5s, - background-color 0.5s; + margin: 0; + color: var(--text-primary); + background: + radial-gradient(circle at 12% 18%, rgba(67, 168, 121, 0.2), transparent 32%), + radial-gradient(circle at 85% 0%, rgba(35, 117, 86, 0.14), transparent 28%), + linear-gradient(165deg, #eef9f3 0%, #f8fcfa 50%, #edf7f1 100%); + font-family: "Source Han Sans SC", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; line-height: 1.6; - font-family: - Inter, - -apple-system, - BlinkMacSystemFont, - 'Segoe UI', - Roboto, - Oxygen, - Ubuntu, - Cantarell, - 'Fira Sans', - 'Droid Sans', - 'Helvetica Neue', - sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } diff --git a/src/assets/main.css b/src/assets/main.css index 36fb845..2ced1de 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -1,35 +1,45 @@ -@import './base.css'; +@import "./base.css"; #app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - font-weight: normal; + width: 100%; } -a, -.green { +a { + color: var(--green-700); text-decoration: none; - color: hsla(160, 100%, 37%, 1); - transition: 0.4s; - padding: 3px; } -@media (hover: hover) { - a:hover { - background-color: hsla(160, 100%, 37%, 0.2); - } +a:hover { + color: var(--green-800); } -@media (min-width: 1024px) { - body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } +.page-title { + margin: 0; + font-size: clamp(24px, 3vw, 34px); + line-height: 1.2; + letter-spacing: 0.4px; +} + +.page-subtitle { + margin: 10px 0 0; + color: var(--text-secondary); + font-size: 15px; +} + +.surface-card { + background: var(--surface-strong); + border: 1px solid var(--border-soft); + border-radius: 18px; + box-shadow: var(--shadow-soft); +} + +.fade-up-enter-active, +.fade-up-leave-active { + transition: opacity 0.22s ease, transform 0.22s ease; +} + +.fade-up-enter-from, +.fade-up-leave-to { + opacity: 0; + transform: translateY(8px); } diff --git a/src/components/MyFooter.vue b/src/components/MyFooter.vue index 44c41c8..7a884e9 100644 --- a/src/components/MyFooter.vue +++ b/src/components/MyFooter.vue @@ -1,17 +1,32 @@ -