:root{--bg: #000;--bg-secondary: #0a0a0a;--bg-hover: #111;--border: #222;--border-hover: #333;--text: #e8e8e8;--text-secondary: #666;--text-muted: #444;--accent: #e8e8e8;--font-sans: "Geist", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "Geist Mono", "SF Mono", Consolas, monospace;--font-pixel: "Geist Pixel", monospace}*{box-sizing:border-box}html{touch-action:pan-x pan-y}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:var(--font-sans);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased}.app{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--bg);border-right:1px solid var(--border);padding:20px 16px;display:flex;flex-direction:column;gap:32px;position:fixed;height:100vh;overflow-y:auto;z-index:10}.sidebar-header{display:flex;align-items:center;justify-content:space-between}.logo{display:flex;align-items:center;gap:8px}.logo-icon{height:24px;width:auto;image-rendering:pixelated}.logo-text{font-family:var(--font-pixel);font-size:16px;font-weight:400;color:var(--text);letter-spacing:.02em}.logout-button{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;opacity:.5;transition:opacity .15s}.logout-button:hover{opacity:1}.search-wrapper{position:relative}.search-icon{position:absolute;left:0;top:50%;transform:translateY(-50%);color:var(--text-muted)}.search-input{width:100%;padding:8px 0 8px 24px;background:transparent;border:none;border-bottom:1px solid var(--border);color:var(--text);font-size:13px;outline:none;transition:border-color .15s}.search-input:focus{border-color:var(--text-secondary)}.search-input::placeholder{color:var(--text-muted)}.filter-section{display:flex;flex-direction:column;gap:4px}.filter-title{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;color:var(--text-muted);font-weight:500;letter-spacing:.05em;margin-bottom:8px}.filter-list{display:flex;flex-direction:column;gap:1px}.filter-item{display:flex;align-items:center;gap:8px;padding:6px 8px;margin:0 -8px;cursor:pointer;transition:background .1s;font-size:13px;color:var(--text-secondary)}.filter-item:hover{background:var(--bg-hover);color:var(--text)}.filter-item.active{color:var(--text)}.filter-item.active:before{content:"";position:absolute;left:0;width:2px;height:20px;background:var(--text)}.filter-count{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}.filter-item.active .filter-count{color:var(--text-secondary)}.tag-expand{font-size:8px;color:var(--text-muted);width:12px;cursor:pointer}.tag-children{margin-left:20px}.filter-item-child{font-size:12px;padding-left:12px}.user-info{margin-top:auto;padding-top:16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px}.user-avatar{width:24px;height:24px;border-radius:50%;opacity:.8}.user-email{font-size:11px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{flex:1;margin-left:220px;padding:20px;min-height:100vh}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px;touch-action:pan-y;transition:grid-template-columns .15s ease-out}.card{background:var(--bg-secondary);overflow:hidden;cursor:pointer;transition:opacity .15s,transform .15s ease-out;position:relative}.card:hover{opacity:.85}.card-thumbnail{width:100%;aspect-ratio:1;object-fit:cover;background:var(--bg-secondary);display:block}.card-thumbnail.loading{image-rendering:pixelated;filter:contrast(1.1)}.card-thumbnail.loaded{image-rendering:auto;animation:pixelReveal .4s ease-out}@keyframes pixelReveal{0%{image-rendering:pixelated;filter:contrast(1.1)}50%{image-rendering:pixelated;filter:contrast(1.05)}to{image-rendering:auto;filter:none}}.card-placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.card-tweet{display:flex;flex-direction:column;padding:12px;gap:6px;background:var(--bg-secondary)}.tweet-header-small{display:flex;align-items:center;gap:6px}.tweet-avatar-small{width:20px;height:20px;border-radius:50%;flex-shrink:0}.tweet-name-small{font-size:11px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tweet-username-small{font-size:10px;color:var(--text-muted)}.tweet-text-small{font-size:10px;color:var(--text-secondary);line-height:1.3;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.card-text-preview{display:flex;flex-direction:column;padding:16px;gap:8px;background:var(--bg-secondary)}.text-preview-title{font-size:12px;font-weight:500;color:var(--text);line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.text-preview-desc{font-size:11px;color:var(--text-secondary);line-height:1.4;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.text-preview-source{font-size:10px;color:var(--text-muted);margin-top:auto}.card-info{position:absolute;bottom:0;left:0;right:0;padding:12px;background:linear-gradient(transparent,#000c);opacity:0;transition:opacity .15s}.card:hover .card-info{opacity:1}.card-title{font-size:11px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.card-meta{font-size:10px;color:var(--text-secondary);display:flex;align-items:center;gap:6px;margin-top:4px}.card-type{font-family:var(--font-mono);text-transform:uppercase;font-size:9px;letter-spacing:.03em;opacity:.7}.card-tags{display:none}.loading,.empty{display:flex;align-items:center;justify-content:center;height:50vh;color:var(--text-muted);font-size:12px}.loading-more{text-align:center;padding:40px;color:var(--text-muted);font-size:11px}.auth-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:12px;color:var(--text-muted);font-size:12px}.login-page{display:flex;align-items:center;justify-content:center;height:100vh;background:var(--bg)}.login-card{text-align:center;max-width:280px}.login-logo{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:16px}.login-logo-icon{height:48px}.login-logo .logo-text{font-family:var(--font-pixel);font-size:28px;font-weight:400;letter-spacing:.02em}.login-text{color:var(--text-muted);margin-bottom:32px;font-size:13px}.login-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px 20px;background:var(--text);color:var(--bg);border:none;font-family:var(--font-mono);font-size:12px;font-weight:500;cursor:pointer;transition:opacity .15s}.login-button:hover{opacity:.9}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f2;z-index:1000;display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.lightbox{position:relative;max-width:95vw;max-height:95vh;display:flex;flex-direction:column;cursor:default}.lightbox-media-container{flex:1;display:flex;align-items:center;justify-content:center;min-height:0}.lightbox-media{max-width:90vw;max-height:85vh;object-fit:contain;animation:zoomIn .3s cubic-bezier(.2,0,.2,1);transform-origin:center center}@keyframes zoomIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.lightbox-video{max-width:90vw;max-height:85vh;background:#000;animation:zoomIn .3s cubic-bezier(.2,0,.2,1)}.lightbox-pdf{width:90vw;height:85vh;border:none;background:#fff;animation:zoomIn .3s cubic-bezier(.2,0,.2,1)}.lightbox-close{position:fixed;top:20px;right:20px;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:8px;z-index:1001;transition:color .15s}.lightbox-close:hover{color:var(--text)}.lightbox-nav{position:fixed;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:20px;z-index:1001;transition:color .15s}.lightbox-nav:hover{color:var(--text)}.lightbox-nav.prev{left:10px}.lightbox-nav.next{right:10px}.lightbox-info{position:fixed;bottom:0;left:0;right:0;padding:20px 40px;background:linear-gradient(transparent,#000c);animation:slideUp .3s cubic-bezier(.2,0,.2,1) .1s both}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.lightbox-title{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--text)}.lightbox-meta{display:flex;gap:20px;font-size:12px;color:var(--text-secondary)}.lightbox-meta a{color:var(--text-secondary);text-decoration:none;transition:color .15s}.lightbox-meta a:hover{color:var(--text)}.lightbox-tags{display:flex;gap:8px;margin-top:8px}.lightbox-tag{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);padding:4px 8px;background:var(--bg-secondary);border:1px solid var(--border);cursor:default}.lightbox-tag-editable{cursor:pointer;transition:border-color .15s,color .15s}.lightbox-tag-editable:hover{border-color:#f44;color:#f44}.lightbox-tag-editable .tag-remove{margin-left:4px;opacity:0;transition:opacity .15s}.lightbox-tag-editable:hover .tag-remove{opacity:1}.lightbox-tag-add{cursor:pointer;border-style:dashed;transition:border-color .15s,color .15s}.lightbox-tag-add:hover{border-color:var(--text-secondary);color:var(--text-secondary)}.tag-input{font-family:var(--font-mono);font-size:10px;padding:4px 8px;background:var(--bg-secondary);border:1px solid var(--text-secondary);color:var(--text);outline:none;min-width:80px}.lightbox-document{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:40px;color:var(--text-secondary)}.lightbox-document a{color:var(--text);text-decoration:none;font-family:var(--font-mono);font-size:12px;padding:12px 24px;border:1px solid var(--border);transition:border-color .15s}.lightbox-document a:hover{border-color:var(--text-secondary)}.lightbox-tweet{display:flex;flex-direction:column;gap:20px;max-width:600px;padding:32px;background:var(--bg-secondary);border:1px solid var(--border);animation:zoomIn .3s cubic-bezier(.2,0,.2,1)}.tweet-header{display:flex;align-items:center;gap:12px}.tweet-avatar-large{width:48px;height:48px;border-radius:50%;flex-shrink:0}.tweet-author-info{display:flex;flex-direction:column;gap:2px}.tweet-name-large{font-size:16px;font-weight:600;color:var(--text)}.tweet-username-large{font-size:14px;color:var(--text-secondary)}.tweet-text-large{font-size:18px;line-height:1.5;color:var(--text);white-space:pre-wrap}.tweet-media{width:100%;max-height:400px;object-fit:contain;border-radius:8px}.tweet-stats{display:flex;gap:24px;font-size:13px;color:var(--text-secondary);padding-top:16px;border-top:1px solid var(--border)}.tweet-links{display:flex;flex-direction:column;gap:8px;padding-top:16px;border-top:1px solid var(--border)}.tweet-links-title{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.tweet-link{font-size:14px;color:var(--text-secondary);text-decoration:none;padding:8px 12px;background:var(--bg-hover);border:1px solid var(--border);transition:border-color .15s,color .15s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tweet-link:hover{border-color:var(--text-secondary);color:var(--text)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f2;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg);max-width:90vw;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-content{max-height:80vh;overflow:auto}.modal-media{max-width:100%;max-height:75vh;object-fit:contain}.modal-info{padding:20px;border-top:1px solid var(--border)}.modal-title{font-size:14px;font-weight:500;margin-bottom:12px}.modal-meta{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--text-secondary)}.modal-meta a{color:var(--text-secondary);text-decoration:none}.modal-meta a:hover{color:var(--text)}.modal-close{position:absolute;top:20px;right:20px;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:8px}.modal-close:hover{color:var(--text)}@media (max-width: 768px){.sidebar{display:none}.main{margin-left:0}.gallery{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.gallery{grid-template-columns:1fr}}::view-transition-old(root),::view-transition-new(root){animation-duration:.25s}::view-transition-old(*):not(root),::view-transition-new(*):not(root){animation:none;mix-blend-mode:normal}.card-thumbnail,.lightbox-media{contain:paint}
