:root{color-scheme:light;--bg:#f4f6fa;--panel:#ffffff;--panel-muted:#f8fafc;--line:#e6ebf2;--line-strong:#d8dee8;--text:#132033;--text-soft:#4d5d74;--text-muted:#6b7b91;--primary:#2463eb;--primary-soft:#eef3ff;--danger:#cf3949;--success:#1f8f5f;--warning:#b67913;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--shadow-sm:0 1px 2px rgba(16,24,40,0.05);--shadow-md:0 12px 24px rgba(16,24,40,0.08)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;font-family:IBM Plex Sans,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-md)}.auth-card h1{margin:0;font-size:1.6rem;letter-spacing:-.01em}.auth-card p{margin:8px 0 24px;color:var(--text-soft)}.auth-form{display:grid;grid-gap:14px;gap:14px}.auth-form label{display:grid;grid-gap:7px;gap:7px;color:var(--text-soft);font-size:.92rem}.auth-form input{width:100%}input{border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:10px 12px;background:#fff;color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}input:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px rgba(36,99,235,.12)}.btn{border:1px solid transparent;border-radius:10px;padding:9px 12px;display:inline-flex;align-items:center;gap:8px;line-height:1;font-weight:500;transition:all .15s ease}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-icon{width:15px;height:15px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:#1d55cd}.btn-secondary{border-color:var(--line-strong);background:#fff;color:var(--text)}.btn-secondary:hover:not(:disabled){background:#f8fafc;border-color:#c4cfde}.btn-ghost{border-color:transparent;background:transparent;color:var(--text-soft)}.btn-ghost:hover:not(:disabled){background:#eef2f9;color:var(--text)}.full{width:100%;justify-content:center}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.toast{border-radius:10px;border:1px solid var(--line);padding:10px 12px;margin-bottom:10px;font-size:.92rem}.toast.success{color:var(--success);border-color:rgba(31,143,95,.25);background:rgba(31,143,95,.08)}.error-text,.toast.error{color:var(--danger);border-color:rgba(207,57,73,.25);background:rgba(207,57,73,.08)}.toast.info{color:#3159a3;border-color:rgba(36,99,235,.22);background:rgba(36,99,235,.08)}.loading-stack{display:grid;grid-gap:10px;gap:10px}.skeleton-card,.skeleton-row{border-radius:10px;background:linear-gradient(90deg,#f2f5fa 25%,#e8edf5 37%,#f2f5fa 63%);background-size:400% 100%;animation:skeleton-shimmer 1.2s ease infinite}.skeleton-row{height:44px}.skeleton-card{height:126px}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.app-shell{min-height:100vh;display:grid;grid-template-columns:280px 1fr;grid-gap:18px;gap:18px;padding:18px}.app-sidebar{background:linear-gradient(180deg,#f8fbff,#f4f7fb);border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:18px}.sidebar-block{border:1px solid var(--line);background:#fff;border-radius:12px;padding:14px}.sidebar-kicker{margin:0;color:var(--primary);font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.sidebar-block h1{margin:8px 0 0;font-size:1.18rem;letter-spacing:-.01em}.sidebar-subline{margin:8px 0 0;color:var(--text-soft);line-height:1.45;font-size:.92rem}.sidebar-user{margin-top:auto}.sidebar-label{margin:0;color:var(--text-muted);font-size:.8rem}.sidebar-email{margin:4px 0 10px;font-weight:600;overflow-wrap:anywhere}.sidebar-nav{margin-top:8px;display:grid;grid-gap:6px;gap:6px}.sidebar-nav-item{width:100%;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;color:var(--text-soft);display:inline-flex;align-items:center;gap:8px;text-align:left}.sidebar-nav-item:hover{background:#f7faff;border-color:#c8d4e5;color:var(--text)}.sidebar-nav-item.active{background:#eef3ff;border-color:rgba(36,99,235,.35);color:#1b4dbc}.sidebar-nav-icon{width:14px;height:14px}.sidebar-tree{margin-top:8px;display:grid;grid-gap:4px;gap:4px}.sidebar-tree-list{margin:0;padding:0;list-style:none;display:grid;grid-gap:3px;gap:3px}.sidebar-tree-node{display:grid;grid-gap:2px;gap:2px}.sidebar-tree-row{display:flex;align-items:center;gap:4px;border:1px solid transparent;border-radius:9px;min-height:30px}.sidebar-tree-row:hover{background:#f7faff;border-color:#d9e5f6}.sidebar-tree-row.active{background:#eef3ff;border-color:rgba(36,99,235,.35)}.sidebar-tree-row.path{background:#f5f8ff;border-color:rgba(36,99,235,.18)}.sidebar-tree-row.root{padding-left:2px}.sidebar-tree-expander{width:20px;height:20px;border:none;border-radius:6px;background:transparent;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sidebar-tree-expander:hover{background:#edf2fb;color:var(--text)}.sidebar-tree-expander.expanded .sidebar-tree-expander-icon{transform:rotate(90deg)}.sidebar-tree-expander-icon{width:12px;height:12px;transition:transform .15s ease}.sidebar-tree-link{border:none;background:transparent;color:var(--text-soft);display:inline-flex;align-items:center;gap:7px;width:100%;min-width:0;text-align:left;padding:4px 4px 4px 0}.sidebar-tree-link:hover{color:var(--text)}.sidebar-tree-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.86rem}.sidebar-tree-folder-icon{width:13px;height:13px;color:#aa7416;flex:0 0 auto}.sidebar-tree-empty,.sidebar-tree-loading{margin:2px 0;color:var(--text-muted);font-size:.8rem}.app-main{display:flex;flex-direction:column;gap:10px;min-width:0}.app-main.drag-active{outline:2px dashed rgba(36,99,235,.4);outline-offset:-8px;border-radius:16px}.topbar{padding:16px 18px;display:flex;justify-content:space-between;align-items:center;gap:16px}.topbar-search-wrap{position:relative;flex:1 1;min-width:0;max-width:560px}.topbar-search{display:flex;align-items:center;gap:9px;min-width:0;width:100%;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:#fff}.topbar-search-icon{width:15px;height:15px;color:var(--text-muted);flex:0 0 auto}.topbar-search input{border:none;box-shadow:none;padding:10px 0;width:100%;background:transparent}.topbar-search input:focus-visible{border:none;box-shadow:none}.search-suggest-panel{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 8px);padding:8px;border-radius:12px;box-shadow:var(--shadow-md)}.search-suggest-list{display:flex;flex-direction:column;gap:4px}.search-suggest-item{border:none;border-radius:10px;background:transparent;width:100%;text-align:left;padding:8px;display:flex;align-items:center;gap:10px}.search-suggest-item.active,.search-suggest-item:hover{background:#f3f6fc}.search-suggest-text{min-width:0;display:flex;flex-direction:column}.search-suggest-title{font-weight:600;color:var(--text)}.search-suggest-meta,.search-suggest-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-suggest-meta{color:var(--text-muted);font-size:.8rem}.search-suggest-state{margin:6px 4px;color:var(--text-muted);font-size:.9rem}.search-suggest-state.error{color:var(--danger)}.topbar-kicker{margin:0;color:var(--text-muted);font-size:.82rem}.topbar h2{margin:3px 0 0;font-size:1.32rem;letter-spacing:-.02em}.topbar-actions{display:flex;gap:10px;flex-wrap:wrap}.view-switcher{display:inline-flex;gap:6px;padding:4px;border-radius:11px;background:#f2f5fa;border:1px solid var(--line)}.view-switcher-btn{border:none;background:transparent;color:var(--text-soft);border-radius:8px;padding:7px 10px;display:inline-flex;gap:7px;align-items:center;font-size:.88rem}.view-switcher-btn.active{color:#0f2c63;background:#fff;box-shadow:var(--shadow-sm)}.view-switcher-icon{width:15px;height:15px}.quickview-toggle{border:1px solid var(--line);background:#fff;color:var(--text-soft);border-radius:10px;padding:8px 10px;display:inline-flex;align-items:center;gap:7px;font-size:.88rem}.quickview-toggle:hover{border-color:#c8d4e5;background:#f7faff;color:var(--text)}.quickview-toggle.active{color:#1b4dbc;border-color:rgba(36,99,235,.35);background:#eef3ff}.pathbar{padding:10px 14px}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.breadcrumb-item-wrap{display:inline-flex;align-items:center;gap:4px}.breadcrumb-item{border:none;border-radius:8px;background:transparent;color:var(--text-soft);padding:5px 8px}.breadcrumb-item:hover{background:#f3f6fb}.breadcrumb-item.active{color:var(--text);font-weight:600;background:#edf2ff}.breadcrumb-separator{width:14px;height:14px;color:#9aacbf}.action-bar{justify-content:space-between;gap:16px;padding:14px}.action-bar,.folder-form{display:flex;flex-wrap:wrap;align-items:flex-end}.folder-form{gap:8px}.field-label{width:100%;font-size:.82rem;color:var(--text-muted)}.quick-actions{display:flex;flex-wrap:wrap;gap:8px}.upload-label{cursor:pointer}.drop-hint{padding:10px 14px;border-style:dashed;color:var(--text-soft);font-size:.9rem}.drop-hint.active{border-color:rgba(36,99,235,.42);color:#1f4eb7;background:var(--primary-soft)}.upload-tray{position:fixed;right:16px;bottom:16px;width:min(360px,calc(100vw - 32px));max-height:min(60vh,520px);z-index:80;overflow:hidden;display:flex;flex-direction:column}.upload-tray-head{padding:10px 12px;border-bottom:1px solid var(--line);background:#fbfcff}.upload-tray-head h3{margin:0;font-size:.9rem}.upload-task-list{padding:10px;display:grid;grid-gap:8px;gap:8px;overflow-y:auto}.upload-task{border:1px solid var(--line);border-radius:10px;padding:8px 9px;background:#fff}.upload-task-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.upload-task-name{margin:0;font-size:.84rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-task-state{font-size:.76rem;color:var(--text-muted)}.upload-progress-track{margin-top:7px;height:6px;border-radius:999px;background:#e8edf6;overflow:hidden}.upload-progress-fill{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#4f83ff,#2f6cf2);transition:width .15s ease}.upload-task.success .upload-progress-fill{background:linear-gradient(90deg,#47b880,#2e9e6a)}.upload-task.error .upload-progress-fill{background:linear-gradient(90deg,#dd6876,#cf3949)}.upload-task-error{margin:7px 0 0;font-size:.75rem;color:#b43543;line-height:1.35}.empty-state-modern{padding:30px;text-align:center}.empty-state-modern h3{margin:0;font-size:1.15rem}.empty-state-modern p{margin:10px 0 0;color:var(--text-soft)}.content-split{min-width:0}.content-split.with-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,40%);grid-gap:12px;gap:12px}.content-primary{min-width:0}.quick-preview-panel{min-height:540px;display:flex;flex-direction:column;overflow:hidden}.quick-preview-header{padding:12px 14px;border-bottom:1px solid var(--line);background:#fbfcff}.quick-preview-header h3{margin:0;font-size:.9rem}.quick-preview-header p{margin:4px 0 0;color:var(--text-soft);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick-preview-body{flex:1 1;min-height:0}.quick-preview-frame{width:100%;height:100%;border:none;background:#fff}.quick-preview-empty{padding:18px;color:var(--text-soft);font-size:.9rem}.file-card-icon,.item-icon-shell{border-radius:10px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent}.item-icon{width:17px;height:17px}.tone-folder{color:#b7791a;background:#fff7e8;border-color:#f4d9a8}.tone-doc{color:#1f56bf;background:#eef4ff;border-color:#c9d9fb}.tone-sheet{color:#1f8f5f;background:#e8f9ef;border-color:#bbe8cd}.tone-slide{color:#c2671a;background:#fff2e8;border-color:#f8d0af}.tone-pdf{color:#c43846;background:#ffeef0;border-color:#f8c5cc}.tone-image{color:#8b47c8;background:#f8efff;border-color:#e0c8f9}.tone-generic{color:#5d6e87;background:#f0f3f8;border-color:#d7deea}.list-header-row{display:grid;grid-template-columns:2.4fr .8fr 1fr .7fr 1fr;grid-gap:10px;gap:10px;padding:12px 14px;font-size:.78rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid var(--line)}.list-header-row.compact{grid-template-columns:2.5fr 1fr 1fr}.item-row,.list-body{display:grid}.item-row{grid-template-columns:2.4fr .8fr 1fr .7fr 1fr;grid-gap:10px;gap:10px;padding:12px 14px;align-items:center;border-bottom:1px solid var(--line);transition:background .15s ease}.item-row.compact{grid-template-columns:2.5fr 1fr 1fr}.item-row:hover{background:var(--panel-muted)}.item-row.selected{background:#eef3ff;box-shadow:inset 0 0 0 1px rgba(36,99,235,.24)}.item-primary{display:flex;align-items:center;gap:10px;min-width:0}.item-link,.item-title{margin:0;color:var(--text);font-size:.94rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:none;background:transparent;text-align:left;padding:0}.item-link:hover{color:var(--primary)}.item-subline{margin:3px 0 0;color:var(--text-muted);font-size:.8rem}.item-meta{color:var(--text-soft);font-size:.84rem}.item-meta-inline{display:inline-flex;align-items:center;gap:6px}.meta-icon{width:13px;height:13px;color:#91a2b8}.column-row-actions,.item-actions{display:inline-flex;gap:6px;justify-content:flex-end;align-items:center}.card-action,.row-action{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--text-soft);display:inline-flex;align-items:center;justify-content:center}.card-action:hover,.row-action:hover{color:var(--text);border-color:#c8d4e5;background:#f6f9ff}.card-action.danger,.row-action.danger{color:#b43543}.card-action.danger:hover,.row-action.danger:hover{border-color:rgba(207,57,73,.5);background:rgba(207,57,73,.08)}.favorite-icon.active{color:#c38a20;fill:currentColor}.action-icon{width:14px;height:14px}.grid-wrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));grid-gap:12px;gap:12px}.file-card{border:1px solid var(--line);border-radius:13px;background:var(--panel);box-shadow:var(--shadow-sm);padding:12px;display:grid;grid-gap:10px;gap:10px}.file-card.selected{border-color:rgba(36,99,235,.42);box-shadow:inset 0 0 0 1px rgba(36,99,235,.18);background:#f8fbff}.file-card-main{border:none;background:transparent;padding:0;text-align:left;display:flex;align-items:center;gap:10px}.file-card-thumb{width:58px;height:58px;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:#f4f7fc;flex:0 0 auto}.file-card-thumb-image{width:100%;height:100%;object-fit:cover;display:block}.file-card-title{margin:0;font-size:.93rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-card-meta{margin:3px 0 0;color:var(--text-muted);font-size:.8rem}.file-card-actions{display:flex;gap:6px}.favorites-bar p{margin:0;color:var(--text-soft);font-size:.9rem}.columns-wrap{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(300px,360px);grid-gap:10px;gap:10px;overflow-x:auto;padding-bottom:4px}.column-panel{border:1px solid var(--line);border-radius:13px;background:var(--panel);min-height:300px;display:flex;flex-direction:column}.column-panel-head{padding:11px 12px;border-bottom:1px solid var(--line)}.column-panel-head h3{margin:0;font-size:.9rem}.column-panel-body{padding:8px;display:grid;grid-gap:6px;gap:6px}.column-row{display:grid;grid-template-columns:1fr auto;grid-gap:8px;gap:8px;align-items:center;border:1px solid transparent;border-radius:10px;padding:6px}.column-row:hover{background:#f7faff;border-color:#e3ebf8}.column-row.active{background:#edf3ff;border-color:#ceddff}.column-row.selected{background:#eef3ff;border-color:rgba(36,99,235,.38);box-shadow:inset 0 0 0 1px rgba(36,99,235,.16)}.column-row.drop-target{background:#e8f2ff;border-color:#9bbcff;box-shadow:inset 0 0 0 1px rgba(36,99,235,.14)}.column-row-main{border:none;background:transparent;display:flex;align-items:center;gap:8px;min-width:0;padding:0;text-align:left}.column-row-main.file{cursor:default}.column-row-title{font-size:.9rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.column-row-subline{font-size:.77rem;color:var(--text-muted)}.column-row-file-meta{display:grid;min-width:0}.column-chevron{width:14px;height:14px;color:#9aacbf;margin-left:auto}.column-empty{margin:6px 0 0;color:var(--text-muted);font-size:.85rem}.editor-page{height:100vh;min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.editor-header{margin:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;padding:12px 14px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow-sm)}.editor-header h1{margin:0;font-size:1rem}.editor-header p{margin:4px 0 0;font-size:.84rem;color:var(--text-muted)}.link-button{display:inline-flex;align-items:center;border:1px solid var(--line-strong);border-radius:8px;padding:6px 10px;color:var(--text-soft);background:#fff}.editor-shell{flex:1 1;min-height:0;padding:0 14px 14px;display:flex}.editor-container{flex:1 1;min-height:0;border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;background:#fff;box-shadow:var(--shadow-sm)}.editor-preview-page{background:#fff}.editor-preview-page .editor-shell{padding:0}.editor-preview-page .editor-container{border:none;border-radius:0;box-shadow:none}@media (max-width:1180px){.app-shell{grid-template-columns:1fr}.app-sidebar{display:none}.item-row,.list-header-row{grid-template-columns:2fr .9fr 1fr .8fr 1fr}}@media (max-width:860px){.action-bar,.topbar{flex-direction:column;align-items:stretch}.list-header-row{display:none}.item-row{grid-template-columns:1fr;gap:8px}.item-actions{justify-content:flex-start}.content-split.with-preview{grid-template-columns:1fr}.quick-preview-panel{min-height:420px}}