:root,[data-theme=dark]{color-scheme:dark;--bg: #0f1115;--panel: #171a21;--panel2: #1e222b;--border: #242832;--text: #e6e6e6;--muted: #8b93a3;--accent: #3b82f6;--accent-soft-bg: #1e3a8a33;--accent-soft-border: #2563eb55;--accent-soft-text: #93c5fd;--danger: #ef4444;--danger-soft-bg: #7f1d1d33;--danger-soft-border: #7f1d1d88;--danger-badge: #7f1d1d;--danger-text: #fca5a5;--ok: #4ade80;--warn: #f59e0b;--hover-bg: #262b36;--hover-bg-2: #2a3140;--menu-bg: #1b1f28;--backdrop: rgba(0, 0, 0, .55);--shadow: 0 12px 32px rgba(0, 0, 0, .55);--badge-bg: #374151;--scrollbar: #3b4048;--scrollbar-hover: #4b5563;--cm-gutter: #4b5563;--snippet-text: #cbd5e1;--active-line: #1e222b80;--shared-bg: #0c2236;--shared-hover: #12324b;--fmt-json-bg: #1e3a8a;--fmt-json-text: #93c5fd;--fmt-yaml-bg: #713f12;--fmt-yaml-text: #fbbf24;--fmt-csv-bg: #14532d;--fmt-csv-text: #86efac;--fmt-txt-bg: #3f3f46;--fmt-txt-text: #d4d4d8;--share-badge-bg: #7c3aed;--share-badge-text: #ffffff}[data-theme=light]{color-scheme:light;--bg: #f4f6fa;--panel: #ffffff;--panel2: #eef1f6;--border: #d8dee6;--text: #1f2328;--muted: #6b7280;--accent: #2563eb;--accent-soft-bg: #dbeafe;--accent-soft-border: #93c5fd;--accent-soft-text: #1d4ed8;--danger: #dc2626;--danger-soft-bg: #fee2e2;--danger-soft-border: #fca5a5;--danger-badge: #fca5a5;--danger-text: #991b1b;--ok: #16a34a;--warn: #d97706;--hover-bg: #e5e9ef;--hover-bg-2: #dde3ec;--menu-bg: #ffffff;--backdrop: rgba(15, 23, 42, .35);--shadow: 0 12px 32px rgba(15, 23, 42, .15);--badge-bg: #e5e7eb;--scrollbar: #c1c7d0;--scrollbar-hover: #9ca3af;--cm-gutter: #9ca3af;--snippet-text: #334155;--active-line: #1e3a8a14;--shared-bg: #dbeafe;--shared-hover: #bfdbfe;--fmt-json-bg: #dbeafe;--fmt-json-text: #1e40af;--fmt-yaml-bg: #fef3c7;--fmt-yaml-text: #92400e;--fmt-csv-bg: #dcfce7;--fmt-csv-text: #166534;--fmt-txt-bg: #e5e7eb;--fmt-txt-text: #374151;--share-badge-bg: #8b5cf6;--share-badge-text: #ffffff}*{box-sizing:border-box;font-family:-apple-system,Segoe UI,Roboto,sans-serif}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);transition:background .2s ease,color .2s ease}.app{display:flex;height:100vh;overflow:hidden}.sidebar{width:320px;background:var(--panel);padding:16px;border-right:1px solid var(--border);display:flex;flex-direction:column;gap:10px;flex:0 0 auto;position:relative}.brand{font-weight:700;font-size:16px}.list{overflow-y:auto;flex:1}.empty{color:var(--muted);font-size:13px;text-align:center;padding:20px}.item{padding:10px;border-radius:8px;background:var(--panel2);margin-bottom:8px;transition:background .15s}.item:hover{background:var(--hover-bg)}.item.active{box-shadow:inset 0 0 0 1px var(--accent)}.item.expanded{background:var(--hover-bg)}.item-head{cursor:pointer}.item-row{display:flex;align-items:center;gap:8px}.item-name{flex:1;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-meta{color:var(--muted);font-size:11px;margin-top:4px;word-break:break-all}.item-project{color:var(--ok);font-size:11px;font-weight:600;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chev{flex:0 0 auto;color:var(--muted);font-size:10px;transition:transform .2s ease;transform:rotate(-90deg)}.chev.open{transform:rotate(0)}.vis-toggle{flex:0 0 auto;width:28px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);font-size:13px;cursor:pointer;padding:0;line-height:1;transition:background .15s,border-color .15s,transform .1s}.vis-toggle:hover{transform:scale(1.08)}.vis-toggle:active{transform:scale(.95)}.vis-toggle.pub{border-color:var(--danger-soft-border);background:var(--danger-soft-bg)}.vis-toggle.priv{border-color:var(--accent-soft-border);background:var(--accent-soft-bg)}.item-expand{margin-top:10px;padding-top:10px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px;cursor:default}.item-desc-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.item-desc,.item-input{width:100%;min-height:56px;resize:vertical;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:6px 8px;font-family:inherit;font-size:12px;line-height:1.4;outline:none}.item-input{min-height:0;color:var(--ok);font-weight:500}.item-desc:focus,.item-input:focus{border-color:var(--accent)}.item-input:disabled{color:var(--muted)}.project-group{margin-bottom:8px}.project-header{display:flex;align-items:center;gap:6px;padding:6px 8px;cursor:pointer;border-radius:6px;background:var(--panel2);border:1px solid var(--border);font-size:12px;color:var(--ok);-webkit-user-select:none;user-select:none;transition:background .15s}.project-header:hover{background:var(--hover-bg)}.project-header .chev{color:var(--ok);font-size:10px;transition:transform .2s ease;transform:rotate(-90deg);flex:0 0 auto}.project-header .chev.open{transform:rotate(0)}.project-name{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-count{font-size:10px;color:var(--muted);background:var(--panel);padding:1px 7px;border-radius:8px;flex:0 0 auto}.project-items{margin-top:4px;margin-left:6px;padding-left:8px;border-left:1px solid var(--border)}.item.in-group{background:transparent}.item.in-group:hover{background:var(--panel2)}.item.in-group.expanded{background:var(--hover-bg)}.item.shared{background:var(--shared-bg)}.item.shared:hover,.item.shared.expanded{background:var(--shared-hover)}.item.shared.active{box-shadow:inset 0 0 0 1px var(--accent)}.pin-mark{font-size:10px;margin-right:2px;flex:0 0 auto}.item.pinned{border-left:2px solid var(--warn)}.main{flex:1;padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.name-input{flex:1;min-width:180px}.input{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:6px;font-size:13px;outline:none}.input:focus{border-color:var(--accent)}.btn{background:var(--accent);color:#fff;border:0;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:13px;transition:filter .15s,background .15s,box-shadow .15s;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn:hover{filter:brightness(1.1)}.btn.ghost{background:var(--panel2);color:var(--text)}.btn.ghost.active{background:var(--hover-bg-2);box-shadow:inset 0 0 0 1px var(--accent)}.btn.danger{background:var(--danger)}.btn.sm{padding:5px 10px;font-size:12px}.btn.full{width:100%}.editor-wrap{flex:1;display:flex;flex-direction:column;min-height:240px;min-width:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg)}.editor-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--panel);font-size:12px;color:var(--muted);border-bottom:1px solid var(--border);flex:0 0 auto}.editor-bar .spacer{flex:1}.editor-lang{font-family:ui-monospace,Menlo,monospace;font-size:11px;letter-spacing:1px;color:var(--accent-soft-text);background:var(--accent-soft-bg);border:1px solid var(--accent-soft-border);border-radius:4px;padding:2px 8px}.editor-stat{font-size:11px;color:var(--muted)}.editor-body{flex:1;min-height:0;min-width:0;display:flex;position:relative}.editor-body>div{flex:1;min-height:0;min-width:0}.editor-body .cm-editor{height:100%;width:100%}.editor-body .cm-scroller{overflow:auto;font-family:ui-monospace,Menlo,Consolas,monospace}.editor-body .cm-scroller::-webkit-scrollbar{width:10px;height:10px}.editor-body .cm-scroller::-webkit-scrollbar-track{background:var(--panel)}.editor-body .cm-scroller::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:5px;border:2px solid var(--panel)}.editor-body .cm-scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover)}.editor-body .cm-scroller::-webkit-scrollbar-corner{background:var(--panel)}.editor-body .cm-scroller{scrollbar-width:thin;scrollbar-color:var(--scrollbar) var(--panel)}.editor-body .cm-editor.cm-focused{outline:none}.draft-badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#fff;background:#d97706;border-radius:4px;flex:0 0 auto}.draft-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:#fff;animation:draft-pulse 1.6s ease-in-out infinite}@keyframes draft-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}[data-theme=dark] .draft-badge{background:#b45309}.status{min-height:18px;font-size:12px}.status.ok{color:var(--ok)}.status.err{color:var(--danger)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:19}.drawer-backdrop.open{opacity:1;pointer-events:auto}.share-drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:92vw;background:var(--panel);border-left:1px solid var(--border);transform:translate(100%);transition:transform .25s ease;z-index:20;display:flex;flex-direction:column;padding:16px;gap:12px;overflow-y:auto}.share-drawer.open{transform:translate(0)}.share-drawer-head{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:14px}.share-drawer .share{background:transparent;border:0;padding:0;border-radius:0}.share{display:flex;flex-direction:column;gap:12px}.share-head{display:flex;align-items:center;gap:10px}.share-head h3{margin:0;font-size:14px}.share-row{display:flex;flex-direction:column;gap:6px}.share-row label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.copy-field{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 8px}.copy-field code{flex:1;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--accent-soft-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hint{font-size:11px;color:var(--muted)}.hint.err{color:var(--danger)}.hint code{background:var(--panel2);padding:1px 5px;border-radius:4px}.badge{display:inline-block;padding:2px 7px;border-radius:4px;background:var(--badge-bg);color:var(--text);font-size:10px;letter-spacing:.5px}.badge.private{background:var(--danger-badge);color:#fff}.badge.share,.badge.admin{background:var(--share-badge-bg);color:var(--share-badge-text)}.badge.fmt{font-family:ui-monospace,Menlo,monospace;letter-spacing:.3px;font-weight:600}.badge.fmt-json{background:var(--fmt-json-bg);color:var(--fmt-json-text)}.badge.fmt-yaml{background:var(--fmt-yaml-bg);color:var(--fmt-yaml-text)}.badge.fmt-csv{background:var(--fmt-csv-bg);color:var(--fmt-csv-text)}.badge.fmt-txt{background:var(--fmt-txt-bg);color:var(--fmt-txt-text)}.badge.fmt-binary{background:#4b5563;color:#e5e7eb;font-weight:700}.share-tabs{display:flex;gap:4px}.tab{background:transparent;border:1px solid transparent;color:var(--muted);padding:5px 12px;border-radius:6px;cursor:pointer;font-size:12px}.tab:hover{color:var(--text)}.tab.active{background:var(--panel2);color:var(--text);border-color:var(--border)}.snippet{position:relative;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px 92px 12px 12px}.snippet pre{margin:0;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--snippet-text);white-space:pre-wrap;word-break:break-all;line-height:1.5}.snippet .btn{position:absolute;top:8px;right:8px}.sidebar.drag-over{box-shadow:inset 0 0 0 2px var(--accent)}.sidebar.drag-over:after{content:"📥 Отпустите файл, чтобы добавить";position:absolute;top:8px;right:8px;bottom:8px;left:8px;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px;background:var(--accent-soft-bg);border:2px dashed var(--accent);border-radius:10px;color:var(--accent);font-weight:600;font-size:14px;pointer-events:none;z-index:5}.context-menu{position:fixed;z-index:50;min-width:240px;background:var(--menu-bg);border:1px solid var(--border);border-radius:8px;padding:4px;box-shadow:var(--shadow);font-size:13px;animation:ctx-in .12s ease-out}@keyframes ctx-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.context-menu button{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:0;color:var(--text);padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13px;text-align:left;transition:background .12s,color .12s}.context-menu button:hover{background:var(--hover-bg-2);color:var(--ok)}.context-menu button:disabled{color:var(--muted);cursor:not-allowed}.context-menu button:disabled:hover{background:transparent;color:var(--muted)}.context-menu button.danger{color:var(--danger-text)}.context-menu button.danger:hover{background:var(--danger-soft-bg);color:var(--danger-text)}.context-menu .ctx-icon{width:16px;text-align:center;flex:0 0 auto}.context-menu .sep{height:1px;background:var(--border);margin:4px 2px}.ctx-info{display:flex;gap:10px;padding:8px 10px;align-items:flex-start;cursor:default}.ctx-info-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.ctx-info-value{font-size:12px;color:var(--accent-soft-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.item-tip{position:fixed;z-index:30;max-width:280px;min-width:200px;background:var(--menu-bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;box-shadow:var(--shadow);font-size:12px;line-height:1.45;opacity:0;transform:translate(-8px) scale(.98);pointer-events:none;transition:opacity .18s ease,transform .18s ease}.item-tip.open{opacity:1;transform:translate(0) scale(1)}.item-tip-name{font-weight:600;font-size:12px;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-tip-project{color:var(--ok);font-size:11px;font-weight:600;margin-top:-2px;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-tip-desc{color:var(--ok);margin-bottom:8px;max-height:140px;overflow:hidden;word-break:break-word;white-space:pre-wrap;font-weight:500}.item-tip-meta{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px;font-family:ui-monospace,Menlo,monospace;border-top:1px solid var(--border);padding-top:6px}.item-tip-meta .badge{margin-left:auto}.group-tip{max-width:340px;min-width:240px;padding:12px 14px}.group-tip-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--border);margin-bottom:8px}.group-tip-name{color:var(--ok);font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-tip-count{font-size:10px;color:var(--muted);background:var(--panel2);padding:2px 8px;border-radius:10px;flex:0 0 auto}.group-tip-list{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow-y:auto}.group-tip-item{display:flex;flex-direction:column;gap:3px}.group-tip-item-head{display:flex;align-items:center;gap:6px}.group-tip-item-name{font-size:12px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.group-tip-item-desc{font-size:11px;color:var(--muted);line-height:1.4;padding-left:2px;max-height:40px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);display:flex;align-items:center;justify-content:center;z-index:60}.modal{width:480px;max-width:92vw;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head h3{margin:0;font-size:15px}.modal-actions{display:flex;gap:8px;justify-content:flex-end}.share-form{display:grid;grid-template-columns:1fr 160px auto;gap:8px}.share-list{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto}.share-item{display:flex;align-items:center;gap:10px;background:var(--panel2);padding:8px 10px;border-radius:6px}.share-item-main{flex:1;min-width:0}.share-item-email{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-item .share-perm-select{width:auto;min-width:130px;padding:5px 8px;font-size:12px}.share-token-block{display:flex;flex-direction:column;gap:6px;padding:10px 12px;background:var(--panel2);border-radius:6px;border:1px solid var(--border)}.profile-modal{width:520px;max-width:96vw}.profile-section{display:flex;flex-direction:column;gap:12px;background:var(--panel2);padding:14px;border-radius:8px}.profile-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.profile-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.danger-zone{border:1px solid var(--danger-soft-border);background:var(--danger-soft-bg)}.danger-zone .profile-label{color:var(--danger-text)}.theme-toggle{display:flex;gap:6px}.theme-btn{flex:1;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:10px;cursor:pointer;font-size:13px;transition:background .15s,border-color .15s}.theme-btn:hover{background:var(--hover-bg)}.theme-btn.active{background:var(--accent-soft-bg);border-color:var(--accent-soft-border);color:var(--accent-soft-text);font-weight:600}.twofa-setup{display:flex;flex-direction:column;gap:12px;align-items:center;padding-top:8px;border-top:1px solid var(--border)}.twofa-qr{width:200px;height:200px;background:#fff;padding:8px;border-radius:8px}.twofa-manual{width:100%}.twofa-uri{display:block;font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--accent-soft-text);word-break:break-all;text-decoration:underline;cursor:pointer}.twofa-secret{display:block;background:var(--bg);padding:6px 10px;border-radius:6px;font-family:ui-monospace,Menlo,monospace;font-size:13px;letter-spacing:1px;color:var(--accent-soft-text);word-break:break-all}.twofa-form{display:flex;gap:8px;width:100%;align-items:center;flex-wrap:wrap}.twofa-form .code-input{flex:1;min-width:140px}.twofa-disable{flex-direction:column;align-items:stretch}.admin-modal{width:760px;max-width:96vw;max-height:90vh;display:flex;flex-direction:column;gap:14px;padding:20px}.admin-head-actions{display:flex;align-items:center;gap:6px}.admin-head-actions .btn{min-width:34px;padding:6px 10px;font-size:14px;line-height:1}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.admin-stat{background:var(--panel2);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;text-align:center;min-width:0}.admin-stat b{font-size:20px;font-weight:700;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-stat span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-tabs{display:flex;gap:4px;background:var(--panel2);padding:3px;border-radius:8px}.admin-tabs button{flex:1;background:transparent;border:0;color:var(--muted);padding:9px 12px;border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s,color .15s;display:inline-flex;align-items:center;justify-content:center;gap:6px}.admin-tabs button:hover{color:var(--text)}.admin-tabs button.active{background:var(--bg);color:var(--text)}.tab-count{font-size:10px;background:var(--panel);color:var(--muted);padding:1px 7px;border-radius:10px;min-width:22px;text-align:center}.admin-tabs button.active .tab-count{background:var(--accent-soft-bg);color:var(--accent-soft-text)}.admin-search{flex:0 0 auto}.admin-body{display:flex;flex-direction:column;gap:6px;overflow-y:auto;flex:1;min-height:120px;padding-right:4px;margin-right:-4px}.admin-row{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid transparent;border-radius:8px;padding:10px 12px;transition:border-color .15s,background .15s}.admin-row:hover{border-color:var(--border)}.admin-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.admin-row-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;min-width:0}.admin-email,.admin-doc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:0 1 auto;max-width:320px}.admin-row-meta{display:flex;align-items:center;gap:12px;font-size:11px;color:var(--muted);font-family:ui-monospace,Menlo,monospace;flex-wrap:wrap}.admin-row-meta span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.admin-slug{color:var(--accent-soft-text)}.admin-row-actions{display:flex;align-items:center;gap:4px;flex:0 0 auto}.admin-row-actions .btn{min-width:32px;padding:6px 8px;font-size:13px;line-height:1}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.auth-card{width:360px;background:var(--panel);padding:24px;border-radius:12px;border:1px solid var(--border);display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow)}.auth-logo{font-size:18px;font-weight:700;text-align:center}.auth-tabs{display:flex;background:var(--panel2);border-radius:8px;padding:3px}.auth-tabs button{flex:1;background:transparent;border:0;color:var(--muted);padding:8px;border-radius:6px;cursor:pointer;font-size:13px}.auth-tabs button.active{background:var(--bg);color:var(--text)}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-field{display:flex;flex-direction:column;gap:4px}.auth-field span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.auth-error{color:var(--danger);font-size:12px}.auth-hint{font-size:11px;color:var(--muted);text-align:center}.auth-info{background:var(--accent-soft-bg);border:1px solid var(--accent-soft-border);color:var(--accent-soft-text);padding:10px 12px;border-radius:6px;font-size:13px}.auth-row{display:flex;gap:6px;justify-content:space-between}.code-input{font-family:ui-monospace,Menlo,monospace;font-size:22px;letter-spacing:10px;text-align:center;padding:12px}.boot{padding:40px;color:var(--muted)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:6px;min-width:30px;min-height:28px;color:var(--muted);line-height:1}.icon-btn:hover{color:var(--text)}.icon-btn svg{display:block}.user-bar{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--panel2);border-radius:6px;margin-bottom:4px}.user-email{flex:1;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.new-file-modal{width:480px;max-width:92vw}.format-list{display:flex;flex-direction:column;gap:8px}.format-item{display:flex;align-items:center;gap:14px;background:var(--panel2);border:1px solid transparent;border-radius:8px;padding:12px 14px;cursor:pointer;text-align:left;color:var(--text);transition:background .15s,border-color .15s}.format-item:hover{background:var(--hover-bg);border-color:var(--accent)}.format-item-body{display:flex;flex-direction:column;gap:2px}.format-item-ext{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--muted)}.format-item-desc{font-size:13px}.files-modal{width:520px;max-width:92vw}.files-list{display:flex;flex-direction:column;gap:6px;max-height:60vh;overflow-y:auto}.files-item{display:flex;flex-direction:column;gap:4px;background:var(--panel2);border:1px solid transparent;border-radius:8px;padding:10px 12px;cursor:pointer;text-align:left;color:var(--text);transition:background .15s,border-color .15s}.files-item:hover{background:var(--hover-bg);border-color:var(--accent)}.files-item-head{display:flex;align-items:center;gap:8px}.files-item-name{flex:1;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-item-project{font-size:11px;color:var(--ok);font-weight:600}.files-item-desc{font-size:12px;color:var(--muted);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-binary-modal{width:540px;max-width:96vw}.binary-form{display:flex;flex-direction:column;gap:12px}.binary-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:28px 20px;border:2px dashed var(--border);border-radius:10px;cursor:pointer;background:var(--panel2);transition:border-color .15s,background .15s;min-height:160px}.binary-drop:hover{border-color:var(--accent);background:var(--hover-bg)}.binary-drop.has-file{border-style:solid;border-color:var(--accent);background:var(--accent-soft-bg)}.binary-icon{font-size:40px;line-height:1}.binary-name{font-weight:600;font-size:14px;word-break:break-all}.binary-size{font-size:12px;color:var(--muted)}.binary-viewer{flex:1;display:flex;align-items:center;justify-content:center;padding:20px}.binary-viewer-card{display:flex;flex-direction:column;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:32px 40px;max-width:520px;width:100%;text-align:center}.binary-viewer-icon{font-size:64px;line-height:1}.binary-viewer-name{font-size:18px;font-weight:700;word-break:break-all}.binary-viewer-meta{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);flex-wrap:wrap;justify-content:center}.binary-viewer-meta .muted{font-family:ui-monospace,Menlo,monospace;font-size:11px;opacity:.7}.binary-viewer-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:6px}.welcome{max-width:640px;margin:40px auto 0;padding:0 16px 40px}.welcome-hero{text-align:center;margin-bottom:36px}.welcome-logo{font-size:56px;line-height:1;margin-bottom:12px}.welcome h1{margin:0 0 12px;font-size:28px;font-weight:700}.welcome-sub{color:var(--muted);font-size:15px;line-height:1.5;max-width:480px;margin:0 auto}.welcome-steps{display:flex;flex-direction:column;gap:14px;margin-bottom:32px}.welcome-step{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:10px}.welcome-step-icon{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:var(--accent-soft-bg);border:1px solid var(--accent-soft-border);color:var(--accent-soft-text);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.welcome-step-title{font-weight:600;margin-bottom:4px;font-size:14px}.welcome-step-desc{color:var(--muted);font-size:13px;line-height:1.5}.welcome-step-desc code{background:var(--panel2);padding:1px 6px;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--accent-soft-text);margin:0 2px}.welcome-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.welcome-hamburger{position:absolute;top:12px;left:12px;z-index:20}.hamburger,.sidebar-overlay,.close-mobile-btn{display:none}@media (max-width: 768px){.app{display:block;height:auto;min-height:100vh}.sidebar{position:fixed;top:0;left:0;bottom:0;width:88vw;max-width:340px;z-index:40;transform:translate(-105%);transition:transform .25s ease;box-shadow:4px 0 24px #00000080;overflow-y:auto}.sidebar.mobile-open{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);z-index:39}.main{padding:12px;min-height:100vh}.toolbar{gap:6px;position:sticky;top:0;z-index:30;background:var(--bg);padding:12px;margin:-12px -12px 8px;border-bottom:1px solid var(--border)}.hamburger{display:inline-flex;flex:0 0 auto}.close-mobile-btn{display:inline-flex}.toolbar .btn{padding:8px 10px;font-size:14px}.toolbar .btn-label{display:none}.name-input{min-width:100px;flex:1;font-size:14px;padding:9px 10px}.modal{width:100%;max-width:100vw;max-height:100vh;height:100vh;border-radius:0;padding:16px;overflow-y:auto}.modal-backdrop{align-items:stretch;justify-content:stretch}.share-drawer{width:100vw;max-width:100vw;padding:14px}.context-menu{min-width:220px;font-size:15px}.context-menu button{padding:12px;gap:12px}.item{padding:12px}.item-name{font-size:14px}.item-meta{font-size:12px}.vis-toggle{width:34px;height:30px;font-size:15px}.user-bar{padding:8px}.user-email{font-size:13px}.icon-btn{min-width:36px;min-height:32px}.editor-body .cm-editor{font-size:14px}.item-tip,.group-tip{display:none!important}.twofa-qr{width:180px;height:180px}.twofa-form{flex-direction:column;align-items:stretch}.twofa-form .code-input{width:100%}.input,.item-input,.item-desc{font-size:15px;padding:10px 12px}.share-form{display:flex;flex-direction:column;gap:8px}.share-item{flex-wrap:wrap}.share-item .share-perm-select{width:100%;min-width:0}.welcome-hamburger{display:inline-flex}.admin-stats{grid-template-columns:repeat(3,1fr)}.admin-stat b{font-size:16px}.admin-stat span{font-size:9px}.admin-row{flex-wrap:wrap}.admin-row-actions{width:100%;justify-content:flex-end;border-top:1px solid var(--border);padding-top:8px;margin-top:4px}.admin-email,.admin-doc-name{max-width:180px}.upload-binary-modal{width:100%;height:100vh;border-radius:0;padding:16px}.binary-viewer{padding:12px}.binary-viewer-card{padding:24px 20px}.binary-viewer-icon{font-size:48px}}@media (max-width: 380px){.brand{font-size:15px}.toolbar .btn{padding:8px;font-size:13px}.item-name{font-size:13px}}@media (min-width: 769px) and (max-width: 1024px){.sidebar{width:260px}.share-drawer{width:380px}.welcome-hamburger{display:none}}.file-group{margin-bottom:12px}.group-header{display:flex;align-items:center;gap:6px;padding:8px 10px;cursor:pointer;border-radius:6px;border:1px solid transparent;font-size:12px;font-weight:600;-webkit-user-select:none;user-select:none;transition:background .15s,border-color .15s}.group-header .chev{font-size:10px;transition:transform .2s ease;transform:rotate(-90deg);flex:0 0 auto}.group-header .chev.open{transform:rotate(0)}.group-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-count{font-size:10px;padding:1px 8px;border-radius:8px;flex:0 0 auto;font-weight:700}.group-body{margin-top:6px;margin-left:6px;padding-left:8px;border-left:2px solid transparent}.structured-header{background:var(--accent-soft-bg);border-color:var(--accent-soft-border);color:var(--accent-soft-text)}.structured-header:hover{background:var(--hover-bg-2)}.structured-header .chev{color:var(--accent-soft-text)}.structured-count,.structured-header .group-count{background:var(--accent-soft-bg);color:var(--accent-soft-text)}.structured-body{border-left-color:var(--accent-soft-border)}.images-header{background:#10b98122;border-color:#10b98155;color:#34d399}.images-header:hover{background:#10b98133;border-color:#10b98166}.images-header .chev{color:#34d399}.images-header .group-count{background:#10b98133;color:#34d399}.images-body{border-left-color:#10b98155}.item.in-images{background:#10b9811a;border-left:3px solid #10b981}.item.in-images:hover,.item.in-images.expanded{background:#10b98133}.item.in-images.active{box-shadow:inset 0 0 0 1px var(--accent)}.binary-header{background:#78350f22;border-color:#b4530944;color:#fbbf24}.binary-header:hover{background:#78350f33;border-color:#b4530966}.binary-header .chev{color:#fbbf24}.binary-header .group-count{background:#78350f66;color:#fbbf24}.binary-body{border-left-color:#b4530944}.item.in-binary{background:#78350f1a;border-left:3px solid #b45309}.item.in-binary:hover,.item.in-binary.expanded{background:#78350f33}.item.in-binary.active{box-shadow:inset 0 0 0 1px var(--accent)}[data-theme=light] .images-header{background:#d1fae5;border-color:#10b981;color:#065f46}[data-theme=light] .images-header:hover{background:#a7f3d0}[data-theme=light] .images-header .chev{color:#065f46}[data-theme=light] .images-header .group-count{background:#6ee7b7;color:#065f46}[data-theme=light] .images-body{border-left-color:#10b98188}[data-theme=light] .item.in-images{background:#ecfdf5;border-left-color:#10b981}[data-theme=light] .item.in-images:hover,[data-theme=light] .item.in-images.expanded{background:#d1fae5}[data-theme=light] .binary-header{background:#fef3c7;border-color:#f59e0b;color:#92400e}[data-theme=light] .binary-header:hover{background:#fde68a}[data-theme=light] .binary-header .chev{color:#92400e}[data-theme=light] .binary-header .group-count{background:#fcd34d;color:#78350f}[data-theme=light] .binary-body{border-left-color:#f59e0b88}[data-theme=light] .item.in-binary{background:#fef9e7;border-left-color:#f59e0b}[data-theme=light] .item.in-binary:hover,[data-theme=light] .item.in-binary.expanded{background:#fef3c7}@media (max-width: 768px){.group-header{padding:10px 12px}}.welcome{max-width:560px;margin:60px auto 0;padding:0 16px 40px}.welcome-hero{text-align:center;margin-bottom:32px}.welcome-logo{font-size:48px;line-height:1;margin-bottom:10px}.welcome h1{margin:0 0 6px;font-size:24px;font-weight:700}.welcome-sub{color:var(--muted);font-size:14px;margin:0}.welcome-main{display:flex;flex-direction:column;gap:20px}.welcome-open{display:flex;align-items:center;gap:14px;width:100%;padding:16px 18px;background:var(--accent-soft-bg);border:1px solid var(--accent-soft-border);border-radius:12px;cursor:pointer;text-align:left;color:var(--text);transition:background .15s,transform .1s}.welcome-open:hover{background:var(--hover-bg-2)}.welcome-open:active{transform:scale(.99)}.welcome-open-icon{font-size:28px;line-height:1;flex:0 0 auto}.welcome-open-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.welcome-open-text b{font-size:15px;font-weight:700}.welcome-open-text span{font-size:12px;color:var(--muted)}.welcome-open-arrow{font-size:20px;color:var(--accent);flex:0 0 auto}.welcome-create{display:flex;flex-direction:column;gap:10px}.welcome-create-title{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-weight:600;padding-left:2px}.welcome-types{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.welcome-type{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;background:var(--panel);border:1px solid var(--border);border-radius:10px;cursor:pointer;text-align:center;color:var(--text);transition:background .15s,border-color .15s,transform .1s}.welcome-type:hover{background:var(--hover-bg);border-color:var(--accent)}.welcome-type:active{transform:scale(.97)}.welcome-type .badge{font-size:9px;padding:2px 6px}.welcome-type-desc{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.welcome-hint{margin-top:32px;text-align:center;font-size:12px;color:var(--muted)}.welcome-hint code{background:var(--panel2);padding:1px 6px;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--accent-soft-text)}@media (max-width: 768px){.welcome{margin:24px auto 0;padding:0 12px 24px}.welcome-logo{font-size:40px}.welcome h1{font-size:20px}.welcome-hero{margin-bottom:24px}.welcome-types{grid-template-columns:repeat(3,1fr)}.welcome-open{padding:14px 16px}.welcome-open-icon{font-size:24px}.welcome-open-text b{font-size:14px}.binary-header{padding:10px 12px}}.loader{--color-1: #ffffff;--color-2: #0006ff;--size: .3px;width:calc(100 * var(--size));height:calc(46 * var(--size));position:relative;border-bottom:calc(5 * var(--size)) solid var(--color-1);border-top:calc(5 * var(--size)) solid var(--color-1);box-sizing:border-box;display:inline-block}.loader:before,.loader:after{content:"";position:absolute;left:0;top:calc(-20 * var(--size));width:calc(32 * var(--size));height:calc(32 * var(--size));border-radius:50%;background:var(--color-2);border:calc(5 * var(--size)) solid var(--color-1);box-sizing:border-box;animation:loader-slide 1s infinite ease-in-out alternate}.loader:after{top:calc(20 * var(--size));animation-direction:alternate-reverse}@keyframes loader-slide{0%,20%{transform:translate(calc(70 * var(--size)))}80%,to{transform:translate(calc(-1 * var(--size)))}}[data-theme=dark] .loader{--color-1: #e6e6e6;--color-2: #3b82f6}[data-theme=light] .loader{--color-1: #1f2328;--color-2: #2563eb}.binary-loading .loader{--size: .5px}.loader-inline{--size: .2px;--color-1: currentColor;--color-2: currentColor;opacity:.8;vertical-align:middle;margin-right:6px}.binary-drop{position:relative}.binary-drop.is-busy{pointer-events:none;cursor:not-allowed}.binary-loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:8px 0}.binary-loading-text{font-size:14px;font-weight:600;color:var(--text)}.binary-loading-file{font-size:12px;color:var(--muted);word-break:break-all;max-width:100%;text-align:center;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.binary-drop.is-busy:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--panel2);border-radius:10px;opacity:0;animation:fade-in .15s ease-out forwards;z-index:0;pointer-events:none}.binary-loading{position:relative;z-index:1}@keyframes fade-in{0%{opacity:0}to{opacity:.85}}@media (max-width: 768px){.binary-loading .loader{--size: .55px}}.binary-viewer-card.has-preview{max-width:720px;padding:20px}.binary-preview{position:relative;width:100%;max-height:60vh;display:flex;align-items:center;justify-content:center;background:var(--panel2);border:1px solid var(--border);border-radius:10px;overflow:hidden;min-height:200px}.binary-preview-img{max-width:100%;max-height:60vh;display:block;object-fit:contain;transition:opacity .2s ease;border-radius:8px}.binary-preview-img.loading{opacity:0}.binary-preview-loader{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.binary-preview-loader .loader{--size: .5px}.binary-open-link{font-size:12px;color:var(--accent-soft-text);text-decoration:none;border-bottom:1px dashed var(--accent-soft-border);padding-bottom:1px;transition:color .15s,border-color .15s}.binary-open-link:hover{color:var(--accent);border-bottom-color:var(--accent)}[data-theme=dark] .binary-preview-loader .loader{--color-1: #e6e6e6;--color-2: #3b82f6}[data-theme=light] .binary-preview-loader .loader{--color-1: #1f2328;--color-2: #2563eb}@media (max-width: 768px){.binary-viewer-card.has-preview{padding:16px;max-width:100%}.binary-preview,.binary-preview-img{max-height:45vh}}.binary-preview-video{max-width:100%;max-height:60vh;display:block;background:#000;border-radius:8px;transition:opacity .2s ease;outline:none}.binary-preview-video.loading{opacity:0}.binary-viewer-card.has-preview .binary-preview{max-height:65vh}.file-group.media-group{margin-bottom:12px}.media-header{background:#8b5cf622;border-color:#8b5cf655;color:#c4b5fd}.media-header:hover{background:#8b5cf633;border-color:#8b5cf666}.media-header .chev{color:#c4b5fd}.media-header .group-count{background:#8b5cf633;color:#c4b5fd}.media-body{border-left-color:#8b5cf655}.item.in-media{background:#8b5cf61a;border-left:3px solid #8b5cf6}.item.in-media:hover,.item.in-media.expanded{background:#8b5cf633}.item.in-media.active{box-shadow:inset 0 0 0 1px var(--accent)}[data-theme=light] .media-header{background:#ede9fe;border-color:#8b5cf6;color:#5b21b6}[data-theme=light] .media-header:hover{background:#ddd6fe}[data-theme=light] .media-header .chev{color:#5b21b6}[data-theme=light] .media-header .group-count{background:#c4b5fd;color:#4c1d95}[data-theme=light] .media-body{border-left-color:#8b5cf688}[data-theme=light] .item.in-media{background:#f5f3ff;border-left-color:#8b5cf6}[data-theme=light] .item.in-media:hover,[data-theme=light] .item.in-media.expanded{background:#ede9fe}@media (max-width: 768px){.binary-preview-video{max-height:45vh}}.upload-tray{position:fixed;right:16px;bottom:16px;width:380px;max-width:calc(100vw - 32px);background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px #0000008c;z-index:45;display:flex;flex-direction:column;overflow:hidden;animation:upload-tray-in .2s ease-out}@keyframes upload-tray-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.upload-tray.collapsed .upload-tray-list{display:none}.upload-tray-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--panel2);border-bottom:1px solid var(--border);font-size:13px}.upload-tray-title{font-weight:700;color:var(--text)}.upload-tray-actions{display:flex;gap:4px}.upload-tray-btn{width:26px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--muted);font-size:12px;cursor:pointer;padding:0;line-height:1;transition:color .15s,border-color .15s}.upload-tray-btn:hover{color:var(--text);border-color:var(--accent)}.upload-tray-list{max-height:320px;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.upload-item{background:var(--panel2);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;border:1px solid transparent}.upload-item.upload-error{border-color:#7f1d1d55;background:#7f1d1d11}.upload-item.upload-done{border-color:#10b98133;background:#10b98111}.upload-item-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.upload-item-name{flex:1;font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-item-status{flex:0 0 auto;font-size:11px;color:var(--muted);font-family:ui-monospace,Menlo,monospace}.upload-item.upload-done .upload-item-status{color:var(--ok)}.upload-item.upload-error .upload-item-status{color:var(--danger)}.upload-item-bar{height:4px;background:var(--bg);border-radius:2px;overflow:hidden;position:relative}.upload-item-bar-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#8b5cf6);border-radius:2px;transition:width .2s ease}.upload-item.upload-processing .upload-item-bar-fill{width:100%!important;background:linear-gradient(90deg,#3b82f6,#8b5cf6,#3b82f6);background-size:200% 100%;animation:upload-pulse 1.4s linear infinite}@keyframes upload-pulse{0%{background-position:0% 0}to{background-position:200% 0}}.upload-item.upload-done .upload-item-bar-fill{background:var(--ok)}.upload-item.upload-error .upload-item-bar-fill{background:var(--danger)}.upload-item-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted);font-family:ui-monospace,Menlo,monospace}.upload-item-size{flex:0 0 auto}.upload-item-actions{display:flex;align-items:center;gap:6px;overflow:hidden}.upload-item-btn{background:transparent;border:0;color:var(--accent-soft-text);font-size:11px;cursor:pointer;padding:2px 4px;border-radius:4px;font-family:inherit}.upload-item-btn:hover{background:var(--hover-bg-2);color:var(--accent)}.upload-item-err{color:var(--danger);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}@media (max-width: 768px){.upload-tray{right:8px;left:8px;bottom:8px;width:auto;max-width:none}.upload-tray-list{max-height:40vh}}
