.pdetail{padding:calc(var(--esp-space)*3) 20px calc(var(--esp-space)*8);display:flex;flex-direction:column;gap:calc(var(--esp-space)*2.5)}.pdetail .pdetail__hero{display:grid;grid-template-columns:minmax(0,460px) minmax(0,1fr);gap:calc(var(--esp-space)*4);align-items:start;background:var(--esp-bg-container);border:1px solid var(--esp-border);border-radius:var(--esp-radius-lg);box-shadow:var(--esp-shadow-sm);padding:calc(var(--esp-space)*3.5)}@media(max-width:900px){.pdetail .pdetail__hero{grid-template-columns:1fr;gap:calc(var(--esp-space)*3)}}@media(max-width:768px){.pdetail .pdetail__hero{background:rgba(0,0,0,0)}}.pdetail .pdetail__hero--nomedia{grid-template-columns:1fr}.pdetail .pdetail__hero-media{min-width:0;position:sticky;top:calc(var(--esp-header-height) + 16px)}@media(max-width:900px){.pdetail .pdetail__hero-media{position:static}}.pdetail .pdetail__cover{position:relative;width:100%;aspect-ratio:16/9;border-radius:var(--esp-radius-lg);overflow:hidden;border:1px solid var(--esp-border);background:var(--esp-bg-elevated)}.pdetail .pdetail__cover-img{-o-object-fit:cover;object-fit:cover}.pdetail .pdetail__hero-panel{min-width:0;display:flex;flex-direction:column;gap:calc(var(--esp-space)*2)}.pdetail .pdetail__eyebrow{font-family:var(--esp-mono);font-size:var(--esp-fs-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--esp-primary)}.pdetail .pdetail__title{margin:0;font-size:var(--esp-fs-3xl);font-weight:700;line-height:1.2;color:var(--esp-text)}.pdetail .pdetail__appno{display:inline-block;margin-inline-start:10px;padding:0 10px;border-radius:var(--esp-radius,8px);font-family:var(--esp-font-mono,ui-monospace,"SFMono-Regular",Menlo,monospace);font-size:var(--esp-fs-xl);font-weight:600;letter-spacing:.04em;line-height:1.2;vertical-align:middle;color:var(--esp-primary);background:var(--esp-primary-soft);white-space:nowrap}.pdetail .pdetail__tags{display:flex;flex-wrap:wrap;gap:6px}.pdetail .pdetail__tags:empty{display:none}.pdetail .pdetail__ai-note{display:inline-flex;align-items:center;gap:calc(var(--esp-space)*.75);color:var(--esp-text-tertiary);font-size:var(--esp-fs-xs)}.pdetail .pdetail__ai-note svg{flex-shrink:0;color:var(--esp-primary)}.pdetail .pdetail__cta{display:flex;align-items:center;flex-wrap:wrap;gap:calc(var(--esp-space)*2);margin-top:calc(var(--esp-space)*.5)}.pdetail .pdetail__cta-primary{display:inline-flex;height:var(--esp-control-h);max-width:320px}.pdetail .pdetail__cta-primary .ant-btn{min-width:200px;font-weight:600}.pdetail .pdetail__cta-hint{margin:-6px 0 0;color:var(--esp-text-tertiary);font-size:var(--esp-fs-xs)}.pdetail .pdetail__rows{display:flex;flex-direction:column;gap:10px}.pdetail .pdetail__row{border:1px solid var(--esp-border);border-radius:var(--esp-radius);background:var(--esp-bg-elevated);overflow:hidden}.pdetail .pdetail__row-head{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:none;background:none;text-align:left;cursor:pointer;transition:background .15s ease}.pdetail .pdetail__row-head:hover{background:var(--esp-primary-soft)}.pdetail .pdetail__row-icon{display:inline-flex;flex-shrink:0;color:var(--esp-primary)}.pdetail .pdetail__row-main{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.pdetail .pdetail__row-title{font-size:var(--esp-fs-sm);font-weight:600;color:var(--esp-text)}.pdetail .pdetail__row-sub{font-size:var(--esp-fs-xs);color:var(--esp-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdetail .pdetail__row-toggle{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;color:var(--esp-text-secondary);font-size:var(--esp-fs-sm)}.pdetail .pdetail__row-chevron{transition:transform .2s ease}@media(prefers-reduced-motion:reduce){.pdetail .pdetail__row-chevron{transition:none}}.pdetail .pdetail__row.is-open .pdetail__row-chevron{transform:rotate(180deg)}.pdetail .pdetail__row-body{padding:14px;border-top:1px solid var(--esp-border);background:var(--esp-bg-container)}.pdetail .pdetail__info-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.pdetail .pdetail__info-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--esp-fs-sm)}.pdetail .pdetail__info-k{display:inline-flex;align-items:center;gap:6px;color:var(--esp-text-secondary);flex-shrink:0}.pdetail .pdetail__info-v{font-weight:600;color:var(--esp-text);text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdetail .pdetail__filegroup+.pdetail__filegroup{margin-top:14px}.pdetail .pdetail__filegroup-title{margin-bottom:8px;font-size:var(--esp-fs-xs);font-weight:600;color:var(--esp-text-tertiary);text-transform:uppercase;letter-spacing:.03em}.pdetail .pdetail__filelist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.pdetail .pdetail__file{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--esp-border);border-radius:var(--esp-radius-sm);background:var(--esp-bg-elevated);color:var(--esp-text);font-size:var(--esp-fs-sm);transition:border-color .15s ease,background .15s ease}.pdetail .pdetail__file:hover{border-color:var(--esp-primary)}.pdetail .pdetail__file:hover .pdetail__file-dl{color:var(--esp-primary)}.pdetail .pdetail__file-icon{flex-shrink:0;color:var(--esp-text-tertiary)}.pdetail .pdetail__file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdetail .pdetail__file-dl,.pdetail .pdetail__file-size{flex-shrink:0;color:var(--esp-text-tertiary);font-size:var(--esp-fs-xs);font-variant-numeric:tabular-nums}.pdetail .pdetail__file-dl{display:inline-flex;align-items:center;gap:4px;transition:color .15s ease}.pdetail .pdetail__linklist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.pdetail .pdetail__linklist a{color:var(--esp-primary);font-size:var(--esp-fs-sm)}.pdetail .pdetail__linklist a:hover{text-decoration:underline}.pdetail .pdetail__desc{display:flex;flex-direction:column;gap:8px}.pdetail .pdetail__lead{margin:0;color:var(--esp-text-secondary);font-size:var(--esp-fs-md);line-height:1.7}.pdetail .pdetail__lead--clamp{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pdetail .pdetail__expand{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;padding:0;border:none;background:none;color:var(--esp-primary);font-size:var(--esp-fs-sm);font-weight:600;cursor:pointer}.pdetail .pdetail__expand:hover{text-decoration:underline}.pdetail .pdetail__expand-up{transform:rotate(180deg)}.pdetail .pdetail__creator{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding-top:calc(var(--esp-space)*2);border-top:1px solid var(--esp-border)}.pdetail .pdetail__creator-label{color:var(--esp-text-tertiary);font-size:var(--esp-fs-sm)}.pdetail .pdetail__author{display:inline-flex;align-items:center;gap:8px;color:var(--esp-text)}.pdetail .pdetail__author:hover .pdetail__author-name{color:var(--esp-primary)}.pdetail .pdetail__author-name{font-weight:600;transition:color .15s ease}.pdetail .pdetail__actionbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.pdetail .pdetail__actionbar :where(.ant-btn){font-size:var(--esp-fs-sm)}.pdetail .pdetail__actionbar :where(.ant-btn).ant-btn-color-default:not(:hover,:active,.is-on){color:var(--esp-text)}.pdetail .pdetail__likebtn{font-variant-numeric:tabular-nums}.pdetail .pdetail__likebtn.is-on{color:var(--esp-primary);border-color:var(--esp-primary)}.pdetail .pdetail__likebtn.is-on svg{fill:currentColor}.pdetail .pdetail__views{display:inline-flex;align-items:center;gap:6px;margin-left:auto;color:var(--esp-text-tertiary);font-size:var(--esp-fs-sm);font-variant-numeric:tabular-nums}.pdetail .pdetail__comments,.pdetail .pdetail__panel{background:var(--esp-bg-container);border:1px solid var(--esp-border);border-radius:var(--esp-radius-lg);box-shadow:var(--esp-shadow-sm);padding:calc(var(--esp-space)*3)}@media(max-width:768px){.pdetail .pdetail__comments,.pdetail .pdetail__panel{background:rgba(0,0,0,0)}}.pdetail .pdetail__article{min-height:80px}.pdetail .pdetail__engage{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}.pdetail .pdetail__engage.pdetail__engage--divided{margin:calc(var(--esp-space)*3) calc(var(--esp-space)*-3) 0;padding:calc(var(--esp-space)*2.5) calc(var(--esp-space)*3) 0;border-top:1px solid var(--esp-border)}.pdetail .pdetail__reactions{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}.pdetail .pdetail__reaction-btn{display:inline-flex;align-items:center;gap:7px;height:36px;margin:0;padding-inline:14px;border:1px solid var(--esp-border);border-radius:999px;background:rgba(0,0,0,0);font:inherit;font-size:var(--esp-fs-sm);font-weight:600;color:var(--esp-text-secondary);font-variant-numeric:tabular-nums;cursor:pointer;transition:color .18s ease,border-color .18s ease}.pdetail .pdetail__reaction-btn svg{transition:transform .18s ease}.pdetail .pdetail__reaction-btn.is-active,.pdetail .pdetail__reaction-btn:hover{color:var(--esp-primary);border-color:var(--esp-primary)}.pdetail .pdetail__reaction-btn.is-active svg{fill:currentColor}.pdetail .project-detail__share{display:inline-flex;align-items:center;gap:10px;margin-left:auto}.pdetail .project-detail__share-label{font-size:var(--esp-fs-sm);color:var(--esp-text-tertiary);white-space:nowrap}.pdetail .project-detail__share-actions{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px}.pdetail .project-detail__share-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;color:var(--esp-text-tertiary);background:rgba(0,0,0,0);border:1px solid var(--esp-border);border-radius:50%;cursor:pointer;transition:color .18s ease,border-color .18s ease}.pdetail .project-detail__share-btn .iconfont{font-size:19px;line-height:1}.pdetail .project-detail__share-btn:hover{color:var(--esp-primary);border-color:var(--esp-primary)}.pdetail .project-detail__share-btn[data-share=wechat]:hover{color:#07c160;border-color:color-mix(in srgb,#07c160 55%,var(--esp-border))}.pdetail .project-detail__share-btn[data-share=xiaohongshu]:hover{color:#ff2442;border-color:color-mix(in srgb,#ff2442 55%,var(--esp-border))}.pdetail .project-detail__share-btn[data-share=bilibili]:hover{color:#fb7299;border-color:color-mix(in srgb,#fb7299 55%,var(--esp-border))}.pdetail .project-detail__share-btn[data-share=linkedin]:hover{color:#0a66c2;border-color:color-mix(in srgb,#0a66c2 55%,var(--esp-border))}.pdetail .project-detail__share-btn[data-share=twitter]:hover{color:#1da1f2;border-color:color-mix(in srgb,#1da1f2 55%,var(--esp-border))}.pdetail .project-detail__share-btn[data-share=reddit]:hover{color:#ff4500;border-color:color-mix(in srgb,#ff4500 55%,var(--esp-border))}.pdetail .project-detail__share-btn[data-share=whatsapp]:hover{color:#25d366;border-color:color-mix(in srgb,#25d366 55%,var(--esp-border))}.pdetail .project-detail__share-btn[data-share=facebook]:hover{color:#1877f2;border-color:color-mix(in srgb,#1877f2 55%,var(--esp-border))}@media(max-width:640px){.pdetail .project-detail__share{margin-left:0}}@media(prefers-reduced-motion:reduce){.pdetail .pdetail__reaction-btn,.pdetail .pdetail__reaction-btn svg,.pdetail .project-detail__share-btn{transition:none}}.project-share-qr-modal__hint{margin:0 0 .85rem;font-size:var(--esp-fs-sm);line-height:1.5;color:var(--esp-text-tertiary)}.project-share-qr-modal__grid{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.project-share-qr-item{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:var(--esp-fs-sm);color:var(--esp-text-secondary)}.project-share-qr-item p{margin:0}.project-share-qr-modal__code{display:block;padding:4px;background:#fff;border-radius:var(--esp-radius-sm)}@media(max-width:768px){.pdetail .pdetail__hero{padding:0 0 calc(var(--esp-space)*2.5)}.pdetail .pdetail__hero,.pdetail .pdetail__panel{border:none;border-bottom:1px solid var(--esp-border);box-shadow:none;border-radius:unset}.pdetail .pdetail__panel{padding:0 0 calc(var(--esp-space)*3)}.pdetail .pdetail__engage.pdetail__engage--divided{margin:calc(var(--esp-space)*3) 0 0;padding:calc(var(--esp-space)*2.5) 0 0}.pdetail .pdetail__comments{border:none;box-shadow:none;border-radius:unset;padding:0}.pdetail .pdetail__comments .comments{margin-top:calc(var(--esp-space)*1.1)}.pdetail .pdetail__comments h4{margin-top:0!important}}@media(max-width:400px){.pdetail .pdetail__comments .comments .comment__time{font-size:13px}.pdetail .pdetail__comments .comments .comment__actions .comment__link{font-size:0}.pdetail .pdetail__comments .comments .comment__actions .comment__link svg{width:15px;height:15px}}.dthread{padding:calc(var(--esp-space)*5) 20px calc(var(--esp-space)*8);max-width:var(--esp-max-width)}.dthread .dthread__header{padding-bottom:calc(var(--esp-space)*2);border-bottom:1px solid var(--esp-border);margin-bottom:calc(var(--esp-space)*3)}.dthread .dthread__title{margin:0 0 12px;font-size:var(--esp-fs-3xl);font-weight:800;line-height:1.2}.dthread .dthread__cats{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px}.dthread .dthread__kind{padding:2px 10px;border-radius:999px;background:var(--esp-primary-soft);color:var(--esp-primary-active,var(--esp-primary));font-size:var(--esp-fs-xs);font-weight:700}.dthread .dthread__cat{display:inline-flex;align-items:center;gap:6px;color:var(--esp-text-secondary);font-size:var(--esp-fs-sm);font-weight:600}.dthread .dthread__cat-dot{width:8px;height:8px;border-radius:2px}.dthread .dthread__post{display:grid;grid-template-columns:44px minmax(0,1fr);gap:16px;align-items:flex-start}.dthread .dthread__avatar{display:inline-flex;align-self:flex-start}.dthread .dthread__post-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}.dthread .dthread__author{color:var(--esp-text);font-size:var(--esp-fs-md);font-weight:700}.dthread .dthread__author:hover{color:var(--esp-primary)}.dthread .dthread__author--deleted{color:var(--esp-text-tertiary);cursor:default}.dthread .dthread__author--deleted:hover,.dthread .dthread__date{color:var(--esp-text-tertiary)}.dthread .dthread__date{font-size:var(--esp-fs-sm);white-space:nowrap}.dthread .dthread__content{color:var(--esp-text);font-size:var(--esp-fs-md);line-height:1.75}.dthread .dthread__content p{margin:0 0 14px}.dthread .dthread__content a{color:var(--esp-primary-active,var(--esp-primary));word-break:break-word}.dthread .dthread__content img{max-width:100%;border-radius:var(--esp-radius)}.dthread .dthread__grid{margin-top:16px;display:grid;gap:6px}.dthread .dthread__grid--three{grid-template-columns:repeat(3,1fr);max-width:420px}.dthread .dthread__grid--two{grid-template-columns:repeat(2,1fr);max-width:282px}.dthread .dthread__grid--single{grid-template-columns:minmax(0,max-content)}.dthread .dthread__cell{position:relative;overflow:hidden;border-radius:var(--esp-radius);background:var(--esp-fill-tertiary,rgba(0,0,0,.04))}.dthread__grid--three .dthread .dthread__cell,.dthread__grid--two .dthread .dthread__cell{aspect-ratio:1/1}.dthread .dthread__cell-img,.dthread .dthread__cell-media{display:block;width:100%;height:100%}.dthread .dthread__cell-media{-o-object-fit:cover;object-fit:cover;cursor:pointer}.dthread .dthread__grid--single .dthread__cell{aspect-ratio:auto}.dthread .dthread__grid--single .dthread__cell-img{width:auto;height:auto}.dthread .dthread__grid--single .dthread__cell-media{height:auto;max-width:min(100%,420px);max-height:520px;-o-object-fit:contain;object-fit:contain}.dthread .dthread__links{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.dthread .dthread__links a{display:inline-flex;align-items:center;gap:6px;color:var(--esp-primary-active,var(--esp-primary));font-size:var(--esp-fs-sm);font-weight:600}.dthread .dthread__post-foot{display:flex;align-items:center;gap:8px;margin-top:16px}.dthread .dthread__like{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid var(--esp-border);border-radius:999px;background:var(--esp-bg-container);color:var(--esp-text-secondary);font:inherit;font-size:var(--esp-fs-sm);font-weight:600;cursor:pointer;transition:all .15s ease}.dthread .dthread__like:hover{border-color:var(--esp-primary);color:var(--esp-primary-active,var(--esp-primary))}.dthread .dthread__like.is-on{border-color:var(--esp-danger);color:var(--esp-danger)}.dthread .dthread__like.is-on svg{fill:currentColor}.dthread .dthread__perma{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--esp-border);border-radius:999px;background:var(--esp-bg-container);color:var(--esp-text-tertiary);cursor:pointer;transition:all .15s ease}.dthread .dthread__perma:hover{border-color:var(--esp-primary);color:var(--esp-primary-active,var(--esp-primary))}.dthread .dthread__stats{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:calc(var(--esp-space)*3) 0;padding:calc(var(--esp-space)*2) 0;border-top:1px solid var(--esp-border);border-bottom:1px solid var(--esp-border)}.dthread .dthread__stat-nums{display:flex;flex-wrap:wrap;gap:8px 28px;color:var(--esp-text-tertiary);font-size:var(--esp-fs-xs)}.dthread .dthread__stat-nums b{display:block;color:var(--esp-primary-active,var(--esp-primary));font-size:var(--esp-fs-lg);font-weight:700;line-height:1.2}.dthread .dthread__faces{display:flex;align-items:center}.dthread .dthread__replies{margin-top:calc(var(--esp-space)*2)}@media(max-width:560px){.dthread .dthread__post{grid-template-columns:36px minmax(0,1fr);gap:12px}}@media(max-width:768px){.dthread .dthread__avatar .ant-avatar{width:36px!important;height:36px!important;min-width:36px!important}.dthread .dthread__replies{padding-top:0}.dthread .dthread__replies .comments .comment__time{font-size:13px}.dthread .dthread__replies .comments .comment__actions .comment__link{font-size:0}.dthread .dthread__replies .comments .comment__actions .comment__link svg{width:15px;height:15px}}