/* App detail page styles externalized from the template. */
.app-source-badge { font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 9999px; text-decoration: none; display: inline-block; color: #fff; }
.app-source-badge-editor { background: var(--accent-orange); }
.app-source-badge-default { background: var(--primary); }
.detail-info-grid {
                display: grid;
                grid-template-columns: repeat(6, minmax(0, 1fr));
                background: var(--border);
                gap: 1px;
            }
            .detail-info-stat {
                background: var(--bg-card);
                padding: 16px 8px;
                text-align: center;
                min-width: 0;
                overflow: hidden;
            }
            .detail-info-stat .stat-label {
                font-size: 11px;
                color: var(--text-muted);
                text-transform: uppercase;
                margin-bottom: 4px;
                font-weight: 700;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            .detail-info-stat .stat-value {
                font-size: 14px;
                font-weight: 700;
                color: var(--text-primary);
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            .detail-info-stat .stat-sub {
                font-size: 12px;
                color: var(--text-secondary);
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                font-weight: 600;
            }
            @media (max-width: 992px) {
                .detail-info-grid {
                    grid-template-columns: repeat(3, minmax(0, 1fr));
                }
            }
            @media (max-width: 576px) {
                .detail-info-grid {
                    grid-template-columns: repeat(2, minmax(0, 1fr));
                }
                .detail-info-stat {
                    padding: 12px 6px;
                }
                .detail-info-stat .stat-value {
                    font-size: 12px;
                }
                .detail-info-stat .stat-label {
                    font-size: 9px;
                }
                .detail-info-stat .stat-sub {
                    font-size: 10px;
                }
            }

/* entry-content formatting - copied from source site style.css, dark-adapted */
        .entry-content { font-size: 15px; line-height: 1.85; color: var(--text-secondary); }
        .entry-content p { margin-bottom: 1.25rem; text-align: justify; }
        .entry-content h2 { font-size: 1.375rem; font-weight: 700; margin: 2.5rem 0 1rem; color: var(--text-primary); border-left: 4px solid var(--accent-orange); padding-left: .75rem; }
        .entry-content h3 { font-size: 1.125rem; font-weight: 700; margin: 2rem 0 .75rem; color: var(--text-primary); border-left: 3px solid var(--accent-orange); padding-left: .75rem; }
        .entry-content h4 { font-size: 1rem; font-weight: 700; margin: 1.5rem 0 .5rem; color: var(--text-primary); border-left: 3px solid var(--accent-orange); padding-left: .75rem; }
        .entry-content ul, .entry-content ol { margin: 1rem 0 1.25rem 1.5rem; }
        .entry-content ul { list-style-type: disc; }
        .entry-content ol { list-style-type: decimal; }
        .entry-content li { margin-bottom: .5rem; line-height: 1.75; }
        .entry-content a { color: var(--primary); text-decoration: underline; }
        .entry-content blockquote { border-left: 4px solid var(--accent-orange); margin: 1.5rem 0; padding: 1rem 1.5rem; background: var(--bg-section); border-radius: 0 8px 8px 0; font-style: italic; }
        .entry-content img { border-radius: 12px; margin: 1.5rem 0; max-width: 100%; height: auto; }
        .entry-content em { font-style: italic; }
        .entry-content strong { font-weight: 700; color: var(--text-primary); }
        .content-tab-btn { padding: 8px 18px; background: var(--bg-card); color: var(--text-secondary); border: none; border-radius: 9999px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all .15s; }
        .content-tab-btn.active { background: var(--primary); color: #fff; }
        .tab-pane { display: none; background: var(--bg-card); border-radius: 12px; padding: 24px; }
        .tab-pane.active { display: block; }

.comment-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:16px;margin-bottom:12px}
            .comment-row{display:flex;align-items:flex-start;gap:12px}.comment-body{flex:1;min-width:0}
            .comment-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0;background:var(--primary);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800}
            .comment-avatar.small{width:32px;height:32px;font-size:12px}.comment-avatar img{width:100%;height:100%;object-fit:cover}
            .comment-meta{display:flex;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap}.comment-date{font-size:11px;color:var(--text-muted);margin-left:auto}
            .comment-content{color:var(--text-secondary);line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
            .comment-reply-btn,.comment-report-btn{font-size:12px;background:transparent;border:none;cursor:pointer;padding:6px 0;font-weight:700}.comment-reply-btn{color:var(--link-contrast)}.comment-report-btn{color:var(--text-muted)}
            .comment-replies{margin-top:12px;display:flex;flex-direction:column;gap:10px}.comment-reply-card{background:var(--bg-section);border-radius:12px;padding:12px}
            .comment-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:9999px;background:rgba(108,92,231,.15);color:var(--link-contrast)}
            .replying-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;background:rgba(108,92,231,.12);color:var(--link-contrast);border-radius:6px;padding:2px 8px;margin-bottom:6px}
            .comment-input{width:100%;padding:11px 12px;background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:14px}
            .comment-input:focus{outline:2px solid var(--primary);outline-offset:1px}

.app-detail-actions { display: flex; gap: 16px; margin-bottom: 24px; }
.app-detail-action { flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 10px; background: transparent; border: 0; font-size: 14px; font-weight: 600; cursor: pointer; }
.app-share-action { color: var(--primary); }
.app-update-action { color: var(--accent-orange); }
.app-share-status { min-height: 18px; margin: -14px 0 16px; text-align: center; color: var(--text-muted); font-size: 12px; }
.app-lightbox { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.92); z-index: 2000; align-items: center; justify-content: center; }
.app-lightbox.open { display: flex; }
.app-lightbox-close, .app-lightbox-nav { position: absolute; color: #fff; border: 0; cursor: pointer; z-index: 2; }
.app-lightbox-close { top: 18px; right: 18px; font-size: 28px; background: transparent; }
.app-lightbox-nav { top: 50%; transform: translateY(-50%); font-size: 30px; background: rgba(255,255,255,.12); border-radius: 50%; width: 48px; height: 48px; }
.app-lightbox-prev { left: 14px; }
.app-lightbox-next { right: 14px; }
.app-lightbox-image { max-width: 90%; max-height: 90%; border-radius: 12px; }

/* Extracted static template declarations; scoped to app pages. */
.app-detail-page.ad-0483e872, .app-detail-page .ad-0483e872 {display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:14px 24px;background:var(--primary);color:white;border-radius:9999px;font-size:16px;font-weight:700;text-decoration:none;}
.app-detail-page.ad-08c2919b, .app-detail-page .ad-08c2919b {display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;}
.app-detail-page.ad-09f28ad9, .app-detail-page .ad-09f28ad9 {margin-bottom:32px;border-top:1px solid var(--border);padding-top:24px;}
.app-detail-page.ad-0a35fa52, .app-detail-page .ad-0a35fa52 {display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-secondary);}
.app-detail-page.ad-0aecfe8a, .app-detail-page .ad-0aecfe8a {color:var(--accent-orange);font-style:italic;font-size:14px;}
.app-detail-page.ad-0f62d55c, .app-detail-page .ad-0f62d55c {display:flex;gap:24px;margin-bottom:24px;flex-wrap:wrap;}
.app-detail-page.ad-108c2062, .app-detail-page .ad-108c2062 {color:var(--primary);font-size:13px;text-decoration:none;}
.app-detail-page.ad-1cdc0f83, .app-detail-page .ad-1cdc0f83 {color:var(--primary);text-decoration:none;}
.app-detail-page.ad-20998a72, .app-detail-page .ad-20998a72 {display:flex;gap:12px;overflow-x:auto;padding-bottom:12px;}
.app-detail-page.ad-2192cf22, .app-detail-page .ad-2192cf22 {display:flex;align-items:center;justify-content:space-between;padding:14px 16px;cursor:pointer;font-size:14px;font-weight:600;}
.app-detail-page.ad-29d51602, .app-detail-page .ad-29d51602 {display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;flex-wrap:wrap;}
.app-detail-page.ad-29e79f1d, .app-detail-page .ad-29e79f1d {display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:12px;margin-bottom:16px;}
.app-detail-page.ad-2a6e8fd3, .app-detail-page .ad-2a6e8fd3 {vertical-align:middle;}
.app-detail-page.ad-2d30a691, .app-detail-page .ad-2d30a691 {font-size:12px;color:var(--text-secondary);}
.app-detail-page.ad-2e104009, .app-detail-page .ad-2e104009 {display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border);}
.app-detail-page.ad-2f13c672, .app-detail-page .ad-2f13c672 {font-size:20px;font-weight:700;line-height:1.2;}
.app-detail-page.ad-371f400c, .app-detail-page .ad-371f400c {display:block;margin:16px auto 0;padding:8px 16px;background:transparent;border:none;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;}
.app-detail-page.ad-38961b4e, .app-detail-page .ad-38961b4e {flex-shrink:0;height:360px;width:auto;object-fit:cover;border-radius:12px;cursor:pointer;}
.app-detail-page.ad-3cedd3b1, .app-detail-page .ad-3cedd3b1 {font-size:28px;font-weight:700;color:var(--star-color);}
.app-detail-page.ad-3de8f987, .app-detail-page .ad-3de8f987 {display:flex;gap:8px;flex-wrap:wrap;}
.app-detail-page.ad-40d7417e, .app-detail-page .ad-40d7417e {list-style:none;padding:0;margin:0;}
.app-detail-page.ad-430b7dda, .app-detail-page .ad-430b7dda {flex-shrink:0;width:96px;text-align:center;text-decoration:none;color:var(--text-primary);}
.app-detail-page.ad-433de30b, .app-detail-page .ad-433de30b {font-size:14px;}
.app-detail-page.ad-458e79c2, .app-detail-page .ad-458e79c2 {padding:9px 22px;background:var(--bg-card);color:var(--link-contrast);border:1px solid var(--border);border-radius:9999px;font-size:13px;font-weight:800;cursor:pointer;}
.app-detail-page.ad-4724bfcd, .app-detail-page .ad-4724bfcd {padding:8px 20px;background:var(--primary);color:white;border:none;border-radius:9999px;font-size:13px;font-weight:700;cursor:pointer;}
.app-detail-page.ad-47b5d0fe, .app-detail-page .ad-47b5d0fe {max-width:1400px;margin:0 auto;padding:0 20px;}
.app-detail-page.ad-49f14f8f, .app-detail-page .ad-49f14f8f {margin-bottom:20px;}
.app-detail-page.ad-4cea168f, .app-detail-page .ad-4cea168f {font-size:11px;overflow:hidden;text-overflow:ellipsis;}
.app-detail-page.ad-55754705, .app-detail-page .ad-55754705 {display:inline-block;color:var(--text-primary);}
.app-detail-page.ad-56da1cba, .app-detail-page .ad-56da1cba {background:var(--bg-card);border-radius:12px;margin-bottom:24px;overflow:hidden;border:1px solid var(--border);}
.app-detail-page.ad-5702aa2f, .app-detail-page .ad-5702aa2f {color:var(--primary);font-size:18px;}
.app-detail-page.ad-570bbcd6, .app-detail-page .ad-570bbcd6 {margin-bottom:24px;font-style:italic;font-size:14px;color:rgba(255,255,255,0.75);}
.app-detail-page.ad-5790c8da, .app-detail-page .ad-5790c8da {font-size:22px;font-weight:700;margin-bottom:4px;line-height:1.4;}
.app-detail-page.ad-5872de20, .app-detail-page .ad-5872de20 {color:var(--text-muted);}
.app-detail-page.ad-59eddc67, .app-detail-page .ad-59eddc67 {flex:1;min-width:0;}
.app-detail-page.ad-5b2c5059, .app-detail-page .ad-5b2c5059 {font-size:12px;font-weight:700;color:#00ef76;margin-bottom:2px;}
.app-detail-page.ad-5b32b4f2, .app-detail-page .ad-5b32b4f2 {font-size:14px;color:var(--text-secondary);line-height:1.6;margin-top:10px;cursor:default;}
.app-detail-page.ad-5e0faad2, .app-detail-page .ad-5e0faad2 {font-size:13px;}
.app-detail-page.ad-618aa598, .app-detail-page .ad-618aa598 {width:100%;height:100%;object-fit:cover;}
.app-detail-page.ad-62ba2f8b, .app-detail-page .ad-62ba2f8b {font-size:20px;font-weight:700;}
.app-detail-page.ad-6307db5a, .app-detail-page .ad-6307db5a {font-size:13px;padding:4px 0;color:var(--text-primary);line-height:1.5;}
.app-detail-page.ad-64f62606, .app-detail-page .ad-64f62606 {resize:vertical;min-height:88px;}
.app-detail-page.ad-66866f59, .app-detail-page .ad-66866f59 {font-size:15px;margin-bottom:2px;}
.app-detail-page.ad-72118ffd, .app-detail-page .ad-72118ffd {display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;}
.app-detail-page.ad-73708294, .app-detail-page .ad-73708294 {background:var(--bg-section);border:1px solid var(--border);border-radius:16px;padding:24px;margin-bottom:24px;}
.app-detail-page.ad-73beed17, .app-detail-page .ad-73beed17 {font-size:15px;line-height:1.8;color:var(--text-primary);}
.app-detail-page.ad-755c1e0a, .app-detail-page .ad-755c1e0a {margin:0;background:rgba(0,184,148,0.04);border:1px solid rgba(0,184,148,0.15);}
.app-detail-page.ad-761d3add, .app-detail-page .ad-761d3add {margin-bottom:10px;}
.app-detail-page.ad-7d5e9e09, .app-detail-page .ad-7d5e9e09 {font-size:15px;font-weight:700;color:var(--accent-red);margin-bottom:10px;}
.app-detail-page.ad-8577f1ad, .app-detail-page .ad-8577f1ad {float:right;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;}
.app-detail-page.ad-865c33f0, .app-detail-page .ad-865c33f0 {font-size:12px;color:var(--text-muted);}
.app-detail-page.ad-8677744d, .app-detail-page .ad-8677744d {margin-bottom:24px;}
.app-detail-page.ad-87c136df, .app-detail-page .ad-87c136df {margin-bottom:16px;}
.app-detail-page.ad-8b1f851a, .app-detail-page .ad-8b1f851a {font-size:12px;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.app-detail-page.ad-91a87015, .app-detail-page .ad-91a87015 {text-align:center;}
.app-detail-page.ad-96750b32, .app-detail-page .ad-96750b32 {font-size:12px;font-weight:700;color:var(--primary);margin-bottom:2px;}
.app-detail-page.ad-9a192286, .app-detail-page .ad-9a192286 {background:var(--bg-card);padding:12px;border-radius:10px;border:1px solid var(--border);}
.app-detail-page.ad-9b253a72, .app-detail-page .ad-9b253a72 {font-size:18px;font-weight:700;color:var(--accent-orange);margin-bottom:12px;}
.app-detail-page.ad-9ff7c8dc, .app-detail-page .ad-9ff7c8dc {padding:6px 14px;background:var(--primary);color:white;border-radius:9999px;font-size:12px;font-weight:600;text-decoration:none;}
.app-detail-page.ad-a0272614, .app-detail-page .ad-a0272614 {font-size:18px;font-weight:700;}
.app-detail-page.ad-a0c46c4a, .app-detail-page .ad-a0c46c4a {width:64px;height:64px;border-radius:16px;margin:0 auto 8px;overflow:hidden;background:var(--bg-card);}
.app-detail-page.ad-a1b26d50, .app-detail-page .ad-a1b26d50 {font-size:14px;font-weight:700;}
.app-detail-page.ad-a1e4748f, .app-detail-page .ad-a1e4748f {display:flex;gap:16px;overflow-x:auto;padding-bottom:8px;}
.app-detail-page.ad-a437f163, .app-detail-page .ad-a437f163 {font-size:14px;line-height:1.7;color:var(--text-secondary);margin-bottom:16px;}
.app-detail-page.ad-a44b87e1, .app-detail-page .ad-a44b87e1 {font-size:14px;color:var(--text-secondary);margin-bottom:16px;}
.app-detail-page.ad-a4f8ceaa, .app-detail-page .ad-a4f8ceaa {background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:16px;cursor:pointer;transition:all 0.2s;}
.app-detail-page.ad-a5c45c2d, .app-detail-page .ad-a5c45c2d {font-size:20px;font-weight:800;margin-bottom:16px;color:var(--text-primary);}
.app-detail-page.ad-a731f9e5, .app-detail-page .ad-a731f9e5 {display:flex;justify-content:flex-end;margin-top:4px;}
.app-detail-page.ad-a7800ee8, .app-detail-page .ad-a7800ee8 {font-size:15px;font-weight:700;color:var(--accent-green);margin-bottom:10px;}
.app-detail-page.ad-ab6d2734, .app-detail-page .ad-ab6d2734 {border-bottom:1px solid #f0f0f0;}
.app-detail-page.ad-aba76af3, .app-detail-page .ad-aba76af3 {display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
.app-detail-page.ad-ac5b27c8, .app-detail-page .ad-ac5b27c8 {padding:16px;font-size:14px;color:var(--text-secondary);}
.app-detail-page.ad-acba706f, .app-detail-page .ad-acba706f {font-size:15px;font-weight:700;color:var(--text-primary);list-style:none;display:flex;justify-content:space-between;align-items:center;}
.app-detail-page.ad-adacace8, .app-detail-page .ad-adacace8 {font-size:12px;font-weight:600;padding:4px 12px;border-radius:9999px;background:var(--primary);color:#fff;text-decoration:none;}
.app-detail-page.ad-b590c859, .app-detail-page .ad-b590c859 {display:flex;align-items:center;gap:8px;font-size:18px;font-weight:700;margin-bottom:16px;}
.app-detail-page.ad-b5c9733a, .app-detail-page .ad-b5c9733a {display:flex;justify-content:flex-end;}
.app-detail-page.ad-b63137f2, .app-detail-page .ad-b63137f2 {width:80px;height:80px;border-radius:16px;overflow:hidden;flex-shrink:0;}
.app-detail-page.ad-b65b4212, .app-detail-page .ad-b65b4212 {display:block;font-size:12px;font-weight:700;margin-bottom:5px;color:var(--text-secondary);}
.app-detail-page.ad-b6b520e8, .app-detail-page .ad-b6b520e8 {margin-bottom:10px;padding:8px 10px;background:var(--bg-section);border-radius:8px;font-size:12px;color:var(--link-contrast);}
.app-detail-page.ad-bae250a2, .app-detail-page .ad-bae250a2 {display:flex;align-items:flex-start;gap:12px;}
.app-detail-page.ad-bc48deab, .app-detail-page .ad-bc48deab {font-size:14px;font-weight:700;color:var(--text-muted);}
.app-detail-page.ad-c18f9fab, .app-detail-page .ad-c18f9fab {display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;}
.app-detail-page.ad-c4dad58d, .app-detail-page .ad-c4dad58d {max-height:340px;overflow:hidden;transition:max-height .3s;}
.app-detail-page.ad-cadf2a26, .app-detail-page .ad-cadf2a26 {display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:var(--text-muted);margin-bottom:20px;flex-wrap:wrap;}
.app-detail-page.ad-cb1b7e3a, .app-detail-page .ad-cb1b7e3a {font-size:14px;color:var(--star-color);}
.app-detail-page.ad-cdf4b444, .app-detail-page .ad-cdf4b444 {font-size:11px;color:var(--text-muted);margin-top:2px;}
.app-detail-page.ad-ced6c5dc, .app-detail-page .ad-ced6c5dc {font-size:18px;font-weight:700;margin-bottom:16px;}
.app-detail-page.ad-d17f9e19, .app-detail-page .ad-d17f9e19 {font-size:13px;font-weight:700;}
.app-detail-page.ad-d27a0efb, .app-detail-page .ad-d27a0efb {margin:0;background:rgba(225,112,85,0.04);border:1px solid rgba(225,112,85,0.15);}
.app-detail-page.ad-d2f0905a, .app-detail-page .ad-d2f0905a {color:var(--accent-orange);}
.app-detail-page.ad-d460bf4b, .app-detail-page .ad-d460bf4b {color:var(--primary);font-size:14px;}
.app-detail-page.ad-d63d9627, .app-detail-page .ad-d63d9627 {background:var(--bg-card);border-radius:12px;padding:24px;margin-bottom:24px;}
.app-detail-page.ad-d923410a, .app-detail-page .ad-d923410a {font-size:18px;font-weight:700;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border);}
.app-detail-page.ad-d97dba3b, .app-detail-page .ad-d97dba3b {font-size:12px;font-weight:700;color:var(--accent-orange);margin-bottom:2px;}
.app-detail-page.ad-db183b0b, .app-detail-page .ad-db183b0b {color:var(--accent-green);}
.app-detail-page.ad-dc2e428f, .app-detail-page .ad-dc2e428f {color:var(--primary);}
.app-detail-page.ad-ddced6c8, .app-detail-page .ad-ddced6c8 {margin-bottom:24px;padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;}
.app-detail-page.ad-e12feb99, .app-detail-page .ad-e12feb99 {display:flex;flex-direction:column;gap:12px;}
.app-detail-page.ad-e5173096, .app-detail-page .ad-e5173096 {font-size:14px;color:var(--text-secondary);line-height:1.7;}
.app-detail-page.ad-e9ae4a3e, .app-detail-page .ad-e9ae4a3e {display:flex;justify-content:center;margin-top:14px;}
.app-detail-page.ad-ecd9804c, .app-detail-page .ad-ecd9804c {display:flex;gap:4px;flex-wrap:wrap;margin-top:8px;}
.app-detail-page.ad-ee5749fc, .app-detail-page .ad-ee5749fc {font-size:16px;font-weight:700;}
.app-detail-page.ad-f028f178, .app-detail-page .ad-f028f178 {border:1px solid #f0f0f0;border-radius:16px;overflow:hidden;}
.app-detail-page.ad-f23e59d8, .app-detail-page .ad-f23e59d8 {text-align:center;color:var(--text-muted);padding:24px;}
.app-detail-page.ad-f3d7ce77, .app-detail-page .ad-f3d7ce77 {gap:10px;}
.app-detail-page.ad-fdf33f23, .app-detail-page .ad-fdf33f23 {margin-bottom:8px;}
.app-detail-page.ad-fe496b8a, .app-detail-page .ad-fe496b8a {font-size:14px;font-weight:600;}
