:root{--primary: #135bec;--background: #101622;--surface: #111722;--surface-strong: #192233;--muted: #92a4c9;--border: #324467;--text: #e8ecf5;--text-strong: #ffffff;--success: #38c976;--warning: #e4b14c;--danger: #f44b4b;font-family:Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans,sans-serif;color-scheme:dark;background-color:var(--background);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--background);color:var(--text)}a{color:inherit;text-decoration:none}#app,.app-root{min-height:100vh;background:var(--background)}.app-shell{display:flex;min-height:100vh;background:var(--background)}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 16px}.auth-panel{width:min(420px,100%);display:flex;flex-direction:column;gap:28px;background:#111722e6;border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:32px;box-shadow:0 20px 50px #00000059}.auth-hero{display:flex;align-items:center;gap:16px}.auth-icon{width:60px;height:60px;border-radius:16px;background:#135bec33;border:1px solid rgba(19,91,236,.5);display:grid;place-items:center;font-weight:800;font-size:20px;color:var(--text-strong)}.auth-hero-title{margin:0;font-size:26px;font-weight:800;color:var(--text-strong)}.auth-hero-subtitle{margin:6px 0 0;color:var(--muted);font-size:14px}.login-card{display:flex;flex-direction:column;gap:16px;background:#192233cc;border-radius:20px;padding:24px;border:1px solid rgba(255,255,255,.05)}.login-card h1{margin:0;font-size:22px;font-weight:800;color:var(--text-strong)}.login-subtitle{margin:0;color:var(--muted);font-size:14px}.login-field{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--muted)}.login-field input{border-radius:12px;border:1px solid rgba(255,255,255,.12);background:#05091266;padding:10px 14px;color:var(--text-strong);font-size:14px}.login-field input:focus{outline:none;border-color:#135bec80}.password-input{display:flex;align-items:center;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:#05091266}.password-input input{flex:1;border:none;background:transparent;border-radius:12px 0 0 12px}.password-input input:focus{outline:none}.password-toggle{border:none;background:transparent;color:var(--muted);padding:0 12px;cursor:pointer;font-size:13px}.password-toggle:hover{color:var(--text-strong)}.login-error{margin:4px 0 0;color:#f87171;font-size:13px}.login-submit{border:none;border-radius:12px;padding:12px;font-size:15px;font-weight:700;cursor:pointer;background:var(--primary);color:var(--text-strong);transition:opacity .2s ease}.login-submit:disabled{opacity:.6;cursor:not-allowed}.sidebar{width:256px;flex-shrink:0;background:var(--surface-strong);border-right:1px solid rgba(255,255,255,.06);position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:18px 20px;color:var(--text-strong);font-weight:800;letter-spacing:.01em}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(135deg,#135bec47,#135beca6);border:1px solid rgba(255,255,255,.1)}.nav{display:flex;flex-direction:column;gap:8px;padding:10px 12px 16px}.nav-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;border:none;background:transparent;color:var(--muted);font-weight:600;transition:background .2s ease,color .2s ease}.nav-item:hover{color:var(--text-strong)}.nav-item.active{background:#135bec38;color:var(--primary)}.nav-icon{width:18px;height:18px;color:currentColor}.main{flex:1;display:flex;flex-direction:column;min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 22px;background:#101622e0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.06)}.topbar-left{display:flex;align-items:center;gap:12px;flex:1}.topbar-title{margin:0;color:var(--text-strong);font-size:20px;font-weight:800}.topbar-subtitle{margin:0;color:var(--muted);font-size:14px}.detail-heading{display:flex;flex-direction:column;gap:2px}.back-link{display:inline-flex;align-items:center;gap:6px;border:none;background:transparent;color:var(--muted);font-weight:600;cursor:pointer;transition:color .2s ease}.back-link:hover{color:var(--text-strong)}.topbar-actions{display:flex;align-items:center;gap:10px}.topbar-right{display:flex;align-items:center;gap:14px}.user-menu{display:inline-flex;align-items:center;gap:10px;padding-left:12px;border-left:1px solid rgba(255,255,255,.08)}.user-name{font-weight:700;color:var(--text-strong);font-size:14px}.search{display:flex;align-items:center;min-width:260px;max-width:360px;width:100%;background:#232f48;border-radius:12px;border:1px solid transparent;transition:border-color .2s ease}.search:focus-within{border-color:#ffffff1f}.search input{flex:1;height:40px;border:none;outline:none;background:transparent;color:var(--text-strong);font-size:14px;padding:0 12px 0 6px}.search input::placeholder{color:var(--muted)}.icon-button,.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer;border-radius:12px;font-weight:750;font-size:14px;transition:transform .1s ease,background .2s ease,opacity .2s ease}.primary-button{background:var(--primary);color:#fff;padding:10px 16px;position:relative;overflow:hidden}.primary-button:hover{background:#0f4ac1}.primary-button:active{transform:translateY(1px)}.primary-button.loading{opacity:.7;cursor:not-allowed}.primary-button input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:12px;padding:10px 16px;font-weight:700;font-size:14px;cursor:pointer;background:#f8717124;color:#f87171;transition:background .2s ease,transform .1s ease}.danger-button:hover{background:#f871713d}.danger-button:active{transform:translateY(1px)}.ghost-button{border:1px solid rgba(255,255,255,.12);background:transparent;color:var(--text-strong);border-radius:12px;padding:6px 14px;font-weight:650;font-size:14px;cursor:pointer;transition:background .2s ease,border-color .2s ease,opacity .2s ease}.ghost-button:hover:not(:disabled){background:#ffffff0f}.ghost-button:disabled{opacity:.5;cursor:not-allowed}.content{width:100%;flex:1;display:flex;justify-content:center;padding:24px}.content-inner{width:100%;max-width:1180px;display:flex;flex-direction:column;gap:18px}.content-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.page-title{font-size:clamp(26px,2.6vw,34px);font-weight:900;letter-spacing:-.02em;margin:0;color:var(--text-strong)}.filters{display:flex;flex-wrap:wrap;gap:8px}.filter-chip{height:34px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px;border-radius:10px;border:1px solid transparent;background:#232f48;color:var(--text-strong);font-weight:600;cursor:pointer;transition:background .2s ease,border-color .2s ease,color .2s ease}.filter-chip:hover{background:#2b3b5b}.filter-chip.active{background:#135bec26;border-color:#135bec59;color:var(--primary)}.table-card{border-radius:14px;border:1px solid var(--border);background:var(--surface);overflow:hidden}.table-scroll{width:100%;overflow-x:auto}.doc-table{width:100%;border-collapse:collapse;min-width:720px}.doc-table th,.doc-table td{padding:14px 16px;font-size:14px}.doc-table thead{background:var(--surface-strong)}.doc-table th{text-align:left;font-weight:700;color:var(--text-strong);border-bottom:1px solid rgba(255,255,255,.04)}.doc-table tbody tr{border-top:1px solid var(--border)}.doc-table tbody tr:hover{background:#ffffff05}.doc-name{color:var(--text-strong);font-weight:600}.doc-time{color:var(--muted)}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;font-weight:700;font-size:13px}.status-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.status-success{color:var(--success);background:#38c9761f}.status-warning{color:var(--warning);background:#e4b14c1f}.status-danger{color:var(--danger);background:#f44b4b1f}.table-actions{display:inline-flex;gap:14px;font-weight:700}.table-link{color:var(--muted);transition:color .2s ease;background:none;border:none;cursor:pointer;padding:0;font:inherit}.table-link.primary{color:var(--primary)}.table-link.danger{color:var(--danger)}.table-link:hover{color:var(--text-strong)}.table-link:disabled{opacity:.5;cursor:not-allowed}.doc-name-wrap{display:flex;flex-direction:column;gap:4px}.doc-name-text{font-weight:700;color:var(--text-strong)}.doc-meta{color:var(--muted);font-size:12px}.error-banner{padding:12px 14px;border-radius:10px;background:#f44b4b24;color:var(--danger);font-weight:700;border:1px solid rgba(244,75,75,.3)}.pagination{display:flex;justify-content:center;padding:16px 0 4px}.pagination-inner{display:inline-flex;align-items:center;gap:6px}.page-btn{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;color:var(--text-strong);background:transparent;border:1px solid transparent;font-weight:700;cursor:pointer;transition:background .2s ease,border-color .2s ease}.page-btn:hover{background:#ffffff0d}.page-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.page-btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.page-btn.active:disabled{opacity:1;cursor:default}.page-ellipsis{width:36px;text-align:center;color:var(--text-strong)}.icon{width:18px;height:18px;color:currentColor}.table-col-filename{width:35%}.table-col-upload-time{width:20%}.table-col-size,.table-col-status,.table-col-actions{width:15%}.empty-row{text-align:center;padding:18px;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.upload-section{display:flex;flex-direction:column;gap:20px;align-items:stretch}.dropzone{border:1px dashed var(--border);border-radius:14px;background:var(--surface-strong);padding:48px 24px;text-align:center;transition:border-color .2s ease,background .2s ease}.dropzone--active{border-color:#135bec8c;background:#135bec14}.dropzone-inner{display:flex;flex-direction:column;align-items:center;gap:10px}.dropzone-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#135bec24;color:var(--primary)}.dropzone-title{font-size:18px;font-weight:700;color:var(--text-strong);margin:8px 0 0}.dropzone-subtitle{margin:0;color:var(--muted);font-size:14px}.secondary-button{margin-top:8px;background:#232f48;color:#fff;border:1px solid transparent;padding:10px 18px;border-radius:12px;cursor:pointer;font-weight:650;transition:background .2s ease,border-color .2s ease}.secondary-button:hover{background:#324467;border-color:#ffffff14}.upload-list{background:transparent;display:flex;flex-direction:column;gap:10px}.upload-list-head h2{margin:0;font-size:18px;color:var(--text-strong)}.upload-items{display:flex;flex-direction:column;gap:12px}.upload-item{display:flex;align-items:center;gap:12px;background:var(--surface-strong);padding:14px;border-radius:12px}.upload-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:#ffffff0f;color:var(--muted)}.upload-body{flex:1}.upload-name{margin:0 0 6px;color:var(--text-strong);font-weight:700}.upload-progress{height:8px;width:100%;background:var(--border);border-radius:999px;overflow:hidden}.upload-progress-bar{height:100%;background:var(--primary);border-radius:999px;transition:width .3s ease}.upload-error{margin:6px 0 0;font-size:13px;color:#f87171}.upload-status{font-weight:700;font-size:13px;color:var(--muted)}.detail-container{max-width:1180px}.detail-view{width:100%}.detail-state{padding:40px;text-align:center;border:1px dashed var(--border);border-radius:16px;color:var(--muted);background:#ffffff05}.detail-state--error{color:var(--danger)}.detail-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:18px}.detail-layout-main,.detail-layout-side{display:flex;flex-direction:column;gap:18px}.detail-card{border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:20px;display:flex;flex-direction:column;gap:12px}.detail-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.detail-card-head h2{margin:0;color:var(--text-strong);font-size:18px;font-weight:800}.detail-card-subtitle{margin:4px 0 0;color:var(--muted);font-size:14px}.detail-preview{border:1px solid rgba(255,255,255,.05);border-radius:12px;padding:16px;background:var(--surface-strong);color:var(--text-strong);line-height:1.6}.detail-preview-text{margin:0 0 12px;font-size:15px}.detail-preview-text:last-child{margin-bottom:0}.chunk-list,.chunk-items{display:flex;flex-direction:column;gap:12px}.chunk-item{border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:14px;background:var(--surface-strong)}.chunk-text{margin:0;color:var(--text-strong);line-height:1.5}.chunk-index{display:inline-block;margin-top:10px;font-size:12px;color:var(--muted)}.metadata-list{display:flex;flex-direction:column;gap:12px;margin:0}.metadata-row{display:flex;justify-content:space-between;gap:10px;font-size:14px}.metadata-row dt{margin:0;color:var(--muted);font-weight:600}.metadata-row dd{margin:0;color:var(--text-strong);font-weight:700;text-align:right}.metadata-row--error dd{color:#f87171}.status-uploading{color:var(--primary);background:#135bec1f}.status-uploading.upload-progress-bar{background:var(--primary)}.status-warning.upload-progress-bar{background:var(--warning)}.status-danger.upload-progress-bar{background:var(--danger)}.status-success.upload-progress-bar{background:var(--success)}@media(max-width:900px){.dropzone{padding:32px 18px}}@media(max-width:1024px){.sidebar{display:none}.topbar{justify-content:space-between}.search{max-width:none;width:100%}.content{padding:18px}.detail-layout{grid-template-columns:1fr}.metadata-row{flex-direction:column;align-items:flex-start}.metadata-row dd{text-align:left}}@media(max-width:820px){.table-col-upload-time{display:none}}@media(max-width:640px){.table-col-status,.table-col-size{display:none}.topbar{padding:12px 16px}.primary-button{padding:8px 12px;font-size:13px}}.loading-indicator{text-align:center;padding:40px 20px;color:var(--muted);font-size:16px}.empty-state{text-align:center;padding:60px 20px;color:var(--muted)}.empty-icon{font-size:48px;margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--text-strong);font-size:20px}.empty-state p{margin:0;font-size:14px}.error-message{background:#f44b4b1f;color:var(--danger);padding:12px 16px;border-radius:8px;font-size:14px;font-weight:600}
