/* H5 前台 */
.h5-root { position: relative; height: 100%; display: flex; flex-direction: column; background: var(--c-bg); overflow: hidden; }
.h5-page { flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; }
.h5-root.has-tabs .h5-page { padding-bottom: 0; }
.h5-header { position: sticky; top: 0; z-index: 600; display: flex; align-items: center; gap: 6px; height: 48px; padding: 0 8px; background: var(--c-surface); border-bottom: 1px solid var(--c-line); flex-shrink: 0; }
.h5-back, .h5-back-ph { width: 36px; height: 36px; border: 0; background: none; font-size: 28px; line-height: 1; cursor: pointer; color: var(--c-ink); flex-shrink: 0; }
.h5-title { flex: 1; text-align: center; font-size: var(--fs-lg); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.h5-header-side { width: 36px; display: flex; justify-content: flex-end; flex-shrink: 0; }
.h5-body { padding: 16px; display: flex; flex-direction: column; gap: 14px; }
.icon-btn { width: 40px; height: 40px; border-radius: 12px; border: 1px solid var(--c-line); background: var(--c-surface); cursor: pointer; font-size: 18px; flex-shrink: 0; color: var(--c-ink); }
.icon-btn.sm { width: 32px; height: 32px; font-size: 15px; border: 0; }
.brand-mark.sm { width: 26px; height: 26px; font-size: 14px; border-radius: 8px 8px 8px 2px; }

/* 首页 */
.h5-home { overflow: hidden; position: relative; }
.h5-home.is-list { overflow-y: auto; }
.home-top { position: relative; z-index: 600; padding: 12px 12px 10px; background: var(--c-surface); border-bottom: 1px solid var(--c-line); display: flex; flex-direction: column; gap: 10px; flex-shrink: 0; }
.home-brand { display: flex; align-items: center; gap: 8px; font-family: var(--f-display); font-size: var(--fs-lg); }
.home-brand .xs { font-family: var(--f-sans); margin-left: auto; }
.search-fake { height: 40px; border-radius: 12px; border: 1px solid var(--c-line-strong); background: var(--c-surface-2); text-align: left; padding: 0 12px; color: var(--c-muted); cursor: pointer; font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.search-input { height: 38px; border-radius: 12px; }
.quick-filters { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; }
.quick-filters::-webkit-scrollbar { display: none; }
.qf { flex-shrink: 0; height: 30px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--c-line-strong); background: var(--c-surface); font-size: var(--fs-sm); cursor: pointer; white-space: nowrap; }
.qf.on { background: var(--c-primary); color: var(--c-primary-ink); border-color: var(--c-primary); }
.home-map { position: relative; flex: 1; min-height: 0; }
.home-map .map-box { position: absolute; inset: 0; }
.map-count { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); z-index: 500; background: var(--c-surface); padding: 4px 12px; border-radius: 999px; font-size: var(--fs-xs); box-shadow: var(--shadow-1); }
.map-tip { position: absolute; left: 0; right: 0; bottom: 0; z-index: 500; margin: 0; padding: 4px 12px; text-align: center; font-size: 11px; color: var(--c-ink-2); background: color-mix(in srgb, var(--c-surface) 85%, transparent); }
.pin-card { position: absolute; left: 12px; right: 12px; bottom: 30px; z-index: 550; background: var(--c-surface); border-radius: var(--r-lg); box-shadow: var(--shadow-2); padding: 14px; display: flex; flex-direction: column; gap: 8px; }
.report-fab { position: absolute; left: 12px; bottom: 30px; z-index: 550; border: 0; border-radius: 999px; padding: 10px 16px; background: var(--c-surface); box-shadow: var(--shadow-2); cursor: pointer; font-size: var(--fs-sm); color: var(--c-ink-2); }
.report-fab b { color: var(--c-accent); }
.view-toggle { position: absolute; right: 12px; top: 150px; z-index: 560; border: 0; border-radius: 999px; padding: 8px 14px; background: var(--c-ink); color: var(--c-bg); font-size: var(--fs-sm); cursor: pointer; box-shadow: var(--shadow-2); }
.h5-home.is-list .view-toggle { position: sticky; top: auto; bottom: 16px; align-self: flex-end; margin: -56px 12px 16px 0; }
.home-list { padding: 12px; display: flex; flex-direction: column; gap: 10px; }
.org-card { text-align: left; width: 100%; background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-lg); padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; cursor: pointer; color: inherit; }
.org-card:hover { border-color: var(--c-primary); }
.org-card-name { font-size: var(--fs-md); line-height: 1.45; }



/* 底部标签 */
.h5-tabs { flex-shrink: 0; display: flex; background: var(--c-surface); border-top: 1px solid var(--c-line); padding-bottom: env(safe-area-inset-bottom, 0px); position: relative; z-index: 700; }
.h5-tabs button { flex: 1; height: 56px; border: 0; background: none; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; font-size: 11px; color: var(--c-muted); cursor: pointer; position: relative; }
.h5-tabs button.on { color: var(--c-primary); font-weight: 600; }
.tab-ico { font-size: 20px; line-height: 1.1; }
.tab-plus { width: 40px; height: 40px; border-radius: 14px; background: var(--c-accent); color: #fff; font-size: 26px; line-height: 38px; margin-top: -18px; box-shadow: 0 4px 12px rgba(224,122,46,.4); }
.h5-tabs .dot { position: absolute; top: 8px; left: calc(50% + 8px); width: 8px; height: 8px; border-radius: 50%; background: var(--c-danger); }

/* 详情 */
.org-detail { gap: 12px; padding-top: 12px; }
.scan-ok { background: var(--c-ok-soft); color: var(--c-ok); padding: 8px 12px; border-radius: var(--r-md); font-size: var(--fs-sm); }
.org-hero { display: flex; flex-direction: column; gap: 10px; padding: 4px 0 6px; }
.org-name { font-family: var(--f-display); font-size: 22px; line-height: 1.4; }
.info-list { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-lg); padding: 4px 14px; }
.info-row { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--c-line); font-size: var(--fs-sm); }
.info-row:last-child { border-bottom: 0; }
.info-row > span:first-child { color: var(--c-muted); flex-shrink: 0; }
.info-row > b { font-weight: 500; text-align: right; min-width: 0; word-break: break-all; }
.info-row.col { flex-direction: column; gap: 4px; }
.block { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-lg); padding: 14px; display: flex; flex-direction: column; gap: 8px; }
.block-title { font-size: var(--fs-md); font-weight: 600; }
.cert-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.cert { border: 1px solid var(--c-line); border-radius: var(--r-md); overflow: hidden; padding: 0; background: var(--c-surface-2); cursor: zoom-in; aspect-ratio: 10 / 7; max-width: 100%; }
.cert img { width: 100%; height: 100%; object-fit: cover; display: block; }
.qr-block { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-lg); padding: 18px 14px; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center;
  background-image: radial-gradient(circle at 50% 0, var(--c-primary-soft), transparent 60%); }
.qr-block img { border: 8px solid #fff; box-shadow: var(--shadow-1); }
.qr-actions { display: flex; gap: 8px; width: 100%; margin-top: 6px; }
.qr-actions .btn { flex: 1; }
.claim-box { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 6px; margin-top: 10px; padding-top: 12px; border-top: 1px dashed var(--c-line); }
.share-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
.share-grid button { border: 0; background: none; display: flex; flex-direction: column; align-items: center; gap: 6px; font-size: 11px; cursor: pointer; color: var(--c-ink-2); }
.share-ico { width: 44px; height: 44px; border-radius: 14px; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; }
.share-ico.wx { background: #2aae67; } .share-ico.pyq { background: #3c9d5d; } .share-ico.qq { background: #3a8ee6; } .share-ico.link { background: #7c8a80; } .share-ico.img { background: var(--c-accent); }
.poster-view { display: flex; flex-direction: column; gap: 10px; align-items: center; max-height: 100%; }
.poster-view img { max-height: calc(100% - 90px); max-width: 100%; border-radius: 12px; }
.state-page { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px; padding: 40px 12px 20px; }
.state-ico { width: 64px; height: 64px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 30px; font-weight: 700; background: var(--c-info-soft); color: var(--c-info); }
.state-ico.ok { background: var(--c-ok-soft); color: var(--c-ok); } .state-ico.warn { background: var(--c-warn-soft); color: var(--c-warn); } .state-ico.danger { background: var(--c-danger-soft); color: var(--c-danger); }
.state-page h2 { font-size: var(--fs-xl); }

.site-footer { font-size: 11px; color: var(--c-muted); line-height: 1.7; display: flex; flex-direction: column; gap: 6px; padding: 14px 4px 8px; border-top: 1px solid var(--c-line); margin-top: 6px; }
.site-footer .link-btn { font-size: 11px; }

/* 扫码 */
.scanner-frame { align-self: center; width: 180px; height: 180px; border-radius: 16px; position: relative; background: #111; overflow: hidden; }
.scanner-frame::before { content: ""; position: absolute; inset: 20px; border: 2px solid rgba(255,255,255,.5); border-radius: 8px; }
.scanner-frame span { position: absolute; left: 24px; right: 24px; height: 2px; background: var(--c-primary); box-shadow: 0 0 10px var(--c-primary); animation: scanline 2s ease-in-out infinite; }
@keyframes scanline { 0% { top: 26px; } 50% { top: 150px; } 100% { top: 26px; } }

/* 登录 */
.login-body { gap: 18px; }
.login-hero { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; padding: 12px 0 4px; }
.login-hero .brand-mark { width: 52px; height: 52px; font-size: 26px; border-radius: 16px 16px 16px 4px; }
.login-hero h2 { font-family: var(--f-display); }
.wx-btn { background: #2aae67; border-color: #2aae67; color: #fff; }
.wx-btn:hover { background: #239a5a; color: #fff; border-color: #239a5a; }
.demo-box { border: 1px dashed var(--c-line-strong); border-radius: var(--r-md); padding: 10px; display: flex; flex-direction: column; gap: 8px; }

/* 个人中心 */
.me-head { display: flex; align-items: center; gap: 12px; padding: 22px 16px; background: var(--c-primary); color: var(--c-primary-ink); flex-shrink: 0; }
.me-head .btn { background: transparent; color: var(--c-primary-ink); border-color: color-mix(in srgb, var(--c-primary-ink) 50%, transparent); }
.avatar { width: 48px; height: 48px; border-radius: 50%; background: var(--c-primary-ink); color: var(--c-primary); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 20px; font-family: var(--f-display); flex-shrink: 0; }

.msg-box { padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; }
.msg-box ul { list-style: none; margin: 0; padding: 0; }
.msg-box li { display: flex; flex-direction: column; padding: 8px 0 8px 12px; border-bottom: 1px dashed var(--c-line); position: relative; cursor: pointer; }
.msg-box li:last-child { border-bottom: 0; }
.msg-box li.unread::before { content: ""; position: absolute; left: 0; top: 15px; width: 6px; height: 6px; border-radius: 50%; background: var(--c-danger); }
.my-org { padding: 14px; display: flex; flex-direction: column; gap: 8px; border-color: var(--c-primary); }
.my-org-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.me-tabs { display: flex; background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-md); padding: 3px; }
.me-tabs button { flex: 1; border: 0; background: none; height: 32px; border-radius: 6px; cursor: pointer; font-size: var(--fs-sm); white-space: nowrap; }
.me-tabs button.on { background: var(--c-primary-soft); color: var(--c-primary); font-weight: 600; }
.app-item { padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; }
.me-links { display: flex; flex-direction: column; background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-lg); }
.me-links button { display: flex; justify-content: space-between; padding: 13px 14px; border: 0; border-bottom: 1px solid var(--c-line); background: none; cursor: pointer; font-size: var(--fs-sm); color: var(--c-ink); }
.me-links button:last-child { border-bottom: 0; }
.mini-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.mini-stats div { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--r-md); padding: 10px; display: flex; flex-direction: column; }
.mini-stats span { font-size: 22px; font-weight: 700; font-family: var(--f-mono); }
.mini-stats small { color: var(--c-muted); font-size: 11px; }

.legal h2 { font-family: var(--f-display); font-size: var(--fs-xl); }
.legal h3 { font-size: var(--fs-md); margin-bottom: 4px; }
.legal p { font-size: var(--fs-sm); line-height: 1.8; }
.h5-root .form-sec-title { font-size: var(--fs-md); }
.h5-root .org-form { gap: 18px; }
