:root{--bg: #1e1e1e;--panel: #252526;--border: #3c3c3c;--text: #cccccc;--muted: #858585;--accent: #0e639c;--accent-hover: #1177bb;--error: #f48771;--ok: #89d185}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Segoe UI,system-ui,sans-serif;font-size:14px;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}button{font-family:inherit}.wrap{max-width:560px;margin:48px auto;padding:0 16px}h1{font-size:20px;font-weight:600;margin:0 0 8px}.sub{color:var(--muted);margin-bottom:24px;line-height:1.5}.card{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:20px}a{color:var(--accent-hover)}.app-shell{display:flex;flex-direction:column;height:100vh;overflow:hidden}.panels{display:flex;flex:1;min-height:0;gap:2px;background:var(--border)}.panel{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--panel);border:2px solid transparent;outline:none}.panel.panel-active{border-color:var(--accent)}.panel-header{display:flex;align-items:center;gap:8px;padding:4px 8px 4px 6px;font-size:12px;background:var(--bg);border-bottom:1px solid var(--border);min-height:28px}.panel-hist{display:flex;align-items:center;gap:2px;flex-shrink:0}.panel-hist-btn{width:24px;height:22px;padding:0;border:1px solid var(--border);border-radius:3px;background:var(--panel);color:var(--text);font-size:13px;line-height:1;cursor:pointer}.panel-hist-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.panel-hist-btn:disabled{opacity:.35;cursor:default}.panel-refresh-btn{flex-shrink:0;width:24px;height:22px;padding:0;border:1px solid var(--border);border-radius:3px;background:var(--panel);color:var(--text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.panel-refresh-btn svg{width:14px;height:14px;display:block}.panel-refresh-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--panel)}.panel-path{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center}.panel-path .path-sep{opacity:.55;-webkit-user-select:none;user-select:none}.panel-path .path-crumb{color:inherit;cursor:pointer;border-radius:2px;background:transparent;border:none;padding:0;font-size:12px;line-height:1.4}.panel-path .path-crumb:hover{color:var(--accent);text-decoration:underline}.panel-path .path-crumb.is-current{cursor:default;font-weight:600}.panel-path .path-crumb.is-current:hover{color:inherit;text-decoration:none}.panel-list-wrap{flex:1;overflow:auto}.panel-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}.panel-table th{position:sticky;top:0;background:#2d2d2d;text-align:left;font-weight:600;padding:4px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:11px;z-index:1}.panel-table td{padding:2px 8px;border-bottom:1px solid rgba(60,60,60,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel-table tr{cursor:default}.panel-table tr:hover{background:#ffffff0a}.panel-table tr.selected{color:#3ddc84}.panel-table tr.selected:hover{color:#5ee9a0}.panel-table tr.focused{background:var(--accent);outline:none}.panel-table tr.focused:hover{background:var(--accent-hover)}.panel-table tr.focused:not(.selected){color:#fff}.panel-table tr.row-folder td.col-name{font-weight:700}.col-name-cell{display:flex;align-items:center;gap:6px;min-width:0}.col-name-cell .name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border-radius:2px;background:transparent;overflow:hidden;line-height:0}.file-icon svg{display:block;width:16px;height:16px}.panel-table tr.selected .file-icon{box-shadow:inset 0 0 0 1px #ffffff59}.col-name{width:24%}.col-type{width:9%}.col-approved{width:5%;text-align:center}.col-acl{width:12%}.col-size{width:13%;text-align:right;white-space:nowrap}.col-date{width:13%}.panel-table th.th-sort{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.panel-table th.th-sort:hover{color:var(--text)}.panel-table th.th-sort .sort-ind{display:inline-block;margin-left:3px;font-size:10px;opacity:.35}.panel-table th.th-sort.is-active{color:var(--text)}.panel-table th.th-sort.is-active .sort-ind{opacity:1;color:#9cdcfe}.panel-empty{padding:24px;color:var(--muted);text-align:center}.app-footer{flex-shrink:0;background:#007acc;color:#fff}.command-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:3px 12px;border-bottom:1px solid rgba(0,0,0,.18);min-height:24px}.command-buttons{display:flex;align-items:center;gap:6px;flex-shrink:0}.command-buttons .cmd-btn{background:#fff;color:#005a9e;border:1px solid rgba(255,255,255,.9);border-radius:3px;padding:3px 10px;font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 1px 2px #0003}.command-buttons .cmd-btn:hover:not(:disabled){background:#e8f4fc}.command-buttons .cmd-btn:disabled{opacity:.45;cursor:default}.cmd-service-wrap{position:relative;flex-shrink:0}.cmd-service-menu{position:absolute;left:0;bottom:calc(100% + 4px);min-width:200px;padding:4px 0;background:#fff;border:1px solid rgba(0,0,0,.22);border-radius:4px;box-shadow:0 4px 14px #00000038;z-index:80;display:flex;flex-direction:column}.cmd-service-menu .cmd-menu-item{display:block;width:100%;box-sizing:border-box;margin:0;padding:6px 12px;border:0;border-radius:0;background:transparent;color:#1a1a1a;font-size:12px;font-weight:600;text-align:left;cursor:pointer;box-shadow:none}.cmd-service-menu .cmd-menu-item:hover:not(:disabled){background:#e8f4fc;color:#005a9e}.cmd-service-menu .cmd-menu-item:disabled{opacity:.45;cursor:default}.cmd-service-menu .cmd-menu-sep{height:1px;margin:4px 0;background:#0000001f}.hotkey-hints{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;justify-content:flex-end;font-size:11px;opacity:.75}.hotkey-hints span{white-space:nowrap}.status-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:4px 12px;font-size:12px;min-height:24px}.status-bar .status-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-bar .user-tag{opacity:.85;font-size:11px;flex-shrink:0}.status-bar .user-area{display:flex;align-items:center;gap:12px;flex-shrink:0}.status-bar .logout-link{color:#fff;text-decoration:none;font-size:12px;font-weight:600;padding:2px 8px;border:1px solid rgba(255,255,255,.6);border-radius:3px;cursor:pointer}.status-bar .logout-link:hover{background:#ffffff29}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal-card{width:100%;max-width:480px;min-width:0;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:20px;overflow:hidden}.modal-card h2{margin:0 0 8px;font-size:18px}.modal-card .sub{margin:0 0 16px;color:var(--muted);line-height:1.45;overflow-wrap:anywhere;word-break:break-word}.modal-card .sub strong{color:var(--text);font-weight:600}.modal-card.wide{max-width:720px;max-height:90vh;display:flex;flex-direction:column}.modal-actions{display:flex;gap:8px;margin-top:16px}button.primary{background:var(--accent);color:#fff;border:none;border-radius:4px;padding:8px 16px;font-size:14px;cursor:pointer}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.primary:disabled{opacity:.5;cursor:default}button.secondary{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:4px;padding:8px 16px;font-size:14px;cursor:pointer}button.secondary:hover:not(:disabled){background:#ffffff0d}button.danger{background:transparent;color:var(--error);border:1px solid var(--border);border-radius:4px;padding:4px 10px;font-size:12px;cursor:pointer}button.danger:hover:not(:disabled){background:#f487711f}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.modal-close{background:transparent;border:none;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:4px}.modal-close:hover{background:#ffffff14;color:var(--text)}.modal-body{flex:1;overflow-y:auto;min-height:0}.field-label{display:block;margin-bottom:6px;color:var(--muted);font-size:12px}.field-input{width:100%;padding:8px 10px;margin-bottom:12px;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);font-size:14px;font-family:inherit}.field-input:focus{outline:none;border-color:var(--accent)}select.field-input{height:34px}.form-row{display:flex;gap:8px;align-items:flex-end}.form-row>div{min-width:0;flex:1}.acl-row{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid rgba(60,60,60,.5);font-size:13px}.acl-row .acl-principal{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acl-row .acl-level{color:var(--muted);flex-shrink:0}.section-title{margin:16px 0 6px;font-size:13px;font-weight:600;color:var(--text)}.section-title:first-child{margin-top:0}.hidden{display:none!important}.loading{text-align:center;color:var(--muted);padding:48px}.spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;color:var(--muted)}.spinner-ring{width:28px;height:28px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-note{color:var(--muted);font-size:13px;padding:8px 0}.chip{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11px;line-height:1.6}.chip-reader{background:#85858540;color:#b8b8b8}.chip-commenter{background:#64b5f640;color:#90caf9}.chip-editor{background:#89d18538;color:#a5e3a0}
