diff --git a/src/components/WelcomeWorld.vue b/src/components/WelcomeWorld.vue
index ffad59a..bd2955a 100644
--- a/src/components/WelcomeWorld.vue
+++ b/src/components/WelcomeWorld.vue
@@ -1,7 +1,7 @@
@@ -311,11 +348,42 @@ const showReviewCard = computed(
§ from the network
+
+ -
+
+ {{ note.title }}
+
+ {{ publicNoteHandle(note.did) }}
+ ·
+ {{ formatPublicDate(note.publishedAt) }}
+
+
+
+
+
- Browse public notes →
+ See all public notes →
@@ -376,23 +444,62 @@ const showReviewCard = computed(
-
-
+
+
02
From the open network
- Your `.pub.md` files become public. Read public notes
- published via ATProto — no account needed.
+ Live notes published via ATProto. No account needed —
+ tap one and read.
+
+
+ {{
+ publicNoteHandle(note.did)
+ }}
+ {{ note.title }}
+ {{
+ formatPublicDate(note.publishedAt)
+ }}
+
+
+
+
+ The pool is quiet right now.
+
- Browse public notes →
+ Browse all public notes →
@@ -1150,8 +1257,8 @@ main {
}
.hero-ed-paths {
- display: grid;
- grid-template-columns: 1fr 1fr;
+ display: flex;
+ flex-direction: column;
gap: 1rem;
margin-top: 0.5rem;
}
@@ -1176,6 +1283,179 @@ main {
}
}
+.hero-ed-path-network {
+ gap: 1.25rem;
+
+ &:hover {
+ transform: none;
+ border-color: var(--hw-rule);
+ box-shadow: none;
+ }
+}
+
+.network-strip {
+ display: flex;
+ gap: 0.85rem;
+ overflow-x: auto;
+ padding: 0.25rem 0.25rem 0.75rem;
+ margin: 0 -0.25rem;
+ scroll-snap-type: x proximity;
+ scrollbar-width: thin;
+
+ &::-webkit-scrollbar {
+ height: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: var(--hw-pink-wash-2);
+ border-radius: 999px;
+ }
+}
+
+.network-card {
+ flex: 0 0 220px;
+ scroll-snap-align: start;
+ display: flex;
+ flex-direction: column;
+ gap: 0.45rem;
+ padding: 0.9rem 1rem 0.85rem;
+ background: var(--hw-paper);
+ border: 1px solid var(--hw-rule);
+ border-radius: 4px;
+ text-decoration: none;
+ color: var(--hw-ink);
+ position: relative;
+ min-height: 130px;
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.02);
+ transition:
+ transform 0.15s ease,
+ border-color 0.15s ease,
+ box-shadow 0.2s ease;
+
+ &::before {
+ content: "";
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 2px;
+ background: var(--hw-pink);
+ opacity: 0;
+ transition: opacity 0.15s ease;
+ }
+
+ &:hover {
+ transform: translateY(-2px);
+ border-color: var(--hw-pink-wash-2);
+ box-shadow: 0 14px 24px -18px rgba(201, 74, 125, 0.35);
+
+ &::before {
+ opacity: 1;
+ }
+
+ .network-card-title {
+ color: var(--hw-pink-deep);
+ }
+ }
+}
+
+.network-card-handle {
+ font-size: 0.72rem;
+ color: var(--hw-ink-faint);
+ letter-spacing: 0.02em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.network-card-title {
+ font-family: var(--hw-serif);
+ font-size: 1rem;
+ font-weight: 600;
+ line-height: 1.3;
+ color: var(--hw-ink);
+ flex: 1;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ transition: color 0.15s ease;
+}
+
+.network-card-date {
+ font-size: 0.7rem;
+ color: var(--hw-ink-faint);
+ letter-spacing: 0.04em;
+ text-transform: lowercase;
+ margin-top: auto;
+}
+
+.network-card--skel {
+ pointer-events: none;
+}
+
+.skel {
+ display: block;
+ border-radius: 3px;
+ background: linear-gradient(
+ 90deg,
+ var(--hw-pink-wash) 0%,
+ var(--hw-pink-wash-2) 50%,
+ var(--hw-pink-wash) 100%
+ );
+ background-size: 200% 100%;
+ animation: skel-shimmer 1.4s ease-in-out infinite;
+}
+
+.skel-handle {
+ height: 0.6rem;
+ width: 60%;
+}
+
+.skel-title {
+ height: 0.95rem;
+ width: 90%;
+ margin-top: 0.1rem;
+}
+
+.skel-date {
+ height: 0.55rem;
+ width: 30%;
+ margin-top: auto;
+}
+
+@keyframes skel-shimmer {
+ 0% {
+ background-position: 200% 0;
+ }
+ 100% {
+ background-position: -200% 0;
+ }
+}
+
+.network-empty {
+ font-size: 0.9rem;
+ color: var(--hw-ink-faint);
+ font-style: italic;
+ padding: 0.5rem 0;
+}
+
+.network-all {
+ align-self: flex-start;
+ font-family: var(--hw-mono);
+ font-size: 0.82rem;
+ letter-spacing: 0.04em;
+ color: var(--hw-pink-deep);
+ text-decoration: none;
+ border-bottom: 1px dashed var(--hw-pink-wash-2);
+ padding-bottom: 1px;
+
+ &:hover {
+ color: var(--hw-pink-deep);
+ border-bottom-color: var(--hw-pink);
+ }
+}
+
.hep-head {
display: flex;
gap: 0.85rem;
@@ -1849,10 +2129,79 @@ img {
padding: 0.35rem 0.8rem;
}
-.pub-notes-btn {
- width: 100%;
- justify-content: center;
+.network-side-list {
+ list-style: none;
+ padding: 0;
+ margin: 0 0 0.75rem;
+
+ li {
+ border-bottom: 1px dashed var(--hw-rule);
+
+ &:last-child {
+ border-bottom: 0;
+ }
+ }
+}
+
+.network-side-link {
+ display: flex;
+ flex-direction: column;
+ gap: 0.2rem;
+ padding: 0.65rem 0;
+ text-decoration: none;
+ color: var(--hw-ink);
+ transition: color 0.15s ease;
+
+ &:hover {
+ .network-side-title {
+ color: var(--hw-pink-deep);
+ }
+ }
+}
+
+.network-side-title {
+ font-family: var(--hw-serif);
+ font-size: 0.95rem;
+ font-weight: 600;
+ line-height: 1.3;
+ color: var(--hw-ink);
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ transition: color 0.15s ease;
+}
+
+.network-side-meta {
+ font-size: 0.72rem;
+ color: var(--hw-ink-faint);
+ display: flex;
+ gap: 0.4rem;
+ align-items: center;
+ letter-spacing: 0.02em;
+}
+
+.network-side-skel {
+ display: flex;
+ flex-direction: column;
+ gap: 0.3rem;
+ padding: 0.65rem 0;
+}
+
+.network-side-all {
+ display: inline-block;
margin-top: 0.25rem;
+ font-family: var(--hw-mono);
+ font-size: 0.78rem;
+ letter-spacing: 0.04em;
+ color: var(--hw-pink-deep);
+ text-decoration: none;
+ border-bottom: 1px dashed var(--hw-pink-wash-2);
+ padding-bottom: 1px;
+
+ &:hover {
+ border-bottom-color: var(--hw-pink);
+ }
}
/* ── Footer ─────────────────────────────────────────────────── */
@@ -2011,10 +2360,6 @@ img {
height: 160px;
}
- .hero-ed-paths {
- grid-template-columns: 1fr;
- }
-
.feature-row {
grid-template-columns: 1fr;
gap: 1.5rem;