改为轻拟物服务入口风格

This commit is contained in:
lwt
2026-05-09 10:05:40 +08:00
parent a2dc0cf42d
commit 26b48dcc82
9 changed files with 691 additions and 272 deletions
+3 -18
View File
@@ -1,21 +1,6 @@
# Copyright Notice
Copyright (c) sumi.work. Website text, page structure, and stylesheet code are
owned by sumi.work unless otherwise noted.
Copyright (c) sumi.work. Website text, page structure, stylesheets, and local
interface artwork are owned by sumi.work unless otherwise noted.
## Image Credits and Third-Party IP
The following images are decorative assets sourced from the official Honor of
Kings wallpaper service. Honor of Kings, character artwork, hero names, and
related game assets are owned by Tencent and/or their respective right holders.
- `assets/images/workspace-hero.jpg`: 刘禅-超级夜猫侠
- `assets/images/service-frp.jpg`: 姜子牙-弘道录
- `assets/images/service-git.jpg`: 芈月-西海龙王·敖闰
- `assets/images/service-gemini.jpg`: 铠-东海龙王·敖光
Official wallpaper page:
https://pvp.qq.com/web201605/wallpaper.shtml
These images should be replaced or removed if the site is used in a context
that requires explicit commercial authorization.
No third-party images are currently used by this page.
+27 -23
View File
@@ -1,14 +1,17 @@
:root {
color-scheme: light;
--bg: #f5f8ff;
--panel: #ffffff;
--text: #17233d;
--muted: #63708a;
--line: #e5ebf5;
--blue: #246bfe;
--blue-dark: #1554d1;
--green: #19b982;
--shadow: 0 22px 60px rgba(57, 83, 132, 0.13);
--bg: #f7fbff;
--panel: rgba(255, 255, 255, 0.88);
--text: #182641;
--muted: #66728a;
--line: #dfe8f6;
--blue: #2388ff;
--blue-dark: #1069e8;
--green: #21c789;
--purple: #775df6;
--orange: #f07845;
--cyan: #4fb5ff;
--shadow: 0 24px 70px rgba(41, 67, 109, 0.14);
font-family:
Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
"PingFang SC", "Microsoft YaHei", sans-serif;
@@ -29,8 +32,9 @@ body {
margin: 0;
color: var(--text);
background:
radial-gradient(circle at 82% 18%, rgba(36, 107, 254, 0.13), transparent 24rem),
linear-gradient(180deg, #f7fbff 0%, var(--bg) 52%, #ffffff 100%);
radial-gradient(circle at 88% 22%, rgba(115, 184, 255, 0.24), transparent 28rem),
radial-gradient(circle at 18% 12%, rgba(255, 244, 232, 0.9), transparent 23rem),
linear-gradient(180deg, #fffaf4 0%, var(--bg) 48%, #ffffff 100%);
}
a {
@@ -38,11 +42,6 @@ a {
text-decoration: none;
}
img {
display: block;
max-width: 100%;
}
h1,
h2,
p {
@@ -50,17 +49,22 @@ p {
}
h1 {
max-width: 620px;
margin-bottom: 22px;
font-size: clamp(2.8rem, 6vw, 5.55rem);
line-height: 1.03;
max-width: 760px;
margin-bottom: 20px;
font-size: clamp(3.1rem, 6.4vw, 5.45rem);
line-height: 1.02;
letter-spacing: 0;
}
h1 span {
color: var(--blue);
text-shadow: 0 10px 28px rgba(35, 136, 255, 0.22);
}
h2 {
margin-bottom: 0;
font-size: clamp(1.9rem, 3vw, 3rem);
line-height: 1.08;
margin-bottom: 8px;
font-size: clamp(1.7rem, 2.5vw, 2.2rem);
line-height: 1.12;
letter-spacing: 0;
}
+523 -124
View File
@@ -1,89 +1,151 @@
.brand,
.nav-links,
.header-actions,
.hero-actions,
.status-row {
.status-row,
.quick-link {
display: flex;
align-items: center;
}
.brand {
gap: 10px;
color: #14233f;
font-size: 1.04rem;
font-weight: 850;
gap: 18px;
color: #26314d;
font-size: 1.55rem;
font-weight: 900;
letter-spacing: 0;
}
.brand::after {
display: block;
width: 1px;
height: 42px;
margin-left: 24px;
background: #dfe6f2;
content: "";
}
.brand-mark {
display: grid;
width: 34px;
height: 34px;
width: 54px;
height: 54px;
place-items: center;
color: #fff;
background: linear-gradient(135deg, var(--blue), #48a8ff);
border-radius: 9px;
box-shadow: 0 10px 24px rgba(36, 107, 254, 0.24);
font-size: 1.9rem;
font-weight: 950;
background: linear-gradient(135deg, #6ea8ff, #2e82ff);
border-radius: 18px;
box-shadow: inset 0 6px 14px rgba(255, 255, 255, 0.32), 0 14px 30px rgba(35, 136, 255, 0.22);
}
.nav-links {
gap: 30px;
color: #3f4b62;
font-size: 0.95rem;
font-weight: 650;
gap: 42px;
color: #2f3a55;
font-size: 1.08rem;
font-weight: 700;
}
.nav-links a,
.record a {
.nav-links a {
position: relative;
display: inline-flex;
align-items: center;
gap: 12px;
min-height: 58px;
padding: 0 4px;
transition: color 160ms ease;
}
.record-note {
max-width: 720px;
margin: 0;
color: #98a3b7;
font-size: 0.78rem;
line-height: 1.7;
text-align: center;
}
.nav-links a:hover,
.nav-links a:focus-visible,
.record a:hover,
.record a:focus-visible {
.nav-links a.is-active {
color: var(--blue);
}
.nav-links a.is-active::after {
position: absolute;
right: 0;
bottom: -15px;
left: 0;
height: 4px;
background: var(--blue);
border-radius: 999px;
content: "";
}
.nav-icon {
font-size: 1.35rem;
line-height: 1;
}
.header-actions {
gap: 24px;
justify-content: end;
}
.quick-link {
min-height: 50px;
justify-content: center;
gap: 10px;
padding: 0 20px;
border-radius: 14px;
font-size: 1.04rem;
font-weight: 750;
transition:
transform 160ms ease,
box-shadow 160ms ease;
}
.quick-link:hover,
.quick-link:focus-visible {
transform: translateY(-2px);
}
.quick-link.gemini {
color: #6650df;
background: rgba(119, 93, 246, 0.08);
border: 1px solid rgba(119, 93, 246, 0.25);
}
.quick-link.deepseek {
color: #126ed6;
background: rgba(35, 136, 255, 0.08);
border: 1px solid rgba(35, 136, 255, 0.24);
}
.eyebrow {
margin: 0 0 12px;
color: var(--blue);
font-size: 0.78rem;
font-weight: 850;
letter-spacing: 0.12em;
font-size: 0.82rem;
font-weight: 900;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.subtitle {
max-width: 580px;
margin-bottom: 30px;
color: var(--muted);
font-size: clamp(1.06rem, 1.6vw, 1.24rem);
line-height: 1.8;
max-width: 710px;
margin-bottom: 34px;
color: #35405b;
font-size: clamp(1.1rem, 1.7vw, 1.35rem);
line-height: 1.85;
}
.hero-actions {
flex-wrap: wrap;
gap: 14px;
margin-bottom: 28px;
gap: 24px;
margin-bottom: 32px;
}
.button {
display: inline-flex;
min-height: 48px;
min-height: 66px;
align-items: center;
justify-content: center;
padding: 0 22px;
gap: 12px;
padding: 0 44px;
border: 1px solid transparent;
border-radius: 8px;
font-weight: 800;
border-radius: 12px;
font-size: 1.08rem;
font-weight: 850;
transition:
transform 160ms ease,
box-shadow 160ms ease,
@@ -98,7 +160,7 @@
.button.primary {
color: #fff;
background: var(--blue);
box-shadow: 0 14px 30px rgba(36, 107, 254, 0.24);
box-shadow: 0 16px 34px rgba(35, 136, 255, 0.28);
}
.button.primary:hover,
@@ -107,52 +169,319 @@
}
.button.secondary {
color: var(--blue);
background: #fff;
border-color: #dbe6ff;
color: #6650df;
background: rgba(255, 255, 255, 0.68);
border-color: rgba(119, 93, 246, 0.24);
}
.status-row {
width: fit-content;
gap: 9px;
padding: 10px 14px;
color: #2f456b;
background: rgba(255, 255, 255, 0.8);
border: 1px solid #dce7f8;
gap: 10px;
padding: 13px 18px;
color: #21805e;
background: rgba(232, 255, 244, 0.88);
border: 1px solid rgba(33, 199, 137, 0.28);
border-radius: 999px;
box-shadow: 0 12px 32px rgba(57, 83, 132, 0.08);
box-shadow: 0 14px 34px rgba(33, 199, 137, 0.1);
}
.status-row strong {
color: #143055;
font-weight: 850;
color: #187050;
font-weight: 900;
}
.status-dot {
.status-row i {
display: block;
width: 10px;
height: 10px;
background: var(--green);
border-radius: 999px;
box-shadow: 0 0 0 6px rgba(25, 185, 130, 0.13);
}
.shield {
display: grid;
width: 24px;
height: 24px;
place-items: center;
color: var(--green);
}
.hero-art {
position: relative;
min-height: 390px;
overflow: hidden;
}
.portal {
position: absolute;
right: 110px;
bottom: 24px;
width: 285px;
height: 360px;
background: linear-gradient(180deg, #d9f0ff, #9ad4ff);
border: 3px solid rgba(63, 158, 240, 0.42);
border-radius: 150px 150px 30px 30px;
box-shadow: inset 0 0 0 16px rgba(255, 255, 255, 0.32), 0 30px 72px rgba(35, 136, 255, 0.18);
}
.portal::before {
position: absolute;
inset: 96px 56px 0;
background: linear-gradient(180deg, #f7fcff, #b6e2ff);
border-radius: 110px 110px 24px 24px;
content: "";
}
.portal-face {
position: absolute;
top: 72px;
left: 50%;
z-index: 1;
display: flex;
gap: 48px;
transform: translateX(-50%);
}
.portal-face span {
width: 10px;
height: 20px;
background: #26314d;
border-radius: 999px;
}
.portal-face::after {
position: absolute;
top: 28px;
left: 50%;
width: 28px;
height: 16px;
border-bottom: 4px solid #26314d;
border-radius: 0 0 999px 999px;
content: "";
transform: translateX(-50%);
}
.portal-inner {
position: absolute;
right: 88px;
bottom: 50px;
z-index: 1;
display: grid;
width: 90px;
height: 150px;
place-items: center;
background: linear-gradient(180deg, #f9fdff, #bce7ff);
border-radius: 80px 80px 20px 20px;
}
.arrow {
color: #68bdf1;
font-size: 3rem;
font-weight: 900;
}
.road {
position: absolute;
right: 110px;
bottom: -20px;
width: 270px;
height: 120px;
background: linear-gradient(105deg, transparent 20%, #f6fbff 21% 42%, #fedb9b 43% 49%, #f6fbff 50% 72%, transparent 73%);
border-radius: 50%;
}
.cloud {
position: absolute;
background: rgba(255, 255, 255, 0.82);
border: 2px solid rgba(131, 195, 245, 0.42);
border-radius: 999px;
}
.cloud::before,
.cloud::after {
position: absolute;
background: inherit;
border: inherit;
border-radius: inherit;
content: "";
}
.cloud-one {
top: 64px;
left: 140px;
width: 92px;
height: 34px;
}
.cloud-one::before {
top: -24px;
left: 10px;
width: 34px;
height: 34px;
}
.cloud-one::after {
top: -12px;
left: 42px;
width: 32px;
height: 32px;
}
.cloud-two {
right: 10px;
bottom: 138px;
width: 100px;
height: 38px;
}
.cloud-two::before {
top: -22px;
left: 18px;
width: 38px;
height: 38px;
}
.cloud-two::after {
top: -12px;
left: 56px;
width: 34px;
height: 34px;
}
.star {
position: absolute;
color: #ffc54d;
font-size: 2rem;
text-shadow: 0 4px 12px rgba(255, 197, 77, 0.3);
}
.star-one {
top: 120px;
left: 130px;
}
.star-two {
top: 42px;
right: 78px;
}
.dot {
position: absolute;
width: 10px;
height: 10px;
border: 2px solid #7cc8ff;
border-radius: 999px;
}
.dot-one {
top: 80px;
left: 95px;
}
.dot-two {
right: 36px;
top: 160px;
}
.bush {
position: absolute;
bottom: 36px;
width: 118px;
height: 70px;
background: #c5f0b6;
border: 3px solid rgba(103, 196, 111, 0.42);
border-radius: 80px 80px 28px 28px;
}
.bush::before,
.bush::after {
position: absolute;
width: 10px;
height: 16px;
background: #26314d;
border-radius: 999px;
content: "";
}
.bush::before {
top: 28px;
left: 44px;
}
.bush::after {
top: 28px;
right: 44px;
}
.bush-left {
left: 145px;
}
.bush-right {
right: 30px;
bottom: 10px;
width: 74px;
height: 114px;
background:
radial-gradient(ellipse at 50% 18%, #b8ed9b 0 24%, transparent 25%),
radial-gradient(ellipse at 25% 54%, #9ee285 0 21%, transparent 22%),
radial-gradient(ellipse at 76% 54%, #8dd97c 0 22%, transparent 23%);
border: 0;
}
.bush-right::before,
.bush-right::after {
display: none;
}
.section-heading h2 {
display: flex;
align-items: center;
gap: 14px;
}
.section-heading h2 span {
display: inline-block;
width: 6px;
height: 30px;
background: var(--blue);
border-radius: 999px;
}
.section-heading h2 i {
color: var(--blue);
font-style: normal;
}
.section-note {
max-width: 420px;
margin-bottom: 0;
color: var(--muted);
font-size: 1rem;
line-height: 1.7;
text-align: right;
}
.dot-matrix {
width: 48px;
height: 48px;
flex: 0 0 auto;
background-image: radial-gradient(circle, rgba(35, 136, 255, 0.68) 2px, transparent 3px);
background-size: 14px 14px;
}
.service-card {
position: relative;
display: block;
min-height: 280px;
display: flex;
min-height: 290px;
flex-direction: column;
align-items: center;
justify-content: center;
overflow: hidden;
background: #0f1d34;
border: 1px solid var(--line);
padding: 28px 20px;
text-align: center;
background: linear-gradient(145deg, rgba(255, 255, 255, 0.92), rgba(244, 250, 255, 0.86));
border: 1px solid rgba(151, 198, 245, 0.38);
border-radius: 20px;
box-shadow: 0 18px 42px rgba(38, 57, 96, 0.16);
box-shadow: 0 18px 42px rgba(38, 57, 96, 0.1);
transition:
transform 180ms ease,
border-color 180ms ease,
@@ -161,98 +490,168 @@
.service-card::before {
position: absolute;
inset: 0;
z-index: 1;
right: -32px;
bottom: -26px;
width: 98px;
height: 74px;
background:
linear-gradient(180deg, rgba(8, 21, 44, 0.02) 12%, rgba(8, 21, 44, 0.42) 54%, rgba(8, 21, 44, 0.9) 100%),
linear-gradient(135deg, rgba(36, 107, 254, 0.24), transparent 54%);
radial-gradient(circle at 20% 78%, #effaff 0 28%, transparent 29%),
radial-gradient(circle at 44% 58%, #effaff 0 35%, transparent 36%),
radial-gradient(circle at 74% 75%, #effaff 0 30%, transparent 31%);
content: "";
}
.service-card::after {
position: absolute;
inset: 12px;
pointer-events: none;
border-radius: 16px;
content: "";
}
.service-card:hover,
.service-card:focus-visible {
transform: translateY(-8px);
border-color: rgba(36, 107, 254, 0.28);
box-shadow: 0 28px 62px rgba(38, 57, 96, 0.2);
border-color: rgba(35, 136, 255, 0.42);
box-shadow: 0 28px 62px rgba(38, 57, 96, 0.16);
outline: none;
}
.service-card:hover img,
.service-card:focus-visible img {
transform: scale(1.06);
}
.service-card img {
width: 100%;
height: 100%;
min-height: 280px;
object-fit: cover;
transition: transform 260ms ease;
}
.service-content {
position: absolute;
inset: auto 0 0;
z-index: 2;
display: flex;
min-height: 55%;
flex-direction: column;
justify-content: flex-end;
padding: 22px;
color: #fff;
}
.service-icon {
display: inline-flex;
width: fit-content;
min-width: 48px;
min-height: 36px;
align-items: center;
justify-content: center;
padding: 0 12px;
margin-bottom: auto;
color: #fff;
background: rgba(255, 255, 255, 0.18);
border: 1px solid rgba(255, 255, 255, 0.2);
display: grid;
width: 112px;
height: 112px;
place-items: center;
margin-bottom: 20px;
color: var(--blue);
background:
radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.96) 0 42%, transparent 43%),
rgba(255, 255, 255, 0.64);
border: 12px solid rgba(255, 255, 255, 0.72);
border-radius: 999px;
font-size: 0.82rem;
box-shadow: 0 14px 28px rgba(38, 57, 96, 0.12);
font-size: 2.4rem;
font-weight: 900;
backdrop-filter: blur(12px);
}
.service-title {
margin-top: 74px;
color: #fff;
font-size: 1.18rem;
font-weight: 900;
color: #14213c;
font-size: 1.5rem;
font-weight: 950;
}
.service-desc {
margin-top: 8px;
color: rgba(255, 255, 255, 0.78);
font-size: 0.94rem;
margin-top: 6px;
color: #6b7285;
font-size: 1rem;
line-height: 1.55;
}
@media (max-width: 960px) {
.section-note {
text-align: left;
.arrow-button {
display: grid;
width: 42px;
height: 42px;
place-items: center;
margin-top: 20px;
color: currentColor;
background: rgba(255, 255, 255, 0.64);
border: 1px solid currentColor;
border-radius: 999px;
font-size: 1.25rem;
font-weight: 900;
}
.card-blue {
color: var(--blue);
}
.card-orange {
color: var(--orange);
border-color: rgba(240, 120, 69, 0.32);
background: linear-gradient(145deg, #fffaf5, #fff4e8);
}
.card-green {
color: #16a99a;
border-color: rgba(33, 199, 137, 0.32);
background: linear-gradient(145deg, #f7fffb, #eefcf6);
}
.card-purple {
color: var(--purple);
border-color: rgba(119, 93, 246, 0.3);
background: linear-gradient(145deg, #fbf9ff, #f5f1ff);
}
.card-deepseek {
color: #237fe8;
background: linear-gradient(145deg, #f7fbff, #eef7ff);
}
@media (max-width: 1180px) {
.brand::after {
display: none;
}
.nav-links,
.header-actions {
justify-content: center;
}
}
@media (max-width: 560px) {
.button {
@media (max-width: 640px) {
.brand {
font-size: 1.35rem;
}
.nav-links,
.header-actions {
flex-wrap: wrap;
gap: 10px;
}
h1 {
font-size: clamp(2.7rem, 12vw, 4.2rem);
}
.button,
.quick-link {
width: 100%;
}
.hero-actions,
.status-row {
align-items: flex-start;
flex-direction: column;
border-radius: 14px;
width: 100%;
}
.service-card,
.service-card img {
min-height: 230px;
.hero-art {
min-height: 260px;
}
.portal {
right: 18px;
width: 210px;
height: 270px;
transform: scale(0.86);
transform-origin: right bottom;
}
.cloud-one,
.star-one,
.dot-one,
.bush-left {
display: none;
}
.section-heading {
gap: 16px;
}
.dot-matrix {
display: none;
}
.service-card {
min-height: 250px;
}
}
+69 -58
View File
@@ -1,115 +1,126 @@
.site-header {
position: sticky;
top: 0;
z-index: 20;
display: flex;
align-items: center;
justify-content: space-between;
width: min(1180px, calc(100% - 40px));
min-height: 72px;
margin: 0 auto;
transition:
background 180ms ease,
border-color 180ms ease,
box-shadow 180ms ease;
}
.site-header.is-scrolled {
width: 100%;
padding: 0 max(20px, calc((100% - 1180px) / 2));
background: rgba(255, 255, 255, 0.88);
border-bottom: 1px solid rgba(229, 235, 245, 0.9);
box-shadow: 0 10px 36px rgba(42, 67, 112, 0.08);
backdrop-filter: blur(18px);
}
.site-header,
.hero,
.services-section,
.record {
width: min(1180px, calc(100% - 40px));
width: min(1480px, calc(100% - 36px));
margin-inline: auto;
}
.site-header {
position: sticky;
top: 16px;
z-index: 20;
display: grid;
grid-template-columns: auto 1fr auto;
gap: 26px;
align-items: center;
min-height: 88px;
padding: 0 28px;
background: rgba(255, 255, 255, 0.82);
border: 1px solid rgba(217, 227, 241, 0.9);
border-radius: 24px;
box-shadow: 0 18px 44px rgba(30, 46, 78, 0.12);
backdrop-filter: blur(20px);
}
.hero {
min-height: auto;
padding: clamp(64px, 12vh, 128px) 0 56px;
display: grid;
grid-template-columns: minmax(0, 0.95fr) minmax(420px, 1.05fr);
gap: clamp(22px, 4vw, 58px);
align-items: center;
min-height: 420px;
padding: 42px 48px 22px;
}
.services-section {
padding: 10px 0 86px;
position: relative;
padding: 30px 42px 34px;
background: rgba(255, 255, 255, 0.78);
border: 1px solid rgba(215, 226, 242, 0.95);
border-radius: 28px;
box-shadow: var(--shadow);
backdrop-filter: blur(16px);
}
.section-heading {
display: flex;
align-items: end;
align-items: flex-start;
justify-content: space-between;
gap: 24px;
margin-bottom: 22px;
gap: 28px;
margin-bottom: 26px;
}
.services {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
gap: 20px;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 24px;
}
.record {
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
gap: 8px;
padding: 24px 0 34px;
color: #7a8598;
font-size: 0.88rem;
border-top: 1px solid var(--line);
padding: 24px 0 30px;
color: #7f8798;
font-size: 0.95rem;
}
.record-main {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
gap: 22px;
}
@media (max-width: 960px) {
.nav-links {
display: none;
@media (max-width: 1180px) {
.site-header {
grid-template-columns: 1fr;
gap: 16px;
padding: 18px 22px;
}
.hero {
grid-template-columns: 1fr;
padding-inline: 24px;
}
.hero-art {
min-height: 320px;
}
.services {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.section-heading {
align-items: flex-start;
flex-direction: column;
}
}
@media (max-width: 560px) {
@media (max-width: 640px) {
.site-header,
.hero,
.services-section,
.record {
width: min(100% - 28px, 1180px);
width: min(100% - 24px, 1480px);
}
.site-header {
min-height: 64px;
top: 10px;
border-radius: 18px;
}
.hero {
padding: 34px 0 20px;
}
.services-section {
padding: 24px 18px;
border-radius: 20px;
}
.services {
grid-template-columns: 1fr;
}
.record {
gap: 6px;
text-align: center;
}
.record-main {
flex-direction: column;
gap: 6px;
text-align: center;
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

+69 -49
View File
@@ -4,7 +4,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="sumi.work 服务入口,提供 FRP、Git、Syncthing、Gemini 与 DeepSeek 等常用服务导航。" />
<meta name="theme-color" content="#f5f8ff" />
<meta name="theme-color" content="#f7fbff" />
<title>sumi.work - 服务入口</title>
<link rel="stylesheet" href="assets/css/base.css" />
<link rel="stylesheet" href="assets/css/layout.css" />
@@ -18,99 +18,121 @@
</a>
<nav class="nav-links" aria-label="主导航">
<a href="#services">服务入口</a>
<a href="#status">连接状态</a>
<a href="https://gemini.google.com/app" target="_blank" rel="noreferrer">Gemini</a>
<a href="https://platform.deepseek.com/" target="_blank" rel="noreferrer">DeepSeek</a>
<a class="is-active" href="#services">
<span class="nav-icon" aria-hidden="true"></span>
服务入口
</a>
<a href="#status">
<span class="nav-icon" aria-hidden="true">╱╲</span>
连接状态
</a>
</nav>
<div class="header-actions">
<a class="quick-link gemini" href="https://gemini.google.com/app" target="_blank" rel="noreferrer">✦ Gemini ↗</a>
<a class="quick-link deepseek" href="https://platform.deepseek.com/" target="_blank" rel="noreferrer">鲸 DeepSeek ↗</a>
</div>
</header>
<main>
<section class="hero" aria-label="sumi.work 服务入口介绍">
<div class="hero-copy">
<p class="eyebrow">Private Service Gateway</p>
<h1>Private Service <span>Gateway</span></h1>
<p class="subtitle">
聚合常用内部服务与外部应用,保持入口清晰、状态明确、访问路径简单。
</p>
<div class="hero-actions">
<a class="button primary" href="#services">查看服务</a>
<a class="button secondary" href="https://platform.deepseek.com/" target="_blank" rel="noreferrer">打开 DeepSeek</a>
<a class="button primary" href="#services"><span aria-hidden="true"></span> 查看服务</a>
<a class="button secondary" href="https://platform.deepseek.com/" target="_blank" rel="noreferrer">打开 DeepSeek</a>
</div>
<div class="status-row" id="status" aria-label="服务状态">
<span class="status-dot"></span>
<span class="shield" aria-hidden="true"></span>
<strong>HTTPS 已启用</strong>
<span>安全连接 · 在线</span>
<i aria-hidden="true"></i>
</div>
</div>
<div class="hero-art" aria-hidden="true">
<span class="cloud cloud-one"></span>
<span class="cloud cloud-two"></span>
<span class="star star-one"></span>
<span class="star star-two"></span>
<span class="dot dot-one"></span>
<span class="dot dot-two"></span>
<div class="portal">
<div class="portal-face">
<span></span>
<span></span>
</div>
<div class="portal-inner">
<span class="arrow"></span>
</div>
</div>
<div class="road"></div>
<div class="bush bush-left"></div>
<div class="bush bush-right"></div>
</div>
</section>
<section class="services-section" id="services" aria-labelledby="services-title">
<div class="section-heading">
<div>
<p class="eyebrow">Quick Access</p>
<h2 id="services-title">常用服务</h2>
<h2 id="services-title"><span></span> Quick Access <i>/</i> 常用服务</h2>
<p class="section-note">像游戏门户一样把入口做成清晰的视觉卡片,看到就能点。</p>
</div>
<p class="section-note">像游戏门户一样把入口做成清晰的视觉卡片,看到就能点。</p>
<span class="dot-matrix" aria-hidden="true"></span>
</div>
<div class="services">
<a class="service-card accent-blue" href="/frp/" aria-label="进入 FRP 面板">
<img src="assets/images/service-frp.jpg" alt="" loading="lazy" />
<span class="service-content">
<span class="service-icon">FRP</span>
<span class="service-title">FRP 面板</span>
<span class="service-desc">内网穿透管理</span>
</span>
<a class="service-card card-blue" href="/frp/" aria-label="进入 FRP 面板">
<span class="service-icon"></span>
<span class="service-title">FRP 面板</span>
<span class="service-desc">内网穿透管理</span>
<span class="arrow-button"></span>
</a>
<a class="service-card accent-green" href="/git/" aria-label="进入 Git 服务">
<img src="assets/images/service-git.jpg" alt="" loading="lazy" />
<span class="service-content">
<span class="service-icon">Git</span>
<span class="service-title">Git 服务</span>
<span class="service-desc">代码仓库</span>
</span>
<a class="service-card card-orange" href="/git/" aria-label="进入 Git 服务">
<span class="service-icon"></span>
<span class="service-title">Git 服务</span>
<span class="service-desc">代码仓库</span>
<span class="arrow-button"></span>
</a>
<a class="service-card accent-orange" href="/sync/" aria-label="进入 Syncthing">
<img src="assets/images/workspace-hero.jpg" alt="" loading="lazy" />
<span class="service-content">
<span class="service-icon">Sync</span>
<span class="service-title">Syncthing</span>
<span class="service-desc">文件同步</span>
</span>
<a class="service-card card-green" href="/sync/" aria-label="进入 Syncthing">
<span class="service-icon"></span>
<span class="service-title">Syncthing</span>
<span class="service-desc">文件同步</span>
<span class="arrow-button"></span>
</a>
<a
class="service-card accent-purple"
class="service-card card-purple"
href="https://gemini.google.com/app"
target="_blank"
rel="noreferrer"
aria-label="打开 Gemini"
>
<img src="assets/images/service-gemini.jpg" alt="" loading="lazy" />
<span class="service-content">
<span class="service-icon">AI</span>
<span class="service-title">Gemini</span>
<span class="service-desc">Google AI 助手</span>
</span>
<span class="service-icon"></span>
<span class="service-title">Gemini</span>
<span class="service-desc">Google AI 助手</span>
<span class="arrow-button"></span>
</a>
<a
class="service-card accent-deepseek"
class="service-card card-deepseek"
href="https://platform.deepseek.com/"
target="_blank"
rel="noreferrer"
aria-label="打开 DeepSeek 开发平台"
>
<img src="assets/images/service-frp.jpg" alt="" loading="lazy" />
<span class="service-content">
<span class="service-icon">API</span>
<span class="service-title">DeepSeek</span>
<span class="service-desc">开发平台</span>
</span>
<span class="service-icon"></span>
<span class="service-title">DeepSeek</span>
<span class="service-desc">开发平台</span>
<span class="arrow-button"></span>
</a>
</div>
</section>
@@ -119,11 +141,9 @@
<footer class="record">
<div class="record-main">
<span>© <span id="year"></span> sumi.work</span>
<span aria-hidden="true">|</span>
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noreferrer">粤ICP备2026053646号</a>
</div>
<p class="record-note">
页面图片素材来自王者荣耀官方壁纸页,相关角色与美术版权归腾讯及权利方所有;网站文字、结构与样式归 sumi.work 所有。
</p>
</footer>
<script src="assets/js/main.js"></script>