spark-server/fullstorynovel-web/public-index.html
DESKTOP-L8OUL9F\gfl0034 f941bf4454 feat(web): 补齐官网协议页,并按包名控制会员价格下发
商店审核需要独立的隐私、用户协议和注销页;运营后台也要按应用包名启用或停用价格。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-11 21:32:53 +08:00

87 lines
4.1 KiB
HTML

<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<meta name="theme-color" content="#0b0d12" media="(prefers-color-scheme: dark)" />
<meta name="theme-color" content="#f4f6fb" media="(prefers-color-scheme: light)" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="format-detection" content="telephone=no" />
<title>Full Story Novel</title>
<meta name="description" content="Read fantasy, xianxia, and serialized web novels on Full Story Novel." />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet" href="/assets/css/site.css?v=20260923-dl" />
<link rel="icon" href="/assets/favicon-32.png?v=20260920" type="image/png" sizes="32x32" />
<link rel="icon" href="/assets/favicon.png?v=20260920" type="image/png" sizes="180x180" />
<link rel="apple-touch-icon" href="/assets/favicon.png?v=20260920" />
<script>
(function () {
try {
var t = localStorage.getItem("fsn_theme");
if (t === "light" || t === "dark") document.documentElement.setAttribute("data-theme", t);
else document.documentElement.setAttribute("data-theme", "dark");
var l = localStorage.getItem("fsn_lang") || "en";
document.documentElement.lang = l;
document.documentElement.dir = (l === "ar" || l === "ur") ? "rtl" : "ltr";
} catch (e) {}
})();
</script>
</head>
<body>
<header class="topbar">
<div class="container topbar-inner">
<a class="brand" href="/">
<img class="brand-mark" src="/assets/logo.png?v=20260920" width="36" height="36" alt="Full Story Novel" />
<span class="brand-text">Full Story Novel</span>
</a>
<button type="button" class="nav-toggle" id="nav-toggle" aria-expanded="false" aria-controls="site-nav" aria-label="Menu">
<span class="nav-toggle-bars" aria-hidden="true"></span>
</button>
<nav class="nav" id="site-nav">
<a href="/" data-i18n="nav.home">Home</a>
<a href="/novels" data-i18n="nav.novels">Novels</a>
<a href="/genres" data-i18n="nav.genres">Genres</a>
</nav>
<form class="search" id="search-form">
<input id="search-input" type="search" enterkeyhint="search" data-i18n-placeholder="search.placeholder" placeholder="Search novels..." autocomplete="off" />
<button type="submit" data-i18n="search.button">Search</button>
</form>
<a class="app-dl" id="app-dl-link" href="/download" data-i18n="nav.download">Download App</a>
<div class="prefs" aria-label="Preferences">
<label class="sr-only" for="lang-select" data-i18n="prefs.language">Language</label>
<select id="lang-select" title="Language" aria-label="Language"></select>
<button type="button" id="theme-toggle" class="prefs-btn" title="Theme" aria-label="Theme">◐</button>
</div>
</div>
</header>
<main class="container" id="app">
<div class="loading" data-i18n="common.loading">Loading…</div>
</main>
<footer class="footer">
<div class="container footer-inner">
<div>
<strong>Full Story Novel</strong>
<p data-i18n="footer.tagline">Serialized fantasy reading inspired by classic web-novel platforms.</p>
</div>
<div class="footer-links">
<a href="/novels" data-i18n="footer.browse">Browse</a>
<a href="/genres" data-i18n="nav.genres">Genres</a>
<a href="/download" data-i18n="nav.download">Download App</a>
<a href="/privacy" onclick="event.stopPropagation()">隐私政策</a>
<a href="/terms" onclick="event.stopPropagation()">用户协议</a>
<a href="/delete" onclick="event.stopPropagation()">注销</a>
</div>
</div>
</footer>
<style>
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.footer-links a{white-space:nowrap;padding:0.35rem 0}
</style>
<script src="/assets/js/site.js?v=20261011-legal"></script>
</body>
</html>