{"id":1453,"date":"2026-05-20T23:37:50","date_gmt":"2026-05-20T15:37:50","guid":{"rendered":"https:\/\/tongchun.website\/index.php\/film-system\/"},"modified":"2026-05-21T16:40:30","modified_gmt":"2026-05-21T08:40:30","slug":"film-system","status":"publish","type":"page","link":"https:\/\/tongchun.website\/index.php\/film-system\/","title":{"rendered":"Film System"},"content":{"rendered":"\n<meta property=\"og:title\" content=\"Film System - \u80f6\u7247\u6444\u5f71\u7ba1\u7406\u770b\u677f\">\n<meta property=\"og:description\" content=\"\u6697\u623f\u5de5\u4f5c\u53f0 \u00b7 1\u5377\u62cd\u6444\u4e2d \/ 6\u5377\u5df2\u51b2\u626b\">\n<meta property=\"og:image\" content=\"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/51620001-1-1024x679.jpg\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:url\" content=\"https:\/\/tongchun.website\/index.php\/film-system\/\">\n<style>\n\/* === WordPress Theme Override === *\/\nhtml, body, #page, .site, .site-inner, .site-content {\n  background: var(--bg-primary) !important;\n  color: var(--text-primary) !important;\n}\n#masthead.site-header,\n.sidebar, .widget-area, aside,\n.comments-area, .comment-respond,\n.site-footer, #colophon,\n.entry-meta, .post-meta, .byline, .posted-on, .entry-footer,\n.nav-links, .post-navigation, .wp-block-post-author,\n.entry-header, .page-header, .entry-title {\n  display: none !important;\n}\n.site-inner { max-width: 100% !important; }\n.content-area, .site-main { width: 100% !important; max-width: 100% !important; }\n\n\/* ============================================\n   Film System \u2014 \u80f6\u7247\u6444\u5f71\u7ba1\u7406\u770b\u677f\n   \u8bbe\u8ba1\uff1a\u6697\u623f\u4e3b\u9898 \/ \u7425\u73c0\u70b9\u7f00 \/ \u80f6\u7247\u8d28\u611f\n   ============================================ *\/\n\n\/* ---- CSS Variables ---- *\/\n:root {\n  --bg-primary: #0d0d0d;\n  --bg-secondary: #141414;\n  --bg-card: #1a1a1a;\n  --bg-card-hover: #1f1f1f;\n  --border: #2a2a2a;\n  --border-hover: #3a3a3a;\n  --text-primary: #e8e4e0;\n  --text-secondary: #999590;\n  --text-muted: #666360;\n  --accent: #c9a26a;\n  --accent-light: #ddb87d;\n  --accent-dim: #8a7348;\n  --danger: #c75450;\n  --success: #5a8a6a;\n  --shadow-sm: 0 2px 8px rgba(0,0,0,0.4);\n  --shadow-md: 0 4px 16px rgba(0,0,0,0.5);\n  --shadow-lg: 0 8px 32px rgba(0,0,0,0.6);\n  --radius-sm: 6px;\n  --radius-md: 10px;\n  --radius-lg: 14px;\n  --transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n\/* ---- Reset & Base ---- *\/\n*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\nhtml { font-size: 16px; }\nbody {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  background: var(--bg-primary) !important;\n  color: var(--text-primary) !important;\n  line-height: 1.6;\n  min-height: 100vh;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\nimg { max-width: 100%; display: block; }\na { color: inherit; text-decoration: none; }\n\n\/* ---- Password Lock Screen ---- *\/\n.lock-screen {\n  position: fixed; inset: 0; z-index: 9999;\n  background: rgba(5,5,5,0.92);\n  backdrop-filter: blur(12px);\n  display: flex; align-items: center; justify-content: center;\n  flex-direction: column;\n  transition: opacity 0.6s ease, visibility 0.6s ease;\n}\n.lock-screen.hidden {\n  opacity: 0; visibility: hidden; pointer-events: none;\n}\n.lock-screen .lock-icon {\n  width: 56px; height: 56px; margin-bottom: 24px;\n  border: 2px solid var(--accent-dim);\n  border-radius: 50%;\n  display: flex; align-items: center; justify-content: center;\n  color: var(--accent);\n  font-size: 24px;\n}\n.lock-screen h2 {\n  font-size: 1.25rem; font-weight: 500;\n  color: var(--text-primary); margin-bottom: 6px;\n  letter-spacing: 0.05em;\n}\n.lock-screen p {\n  font-size: 0.875rem; color: var(--text-muted); margin-bottom: 28px;\n}\n.lock-input-wrap {\n  display: flex; gap: 10px; align-items: center;\n}\n.lock-screen input[type=\"password\"] {\n  background: var(--bg-card);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-md);\n  padding: 12px 18px;\n  color: var(--text-primary);\n  font-size: 1rem;\n  width: 220px;\n  outline: none;\n  letter-spacing: 0.08em;\n  transition: var(--transition);\n}\n.lock-screen input[type=\"password\"]:focus {\n  border-color: var(--accent);\n  box-shadow: 0 0 0 3px rgba(201,162,106,0.15);\n}\n.lock-screen button {\n  background: var(--accent);\n  color: #1a1209;\n  border: none;\n  border-radius: var(--radius-md);\n  padding: 12px 22px;\n  font-size: 0.9375rem;\n  font-weight: 600;\n  cursor: pointer;\n  transition: var(--transition);\n}\n.lock-screen button:hover {\n  background: var(--accent-light);\n  transform: translateY(-1px);\n}\n.lock-screen .error-msg {\n  margin-top: 14px;\n  font-size: 0.8125rem;\n  color: var(--danger);\n  opacity: 0;\n  transform: translateY(-4px);\n  transition: opacity 0.2s, transform 0.2s;\n}\n.lock-screen .error-msg.show {\n  opacity: 1; transform: translateY(0);\n}\n@keyframes shake {\n  0%, 100% { transform: translateX(0); }\n  20%, 60% { transform: translateX(-6px); }\n  40%, 80% { transform: translateX(6px); }\n}\n.shake { animation: shake 0.4s ease-in-out; }\n\n\/* ---- App Content ---- *\/\n.app-content {\n  opacity: 0;\n  transform: translateY(12px);\n  transition: opacity 0.5s ease, transform 0.5s ease;\n  max-width: 1200px;\n  margin: 0 auto;\n  padding: 40px 24px 60px;\n}\n.app-content.visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n\/* ---- Header ---- *\/\n.site-header {\n  margin-bottom: 36px;\n  padding-bottom: 24px;\n  border-bottom: 1px solid var(--border);\n}\n.site-header h1 {\n  font-size: 1.75rem;\n  font-weight: 600;\n  letter-spacing: 0.04em;\n  display: flex; align-items: center; gap: 12px;\n}\n.site-header h1 .film-icon {\n  width: 36px; height: 36px;\n  border: 2px solid var(--accent);\n  border-radius: var(--radius-sm);\n  display: inline-flex; align-items: center; justify-content: center;\n  font-size: 14px; color: var(--accent);\n}\n.site-header .subtitle {\n  font-size: 0.875rem;\n  color: var(--text-muted);\n  margin-top: 4px;\n  margin-left: 48px;\n}\n\n\/* ---- Stats Panel ---- *\/\n.stats-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 16px;\n  margin-bottom: 40px;\n}\n.stat-card {\n  background: var(--bg-card);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-md);\n  padding: 22px 18px;\n  text-align: center;\n  transition: var(--transition);\n}\n.stat-card:hover {\n  border-color: var(--border-hover);\n  background: var(--bg-card-hover);\n  transform: translateY(-2px);\n  box-shadow: var(--shadow-sm);\n}\n.stat-card .stat-value {\n  font-size: 2rem;\n  font-weight: 700;\n  color: var(--accent);\n  line-height: 1.2;\n  font-variant-numeric: tabular-nums;\n}\n.stat-card .stat-label {\n  font-size: 0.8125rem;\n  color: var(--text-secondary);\n  margin-top: 6px;\n  letter-spacing: 0.02em;\n}\n\n\/* ---- Section Headers ---- *\/\n.section-title {\n  font-size: 1.125rem;\n  font-weight: 600;\n  color: var(--text-primary);\n  margin-bottom: 18px;\n  display: flex; align-items: center; gap: 10px;\n}\n.section-title .dot {\n  width: 8px; height: 8px;\n  border-radius: 50%;\n  background: var(--accent);\n}\n.section-title .dot.active { background: var(--success); }\n\n\/* ---- Active Rolls ---- *\/\n.active-section { margin-bottom: 44px; }\n.active-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n  gap: 18px;\n}\n.active-card {\n  background: var(--bg-card);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-lg);\n  padding: 22px 24px;\n  position: relative;\n  overflow: hidden;\n  transition: var(--transition);\n}\n.active-card::before {\n  content: \"\";\n  position: absolute; top: 0; left: 0; right: 0;\n  height: 3px;\n  background: linear-gradient(90deg, var(--accent), var(--accent-light));\n  opacity: 0.8;\n}\n.active-card:hover {\n  border-color: var(--border-hover);\n  transform: translateY(-2px);\n  box-shadow: var(--shadow-md);\n}\n.active-card .card-header {\n  display: flex; justify-content: space-between; align-items: flex-start;\n  margin-bottom: 14px;\n}\n.active-card .film-model {\n  font-size: 1.125rem;\n  font-weight: 600;\n  color: var(--text-primary);\n}\n.active-card .film-badge {\n  font-size: 0.6875rem;\n  padding: 3px 10px;\n  border-radius: 20px;\n  background: rgba(90,138,106,0.15);\n  color: var(--success);\n  font-weight: 500;\n  letter-spacing: 0.04em;\n}\n.active-card .film-meta {\n  font-size: 0.8125rem;\n  color: var(--text-secondary);\n  margin-bottom: 16px;\n  line-height: 1.8;\n}\n.active-card .film-meta span { margin-right: 14px; }\n.active-card .film-meta .label { color: var(--text-muted); }\n\n.progress-wrap { margin-bottom: 10px; }\n.progress-top {\n  display: flex; justify-content: space-between;\n  font-size: 0.75rem;\n  color: var(--text-muted);\n  margin-bottom: 6px;\n}\n.progress-track {\n  height: 8px;\n  background: var(--bg-primary);\n  border-radius: 4px;\n  overflow: hidden;\n  border: 1px solid var(--border);\n}\n.progress-fill {\n  height: 100%;\n  background: linear-gradient(90deg, var(--accent-dim), var(--accent), var(--accent-light));\n  border-radius: 4px;\n  transition: width 1.2s cubic-bezier(0.4, 0, 0.2, 1);\n  width: 0;\n}\n.progress-fill.anim { width: var(--progress-pct); }\n.days-elapsed {\n  font-size: 0.8125rem;\n  color: var(--text-muted);\n  margin-top: 10px;\n}\n.days-elapsed strong {\n  color: var(--accent);\n  font-weight: 600;\n}\n\n\/* ---- Archive Gallery ---- *\/\n.archive-section { margin-bottom: 48px; }\n.archive-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 20px;\n}\n.archive-card {\n  background: var(--bg-card);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-lg);\n  overflow: hidden;\n  transition: var(--transition);\n  cursor: pointer;\n}\n.archive-card:hover {\n  border-color: var(--border-hover);\n  transform: translateY(-4px);\n  box-shadow: var(--shadow-lg);\n}\n.archive-card .cover-wrap {\n  position: relative;\n  aspect-ratio: 3\/4;\n  overflow: hidden;\n  background: var(--bg-secondary);\n}\n.archive-card .cover-wrap img {\n  width: 100%; height: 100%;\n  object-fit: cover;\n  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.archive-card:hover .cover-wrap img {\n  transform: scale(1.06);\n}\n.archive-card .cover-overlay {\n  position: absolute; inset: 0;\n  background: linear-gradient(to top, rgba(0,0,0,0.6) 0%, transparent 50%);\n  opacity: 0;\n  transition: opacity 0.3s;\n}\n.archive-card:hover .cover-overlay {\n  opacity: 1;\n}\n.archive-card .cover-icon {\n  position: absolute;\n  bottom: 12px; right: 12px;\n  width: 32px; height: 32px;\n  background: rgba(255,255,255,0.12);\n  backdrop-filter: blur(4px);\n  border-radius: 50%;\n  display: flex; align-items: center; justify-content: center;\n  color: var(--text-primary);\n  font-size: 13px;\n  opacity: 0;\n  transform: translateY(6px);\n  transition: all 0.3s ease;\n}\n.archive-card:hover .cover-icon {\n  opacity: 1; transform: translateY(0);\n}\n.archive-card .card-info {\n  padding: 16px 18px;\n}\n.archive-card .info-model {\n  font-size: 0.9375rem;\n  font-weight: 600;\n  color: var(--text-primary);\n  margin-bottom: 4px;\n}\n.archive-card .info-title {\n  font-size: 0.8125rem;\n  color: var(--text-secondary);\n  margin-bottom: 10px;\n  line-height: 1.4;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  -webkit-box-orient: vertical;\n  overflow: hidden;\n}\n.archive-card .info-meta {\n  font-size: 0.75rem;\n  color: var(--text-muted);\n  display: flex; gap: 12px;\n}\n\n\/* ---- Footer ---- *\/\n.site-footer {\n  border-top: 1px solid var(--border);\n  padding-top: 28px;\n}\n.legend-bar {\n  display: flex; flex-wrap: wrap; gap: 18px;\n  margin-bottom: 24px;\n}\n.legend-item {\n  display: flex; align-items: center; gap: 8px;\n  font-size: 0.8125rem;\n  color: var(--text-secondary);\n}\n.legend-swatch {\n  width: 14px; height: 14px;\n  border-radius: 3px;\n  border: 1px solid var(--border);\n}\n.legend-swatch.e100d {\n  background: linear-gradient(135deg, #e8c87a, #c9a26a);\n}\n.legend-swatch.fpan {\n  background: linear-gradient(135deg, #888, #555);\n}\n.legend-swatch.fuji {\n  background: linear-gradient(135deg, #7ab8c9, #5a98a8);\n}\n.copyright {\n  font-size: 0.75rem;\n  color: var(--text-muted);\n  text-align: center;\n  padding-bottom: 20px;\n}\n\n\/* ---- Responsive ---- *\/\n@media (max-width: 900px) {\n  .archive-grid { grid-template-columns: repeat(2, 1fr); }\n  .stats-grid { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 560px) {\n  .archive-grid { grid-template-columns: 1fr; }\n  .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }\n  .stat-card .stat-value { font-size: 1.5rem; }\n  .active-grid { grid-template-columns: 1fr; }\n  .app-content { padding: 24px 16px 40px; }\n  .site-header h1 { font-size: 1.4rem; }\n}\n\n.sr-only {\n  position: absolute; width: 1px; height: 1px;\n  padding: 0; margin: -1px;\n  overflow: hidden; clip: rect(0,0,0,0);\n  border: 0;\n}\n<\/style>\n\n<!-- PASSWORD LOCK SCREEN -->\n<div id=\"lockScreen\" class=\"lock-screen\" role=\"dialog\" aria-modal=\"true\" aria-label=\"\u5bc6\u7801\u9a8c\u8bc1\">\n  <div class=\"lock-icon\" aria-hidden=\"true\">&#128274;<\/div>\n  <h2>\u6697\u623f\u5165\u53e3<\/h2>\n  <p>\u8bf7\u8f93\u5165\u5bc6\u7801\u4ee5\u67e5\u770b\u80f6\u7247\u7ba1\u7406\u770b\u677f<\/p>\n  <div class=\"lock-input-wrap\">\n    <input type=\"password\" id=\"pwdInput\" placeholder=\"\u5bc6\u7801\" autocomplete=\"off\" aria-label=\"\u5bc6\u7801\">\n    <button id=\"pwdBtn\" type=\"button\">\u8fdb\u5165<\/button>\n  <\/div>\n  <div id=\"pwdError\" class=\"error-msg\">\u5bc6\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5<\/div>\n<\/div>\n\n<!-- MAIN APP CONTENT -->\n<div id=\"appContent\" class=\"app-content\">\n\n  <header class=\"site-header\">\n    <h1>\n      <span class=\"film-icon\" aria-hidden=\"true\">&#127902;<\/span>\n      Film System\n    <\/h1>\n    <p class=\"subtitle\">\u80f6\u7247\u6444\u5f71\u7ba1\u7406\u770b\u677f \u00b7 \u6697\u623f\u5de5\u4f5c\u53f0<\/p>\n  <\/header>\n\n  <section class=\"stats-section\" aria-label=\"\u7edf\u8ba1\u9762\u677f\">\n    <div class=\"stats-grid\">\n      <div class=\"stat-card\">\n        <div class=\"stat-value\">1<\/div>\n        <div class=\"stat-label\">\u62cd\u6444\u4e2d \/ \u5377<\/div>\n      <\/div>\n      <div class=\"stat-card\">\n        <div class=\"stat-value\">6<\/div>\n        <div class=\"stat-label\">\u5df2\u51b2\u626b \/ \u5377<\/div>\n      <\/div>\n      <div class=\"stat-card\">\n        <div class=\"stat-value\">3<\/div>\n        <div class=\"stat-label\">\u80f6\u5377\u79cd\u7c7b \/ \u79cd<\/div>\n      <\/div>\n      <div class=\"stat-card\">\n        <div class=\"stat-value\" style=\"font-size:1.1rem; padding-top:0.6rem;\">AE1-p<\/div>\n        <div class=\"stat-label\">\u5e38\u7528\u76f8\u673a<\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"active-section\" aria-label=\"\u62cd\u6444\u4e2d\u80f6\u5377\">\n    <h2 class=\"section-title\"><span class=\"dot active\"><\/span>\u62cd\u6444\u4e2d Active<\/h2>\n    <div class=\"active-grid\" id=\"activeGrid\">\n\n        <article class=\"active-card\" data-id=\"film_20260520_001\">\n          <div class=\"card-header\">\n            <div class=\"film-model\">Fuji 400<\/div>\n            <span class=\"film-badge\">\u62cd\u6444\u4e2d<\/span>\n          <\/div>\n          <div class=\"film-meta\">\n            <span><span class=\"label\">\u76f8\u673a<\/span> Canon AE1-p<\/span>\n            <span><span class=\"label\">\u5f00\u5377<\/span> 2026-05-20<\/span>\n          <\/div>\n          <div class=\"progress-wrap\">\n            <div class=\"progress-top\">\n              <span>36 \/ 36 \u5f20<\/span>\n              <span>100%<\/span>\n            <\/div>\n            <div class=\"progress-track\">\n              <div class=\"progress-fill\" style=\"--progress-pct:100%\"><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"days-elapsed\">\u5df2\u62cd\u6444 <strong>1<\/strong> \u5929<\/div>\n        <\/article>\n        \n    <\/div>\n  <\/section>\n\n  <section class=\"archive-section\" aria-label=\"\u5df2\u51b2\u626b\u80f6\u5377\">\n    <h2 class=\"section-title\"><span class=\"dot\"><\/span>\u5df2\u51b2\u626b Archive<\/h2>\n    <div class=\"archive-grid\" id=\"archiveGrid\">\n\n        <article class=\"archive-card\" data-id=\"blog_1183\" onclick=\"openBlog(1183)\">\n          <div class=\"cover-wrap\">\n            <img decoding=\"async\" src=\"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/51620001-1-1024x679.jpg\" alt=\"[5294]2026-2\" loading=\"lazy\">\n            <div class=\"cover-overlay\"><\/div>\n            <div class=\"cover-icon\" aria-hidden=\"true\">&#8599;<\/div>\n          <\/div>\n          <div class=\"card-info\">\n            <div class=\"info-model\">Kodak 5294 E100D<\/div>\n            <div class=\"info-title\">[5294]2026-2<\/div>\n            <div class=\"info-meta\">\n              <span>2026-03-22<\/span>\n              <span>\u5317\u4eac<\/span>\n            <\/div>\n          <\/div>\n        <\/article>\n        \n\n        <article class=\"archive-card\" data-id=\"blog_1179\" onclick=\"openBlog(1179)\">\n          <div class=\"cover-wrap\">\n            <img decoding=\"async\" src=\"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/51620001-1024x679.jpg\" alt=\"[5294]2026-1\" loading=\"lazy\">\n            <div class=\"cover-overlay\"><\/div>\n            <div class=\"cover-icon\" aria-hidden=\"true\">&#8599;<\/div>\n          <\/div>\n          <div class=\"card-info\">\n            <div class=\"info-model\">Kodak 5294 E100D<\/div>\n            <div class=\"info-title\">[5294]2026-1<\/div>\n            <div class=\"info-meta\">\n              <span>2026-03-22<\/span>\n              <span>\u5b9c\u660c\/\u5f90\u5dde\/\u76d0\u57ce\/\u6e56\u5317\/\u6c5f\u82cf<\/span>\n            <\/div>\n          <\/div>\n        <\/article>\n        \n\n        <article class=\"archive-card\" data-id=\"blog_1120\" onclick=\"openBlog(1120)\">\n          <div class=\"cover-wrap\">\n            <img decoding=\"async\" src=\"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/DSC05638-1024x683.jpg\" alt=\"[FPAN100]2025-1\" loading=\"lazy\">\n            <div class=\"cover-overlay\"><\/div>\n            <div class=\"cover-icon\" aria-hidden=\"true\">&#8599;<\/div>\n          <\/div>\n          <div class=\"card-info\">\n            <div class=\"info-model\">Fomapan 100<\/div>\n            <div class=\"info-title\">[FPAN100]2025-1<\/div>\n            <div class=\"info-meta\">\n              <span>2026-03-22<\/span>\n              <span>\u4e09\u5ce1\u5927\u5b66\/\u5b9c\u660c\/\u6e56\u5317<\/span>\n            <\/div>\n          <\/div>\n        <\/article>\n        \n\n        <article class=\"archive-card\" data-id=\"blog_1021\" onclick=\"openBlog(1021)\">\n          <div class=\"cover-wrap\">\n            <img decoding=\"async\" src=\"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/000050280001-1024x679.jpg\" alt=\"[5294]2025-3\" loading=\"lazy\">\n            <div class=\"cover-overlay\"><\/div>\n            <div class=\"cover-icon\" aria-hidden=\"true\">&#8599;<\/div>\n          <\/div>\n          <div class=\"card-info\">\n            <div class=\"info-model\">Kodak 5294 E100D<\/div>\n            <div class=\"info-title\">[5294]2025-3<\/div>\n            <div class=\"info-meta\">\n              <span>2026-03-21<\/span>\n              <span>\u4e09\u5ce1\u5927\u5b66\/\u5b9c\u660c\/\u6e56\u5317<\/span>\n            <\/div>\n          <\/div>\n        <\/article>\n        \n\n        <article class=\"archive-card\" data-id=\"blog_930\" onclick=\"openBlog(930)\">\n          <div class=\"cover-wrap\">\n            <img decoding=\"async\" src=\"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/DSCF5303-1024x681.jpg\" alt=\"[5294]2025-2\" loading=\"lazy\">\n            <div class=\"cover-overlay\"><\/div>\n            <div class=\"cover-icon\" aria-hidden=\"true\">&#8599;<\/div>\n          <\/div>\n          <div class=\"card-info\">\n            <div class=\"info-model\">Kodak 5294 E100D<\/div>\n            <div class=\"info-title\">[5294]2025-2<\/div>\n            <div class=\"info-meta\">\n              <span>2026-03-21<\/span>\n              <span>\u6606\u660e\/\u5927\u7406\/\u4e3d\u6c5f\/\u9999\u683c\u91cc\u62c9\/\u4e91\u5357<\/span>\n            <\/div>\n          <\/div>\n        <\/article>\n        \n\n        <article class=\"archive-card\" data-id=\"blog_921\" onclick=\"openBlog(921)\">\n          <div class=\"cover-wrap\">\n            <img decoding=\"async\" src=\"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/000081550001-\u62f7\u8d1d-1024x679.jpg\" alt=\"[5294]2025-1\" loading=\"lazy\">\n            <div class=\"cover-overlay\"><\/div>\n            <div class=\"cover-icon\" aria-hidden=\"true\">&#8599;<\/div>\n          <\/div>\n          <div class=\"card-info\">\n            <div class=\"info-model\">Kodak 5294 E100D<\/div>\n            <div class=\"info-title\">[5294]2025-1<\/div>\n            <div class=\"info-meta\">\n              <span>2026-03-21<\/span>\n              <span>\u5b9c\u660c\/\u6b66\u6c49\/\u6e56\u5317<\/span>\n            <\/div>\n          <\/div>\n        <\/article>\n        \n    <\/div>\n  <\/section>\n\n  <footer class=\"site-footer\">\n    <div class=\"legend-bar\">\n<div class=\"legend-item\"><span class=\"legend-swatch fpan\"><\/span><span>100 (1\u5377)<\/span><\/div>\n<div class=\"legend-item\"><span class=\"legend-swatch fuji\"><\/span><span>Fuji 400 (0\u5377)<\/span><\/div>\n<div class=\"legend-item\"><span class=\"legend-swatch e100d\"><\/span><span>5294 E100D (5\u5377)<\/span><\/div>\n    <\/div>\n    <div class=\"copyright\">\n      Film System \u00b7 Canon AE1-p \u00b7 \u8bb0\u5f55\u6bcf\u4e00\u6b21\u66dd\u5149\n    <\/div>\n  <\/footer>\n\n<\/div>\n\n<script>\n\/* ===== DATA (injected from Python) ===== *\/\nconst FILM_DATA = {\"active_rolls\": [{\"id\": \"film_20260520_001\", \"model\": \"Fuji 400\", \"camera\": \"Canon AE1-p\", \"start_date\": \"2026-05-20\", \"shot\": 36, \"total\": 36, \"status\": \"\u62cd\u6444\u4e2d\"}], \"scanned_rolls\": [{\"id\": \"blog_1183\", \"model\": \"Kodak 5294 E100D\", \"camera\": \"Canon AE1-p\", \"post_id\": 1183, \"title\": \"[5294]2026-2\", \"scan_date\": \"2026-03-22\", \"location\": \"\u5317\u4eac\", \"cover\": \"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/51620001-1-1024x679.jpg\"}, {\"id\": \"blog_1179\", \"model\": \"Kodak 5294 E100D\", \"camera\": \"Canon AE1-p\", \"post_id\": 1179, \"title\": \"[5294]2026-1\", \"scan_date\": \"2026-03-22\", \"location\": \"\u5b9c\u660c\/\u5f90\u5dde\/\u76d0\u57ce\/\u6e56\u5317\/\u6c5f\u82cf\", \"cover\": \"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/51620001-1024x679.jpg\"}, {\"id\": \"blog_1120\", \"model\": \"Fomapan 100\", \"camera\": \"Canon AE1-p\", \"post_id\": 1120, \"title\": \"[FPAN100]2025-1\", \"scan_date\": \"2026-03-22\", \"location\": \"\u4e09\u5ce1\u5927\u5b66\/\u5b9c\u660c\/\u6e56\u5317\", \"cover\": \"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/DSC05638-1024x683.jpg\"}, {\"id\": \"blog_1021\", \"model\": \"Kodak 5294 E100D\", \"camera\": \"Canon AE1-p\", \"post_id\": 1021, \"title\": \"[5294]2025-3\", \"scan_date\": \"2026-03-21\", \"location\": \"\u4e09\u5ce1\u5927\u5b66\/\u5b9c\u660c\/\u6e56\u5317\", \"cover\": \"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/000050280001-1024x679.jpg\"}, {\"id\": \"blog_930\", \"model\": \"Kodak 5294 E100D\", \"camera\": \"Canon AE1-p\", \"post_id\": 930, \"title\": \"[5294]2025-2\", \"scan_date\": \"2026-03-21\", \"location\": \"\u6606\u660e\/\u5927\u7406\/\u4e3d\u6c5f\/\u9999\u683c\u91cc\u62c9\/\u4e91\u5357\", \"cover\": \"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/DSCF5303-1024x681.jpg\"}, {\"id\": \"blog_921\", \"model\": \"Kodak 5294 E100D\", \"camera\": \"Canon AE1-p\", \"post_id\": 921, \"title\": \"[5294]2025-1\", \"scan_date\": \"2026-03-21\", \"location\": \"\u5b9c\u660c\/\u6b66\u6c49\/\u6e56\u5317\", \"cover\": \"https:\/\/tongchun.website\/wp-content\/uploads\/2026\/03\/000081550001-\u62f7\u8d1d-1024x679.jpg\"}]};\n\n\/* ===== PASSWORD PROTECTION ===== *\/\nconst PASSWORD = \"WXUWpiHV\";\nconst STORAGE_KEY = \"film_auth\";\nconst REMEMBER_DAYS = 30;\n\nfunction checkAuth() {\n  const stored = localStorage.getItem(STORAGE_KEY);\n  if (stored) {\n    try {\n      const data = JSON.parse(stored);\n      if (data.expires && Date.now() < data.expires) {\n        unlockApp();\n        return true;\n      }\n    } catch(e) {}\n  }\n  return false;\n}\n\nfunction setAuth() {\n  const expires = Date.now() + REMEMBER_DAYS * 24 * 60 * 60 * 1000;\n  localStorage.setItem(STORAGE_KEY, JSON.stringify({ expires }));\n}\n\nfunction unlockApp() {\n  document.getElementById(\"lockScreen\").classList.add(\"hidden\");\n  document.getElementById(\"appContent\").classList.add(\"visible\");\n  setTimeout(() => {\n    document.querySelectorAll(\".progress-fill\").forEach(bar => {\n      bar.classList.add(\"anim\");\n    });\n  }, 300);\n}\n\nfunction handleUnlock() {\n  const input = document.getElementById(\"pwdInput\");\n  const error = document.getElementById(\"pwdError\");\n  const wrap = document.querySelector(\".lock-input-wrap\");\n  if (input.value.trim() === PASSWORD) {\n    setAuth();\n    unlockApp();\n  } else {\n    error.classList.add(\"show\");\n    wrap.classList.add(\"shake\");\n    setTimeout(() => {\n      wrap.classList.remove(\"shake\");\n      error.classList.remove(\"show\");\n    }, 2000);\n    input.value = \"\";\n    input.focus();\n  }\n}\n\ndocument.getElementById(\"pwdBtn\").addEventListener(\"click\", handleUnlock);\ndocument.getElementById(\"pwdInput\").addEventListener(\"keydown\", (e) => {\n  if (e.key === \"Enter\") handleUnlock();\n});\n\n\/* ===== BLOG LINK ===== *\/\nfunction openBlog(postId) {\n  window.open(`https:\/\/tongchun.website\/?p=${postId}`, \"_blank\");\n}\n\n\/* ===== INIT ===== *\/\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  checkAuth();\n});\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>&#128274; \u6697\u623f\u5165\u53e3 \u8bf7\u8f93\u5165\u5bc6\u7801\u4ee5\u67e5\u770b\u80f6\u7247\u7ba1\u7406\u770b\u677f \u8fdb\u5165 \u5bc6\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5 &#127902; Fil &hellip; <a href=\"https:\/\/tongchun.website\/index.php\/film-system\/\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cFilm System\u201d<\/span><\/a><\/p>\n","protected":false},"author":55399,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1453","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/pages\/1453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/users\/55399"}],"replies":[{"embeddable":true,"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/comments?post=1453"}],"version-history":[{"count":13,"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/pages\/1453\/revisions"}],"predecessor-version":[{"id":1514,"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/pages\/1453\/revisions\/1514"}],"wp:attachment":[{"href":"https:\/\/tongchun.website\/index.php\/wp-json\/wp\/v2\/media?parent=1453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}