/* 备忘录 v2：CSS 变量主题（浅色简约默认 + 深色模式） */
:root{
  --bg:#f4f5f7; --card:#ffffff; --text:#1f2937; --muted:#6b7280;
  --border:#e5e7eb; --input-border:#d1d5db; --input-bg:#ffffff;
  --primary:#2563eb; --primary-hover:#1d4ed8; --on-primary:#ffffff;
  --topbar-bg:#ffffff; --topbar-text:#111827; --topbar-border:#e5e7eb;
  --chip-bg:#e5e7eb; --chip-text:#374151;
  --tag-bg:#f3f4f6; --tag-text:#4b5563;
  --danger:#dc2626; --danger-soft:#fef2f2;
  --badge-link-bg:#dbeafe; --badge-link-tx:#1d4ed8;
  --badge-doc-bg:#ede9fe;  --badge-doc-tx:#6d28d9;
  --badge-cert-bg:#fef3c7; --badge-cert-tx:#b45309;
  --badge-note-bg:#d1fae5; --badge-note-tx:#047857;
  --badge-image-bg:#ccfbf1;--badge-image-tx:#0f766e;
  --shadow:0 1px 3px rgba(0,0,0,.08);
  --modal-bg:rgba(17,24,39,.45);
  --note-pre-bg:#f9fafb;
  /* v3 Phase1: 类别色条 */
  --cat-xieyi:#8b5cf6; --cat-cert:#f59e0b; --cat-shop:#3b82f6; --cat-link:#22c55e; --cat-default:#9ca3af;
}
[data-theme="dark"]{
  --bg:#0f172a; --card:#1e293b; --text:#f1f5f9; --muted:#94a3b8;
  --border:#334155; --input-border:#475569; --input-bg:#1e293b;
  --primary:#3b82f6; --primary-hover:#60a5fa; --on-primary:#ffffff;
  --topbar-bg:#0f172a; --topbar-text:#f1f5f9; --topbar-border:#1e293b;
  --chip-bg:#334155; --chip-text:#e2e8f0;
  --tag-bg:#334155; --tag-text:#cbd5e1;
  --danger:#f87171; --danger-soft:#3f1d1d;
  --badge-link-bg:#1e3a8a; --badge-link-tx:#bfdbfe;
  --badge-doc-bg:#4c1d95;  --badge-doc-tx:#ddd6fe;
  --badge-cert-bg:#78350f; --badge-cert-tx:#fde68a;
  --badge-note-bg:#064e3b; --badge-note-tx:#a7f3d0;
  --badge-image-bg:#134e4a;--badge-image-tx:#99f6e4;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --modal-bg:rgba(0,0,0,.6);
  --note-pre-bg:#0f172a;
  /* v3 Phase1: 类别色条（深色） */
  --cat-xieyi:#a78bfa; --cat-cert:#fbbf24; --cat-shop:#60a5fa; --cat-link:#4ade80; --cat-default:#6b7280;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);font-size:15px;-webkit-tap-highlight-color:transparent}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--topbar-bg);color:var(--topbar-text);border-bottom:1px solid var(--topbar-border);position:sticky;top:0;z-index:10}
.brand{color:var(--topbar-text);font-weight:800;font-size:17px;letter-spacing:2px;text-decoration:none}
.topbar nav{display:flex;gap:8px;align-items:center}
.wrap{max-width:860px;margin:0 auto;padding:14px 12px 90px}
.card{background:var(--card);border-radius:10px;padding:14px;margin:12px 0;box-shadow:var(--shadow);border:1px solid var(--border)}
.card.narrow{max-width:420px;margin:40px auto}
/* v3 Phase1: 类别色条（替代旧 .card.memo.cert） */
.card.memo.cat-xieyi{border-left:3px solid var(--cat-xieyi)}
.card.memo.cat-cert{border-left:3px solid var(--cat-cert)}
.card.memo.cat-shop{border-left:3px solid var(--cat-shop)}
.card.memo.cat-link{border-left:3px solid var(--cat-link)}
.card.memo.cat-default{border-left:3px solid var(--cat-default)}
/* v3 Phase1: 元信息胶囊行 */
.meta{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 0}
.pill{font-size:12px;padding:2px 10px;border-radius:999px;background:var(--tag-bg);color:var(--tag-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pill.warn{background:var(--danger-soft);color:var(--danger);font-weight:700}
h2{margin:0 0 12px;font-size:18px}
label{display:block;margin:10px 0;font-size:14px}
input,select,textarea{width:100%;padding:9px 10px;margin-top:5px;border:1px solid var(--input-border);border-radius:8px;font-size:15px;font-family:inherit;background:var(--input-bg);color:var(--text)}
textarea{resize:vertical}
.btn{display:inline-block;padding:8px 14px;border-radius:8px;border:1px solid transparent;background:var(--primary);color:var(--on-primary);font-size:14px;text-decoration:none;cursor:pointer}
.btn.primary{background:var(--primary)}
.btn.primary:hover{background:var(--primary-hover)}
.btn.ghost{background:var(--card);color:var(--text);border-color:var(--input-border)}
.btn.small{padding:5px 10px;font-size:13px}
.btn.danger{background:var(--danger)}
.btn.icon{padding:8px 10px;line-height:1}
.row{display:flex;gap:10px;margin-top:14px}
.row.end{justify-content:flex-end}
.err{color:var(--danger);background:var(--danger-soft);padding:8px 10px;border-radius:8px}
.muted{color:var(--muted);font-size:13px}
.small{font-size:12px}
.searchbar{display:flex;gap:8px;margin:4px 0 8px}
.searchbar input{flex:1;margin-top:0}
.filters{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0}
.chip{padding:4px 12px;border-radius:999px;background:var(--chip-bg);color:var(--chip-text);text-decoration:none;font-size:13px;border:1px solid transparent}
.chip.on{background:var(--primary);color:var(--on-primary)}
.memo-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.badge{font-size:12px;padding:2px 8px;border-radius:999px;white-space:nowrap}
.badge-link{background:var(--badge-link-bg);color:var(--badge-link-tx)}
.badge-doc{background:var(--badge-doc-bg);color:var(--badge-doc-tx)}
.badge-cert{background:var(--badge-cert-bg);color:var(--badge-cert-tx)}
.badge-note{background:var(--badge-note-bg);color:var(--badge-note-tx)}
.badge-image{background:var(--badge-image-bg);color:var(--badge-image-tx)}
.memo-title{font-size:16px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.memo-body{margin:8px 0;word-break:break-all}
.memo-body a{color:var(--primary)}
.memo-body.pre{white-space:pre-wrap;background:var(--note-pre-bg);padding:8px;border-radius:8px}
.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.memo-tags{margin:6px 0}
.tag{display:inline-block;background:var(--tag-bg);color:var(--tag-text);font-size:12px;padding:2px 10px;border-radius:999px;margin:2px 4px 2px 0}
.thumb{max-width:100%;max-height:220px;border-radius:8px;object-fit:cover;display:block}
/* ⋯ 下拉菜单（details 原生实现） */
details.menu{position:relative;margin-left:auto}
details.menu summary{list-style:none;cursor:pointer;padding:2px 10px;border-radius:8px;color:var(--muted);font-size:20px;letter-spacing:1px;line-height:1.4;user-select:none}
details.menu summary::-webkit-details-marker{display:none}
details.menu summary::marker{content:""}
details.menu summary:hover{background:var(--chip-bg)}
.menu-list{position:absolute;right:0;top:calc(100% + 4px);background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);min-width:110px;z-index:30;overflow:hidden}
.menu-list a,.menu-list button{display:block;width:100%;text-align:left;padding:9px 14px;background:none;border:0;color:var(--text);font-size:14px;text-decoration:none;cursor:pointer;font-family:inherit}
.menu-list a:hover,.menu-list button:hover{background:var(--chip-bg)}
.menu-list button.danger{color:var(--danger)}
/* 悬浮新增按钮 */
.fab{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));width:56px;height:56px;border-radius:50%;background:var(--primary);color:var(--on-primary);font-size:30px;line-height:54px;text-align:center;text-decoration:none;box-shadow:0 4px 14px rgba(0,0,0,.28);z-index:40}
.fab:hover{background:var(--primary-hover)}
/* 删除确认 modal */
.modal-backdrop{position:fixed;inset:0;background:var(--modal-bg);display:none;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal-backdrop.show{display:flex}
.modal{background:var(--card);color:var(--text);border-radius:12px;padding:20px;max-width:340px;width:100%;box-shadow:0 8px 30px rgba(0,0,0,.25);border:1px solid var(--border)}
.modal p{margin:0 0 6px;font-size:15px}
/* 空状态 */
.empty{text-align:center;padding:52px 16px;color:var(--muted)}
.empty svg{width:64px;height:64px;opacity:.45;margin-bottom:8px}
.empty p{margin:8px 0 16px}
/* 分页 */
.pager{display:flex;gap:8px;align-items:center;justify-content:center;margin:18px 0 8px;flex-wrap:wrap}
.pager .cur{font-weight:800;color:var(--primary);padding:5px 10px}
@media (max-width:600px){
  .wrap{padding:10px 10px 96px}
  .memo-title{font-size:15px}
  .topbar nav .btn{padding:7px 10px;font-size:13px}
}

/* v3 详情卡：按类型档案式模板 */
.detail-wrap{max-width:880px;margin:0 auto}
.back-link{color:var(--muted);text-decoration:none;font-size:14px}
.back-link:hover{color:var(--text)}
.title-link{color:inherit;text-decoration:none;flex:1;min-width:0}
.title-link:hover .memo-title{text-decoration:underline}
.field-grid{display:grid;grid-template-columns:8em 1fr;gap:8px 14px;margin:12px 0;align-items:baseline}
.fg-k{color:var(--muted);font-size:13px}
.fg-v{overflow-wrap:anywhere}
.fg-v.pending{color:var(--muted)}
.copy-btn{font-size:12px;padding:2px 8px;border-radius:6px;border:1px solid var(--muted);background:transparent;color:var(--muted);cursor:pointer;margin-left:6px;vertical-align:middle;white-space:nowrap}
.copy-btn:hover{color:var(--text);border-color:var(--text)}
.agree-summary{display:flex;flex-wrap:wrap;gap:10px 24px;margin:12px 0;padding:12px 14px;background:var(--bg);border-radius:10px}
.sum-item{display:flex;flex-direction:column;gap:2px}
.sum-item.grow{flex:1 1 220px}
.relate-row{margin:12px 0;padding:10px 14px;border:1px dashed var(--muted);border-radius:10px;font-size:13px}
.tag-soon{font-size:12px;background:var(--bg);border-radius:6px;padding:1px 8px;margin-left:6px;color:var(--muted)}
.cert-layout{display:flex;gap:18px;margin:12px 0;align-items:flex-start}
.cert-layout .detail-img{max-width:340px}
.detail-img{max-width:100%;border-radius:10px;display:block}
.kv-top{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.kv-top strong{font-size:16px;overflow-wrap:anywhere;font-weight:600}
details.fulltext{margin-top:8px}
details.fulltext summary{cursor:pointer}
.link-detail{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.break-all{overflow-wrap:anywhere}
@media(max-width:640px){.cert-layout{flex-direction:column}.field-grid{grid-template-columns:7em 1fr}}
