:root{--color-primary:#185fa5;--color-primary-light:#e8f4ff;--color-success:#27a569;--color-bg-page:#f5f5f5;--color-bg-card:#fff;--color-border:#e8e8e8;--color-text-primary:#1a1a1a;--color-text-secondary:#888;--color-text-muted:#aaa;--color-icon-bg:#fef3e2}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--color-bg-page);color:var(--color-text-primary);font-family:system-ui,-apple-system,sans-serif}#root{width:100%;min-height:100vh}.posts-page{padding:32px 24px}.posts-content{max-width:1100px;margin:0 auto}.posts-header{align-items:baseline;gap:10px;margin-bottom:24px;display:flex}.posts-title{color:var(--color-text-primary);letter-spacing:-.3px;font-size:22px;font-weight:700}.posts-count{color:var(--color-text-muted);font-size:13px}.carousel{aspect-ratio:21/9;background:#111;border-radius:20px;margin-bottom:32px;position:relative;overflow:hidden}.carousel-track{will-change:transform;height:100%;transition:transform .55s cubic-bezier(.4,0,.2,1);display:flex}.carousel-slide{cursor:pointer;background:#111;flex:0 0 100%;justify-content:center;align-items:center;height:100%;display:flex;overflow:hidden}.carousel-img{flex-shrink:0;width:auto;height:100%;display:block}.carousel-gradient{pointer-events:none;background:linear-gradient(#0000 30%,#0000004d 60%,#000000b8 100%);position:absolute;inset:0}.carousel-title{color:#fff;letter-spacing:-.2px;text-shadow:0 1px 4px #0006;font-size:18px;font-weight:700;line-height:1.4;position:absolute;bottom:44px;left:24px;right:24px}.carousel-dots{align-items:center;gap:6px;display:flex;position:absolute;bottom:16px;left:24px}.carousel-dot{cursor:pointer;background:#ffffff80;border-radius:3px;width:6px;height:6px;transition:all .3s}.carousel-dot--active{opacity:1;background:#fff;width:20px}.tweet-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;display:grid}.tweet-card{background:var(--color-bg-card);border:1px solid var(--color-border);cursor:pointer;border-radius:14px;flex-direction:column;transition:transform .25s,box-shadow .25s;display:flex;overflow:hidden}.tweet-card:hover{transform:translateY(-5px);box-shadow:0 12px 32px #0000001a}.tweet-card:active{transform:translateY(-2px);box-shadow:0 6px 16px #00000014}.tweet-card-image{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.tweet-card-body{flex-direction:column;flex:1;gap:6px;padding:14px 16px 16px;display:flex}.tweet-card-title{color:var(--color-text-primary);letter-spacing:-.2px;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:16px;font-weight:700;line-height:1.4;display:-webkit-box;overflow:hidden}.tweet-card-desc{color:var(--color-text-secondary);-webkit-line-clamp:2;line-clamp:2;opacity:.85;-webkit-box-orient:vertical;font-size:13px;font-weight:400;line-height:1.6;display:-webkit-box;overflow:hidden}.tweet-card-footer{align-items:center;gap:7px;margin-top:auto;padding-top:10px;display:flex}.tweet-card-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:22px;height:22px}.tweet-card-author{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.posts-loading,.posts-empty{text-align:center;color:var(--color-text-muted);padding:72px 0;font-size:14px}.posts-error{text-align:center;color:#e53e3e;padding:48px 0;font-size:14px}.posts-retry-btn{color:var(--color-primary);cursor:pointer;background:0 0;border:none;margin-left:12px;font-size:14px;text-decoration:underline;transition:opacity .2s}.posts-retry-btn:hover{opacity:.7}.pagination{justify-content:center;align-items:center;gap:10px;margin-top:36px;display:flex}.pagination-info{color:var(--color-text-secondary);text-align:center;min-width:60px;font-size:13px}.page-btn{border:1px solid var(--color-border);background:var(--color-bg-card);color:var(--color-text-primary);cursor:pointer;border-radius:8px;padding:8px 18px;font-size:13px;transition:opacity .2s,transform .15s,box-shadow .2s}.page-btn:hover:not(.page-btn--disabled){opacity:.85;box-shadow:0 2px 8px #00000014}.page-btn:active:not(.page-btn--disabled){transform:scale(.96)}.page-btn--disabled{opacity:.38;cursor:not-allowed}.tweet-detail-page{background-color:#edf2f7;background-image:radial-gradient(#185fa517 1px,#0000 1px);background-size:22px 22px;min-height:100%;padding:40px 40px 80px}.tweet-detail-content{max-width:960px;margin:0 auto}.tweet-detail-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:18px;padding:40px 48px 48px;box-shadow:0 4px 24px #00000012,0 1px 4px #0000000a}.tweet-detail-back{color:var(--color-text-muted);cursor:pointer;letter-spacing:.01em;background:0 0;border:none;align-items:center;gap:6px;margin-bottom:36px;padding:0;font-size:14px;transition:color .2s;display:inline-flex}.tweet-detail-back:hover{color:var(--color-text-primary)}.tweet-detail-back svg{flex-shrink:0}.tweet-detail-header{align-items:center;gap:12px;margin-bottom:28px;display:flex}.tweet-detail-avatar{object-fit:cover;border:2px solid var(--color-border);border-radius:50%;flex-shrink:0;width:44px;height:44px}.tweet-detail-author{color:var(--color-text-primary);font-size:15px;font-weight:600;line-height:1.3}.tweet-detail-time{color:var(--color-text-muted);margin-top:3px;font-size:12px}.tweet-detail-divider{background:var(--color-border);height:1px;margin-bottom:32px}.tweet-detail-title{color:var(--color-text-primary);letter-spacing:-.5px;margin-bottom:14px;font-size:26px;font-weight:700;line-height:1.4}.tweet-detail-description{color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);margin-bottom:24px;padding-bottom:24px;font-size:16px;line-height:1.7}.tweet-detail-body{color:var(--color-text-primary);word-break:break-word;margin:0 0 32px;font-size:16px;line-height:1.85}.tweet-detail-body p,.tweet-detail-body ul,.tweet-detail-body ol,.tweet-detail-body blockquote,.tweet-detail-body pre{margin:0 0 14px}.tweet-detail-body p:last-child,.tweet-detail-body ul:last-child,.tweet-detail-body ol:last-child,.tweet-detail-body blockquote:last-child,.tweet-detail-body pre:last-child{margin-bottom:0}.tweet-detail-body strong,.tweet-detail-body b{font-weight:700}.tweet-detail-body em,.tweet-detail-body i{font-style:italic}.tweet-detail-body ul,.tweet-detail-body ol{padding-left:24px}.tweet-detail-body a{color:var(--color-primary);text-underline-offset:3px;text-decoration:underline}.tweet-detail-body blockquote{border-left:3px solid var(--color-border);color:var(--color-text-secondary);padding-left:16px}.tweet-detail-body pre,.tweet-detail-body code{background:#f5f7fb;border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace}.tweet-detail-body code{padding:2px 5px}.tweet-detail-body pre{padding:12px;overflow-x:auto}.tweet-detail-body pre code{background:0 0;padding:0}.tweet-detail-images{border-radius:14px;gap:6px;margin-bottom:32px;display:grid;overflow:hidden}.tweet-detail-images--1{grid-template-columns:1fr}.tweet-detail-images--2{grid-template-columns:1fr 1fr}.tweet-detail-images--3{grid-template-columns:repeat(3,1fr)}.tweet-detail-img--single{aspect-ratio:16/9;object-fit:cover;width:100%;display:block}.tweet-detail-img--multi{aspect-ratio:1;object-fit:cover;width:100%;display:block}.tweet-detail-qr{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:14px;align-items:center;gap:16px;padding:20px;display:flex}.tweet-detail-qr-img{border-radius:8px;flex-shrink:0;width:80px;height:80px}.tweet-detail-qr-text{flex-direction:column;gap:4px;display:flex}.tweet-detail-qr-label{color:var(--color-text-primary);font-size:14px;font-weight:600}.tweet-detail-qr-sub{color:var(--color-text-muted);font-size:12px}.tweet-detail-empty{color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:100px 24px;font-size:14px;display:flex}.tweet-detail-back-btn{border:1px solid var(--color-border);background:var(--color-bg-card);color:var(--color-text-primary);cursor:pointer;border-radius:8px;padding:9px 22px;font-size:13px;transition:box-shadow .2s}.tweet-detail-back-btn:hover{box-shadow:0 2px 8px #00000014}@media (width<=768px){.tweet-detail-page{padding:20px 16px 60px}.tweet-detail-card{border-radius:14px;padding:24px 20px 32px}.tweet-detail-title{font-size:22px}.tweet-detail-body{font-size:15px}}
