*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}:root{--bg: #0d0d0d;--surface: #141414;--surface2: #1c1c1c;--border: #2a2a2a;--accent: #4ade80;--accent-dim:#22c55e28;--text: #e5e5e5;--muted: #6b7280;--danger: #f87171;--warn: #fbbf24;--radius: 8px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--sidebar-w: 320px}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;-webkit-font-smoothing:antialiased}#locked-screen{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:var(--bg)}.lock-icon{font-size:2.8rem;opacity:.4;animation:pulse 3s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.25}50%{opacity:.6}}#app{display:flex;flex-direction:column;height:100vh;overflow:hidden}header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}h1{font-size:1.1rem;font-weight:600;letter-spacing:-.02em}.badge{font-size:.72rem;padding:3px 10px;border-radius:999px;background:var(--accent-dim);color:var(--accent);font-weight:500}.header-tabs{display:flex;gap:4px}.tab-btn{background:none;border:1px solid transparent;border-radius:6px;color:var(--muted);cursor:pointer;font-size:.82rem;font-weight:500;padding:5px 14px;transition:color .15s,border-color .15s,background .15s}.tab-btn:hover{color:var(--text);border-color:var(--border)}.tab-btn.active{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}.layout{flex:1;overflow:hidden;position:relative}.loading{padding:20px 16px;color:var(--muted);font-size:.85rem}.app-link{color:inherit;text-decoration:none;font-size:15px;font-weight:600;padding:4px 10px;border:1px solid currentColor;border-radius:8px;opacity:.8}#browser{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--surface);overflow:hidden}.browser-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.toolbar-title{font-size:.8rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.toolbar-actions{display:flex;gap:4px}.icon-btn{background:none;border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:pointer;font-size:.95rem;padding:4px 8px;transition:color .15s,border-color .15s}.icon-btn:hover{color:var(--text);border-color:var(--text)}.breadcrumb{padding:7px 14px;font-size:.75rem;color:var(--muted);border-bottom:1px solid var(--border);flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#tree-container{flex:1;overflow-y:auto;padding:6px 0}.tree-node{-webkit-user-select:none;user-select:none}.node-row{display:flex;align-items:center;gap:6px;padding:5px 14px;cursor:pointer;font-size:.83rem;transition:background .1s;position:relative}.node-row:hover{background:var(--surface2)}.node-row:hover .node-actions{opacity:1}.node-indent{display:inline-block}.node-toggle{width:14px;flex-shrink:0;color:var(--muted);font-size:.7rem}.node-icon{flex-shrink:0;font-size:.95rem}.node-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-size{font-size:.7rem;color:var(--muted);flex-shrink:0}.node-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s;margin-left:4px}.action-btn{background:none;border:none;cursor:pointer;font-size:.78rem;padding:2px 5px;border-radius:4px;color:var(--muted);transition:color .15s,background .15s}.action-btn:hover{color:var(--text);background:var(--border)}.action-btn.danger:hover{color:var(--danger);background:#f8717120}.node-children{display:none}.node-children.open{display:block}.node-row.dir-row .node-name{color:var(--warn)}.inline-input-row{display:flex;align-items:center;gap:6px;padding:4px 14px 4px calc(var(--depth, 0) * 16px + 14px)}.inline-input{background:var(--surface2);border:1px solid var(--accent);border-radius:5px;color:var(--text);font-size:.82rem;padding:3px 8px;outline:none;flex:1}.node-name.file-link{cursor:pointer}.node-name.file-link:hover{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent)}.icon-btn.view-btn.active{color:var(--accent);border-color:var(--accent)}#gallery-container{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:12px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.gallery-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:border-color .15s,transform .1s;display:flex;flex-direction:column}.gallery-card:hover{border-color:var(--accent);transform:translateY(-1px)}.gallery-thumb{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:var(--bg);overflow:hidden;position:relative;font-size:2rem}.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}.gallery-thumb .thumb-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--muted)}.gallery-info{padding:5px 7px 6px;flex-shrink:0}.gallery-name{font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.gallery-meta{font-size:.65rem;color:var(--muted);margin-top:2px}.gallery-empty{padding:24px 16px;text-align:center;color:var(--muted);font-size:.85rem}.gallery-nav{display:flex;align-items:center;flex-wrap:wrap;gap:4px;padding:6px 4px 2px;flex-shrink:0}.gallery-nav-btn{background:none;border:none;color:var(--accent);cursor:pointer;font-size:.78rem;padding:2px 4px;border-radius:4px;transition:background .15s}.gallery-nav-btn:hover{background:var(--accent-dim)}.gallery-nav-sep{color:var(--muted);font-size:.75rem}.gallery-nav-current{font-size:.78rem;color:var(--text);padding:2px 4px}#upload-panel{position:absolute;inset:0;display:flex;flex-direction:column;padding:20px;overflow-y:auto;gap:16px}#drop-zone{border:2px dashed var(--border);border-radius:var(--radius);background:var(--surface);transition:border-color .2s,background .2s;cursor:pointer}#drop-zone.drag-over{border-color:var(--accent);background:var(--accent-dim)}#file-input{display:none}#drop-zone label{display:block;cursor:pointer;padding:44px 24px;text-align:center}.drop-content{display:flex;flex-direction:column;align-items:center;gap:8px}.drop-icon{font-size:2.2rem}.drop-text{font-size:.95rem;font-weight:500}.drop-sub{font-size:.78rem;color:var(--muted)}#overall-progress{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px}.progress-label{display:flex;justify-content:space-between;font-size:.78rem;color:var(--muted);margin-bottom:8px}.progress-bar{height:3px;background:var(--border);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .15s;width:0%}#file-list{list-style:none;display:flex;flex-direction:column;gap:8px}.file-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px}.file-item.done{border-color:var(--accent)}.file-item.error{border-color:var(--danger)}.file-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.file-name{font-size:.82rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:75%}.file-status{font-size:.72rem;color:var(--muted);flex-shrink:0}.file-item.done .file-status{color:var(--accent)}.file-item.error .file-status{color:var(--danger)}.file-sz{font-size:.7rem;color:var(--muted);margin-bottom:5px}.file-item.overflow-hint{font-size:.78rem;color:var(--muted);text-align:center;padding:8px;border-style:dashed}.preview-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;height:100vh;height:100dvh}.preview-modal.hidden{display:none}body.preview-open{overflow:hidden}.preview-backdrop{position:absolute;inset:0;background:#000000d1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;-webkit-tap-highlight-color:transparent}.preview-box{position:relative;z-index:1;display:flex;flex-direction:column;width:min(94vw,1100px);max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.preview-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 16px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface2)}.preview-filename{font-size:.85rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.preview-header-actions{display:flex;gap:6px;flex-shrink:0}.preview-btn{background:none;border:1px solid var(--border);border-radius:5px;color:var(--muted);cursor:pointer;font-size:.78rem;min-height:44px;min-width:44px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s;-webkit-tap-highlight-color:transparent}.preview-btn:hover,.preview-btn:active{color:var(--text);border-color:var(--text)}.preview-close-btn:hover,.preview-close-btn:active{color:var(--danger);border-color:var(--danger)}.preview-body{flex:1;overflow:auto;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--bg);-webkit-overflow-scrolling:touch}.preview-body img{max-width:100%;max-height:100%;object-fit:contain;display:block;padding:8px}.preview-body video{max-width:100%;max-height:100%;display:block;-webkit-playsinline:true}.preview-body audio{width:100%;padding:40px 24px}.preview-body iframe{width:100%;height:80vh;height:80dvh;border:none;flex-shrink:0}.preview-body pre{width:100%;height:100%;overflow:auto;padding:16px;align-self:flex-start;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.8rem;line-height:1.65;color:var(--text);white-space:pre-wrap;word-break:break-all;tab-size:2;-webkit-overflow-scrolling:touch}.preview-loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px 32px;color:var(--muted)}.preview-load-bar{width:220px;height:3px;background:var(--border);border-radius:999px;overflow:hidden}.preview-load-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .1s;width:0%}.preview-load-pct{font-size:.78rem}.preview-unsupported{display:flex;flex-direction:column;align-items:center;gap:14px;padding:48px 24px;color:var(--muted);text-align:center}.preview-unsupported .preview-big-icon{font-size:3.5rem}.preview-unsupported .preview-hint{font-size:.82rem}@media(max-width:680px){.preview-modal{padding:8px}.preview-box{width:100%;border-radius:12px 12px var(--radius) var(--radius)}.preview-header{padding:10px 12px}.preview-filename{font-size:.8rem}.preview-body audio{padding:32px 16px}.preview-body pre{font-size:.75rem;padding:12px}.preview-body iframe{height:70vh;height:70dvh}}
