Files
Pawer/refrence_html/profile.html
2026-06-18 14:33:50 +08:00

334 lines
23 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="zh-CN"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>我的 · 汪圈</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;450;510;600;700&amp;family=Space+Grotesk:wght@500;600;700&amp;display=swap" rel="stylesheet">
<style>
:root {
--bg: #14102b;
--bg-warm: #1c1442;
--surface: #1f1742;
--surface-2: #251c4a;
--surface-hi: #2d2255;
--fg: #f0e9ff;
--fg-2: #c7b9e0;
--muted: #8a7aab;
--border: #2e234a;
--accent: #d8b4ff;
--accent-2: #ffb3c8;
--primary: #ffd9a8;
--primary-on: #2a1d10;
--success: #8fe5b5;
--warn: #ffd166;
--font-display: 'Space Grotesk', 'Inter', system-ui, sans-serif;
--font-body: 'Inter', system-ui, -apple-system, 'PingFang SC', sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; overflow: hidden; }
body {
background: radial-gradient(ellipse 70% 50% at 25% 0%, rgba(216, 180, 255, 0.10), transparent 60%), radial-gradient(ellipse 60% 50% at 75% 100%, rgba(255, 179, 200, 0.08), transparent 60%), #0a0719;
color: var(--fg);
font-family: var(--font-body);
-webkit-font-smoothing: antialiased;
display: grid; place-items: center;
overflow: auto;
}
.stage-wrap { padding: 24px; }
.phone { width: 390px; height: 844px; background: #0a0719; border-radius: 50px; position: relative; overflow: hidden; box-shadow: 0 60px 120px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.06), inset 0 0 0 2px rgba(255, 255, 255, 0.04); }
.phone::before { content: ''; position: absolute; top: 11px; left: 50%; transform: translateX(-50%); width: 110px; height: 32px; background: #000; border-radius: 9999px; z-index: 100; }
.screen { position: absolute; inset: 0; background: linear-gradient(180deg, #1c1442 0%, #14102b 100%); display: flex; flex-direction: column; overflow: hidden; }
.status-bar { height: 54px; flex-shrink: 0; display: flex; align-items: flex-end; justify-content: space-between; padding: 0 32px 8px; font: 600 15px/1 var(--font-body); }
.status-bar .right { display: flex; align-items: center; gap: 6px; }
.status-bar .ic-sig { display: flex; align-items: flex-end; gap: 2px; }
.status-bar .ic-sig span { width: 3px; background: var(--fg); border-radius: 1px; }
.status-bar .ic-sig span:nth-child(1) { height: 4px; } .status-bar .ic-sig span:nth-child(2) { height: 6px; } .status-bar .ic-sig span:nth-child(3) { height: 8px; } .status-bar .ic-sig span:nth-child(4) { height: 10px; }
.status-bar .ic-batt { width: 26px; height: 12px; border: 1.2px solid rgba(240, 233, 255, 0.6); border-radius: 3px; padding: 1.5px; }
.status-bar .ic-batt .fill { display: block; height: 100%; background: var(--fg); border-radius: 1px; width: 78%; }
/* WeChat mini program capsule */
.mp-capsule {
display: flex; align-items: center;
height: 28px; border-radius: 14px;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.14);
overflow: hidden;
backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.mp-capsule .capsule-btn {
display: grid; place-items: center;
width: 32px; height: 28px;
background: transparent; border: 0; padding: 0; cursor: pointer; color: var(--fg);
}
.mp-capsule .capsule-btn + .capsule-btn { border-left: 1px solid rgba(255, 255, 255, 0.12); }
.mp-capsule svg { width: 14px; height: 14px; }
.content { flex: 1; overflow-y: auto; padding-bottom: 100px; -webkit-overflow-scrolling: touch; }
.content::-webkit-scrollbar { display: none; }
.top-nav { padding: 8px 20px 12px; display: flex; align-items: center; gap: 10px; }
.top-nav h1 { font-family: var(--font-display); font-size: 30px; font-weight: 700; letter-spacing: -0.02em; }
.icon-btn { width: 38px; height: 38px; border-radius: 50%; background: rgba(45, 34, 85, 0.4); display: grid; place-items: center; cursor: pointer; border: 1px solid rgba(216, 180, 255, 0.08); position: relative; }
.icon-btn svg { width: 18px; height: 18px; color: var(--fg); }
.icon-btn .dot { position: absolute; top: 8px; right: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--accent-2); border: 1.5px solid var(--bg); }
/* hero card */
.hero {
margin: 0 20px 18px;
padding: 22px 20px;
border-radius: 22px;
background: linear-gradient(160deg, rgba(216, 180, 255, 0.12) 0%, rgba(255, 179, 200, 0.08) 100%);
border: 1px solid rgba(216, 180, 255, 0.12);
position: relative; overflow: hidden;
}
.hero::before { content: ''; position: absolute; right: -40px; top: -40px; width: 160px; height: 160px; border-radius: 50%; background: radial-gradient(circle, rgba(255, 217, 168, 0.18) 0%, transparent 70%); pointer-events: none; }
.hero .top { display: flex; align-items: center; gap: 14px; position: relative; }
.hero .av { width: 64px; height: 64px; border-radius: 50%; background: linear-gradient(135deg, var(--accent), var(--accent-2)); display: grid; place-items: center; color: var(--primary-on); font: 700 24px/1 var(--font-display); box-shadow: 0 8px 20px rgba(216, 180, 255, 0.3); }
.hero .nm { font-family: var(--font-display); font-weight: 700; font-size: 22px; letter-spacing: -0.01em; display: flex; align-items: center; gap: 6px; }
.hero .nm .level { padding: 2px 8px; border-radius: 6px; background: linear-gradient(90deg, var(--accent) 0%, var(--accent-2) 100%); color: var(--primary-on); font: 700 10px/1.2 var(--font-display); }
.hero .sub { font: 400 12px/1.4 var(--font-body); color: var(--fg-2); margin-top: 6px; }
.hero .sub .pin { color: var(--accent); }
.hero .badges { display: flex; gap: 6px; margin-top: 10px; }
.hero .badge { padding: 4px 8px; border-radius: 999px; background: rgba(45, 34, 85, 0.4); border: 1px solid rgba(216, 180, 255, 0.08); font: 500 10px/1 var(--font-body); color: var(--fg-2); display: flex; align-items: center; gap: 4px; }
.hero .badge svg { width: 10px; height: 10px; color: var(--accent); }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding: 0 20px; margin-bottom: 18px; }
.stat { background: rgba(45, 34, 85, 0.4); border-radius: 14px; padding: 12px 6px; text-align: center; border: 1px solid rgba(216, 180, 255, 0.06); }
.stat .n { font-family: var(--font-display); font-weight: 700; font-size: 18px; letter-spacing: -0.01em; color: var(--fg); font-variant-numeric: tabular-nums; }
.stat .l { font: 400 11px/1 var(--font-body); color: var(--muted); margin-top: 4px; }
.actions-2 { display: flex; gap: 10px; padding: 0 20px; margin-bottom: 24px; }
.btn-pri { flex: 1; padding: 11px; border-radius: 12px; background: linear-gradient(90deg, var(--accent) 0%, var(--accent-2) 100%); color: var(--primary-on); font: 600 13px/1 var(--font-body); border: 0; cursor: pointer; text-align: center; }
.btn-sec { flex: 1; padding: 11px; border-radius: 12px; background: rgba(45, 34, 85, 0.4); color: var(--fg); font: 600 13px/1 var(--font-body); border: 1px solid rgba(216, 180, 255, 0.1); cursor: pointer; text-align: center; display: flex; align-items: center; justify-content: center; gap: 6px; }
.btn-sec svg { width: 14px; height: 14px; }
/* section title */
.sec { padding: 0 20px 8px; display: flex; align-items: center; justify-content: space-between; margin-top: 4px; }
.sec h3 { font: 600 13px/1 var(--font-display); letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-2); }
.sec .more { font: 500 11px/1 var(--font-body); color: var(--accent); display: flex; align-items: center; gap: 2px; cursor: pointer; }
.sec .more svg { width: 12px; height: 12px; }
/* pets */
.pets { padding: 0 20px; display: flex; gap: 10px; margin-bottom: 20px; }
.pet-card { flex: 1; background: rgba(45, 34, 85, 0.4); border-radius: 16px; padding: 12px; border: 1px solid rgba(216, 180, 255, 0.08); cursor: pointer; transition: background 200ms; }
.pet-card:hover { background: rgba(45, 34, 85, 0.6); }
.pet-card .photo { aspect-ratio: 4/3; border-radius: 10px; background: linear-gradient(135deg, #ffd9a8, #ffb3c8); position: relative; overflow: hidden; }
.pet-card .photo::after { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 50% 40%, rgba(255, 255, 255, 0.3), transparent 50%); }
.pet-card:nth-child(2) .photo { background: linear-gradient(135deg, #d8b4ff, #a4d4ff); }
.pet-card .photo .label { position: absolute; left: 8px; bottom: 8px; padding: 3px 8px; border-radius: 999px; background: rgba(0, 0, 0, 0.4); backdrop-filter: blur(6px); color: var(--fg); font: 500 9px/1 var(--font-body); }
.pet-card .nm { font: 600 13px/1.2 var(--font-body); margin-top: 10px; }
.pet-card .meta { font: 400 10px/1.3 var(--font-body); color: var(--muted); margin-top: 3px; }
.pet-card.add { display: grid; place-items: center; min-height: 130px; border: 1.5px dashed rgba(216, 180, 255, 0.18); background: transparent; color: var(--muted); }
.pet-card.add .ic { width: 40px; height: 40px; border-radius: 50%; background: rgba(45, 34, 85, 0.4); display: grid; place-items: center; }
.pet-card.add .ic svg { width: 18px; height: 18px; }
.pet-card.add .lbl { font: 500 11px/1 var(--font-body); margin-top: 8px; }
/* quick grid */
.grid { padding: 0 20px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 20px; }
.g-item { background: rgba(45, 34, 85, 0.4); border-radius: 14px; padding: 14px 6px; text-align: center; border: 1px solid rgba(216, 180, 255, 0.06); cursor: pointer; transition: background 200ms; position: relative; }
.g-item:hover { background: rgba(45, 34, 85, 0.6); }
.g-item .ic { width: 32px; height: 32px; margin: 0 auto 6px; border-radius: 10px; display: grid; place-items: center; }
.g-item .ic svg { width: 16px; height: 16px; color: var(--primary-on); }
.g-item .ic.b1 { background: linear-gradient(135deg, #ffd9a8, #ffb3c8); }
.g-item .ic.b2 { background: linear-gradient(135deg, #d8b4ff, #a4d4ff); }
.g-item .ic.b3 { background: linear-gradient(135deg, #8fe5b5, #d8b4ff); }
.g-item .ic.b4 { background: linear-gradient(135deg, #ffb3c8, #ffd9a8); }
.g-item .l { font: 500 10px/1.2 var(--font-body); color: var(--fg-2); }
.g-item .badge-count { position: absolute; top: 4px; right: 14px; min-width: 16px; height: 16px; padding: 0 5px; border-radius: 8px; background: var(--accent-2); color: var(--primary-on); font: 700 9px/16px var(--font-body); text-align: center; }
/* menu list */
.menu { margin: 0 20px; background: rgba(45, 34, 85, 0.4); border-radius: 18px; border: 1px solid rgba(216, 180, 255, 0.06); overflow: hidden; }
.menu-row { display: flex; align-items: center; gap: 12px; padding: 14px 16px; cursor: pointer; transition: background 200ms; border-bottom: 1px solid rgba(216, 180, 255, 0.04); }
.menu-row:last-child { border-bottom: 0; }
.menu-row:hover { background: rgba(45, 34, 85, 0.4); }
.menu-row .ic { width: 32px; height: 32px; border-radius: 9px; display: grid; place-items: center; flex-shrink: 0; }
.menu-row .ic svg { width: 16px; height: 16px; color: var(--primary-on); }
.menu-row .ic.m1 { background: linear-gradient(135deg, #d8b4ff, #a4d4ff); }
.menu-row .ic.m2 { background: linear-gradient(135deg, #8fe5b5, #d8b4ff); }
.menu-row .ic.m3 { background: linear-gradient(135deg, #ffb3c8, #ffd9a8); }
.menu-row .ic.m4 { background: linear-gradient(135deg, #ffd9a8, #ffb3c8); }
.menu-row .ic.m5 { background: linear-gradient(135deg, #a4d4ff, #d8b4ff); }
.menu-row .nm { font: 500 14px/1.2 var(--font-body); flex: 1; }
.menu-row .right { display: flex; align-items: center; gap: 8px; }
.menu-row .val { font: 400 12px/1 var(--font-body); color: var(--muted); }
.menu-row .switch { width: 36px; height: 22px; background: var(--accent); border-radius: 11px; position: relative; cursor: pointer; }
.menu-row .switch::after { content: ''; position: absolute; right: 2px; top: 2px; width: 18px; height: 18px; background: var(--fg); border-radius: 50%; }
.menu-row .switch.off { background: var(--muted); }
.menu-row .switch.off::after { right: auto; left: 2px; }
.menu-row .chev { color: var(--muted); }
/* tab bar */
.tabbar { position: absolute; left: 0; right: 0; bottom: 0; height: 88px; padding-bottom: 22px; background: rgba(20, 16, 43, 0.85); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-top: 1px solid rgba(216, 180, 255, 0.06); display: flex; align-items: center; justify-content: space-around; z-index: 60; }
.tab-item { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 6px 8px; cursor: pointer; flex: 1; color: var(--muted); transition: color 200ms; text-decoration: none; }
.tab-item.act { color: var(--accent); }
.tab-item svg { width: 24px; height: 24px; }
.tab-item .label { font: 500 10px/1 var(--font-body); }
.tab-fab .b { width: 52px; height: 52px; border-radius: 16px; background: linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%); display: grid; place-items: center; box-shadow: 0 10px 24px rgba(216, 180, 255, 0.3); margin-top: -16px; transition: transform 200ms; }
.tab-fab:hover .b { transform: scale(1.05); }
.tab-fab svg { width: 24px; height: 24px; color: var(--primary-on); }
.home-indicator { position: absolute; left: 50%; bottom: 8px; transform: translateX(-50%); width: 134px; height: 5px; background: var(--fg); border-radius: 3px; opacity: 0.7; z-index: 70; }
</style>
</head>
<body>
<div class="stage-wrap">
<div class="phone">
<div class="screen">
<div class="status-bar">
<span>9:41</span>
<div class="mp-capsule" aria-label="小程序菜单">
<button class="capsule-btn" aria-label="更多">
<svg viewBox="0 0 24 24" fill="currentColor">
<circle cx="6" cy="12" r="1.6"></circle>
<circle cx="12" cy="12" r="1.6"></circle>
<circle cx="18" cy="12" r="1.6"></circle>
</svg>
</button>
<button class="capsule-btn" aria-label="关闭">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
</button>
</div>
</div>
<div class="content">
<div class="top-nav">
<h1>我的</h1>
<button class="icon-btn" aria-label="设置">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
</button>
<button class="icon-btn" aria-label="通知">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>
<span class="dot"></span>
</button>
</div>
<div class="hero">
<div class="top">
<div class="av"></div>
<div style="flex:1">
<div class="nm">阿布的家长 <span class="level">Lv.6</span></div>
<div class="sub"><span class="pin">📍</span> 上海 · 浦东新区 · 6 年养宠经验</div>
<div class="badges">
<div class="badge"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M9 12l2 2 4-4"></path><circle cx="12" cy="12" r="10" fill="none" stroke="currentColor" stroke-width="2"></circle></svg>实名认证</div>
<div class="badge">🐾 资深铲屎官</div>
</div>
</div>
</div>
</div>
<div class="stats">
<div class="stat"><div class="n">128</div><div class="l">动态</div></div>
<div class="stat"><div class="n">342</div><div class="l">关注</div></div>
<div class="stat"><div class="n">1.2k</div><div class="l">粉丝</div></div>
<div class="stat"><div class="n">56</div><div class="l">收藏</div></div>
</div>
<div class="actions-2">
<button class="btn-pri">编辑资料</button>
<button class="btn-sec">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"></circle><circle cx="6" cy="12" r="3"></circle><circle cx="18" cy="19" r="3"></circle><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line></svg>
分享主页
</button>
</div>
<div class="sec">
<h3>我的毛孩子 · 2</h3>
<div class="more">管理 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg></div>
</div>
<div class="pets">
<div class="pet-card">
<div class="photo"><span class="label">金毛 · ♀</span></div>
<div class="nm">奶昔</div>
<div class="meta">2 岁 · 18 kg · 已绝育</div>
</div>
<div class="pet-card">
<div class="photo"><span class="label">布偶 · ♂</span></div>
<div class="nm">年糕</div>
<div class="meta">1 岁 · 4.5 kg · 已绝育</div>
</div>
<div class="pet-card add">
<div>
<div class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
<div class="lbl">添加宠物</div>
</div>
</div>
</div>
<div class="sec">
<h3>偏好设置</h3>
</div>
<div class="menu">
<div class="menu-row">
<div class="ic m1"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path></svg></div>
<div class="nm">配对偏好</div>
<div class="right"><div class="val">金毛 · 1-3 岁 · 3 km</div><span class="chev"></span></div>
</div>
<div class="menu-row">
<div class="ic m2"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg></div>
<div class="nm">消息通知</div>
<div class="right"><div class="switch"></div></div>
</div>
<div class="menu-row">
<div class="ic m3"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg></div>
<div class="nm">位置共享</div>
<div class="right"><div class="switch"></div></div>
</div>
<div class="menu-row">
<div class="ic m4"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg></div>
<div class="nm">隐私设置</div>
<div class="right"><span class="chev"></span></div>
</div>
<div class="menu-row">
<div class="ic m5"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg></div>
<div class="nm">帮助与反馈</div>
<div class="right"><span class="chev"></span></div>
</div>
</div>
<div style="height: 30px;"></div>
</div>
<nav class="tabbar">
<a class="tab-item" href="plaza.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon></svg>
<span class="label">广场</span>
</a>
<a class="tab-item" href="nearby.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg>
<span class="label">附近</span>
</a>
<a class="tab-fab" href="publish.html">
<div class="b">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
</div>
</a>
<a class="tab-item" href="messages.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
<span class="label">消息</span>
</a>
<a class="tab-item act" href="profile.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
<span class="label">我的</span>
</a>
</nav>
<div class="home-indicator"></div>
</div>
</div>
</div>
<script>
// Toggle switches
document.querySelectorAll('.switch').forEach(sw => {
sw.addEventListener('click', () => sw.classList.toggle('off'));
});
</script>
</body></html>