*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: #0a0b0d;--bg-secondary: #111215;--bg-sidebar: #0f1012;--bg-sidebar-gradient: linear-gradient(180deg, #131416 0%, #0a0b0d 100%);--bg-card: #16181c;--bg-card-hover: #1a1d22;--bg-input: #1e2025;--text-primary: #f5f5f7;--text-secondary: #a1a1a6;--text-muted: #6e6e73;--text-nav: #c7c7cc;--accent-blue: #3b82f6;--accent-blue-hover: #60a5fa;--accent-blue-glow: rgba(59, 130, 246, .3);--border-subtle: rgba(255, 255, 255, .06);--border-light: rgba(255, 255, 255, .1);--shadow-card: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .3);--shadow-glow: 0 0 40px rgba(59, 130, 246, .15);--shadow-subtle: 0 4px 12px rgba(0, 0, 0, .3);--sidebar-width: 260px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", Roboto, sans-serif}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:var(--font-family);background-color:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea{font-family:inherit;border:none;outline:none;background:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff40}#app-shell{display:flex;height:100vh;width:100vw;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--bg-sidebar-gradient);border-right:1px solid var(--border-subtle);color:var(--text-nav);padding:24px 16px;display:flex;flex-direction:column}.sidebar .profile{display:flex;align-items:center;gap:12px;margin-bottom:36px;padding:12px;background:#ffffff08;border-radius:10px;border:1px solid var(--border-subtle)}.sidebar .avatar{width:32px;height:32px;background:linear-gradient(135deg,var(--accent-blue) 0%,#1d4ed8 100%);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;color:#fff}.sidebar .profile span{font-size:14px;font-weight:500}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{display:block;padding:12px 14px;font-size:14px;font-weight:450;color:var(--text-nav);text-decoration:none;border-radius:8px;transition:all .2s ease}.sidebar nav a:hover{color:var(--text-primary);background:#ffffff0d}.sidebar nav a.active{color:var(--text-primary);background:#ffffff14}.main-canvas{flex:1;position:relative;background:var(--bg-primary);overflow:hidden;display:flex;flex-direction:column}.main-canvas:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 80% 50% at 50% 0%,rgba(59,130,246,.08) 0%,transparent 50%),radial-gradient(ellipse 60% 40% at 20% 100%,rgba(59,130,246,.04) 0%,transparent 50%),radial-gradient(ellipse 60% 40% at 80% 100%,rgba(139,92,246,.03) 0%,transparent 50%);pointer-events:none;z-index:0}.main-canvas:after{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");opacity:.025;pointer-events:none;z-index:0}.brand-container{position:absolute;inset:0 0 120px;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1}.brand{text-align:center}.brand h1{font-size:72px;font-weight:700;letter-spacing:-2px;color:var(--text-primary);margin:0;background:linear-gradient(180deg,#fff,#a1a1a6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1}.brand p{font-size:16px;letter-spacing:2px;text-transform:uppercase;color:var(--text-muted);margin-top:12px;font-weight:500}.chat-container{flex:1;width:100%;max-width:900px;margin:0 auto;padding:32px 24px 140px;overflow-y:auto;display:flex;flex-direction:column;gap:20px;z-index:1}.message{max-width:75%;padding:16px 20px;border-radius:16px;font-size:15px;line-height:1.6;animation:messageSlide .3s ease-out}@keyframes messageSlide{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message.user{align-self:flex-end;background:linear-gradient(135deg,var(--accent-blue) 0%,#2563eb 100%);color:#fff;border-bottom-right-radius:6px}.message.assistant{align-self:flex-start;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-subtle);border-bottom-left-radius:6px}.ai-card-wrapper{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:center;padding:24px;background:linear-gradient(0deg,var(--bg-primary) 60%,transparent 100%);z-index:10}.ai-card{width:100%;max-width:800px;background:var(--bg-card);border-radius:16px;padding:16px 20px;box-shadow:var(--shadow-card),var(--shadow-glow);border:1px solid var(--border-light)}.ai-card .hint{font-size:13px;color:var(--text-muted);display:block;margin-bottom:12px;padding-left:4px}.ai-card .input-container{display:flex;align-items:center;gap:12px;background:var(--bg-input);border-radius:12px;padding:8px 12px;border:1px solid var(--border-subtle);transition:border-color .2s ease,box-shadow .2s ease}.ai-card .input-container:focus-within{border-color:var(--accent-blue);box-shadow:0 0 0 3px var(--accent-blue-glow)}.ai-card input{flex:1;font-size:15px;color:var(--text-primary);background:transparent;padding:10px 4px}.ai-card input::placeholder{color:var(--text-muted)}.ai-card .action-button{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;color:var(--text-muted)}.ai-card .action-button:hover{background:#ffffff14;color:var(--text-secondary)}.ai-card .upload-button{color:var(--text-muted)}.ai-card .upload-button:hover{color:var(--accent-blue)}.ai-card .send-button{background:var(--accent-blue);color:#fff}.ai-card .send-button:hover{background:var(--accent-blue-hover);transform:scale(1.05)}.ai-card .send-button:disabled{opacity:.4;cursor:not-allowed;transform:none}.loading-dots{display:flex;gap:6px;padding:4px 0}.loading-dots span{width:8px;height:8px;background:var(--text-muted);border-radius:50%;animation:bounce 1.4s ease-in-out infinite}.loading-dots span:nth-child(1){animation-delay:0s}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,80%,to{transform:translateY(0)}40%{transform:translateY(-8px)}}.login-wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.login-wrapper:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 100% 80% at 50% 20%,rgba(59,130,246,.12) 0%,transparent 50%),radial-gradient(ellipse 80% 60% at 20% 80%,rgba(59,130,246,.06) 0%,transparent 50%),radial-gradient(ellipse 80% 60% at 80% 80%,rgba(139,92,246,.04) 0%,transparent 50%);pointer-events:none}.login-container{display:flex;flex-direction:column;align-items:center;gap:28px;width:100%;max-width:420px;padding:48px 40px;background:var(--bg-card);border-radius:24px;border:1px solid var(--border-light);box-shadow:var(--shadow-card),var(--shadow-glow);position:relative;z-index:1}.login-brand{text-align:center;margin-bottom:8px}.login-brand h1{font-size:48px;font-weight:700;letter-spacing:-1px;background:linear-gradient(180deg,#fff,#a1a1a6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:8px}.login-brand p{font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(--text-muted);font-weight:500}.login-container h2{font-size:20px;font-weight:600;color:var(--text-primary)}.login-form{width:100%;display:flex;flex-direction:column;gap:16px}.login-container input{width:100%;padding:16px 18px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:12px;color:var(--text-primary);font-size:15px;transition:all .2s ease}.login-container input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px var(--accent-blue-glow)}.login-container input::placeholder{color:var(--text-muted)}.login-container button[type=submit]{width:100%;padding:16px 24px;background:linear-gradient(135deg,var(--accent-blue) 0%,#2563eb 100%);color:#fff;font-size:16px;font-weight:600;border-radius:12px;transition:all .2s ease;margin-top:8px}.login-container button[type=submit]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #3b82f659}.login-container button[type=submit]:active{transform:translateY(0)}.login-container .error{color:#f87171;font-size:14px;text-align:center;padding:12px;background:#f871711a;border-radius:8px;border:1px solid rgba(248,113,113,.2)}.project-selector{margin-bottom:24px;position:relative}.project-selector-btn{width:100%;padding:14px 16px;background:#ffffff08;border:1px solid var(--border-subtle);border-radius:10px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;cursor:pointer;transition:all .2s ease;position:relative}.project-selector-btn:hover{background:#ffffff0d;border-color:var(--border-light)}.project-selector-btn .project-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);font-weight:500}.project-selector-btn .project-name{font-size:14px;font-weight:500;color:var(--text-primary);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-selector-btn .dropdown-arrow{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:10px;color:var(--text-muted)}.project-dropdown{position:absolute;top:calc(100% + 8px);left:0;right:0;background:var(--bg-card);border:1px solid var(--border-light);border-radius:10px;box-shadow:var(--shadow-card);z-index:100;max-height:280px;overflow-y:auto}.project-dropdown-empty{padding:20px 16px;text-align:center;color:var(--text-muted);font-size:13px}.project-dropdown-item{width:100%;padding:12px 16px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;cursor:pointer;transition:background .15s ease;border-bottom:1px solid var(--border-subtle)}.project-dropdown-item:last-child{border-bottom:none}.project-dropdown-item:hover{background:#ffffff0d}.project-dropdown-item.active{background:#3b82f61a}.project-dropdown-item .project-item-name{font-size:14px;font-weight:500;color:var(--text-primary)}.project-dropdown-item .project-item-number{font-size:12px;color:var(--text-muted)}.documents-view.split-layout{position:absolute;inset:0;background:var(--bg-primary);z-index:20;display:flex;flex-direction:row;overflow:hidden}.docs-list-panel{width:360px;min-width:360px;background:var(--bg-secondary);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column}.docs-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-subtle)}.docs-title{display:flex;align-items:center;gap:10px}.docs-title h2{font-size:18px;font-weight:600;color:var(--text-primary)}.back-btn{padding:6px;background:transparent;border:none;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease}.back-btn:hover{background:#ffffff1a}.close-btn{padding:6px;background:transparent;border:none;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease}.close-btn:hover{background:#ffffff1a}.docs-search{padding:12px 16px;position:relative}.docs-search .search-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);pointer-events:none}.docs-search input{width:100%;padding:10px 14px 10px 40px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-primary);font-size:13px}.docs-search input:focus{border-color:var(--accent-blue);outline:none}.docs-search input::placeholder{color:var(--text-muted)}.search-clear{position:absolute;right:28px;top:50%;transform:translateY(-50%);padding:4px;background:transparent;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px}.search-clear:hover{background:#ffffff1a}.docs-tabs{display:flex;gap:2px;padding:0 16px 12px}.docs-tabs button{flex:1;padding:8px 12px;font-size:12px;font-weight:500;color:var(--text-muted);border-radius:6px;transition:all .2s ease}.docs-tabs button:hover{color:var(--text-secondary);background:#ffffff0d}.docs-tabs button.active{color:var(--text-primary);background:#3b82f626}.docs-list{flex:1;overflow-y:auto;padding:8px}.docs-loading{display:flex;align-items:center;justify-content:center;height:150px}.docs-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:150px;color:var(--text-muted);font-size:13px;text-align:center}.docs-empty .hint{font-size:12px;margin-top:4px;opacity:.7}.category-group{margin-bottom:12px}.category-label{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);border-left:3px solid;margin-bottom:4px}.category-label .count{font-size:10px;padding:2px 6px;background:#ffffff14;border-radius:8px;color:var(--text-muted)}.doc-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer;transition:all .15s ease}.doc-row:hover{background:#ffffff0d}.doc-row.selected{background:#3b82f626}.doc-row .doc-icon{font-size:20px;flex-shrink:0}.doc-row-info{flex:1;min-width:0}.doc-row .doc-name{font-size:13px;font-weight:500;color:var(--text-primary);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-row .doc-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.doc-row .doc-views{font-size:11px;color:var(--text-muted);flex-shrink:0}.docs-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--border-subtle)}.docs-footer .upload-btn{padding:8px 14px;background:var(--accent-blue);color:#fff;font-size:13px;font-weight:500;border-radius:6px;cursor:pointer}.docs-footer .upload-btn:hover{background:var(--accent-blue-hover)}.docs-footer .doc-count{font-size:12px;color:var(--text-muted)}.docs-preview-panel{flex:1;display:flex;flex-direction:column;background:var(--bg-primary);overflow:hidden}.preview-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:var(--bg-card);border-bottom:1px solid var(--border-subtle)}.preview-title{display:flex;align-items:center;gap:10px;min-width:0}.preview-title .doc-icon{font-size:20px}.preview-title span:last-child{font-size:14px;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-actions{display:flex;gap:6px}.preview-actions button,.preview-actions .action-btn{padding:8px 12px;background:#ffffff0d;border:1px solid var(--border-subtle);border-radius:6px;font-size:12px;color:var(--text-secondary);transition:all .2s ease;display:flex;align-items:center;gap:4px;cursor:pointer}.preview-actions button:hover,.preview-actions .action-btn:hover{background:#ffffff1a;color:var(--text-primary)}.preview-actions button.danger:hover,.preview-actions .action-btn.danger:hover{background:#ef444426;border-color:#ef4444;color:#ef4444}.preview-content{flex:1;display:flex;flex-direction:column;background:#1a1a1a;overflow:hidden;position:relative;min-height:0}.preview-content-wrapper{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.preview-content img{max-width:100%;max-height:100%;object-fit:contain}.preview-loading{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-muted)}.preview-hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);padding:6px 12px;background:#000000b3;color:var(--text-secondary);font-size:11px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .2s ease}.preview-content:hover .preview-hint{opacity:1}.preview-placeholder{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-muted);cursor:pointer;padding:40px;border-radius:12px;transition:all .2s ease}.preview-placeholder:hover{background:#ffffff0d}.preview-placeholder .placeholder-icon{font-size:64px}.preview-info{padding:16px 20px;background:var(--bg-card);border-top:1px solid var(--border-subtle);display:flex;flex-wrap:wrap;gap:16px}.preview-info .info-row{display:flex;align-items:center;gap:8px}.preview-info .label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.preview-info .info-summary{flex-basis:100%;padding:12px;background:#3b82f614;border-radius:8px;border-left:3px solid var(--accent-blue)}.preview-info .info-summary .label{color:var(--accent-blue);margin-bottom:6px;display:block}.preview-info .info-summary p{font-size:13px;line-height:1.5;color:var(--text-secondary)}.preview-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-muted)}.preview-empty span{font-size:64px;opacity:.3}.drag-overlay{position:absolute;inset:0;background:#0a0b0de6;display:flex;align-items:center;justify-content:center;z-index:50}.drag-zone{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 64px;border:2px dashed var(--accent-blue);border-radius:16px;background:#3b82f61a}.drag-zone span{font-size:48px}.drag-zone p{font-size:16px;color:var(--text-secondary)}.documents-view.dragging:before{content:"";position:absolute;inset:0;background:#3b82f60d;border:2px dashed var(--accent-blue);border-radius:16px;margin:16px;z-index:100;pointer-events:none}.documents-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border-subtle)}.documents-title{display:flex;align-items:center;gap:12px}.documents-title h2{font-size:20px;font-weight:600;color:var(--text-primary)}.project-badge{font-size:12px;padding:4px 10px;background:#3b82f626;color:var(--accent-blue);border-radius:6px;font-weight:500}.close-btn{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--text-muted);transition:all .2s ease}.close-btn:hover{background:#ffffff14;color:var(--text-primary)}.documents-tabs{display:flex;gap:4px;padding:12px 24px;border-bottom:1px solid var(--border-subtle)}.documents-tabs button{padding:10px 16px;font-size:13px;font-weight:500;color:var(--text-muted);border-radius:8px;transition:all .2s ease}.documents-tabs button:hover{color:var(--text-secondary);background:#ffffff0d}.documents-tabs button.active{color:var(--text-primary);background:#3b82f626}.upload-overlay{position:absolute;inset:0;background:#0a0b0de6;display:flex;align-items:center;justify-content:center;z-index:50}.upload-zone{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px;border:2px dashed var(--accent-blue);border-radius:16px;background:#3b82f61a}.upload-zone .upload-icon{font-size:48px}.upload-zone p{font-size:16px;color:var(--text-secondary)}.upload-progress{display:flex;align-items:center;gap:12px;padding:12px 24px;background:#3b82f61a;border-bottom:1px solid var(--border-subtle)}.progress-spinner{width:16px;height:16px;border:2px solid var(--accent-blue);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.upload-progress span{font-size:13px;color:var(--text-secondary)}.documents-content{flex:1;overflow-y:auto;padding:20px 24px}.documents-loading{display:flex;align-items:center;justify-content:center;height:200px}.documents-empty{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-muted);font-size:14px}.documents-list{display:flex;flex-direction:column;gap:8px}.doc-item{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:10px;cursor:pointer;transition:all .2s ease}.doc-item:hover{background:var(--bg-card-hover);border-color:var(--border-light)}.doc-item.compact{padding:10px 12px;gap:10px}.doc-icon{font-size:24px;flex-shrink:0}.doc-item.compact .doc-icon{font-size:18px}.doc-info{flex:1;min-width:0}.doc-name{font-size:14px;font-weight:500;color:var(--text-primary);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-item.compact .doc-name{font-size:13px}.doc-meta{display:flex;align-items:center;gap:10px;margin-top:6px}.doc-category{font-size:10px;padding:3px 8px;border-radius:4px;color:#fff;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.doc-size,.doc-date,.doc-views{font-size:12px;color:var(--text-muted)}.doc-views{display:flex;align-items:center;gap:4px}.categories-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.category-section{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:12px;overflow:hidden}.category-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:#ffffff05;border-left:3px solid}.category-name{font-size:13px;font-weight:600;color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px}.category-count{font-size:12px;padding:2px 8px;background:#ffffff14;border-radius:10px;color:var(--text-secondary)}.category-docs{padding:8px}.category-more{padding:8px 12px;font-size:12px;color:var(--accent-blue);cursor:pointer}.category-more:hover{text-decoration:underline}.documents-footer{padding:16px 24px;border-top:1px solid var(--border-subtle)}.upload-btn{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;background:var(--accent-blue);color:#fff;font-size:14px;font-weight:500;border-radius:10px;cursor:pointer;transition:all .2s ease}.upload-btn:hover{background:var(--accent-blue-hover);transform:translateY(-1px)}.documents-search{padding:12px 24px;position:relative}.search-input{width:100%;padding:12px 40px 12px 16px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:10px;color:var(--text-primary);font-size:14px;transition:all .2s ease}.search-input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px var(--accent-blue-glow)}.search-input::placeholder{color:var(--text-muted)}.search-clear{position:absolute;right:36px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:16px;transition:all .2s ease}.search-clear:hover{background:#ffffff1a;color:var(--text-primary)}.documents-main{flex:1;display:flex;overflow:hidden}.documents-content.with-panel{flex:1;max-width:50%}.doc-item.selected{background:#3b82f626;border-color:var(--accent-blue)}.doc-actions-quick{display:flex;gap:4px;opacity:0;transition:opacity .2s ease}.doc-item:hover .doc-actions-quick{opacity:1}.quick-action{width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s ease}.quick-action:hover{background:#ffffff1a}.doc-detail-panel{width:400px;min-width:400px;background:var(--bg-card);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.detail-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-subtle)}.detail-header h3{font-size:16px;font-weight:600;color:var(--text-primary)}.detail-preview{height:250px;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-image{max-width:100%;max-height:100%;object-fit:contain}.preview-pdf{width:100%;height:100%;border:none}.preview-placeholder{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-muted)}.preview-icon{font-size:48px}.preview-placeholder p{font-size:14px}.preview-open-btn{padding:8px 16px;background:var(--accent-blue);color:#fff;font-size:13px;font-weight:500;border-radius:6px;transition:all .2s ease}.preview-open-btn:hover{background:var(--accent-blue-hover)}.detail-info{flex:1;padding:20px;overflow-y:auto}.detail-filename{display:flex;align-items:center;gap:10px;padding-bottom:16px;border-bottom:1px solid var(--border-subtle);margin-bottom:16px}.detail-filename span:last-child{font-size:15px;font-weight:500;color:var(--text-primary);word-break:break-word}.detail-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.meta-item{display:flex;flex-direction:column;gap:4px}.meta-item.full-width{grid-column:1 / -1}.meta-item label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.meta-item span{font-size:14px;color:var(--text-primary)}.detail-tags{margin-bottom:16px}.detail-tags label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:8px}.tags-list{display:flex;flex-wrap:wrap;gap:6px}.tag{padding:4px 10px;background:#ffffff14;border-radius:4px;font-size:12px;color:var(--text-secondary)}.detail-summary{padding:12px;background:#3b82f614;border-radius:8px;border-left:3px solid var(--accent-blue)}.detail-summary label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--accent-blue);margin-bottom:8px}.detail-summary p{font-size:13px;line-height:1.5;color:var(--text-secondary)}.detail-actions{display:flex;gap:8px;padding:16px 20px;border-top:1px solid var(--border-subtle)}.action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 12px;background:#ffffff0d;border:1px solid var(--border-subtle);border-radius:8px;font-size:13px;font-weight:500;color:var(--text-secondary);transition:all .2s ease}.action-btn:hover{background:#ffffff1a;color:var(--text-primary)}.action-btn.primary{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.action-btn.primary:hover{background:var(--accent-blue-hover)}.action-btn.danger:hover{background:#ef444426;border-color:#ef4444;color:#ef4444}.action-btn span{font-size:14px}.doc-count{font-size:13px;color:var(--text-muted)}.documents-footer{display:flex;align-items:center;justify-content:space-between}:root,[data-theme=dark]{--bg: #0a0a0a;--bg-elevated: #141414;--bg-primary: #0a0a0a;--bg-secondary: #1a1a1a;--bg-tertiary: #2a2a2a;--bg-overlay: rgba(30, 30, 30, .95);--surface: rgba(20, 20, 20, .95);--surface-2: rgba(30, 30, 30, .95);--surface-3: rgba(40, 40, 40, .95);--surface-hover: rgba(255, 255, 255, .08);--surface-active: rgba(255, 255, 255, .12);--text: #ffffff;--text-secondary: rgba(255, 255, 255, .8);--text-muted: rgba(255, 255, 255, .6);--text-subtle: rgba(255, 255, 255, .4);--text-disabled: rgba(255, 255, 255, .3);--border: rgba(255, 255, 255, .1);--border-subtle: rgba(255, 255, 255, .05);--border-strong: rgba(255, 255, 255, .15);--border-light: rgba(255, 255, 255, .2);--divider: rgba(255, 255, 255, .08);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -2px rgba(0, 0, 0, .4);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .6), 0 10px 10px -5px rgba(0, 0, 0, .4);--primary: #3b82f6;--primary-hover: #2563eb;--primary-active: #1d4ed8;--primary-contrast: #ffffff;--primary-subtle: rgba(59, 130, 246, .1);--nav-bg: rgba(20, 20, 20, .95);--nav-border: rgba(255, 255, 255, .1);--nav-item-bg: transparent;--nav-item-hover: rgba(255, 255, 255, .08);--nav-item-active: rgba(255, 255, 255, .12);--nav-text: rgba(255, 255, 255, .6);--nav-text-hover: rgba(255, 255, 255, .8);--nav-text-active: #ffffff;--nav-icon: rgba(255, 255, 255, .5);--nav-icon-active: #ffffff;--nav-divider: rgba(255, 255, 255, .08);--input-bg: rgba(255, 255, 255, .05);--input-border: rgba(255, 255, 255, .1);--input-border-hover: rgba(255, 255, 255, .2);--input-border-focus: #3b82f6;--input-text: #ffffff;--input-placeholder: rgba(255, 255, 255, .4);--focus-ring: rgba(59, 130, 246, .4);--table-bg: transparent;--table-header-bg: rgba(255, 255, 255, .03);--table-row-bg: transparent;--table-row-hover: rgba(255, 255, 255, .05);--table-row-selected: rgba(59, 130, 246, .1);--table-border: rgba(255, 255, 255, .08);--modal-bg: rgba(20, 20, 20, .98);--modal-border: rgba(255, 255, 255, .1);--overlay: rgba(0, 0, 0, .8);--success: #22c55e;--success-hover: #16a34a;--success-text: #ffffff;--success-bg: rgba(34, 197, 94, .1);--success-border: rgba(34, 197, 94, .3);--warning: #f59e0b;--warning-hover: #d97706;--warning-text: #ffffff;--warning-bg: rgba(245, 158, 11, .1);--warning-border: rgba(245, 158, 11, .3);--error: #ef4444;--error-hover: #dc2626;--error-text: #ffffff;--error-bg: rgba(239, 68, 68, .1);--error-border: rgba(239, 68, 68, .3);--danger: #dc3545;--danger-hover: #c82333;--danger-text: #ffffff;--danger-bg: rgba(220, 53, 69, .1);--danger-border: rgba(220, 53, 69, .3);--info: #3b82f6;--info-hover: #2563eb;--info-text: #ffffff;--info-bg: rgba(59, 130, 246, .1);--info-border: rgba(59, 130, 246, .3)}[data-theme=light]{--bg: #f8fafc;--bg-elevated: #ffffff;--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--bg-overlay: rgba(248, 250, 252, .95);--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #f1f5f9;--surface-hover: #f1f5f9;--surface-active: #e2e8f0;--text: #0f172a;--text-secondary: #334155;--text-muted: #64748b;--text-subtle: #94a3b8;--text-disabled: #cbd5e1;--border: #e2e8f0;--border-subtle: #f1f5f9;--border-strong: #cbd5e1;--border-light: #cbd5e1;--divider: #e2e8f0;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--primary: #3b82f6;--primary-hover: #2563eb;--primary-active: #1d4ed8;--primary-contrast: #ffffff;--primary-subtle: rgba(59, 130, 246, .08);--nav-bg: #ffffff;--nav-border: #e2e8f0;--nav-item-bg: transparent;--nav-item-hover: #f8fafc;--nav-item-active: #f1f5f9;--nav-text: #64748b;--nav-text-hover: #334155;--nav-text-active: #0f172a;--nav-icon: #94a3b8;--nav-icon-active: #3b82f6;--nav-divider: #f1f5f9;--input-bg: #ffffff;--input-border: #e2e8f0;--input-border-hover: #cbd5e1;--input-border-focus: #3b82f6;--input-text: #0f172a;--input-placeholder: #94a3b8;--focus-ring: rgba(59, 130, 246, .3);--table-bg: #ffffff;--table-header-bg: #f8fafc;--table-row-bg: #ffffff;--table-row-hover: #f8fafc;--table-row-selected: rgba(59, 130, 246, .08);--table-border: #e2e8f0;--modal-bg: #ffffff;--modal-border: #e2e8f0;--overlay: rgba(15, 23, 42, .5);--success: #16a34a;--success-hover: #15803d;--success-text: #ffffff;--success-bg: rgba(22, 163, 74, .08);--success-border: rgba(22, 163, 74, .2);--warning: #ea580c;--warning-hover: #c2410c;--warning-text: #ffffff;--warning-bg: rgba(234, 88, 12, .08);--warning-border: rgba(234, 88, 12, .2);--error: #dc2626;--error-hover: #b91c1c;--error-text: #ffffff;--error-bg: rgba(220, 38, 38, .08);--error-border: rgba(220, 38, 38, .2);--danger: #dc2626;--danger-hover: #b91c1c;--danger-text: #ffffff;--danger-bg: rgba(220, 38, 38, .08);--danger-border: rgba(220, 38, 38, .2);--info: #0284c7;--info-hover: #0369a1;--info-text: #ffffff;--info-bg: rgba(2, 132, 199, .08);--info-border: rgba(2, 132, 199, .2)}body{background-color:var(--bg);color:var(--text);transition:background-color .2s ease,color .2s ease}.viewer-container{width:100vw;height:100vh;display:flex;flex-direction:column;background:var(--bg-primary);overflow:hidden}.viewer-loading,.viewer-error{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--text-secondary)}.viewer-error h2{color:#ef4444}.viewer-error button{padding:10px 20px;background:var(--accent-blue);color:#fff;border-radius:8px;font-weight:500}.viewer-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--bg-card);border-bottom:1px solid var(--border-subtle);gap:16px}.toolbar-left,.toolbar-center,.toolbar-right{display:flex;align-items:center;gap:8px}.toolbar-divider{width:1px;height:24px;background:var(--border-subtle);margin:0 4px}.toolbar-btn{padding:8px 12px;background:#ffffff0d;border:1px solid var(--border-subtle);border-radius:6px;color:var(--text-secondary);font-size:13px;display:flex;align-items:center;gap:6px;transition:all .2s ease}.toolbar-btn:hover{background:#ffffff1a;color:var(--text-primary)}.toolbar-btn.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.toolbar-btn.back{font-weight:500}.toolbar-btn.download{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff;text-decoration:none}.toolbar-btn.download:hover{background:var(--accent-blue-hover)}.doc-title{font-size:14px;font-weight:500;color:var(--text-primary);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-group{display:flex;gap:4px}.tool-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#ffffff0d;border:1px solid var(--border-subtle);border-radius:6px;color:var(--text-secondary, #a1a1a6);font-size:16px;transition:all .2s ease}.tool-btn:hover:not(:disabled){background:#ffffff1a;color:var(--text-primary, #f5f5f7)}.tool-btn.active{background:var(--accent-blue);border-color:var(--accent-blue)}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.calibration-badge{font-size:11px;padding:4px 8px;background:#10b98133;color:#10b981;border-radius:4px}.color-picker{display:flex;gap:4px}.color-btn{width:24px;height:24px;border-radius:50%;border:2px solid transparent;transition:all .2s ease}.color-btn:hover{transform:scale(1.1)}.color-btn.active{border-color:#fff;box-shadow:0 0 0 2px var(--bg-primary)}.zoom-controls{display:flex;align-items:center;gap:4px}.zoom-level{min-width:50px;text-align:center;font-size:13px;color:var(--text-secondary)}.zoom-hint{font-size:10px;color:var(--text-muted);margin-left:4px}.viewer-main{flex:1;display:flex;overflow:hidden;position:relative}.viewer-canvas{flex:1;position:relative;overflow:hidden;background:#1a1a1a;cursor:grab}.viewer-canvas.tool-pan{cursor:grab}.viewer-canvas.tool-pan:active{cursor:grabbing}.viewer-canvas.tool-select,.viewer-canvas.tool-zoombox,.viewer-canvas.tool-note,.viewer-canvas.tool-highlight,.viewer-canvas.tool-rectangle,.viewer-canvas.tool-arrow,.viewer-canvas.tool-measure,.viewer-canvas.tool-calibrate,.viewer-canvas.tool-polygon{cursor:crosshair}.document-content{position:absolute;top:0;left:0;transform-origin:0 0;box-sizing:content-box}.document-image{display:block;max-width:none;-webkit-user-select:none;user-select:none}.pdf-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px;color:var(--text-secondary);gap:16px}.pdf-page-loading-enhanced{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:120px;min-height:120px;padding:24px;background:#000c;border-radius:12px;color:#ffffffe6;gap:16px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:20;box-shadow:0 8px 32px #0006}.loading-spinner-enhanced{width:48px;height:48px;border:4px solid rgba(255,255,255,.2);border-top-color:#3b82f6;border-radius:50%;animation:spin-enhanced 1s linear infinite}@keyframes spin-enhanced{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-text-enhanced{font-size:14px;font-weight:500;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.3);text-align:center;margin:0}.pdf-pages{display:flex;flex-direction:column;gap:16px;padding:20px;background:#2a2a2a}.pdf-page-image{display:block;max-width:none;box-shadow:0 4px 20px #0006;-webkit-user-select:none;user-select:none}.document-unsupported{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px;background:var(--bg-card);border-radius:12px;gap:16px}.unsupported-icon{font-size:64px}.document-unsupported p{color:var(--text-muted)}.download-link{padding:10px 20px;background:var(--accent-blue);color:#fff;border-radius:8px;text-decoration:none;font-weight:500}.annotations-layer{position:absolute;inset:0;pointer-events:none}.annotations-layer>*{pointer-events:auto}.annotations-layer-inner{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.annotations-layer-inner>*{pointer-events:auto}.annotation-note{position:absolute;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer}.note-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;box-shadow:0 2px 8px #0000004d}.annotation-highlight{position:absolute;border-radius:4px;cursor:pointer}.annotation-rectangle{position:absolute;border:2px solid;border-radius:4px;cursor:pointer}.annotation-line{position:absolute;height:3px;border-radius:2px;cursor:pointer}.measurement-label{position:absolute;top:-24px;left:50%;transform:translate(-50%);padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;color:#fff;white-space:nowrap}.annotation-delete{position:absolute;top:-8px;right:-8px;width:20px;height:20px;background:#ef4444;color:#fff;border-radius:50%;font-size:14px;display:none;align-items:center;justify-content:center;cursor:pointer}.annotation-note:hover .annotation-delete,.annotation-highlight:hover .annotation-delete,.annotation-rectangle:hover .annotation-delete,.annotation-line:hover .annotation-delete{display:flex}.annotation-polygon{position:absolute;cursor:pointer}.annotation-polygon.preview{pointer-events:none}.polygon-label{position:absolute;bottom:-28px;left:50%;transform:translate(-50%);white-space:nowrap;font-size:10px}.polygon-hint{position:absolute;bottom:-24px;left:0;font-size:11px;color:var(--text-muted);white-space:nowrap}.annotation-text-badge{position:absolute;bottom:-20px;left:0;padding:2px 6px;background:#000c;color:#fff;font-size:10px;border-radius:3px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.annotation-text-badge.line-text{bottom:auto;top:-20px}.notes-panel{width:320px;background:var(--bg-card);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.notes-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-subtle)}.notes-header h3{font-size:14px;font-weight:600;color:var(--text-primary)}.add-note-form{padding:12px;border-bottom:1px solid var(--border-subtle)}.add-note-form textarea{width:100%;height:80px;padding:10px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-primary);font-size:13px;resize:none}.add-note-form textarea:focus{border-color:var(--accent-blue);outline:none}.note-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.note-form-actions button{padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500}.note-form-actions button:first-child{background:transparent;color:var(--text-muted)}.note-form-actions button.primary{background:var(--accent-blue);color:#fff}.notes-list{flex:1;overflow-y:auto;padding:12px}.no-notes{color:var(--text-muted);font-size:13px;text-align:center;padding:20px}.note-item{padding:12px;background:#ffffff08;border-radius:8px;border-left:3px solid;margin-bottom:8px}.note-item p{font-size:13px;color:var(--text-primary);line-height:1.5;margin-bottom:8px}.note-meta{display:flex;justify-content:space-between;align-items:center}.note-meta span{font-size:11px;color:var(--text-muted)}.note-meta button{font-size:11px;color:#ef4444;background:none}.note-meta button:hover{text-decoration:underline}.measurements-list{padding:0 12px 12px}.measurement-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#ffffff08;border-radius:6px;margin-bottom:4px}.measurement-value{font-size:14px;font-weight:500;color:var(--text-primary)}.measurement-item button{color:var(--text-muted);font-size:16px}.dialog-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100}.dialog{background:var(--bg-card);border:1px solid var(--border-light);border-radius:12px;padding:24px;width:360px;box-shadow:var(--shadow-card)}.dialog h3{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.dialog p{font-size:14px;color:var(--text-secondary);margin-bottom:16px}.dialog textarea{width:100%;padding:10px 12px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-primary);font-size:14px;resize:vertical;margin-bottom:16px}.dialog textarea:focus{border-color:var(--accent-blue);outline:none}.calibration-input{display:flex;gap:8px;margin-bottom:16px}.calibration-input input{flex:1;padding:10px 12px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-primary);font-size:14px}.calibration-input select{padding:10px 12px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-primary);font-size:14px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}.dialog-actions button{padding:10px 16px;border-radius:8px;font-size:14px;font-weight:500}.dialog-actions button:first-child{background:transparent;color:var(--text-muted)}.dialog-actions button.primary{background:var(--accent-blue);color:#fff}.dialog-actions button.danger{background:#ef4444;color:#fff}.viewer-statusbar{display:flex;gap:24px;padding:6px 16px;background:var(--bg-secondary);border-top:1px solid var(--border-subtle);font-size:11px;color:var(--text-muted)}.saving-indicator{color:var(--accent-blue);animation:pulse 1s ease-in-out infinite}.degraded-mode-indicator{color:#f59e0b;background:#f59e0b26;padding:2px 8px;border-radius:4px;font-weight:500;cursor:help}.viewer-statusbar .hint{margin-left:auto;color:var(--text-muted);font-style:italic}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.viewer-core{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.viewer-core.compact{background:#1a1a1a}.viewer-core.compact .viewer-toolbar{padding:4px 8px;gap:8px;min-height:auto}.viewer-core.compact .viewer-toolbar.compact{display:flex;justify-content:space-between;align-items:center}.tool-btn.sm{width:28px;height:28px;font-size:12px;padding:0}.toolbar-btn.sm{padding:4px 8px;font-size:11px}.viewer-core.compact .zoom-level{font-size:11px;min-width:40px}.compact-hint{position:absolute;bottom:8px;left:50%;transform:translate(-50%);padding:4px 12px;background:#000000b3;color:var(--text-muted);font-size:10px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .2s ease}.viewer-core.compact:hover .compact-hint{opacity:1}.viewer-core.compact .document-image{display:block;max-width:none;-webkit-user-select:none;user-select:none}.viewer-core.compact .document-content{position:absolute;top:0;left:0;transform-origin:0 0;box-sizing:content-box}.viewer-core.compact .pdf-single-page{display:flex;justify-content:flex-start;align-items:flex-start}.viewer-core.compact .pdf-page-image{display:block;max-width:none;box-shadow:0 4px 20px #0006;-webkit-user-select:none;user-select:none}.viewer-core.compact .viewer-main{flex:1;min-height:0;overflow:hidden}.viewer-core.compact .viewer-canvas{flex:1;height:100%;overflow:auto!important}.color-picker.compact{display:flex;gap:2px}.color-btn.sm{width:18px;height:18px}.annotation-arrow{position:absolute;pointer-events:none}.annotation-arrow svg{pointer-events:none}.annotation-arrow line{pointer-events:stroke;cursor:move}.annotation-arrow .annotation-delete{pointer-events:auto}.annotation-arrow-wrapper{position:absolute;pointer-events:auto;cursor:move}.annotation-arrow-wrapper.selected{filter:drop-shadow(0 0 3px #3b82f6)}.annotation-note.selected,.annotation-highlight.selected,.annotation-rectangle.selected,.annotation-polygon.selected,.annotation-line.selected{outline:2px solid #3b82f6;outline-offset:2px}.toolbar-btn.danger,.tool-btn.danger{background:#ef444433;border-color:#ef4444;color:#ef4444}.toolbar-btn.danger:hover,.tool-btn.danger:hover{background:#ef44444d}.resize-handle{position:absolute;width:10px;height:10px;background:#3b82f6;border:2px solid white;border-radius:2px;pointer-events:auto;z-index:10}.resize-handle.nw{top:-5px;left:-5px;cursor:nw-resize}.resize-handle.ne{top:-5px;right:-5px;cursor:ne-resize}.resize-handle.sw{bottom:-5px;left:-5px;cursor:sw-resize}.resize-handle.se{bottom:-5px;right:-5px;cursor:se-resize}.endpoint-handle{position:absolute;width:10px;height:10px;background:#3b82f6;border:2px solid white;border-radius:50%;pointer-events:auto;cursor:move;z-index:10}.endpoint-handle.start{background:#10b981}.endpoint-handle.end{background:#ef4444}.annotation-arrow-container,.annotation-measurement-container{pointer-events:none}.annotation-arrow-container svg,.annotation-measurement-container svg{pointer-events:none}.annotation-arrow-container line,.annotation-measurement-container line{pointer-events:stroke}.viewer-canvas.tool-polyline{cursor:crosshair}.annotation-polyline{position:absolute;cursor:pointer}.annotation-polyline.selected{outline:2px solid #3b82f6;outline-offset:2px}.stroke-selector{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.stroke-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#ffffff0d;border:1px solid var(--border-subtle);border-radius:4px;color:var(--text-secondary);transition:all .2s ease}.stroke-btn:hover{background:#ffffff1a}.stroke-btn.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.comments-panel{width:360px;background:var(--bg-card);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.comments-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--border-subtle)}.comments-header h3{font-size:16px;font-weight:600;color:var(--text-primary);margin:0}.add-comment-form{padding:16px;border-bottom:1px solid var(--border-subtle)}.comment-input-wrapper{position:relative}.add-comment-form textarea{width:100%;height:80px;padding:12px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;color:var(--text-primary);font-size:13px;resize:none;font-family:inherit}.add-comment-form textarea:focus{border-color:var(--accent-blue);outline:none}.add-comment-form textarea::placeholder{color:var(--text-muted)}.comment-form-actions{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.comment-location{font-size:11px;color:var(--text-muted)}.comment-form-actions button.primary{padding:8px 16px;background:var(--accent-blue);color:#fff;border-radius:6px;font-size:13px;font-weight:500}.comment-form-actions button.primary:disabled{opacity:.5;cursor:not-allowed}.mention-dropdown{position:absolute;bottom:100%;left:0;right:0;background:var(--bg-card);border:1px solid var(--border-light);border-radius:8px;box-shadow:var(--shadow-card);max-height:200px;overflow-y:auto;margin-bottom:4px;z-index:100}.mention-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:none;border:none;text-align:left;color:var(--text-primary);font-size:13px;cursor:pointer;transition:background .15s ease}.mention-item:hover{background:#ffffff0d}.mention-icon{font-size:16px}.mention-name{flex:1;font-weight:500}.mention-type{font-size:11px;color:var(--text-muted);text-transform:capitalize;padding:2px 6px;background:#ffffff0d;border-radius:4px}.mention-user .mention-type{background:#3b82f633;color:#3b82f6}.mention-role .mention-type{background:#f59e0b33;color:#f59e0b}.mention-company .mention-type{background:#10b98133;color:#10b981}.comments-list{flex:1;overflow-y:auto;padding:12px}.no-comments{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.no-comments-icon{font-size:48px;margin-bottom:12px;opacity:.5}.no-comments p{color:var(--text-muted);font-size:14px;margin:0}.no-comments .hint{font-size:12px;margin-top:8px;line-height:1.5}.comment-item{padding:12px;background:#ffffff05;border-radius:8px;border-left:3px solid;margin-bottom:8px;cursor:pointer;transition:background .15s ease}.comment-item:hover{background:#ffffff0d}.comment-item.selected{background:#3b82f61a;outline:1px solid rgba(59,130,246,.3)}.comment-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.comment-author{font-size:13px;font-weight:600;color:var(--text-primary)}.comment-markup-type{font-size:11px;color:var(--text-muted);padding:2px 6px;background:#ffffff0d;border-radius:4px}.comment-text{font-size:13px;color:var(--text-primary);line-height:1.5;margin:0 0 8px;word-wrap:break-word}.comment-footer{display:flex;justify-content:space-between;align-items:center}.comment-time{font-size:11px;color:var(--text-muted)}.comment-delete{font-size:11px;color:#ef4444;background:none;border:none;cursor:pointer;opacity:0;transition:opacity .15s ease}.comment-item:hover .comment-delete{opacity:1}.comment-delete:hover{text-decoration:underline}.point-handle{position:absolute;width:12px;height:12px;background:#3b82f6;border:2px solid white;border-radius:50%;cursor:move;pointer-events:auto;z-index:10;box-shadow:0 1px 3px #0000004d}.point-handle:hover{background:#2563eb;transform:scale(1.2)}.compact-title{font-size:12px;font-weight:500;color:var(--text-secondary)}.viewer-canvas.preview-only{cursor:grab}.viewer-canvas.preview-only:active{cursor:grabbing}.page-thumbnails{width:90px;min-width:90px;background:var(--bg-secondary);border-right:1px solid var(--border-subtle);overflow-y:auto;overflow-x:hidden;padding:8px 6px;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.page-thumb{position:relative;width:100%;min-height:60px;padding:0;background:var(--bg-card);border:2px solid transparent;border-radius:4px;cursor:pointer;overflow:hidden;transition:all .15s ease;flex-shrink:0}.page-thumb:hover{border-color:var(--border-light)}.page-thumb.active{border-color:var(--accent-blue);box-shadow:0 0 0 2px #3b82f64d}.page-thumb img{width:100%;height:auto;display:block;min-height:50px;object-fit:contain;background:#fff}.page-thumb .page-num{position:absolute;bottom:2px;right:2px;background:#000000b3;color:#fff;font-size:10px;padding:1px 4px;border-radius:2px}.page-thumb.loading{opacity:.6;cursor:wait}.thumb-placeholder{width:100%;height:60px;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary)}.loading-spinner{width:16px;height:16px;border:2px solid var(--border-subtle);border-top-color:var(--accent-blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sheet-index-header{padding:4px;border-bottom:1px solid var(--border-subtle);margin-bottom:8px}.sheet-index-toggle{display:flex;align-items:center;gap:4px;width:100%;padding:4px 8px;background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:4px;color:var(--text-secondary);font-size:11px;cursor:pointer;transition:all .15s ease}.sheet-index-toggle:hover{background:var(--bg-card);border-color:var(--border-light)}.sheet-index-toggle.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.sheet-index-toggle svg{width:12px;height:12px}.sheet-index-view{display:flex;flex-direction:column;gap:4px}.sheet-group{display:flex;flex-direction:column}.sheet-group-header{display:flex;align-items:center;gap:4px;padding:6px 8px;background:var(--bg-tertiary);border:none;border-radius:4px;color:var(--text-primary);font-size:11px;font-weight:500;cursor:pointer;transition:all .15s ease;text-align:left}.sheet-group-header:hover{background:var(--bg-card)}.sheet-group-header .expand-icon{font-size:8px;color:var(--text-muted);width:10px}.sheet-group-header .group-label{flex:1}.sheet-group-header .group-count{background:var(--bg-secondary);padding:1px 5px;border-radius:8px;font-size:10px;color:var(--text-muted)}.sheet-group-items{display:flex;flex-direction:column;gap:2px;padding:4px 0 4px 12px}.sheet-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:4px 8px;background:transparent;border:1px solid transparent;border-radius:4px;cursor:pointer;transition:all .15s ease;text-align:left}.sheet-item:hover{background:var(--bg-card);border-color:var(--border-subtle)}.sheet-item.active{background:#3b82f626;border-color:var(--accent-blue)}.sheet-item .sheet-number{font-size:11px;font-weight:600;color:var(--text-primary)}.sheet-item .sheet-title{font-size:9px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.sheet-item.active .sheet-number{color:var(--accent-blue)}.reference-callouts-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:15}.reference-callout{position:absolute;display:flex;align-items:center;justify-content:center;gap:4px;background:#3b82f626;border:none;border-radius:4px;cursor:pointer;pointer-events:auto;transition:background .15s ease;padding:0;min-width:unset;min-height:unset}.reference-callout:hover{background:#3b82f659;border:none;box-shadow:none;transform:none}.reference-callout:active{background:#3b82f673;transform:none}.reference-callout.intra-document{background:#3b82f633;border:none}.reference-callout.intra-document:hover{background:#3b82f659;border:none}.reference-callout.external-document{background:#f9731633;border:none}.reference-callout.external-document:hover{background:#f9731659;border:none}.reference-callout.external-document .reference-callout-text,.reference-callout.external-document .reference-callout-icon{color:#10b981}.reference-callout.unresolved{background:#9ca3af26;border:2px dashed rgba(156,163,175,.6);border-radius:2px;cursor:not-allowed;display:flex}.reference-callout.unresolved:hover{background:#9ca3af40;border:2px dashed rgba(156,163,175,.8);transform:none;box-shadow:none}.reference-callout.unresolved .reference-callout-text,.reference-callout.unresolved .reference-callout-icon{color:#9ca3af}.hyperlinks-layer-compact{position:absolute;top:0;left:0;pointer-events:none;z-index:10}.reference-callout.compact-mode{min-width:8px;min-height:8px}.reference-callout-text{display:none;font-size:10px;font-weight:600;color:var(--accent-blue);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px}.reference-callout-icon{display:none;align-items:center;justify-content:center;color:var(--accent-blue);opacity:0;transition:opacity .2s ease}.reference-callout:hover .reference-callout-icon{opacity:1}.reference-callout-icon svg{width:12px;height:12px}.revision-clouds-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:4}.revision-cloud{position:absolute;background:#ffa50026;border:3px dashed rgba(255,165,0,.7);border-radius:8px;animation:revision-pulse 2s ease-in-out infinite}@keyframes revision-pulse{0%,to{border-color:#ffa500b3;background:#ffa50026}50%{border-color:#ffa500e6;background:#ffa50040}}.revision-cloud-label{position:absolute;top:-20px;left:50%;transform:translate(-50%);background:#ffa500e6;color:#fff;font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;box-shadow:0 2px 4px #0003}.revision-count{background:#ffa500e6;color:#fff;font-size:10px;font-weight:600;padding:1px 5px;border-radius:8px;margin-left:4px}.pdf-single-page{display:flex;justify-content:flex-start;align-items:flex-start}.pdf-single-page .pdf-page-image{display:block;box-shadow:0 4px 20px #0006}.page-nav{display:flex;align-items:center;gap:4px}.page-indicator{font-size:13px;color:var(--text-secondary);min-width:60px;text-align:center}.reference-overlay-bar{position:absolute;top:0;left:0;right:0;background:linear-gradient(180deg,#000000e6,#000000b3);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:0;display:flex;flex-direction:column;z-index:50;border-bottom:1px solid rgba(255,255,255,.1)}.reference-overlay-bar.collapsed,.reference-overlay-bar.expanded{padding:0}.reference-bar-toggle{display:flex;align-items:center;gap:6px;padding:8px 16px;background:transparent;border:none;color:#fff9;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease;width:100%;text-align:left}.reference-bar-toggle:hover{background:#ffffff0d;color:#fffc}.reference-bar-header{display:flex;align-items:center;gap:6px;color:#fff9;font-size:12px;font-weight:500;white-space:nowrap}.reference-bar-icon{font-size:14px}.reference-bar-title{text-transform:uppercase;letter-spacing:.5px}.reference-bar-chevron{margin-left:auto;font-size:10px;opacity:.6}.reference-chips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 16px 12px;overflow-x:auto;border-top:1px solid rgba(255,255,255,.05)}.reference-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:16px;font-size:12px;font-weight:500;border:1px solid;cursor:pointer;transition:all .2s ease;white-space:nowrap}.reference-chip.drawing{background:#8b5cf626;border-color:#8b5cf64d;color:#a78bfa}.reference-chip.drawing:hover:not(:disabled){background:#8b5cf640;border-color:#8b5cf680}.reference-chip.spec{background:#10b98126;border-color:#10b9814d;color:#34d399}.reference-chip.spec:hover:not(:disabled){background:#10b98140;border-color:#10b98180}.reference-chip.rfi{background:#ef444426;border-color:#ef44444d;color:#f87171}.reference-chip.rfi:hover:not(:disabled){background:#ef444440;border-color:#ef444480}.reference-chip.submittal{background:#f59e0b26;border-color:#f59e0b4d;color:#fbbf24}.reference-chip.submittal:hover:not(:disabled){background:#f59e0b40;border-color:#f59e0b80}.reference-chip.resolved{cursor:pointer}.reference-chip.unresolved{opacity:.5;cursor:not-allowed}.reference-chip:disabled{opacity:.5;cursor:not-allowed}.chip-type{font-size:11px}.chip-value{font-weight:600}.chip-link-icon{font-size:10px;opacity:.7;margin-left:2px}.reference-chip:hover:not(:disabled) .chip-link-icon{opacity:1}.viewer-main:has(.reference-overlay-bar.expanded) .viewer-canvas{padding-top:80px}.viewer-main:has(.reference-overlay-bar.collapsed) .viewer-canvas{padding-top:36px}.reference-chip{position:relative}.reference-chip:after{content:attr(title);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#000000f2;color:#fff;padding:8px 12px;border-radius:6px;font-size:11px;font-weight:400;white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;pointer-events:none;z-index:100;box-shadow:0 4px 12px #0000004d}.reference-chip:hover:after{opacity:1;visibility:visible}.reference-chip:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#000000f2;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;pointer-events:none;z-index:100}.reference-chip:hover:before{opacity:1;visibility:visible}.reference-chip:not([title]):after,.reference-chip:not([title]):before,.reference-chip[title=""]:after,.reference-chip[title=""]:before{display:none}.page-error-placeholder{background:#ef44440d;border:2px dashed rgba(239,68,68,.3);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:24px;box-sizing:border-box}.page-error-placeholder .error-icon{font-size:48px;line-height:1}.page-error-placeholder .error-title{margin:0;font-size:16px;font-weight:600;color:#ef4444}.page-error-placeholder .error-page{margin:0;font-size:13px;color:#fff9}.page-error-placeholder .error-message{margin:0;font-size:13px;color:#ffffff80;max-width:300px;line-height:1.5}.page-error-placeholder .retry-button{margin-top:8px;padding:10px 20px;font-size:14px;font-weight:500;color:#fff;background-color:#3b82f6;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px}.page-error-placeholder .retry-button:hover:not(:disabled){background-color:#2563eb}.page-error-placeholder .retry-button:disabled{color:#fff6;background-color:#3b82f64d;cursor:not-allowed}.page-error-placeholder .retry-info{margin:0;font-size:11px;color:#fff6}.page-error-placeholder .retry-exhausted{margin:0;font-size:11px;color:#ef4444b3}.retry-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.document-error-display{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 40px;text-align:center;min-height:400px;background-color:var(--bg-card, #1e1e1e);border-radius:12px;margin:20px}.document-error-display .document-error-icon{font-size:72px;line-height:1;margin-bottom:24px}.document-error-display .document-error-title{margin:0 0 12px;font-size:24px;font-weight:600;color:#ef4444}.document-error-display .document-error-filename{margin:0 0 16px;font-size:14px;color:#fff9;font-family:monospace;background-color:#ffffff0d;padding:6px 12px;border-radius:4px}.document-error-display .document-error-message{margin:0 0 24px;font-size:15px;color:#ffffffb3;max-width:450px;line-height:1.6}.document-error-display .document-error-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.document-error-display .back-button{padding:12px 24px;font-size:14px;font-weight:500;color:#fffc;background-color:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;cursor:pointer;transition:all .2s ease}.document-error-display .back-button:hover{background-color:#ffffff26}.document-error-display .retry-button,.document-error-display .refresh-button{padding:12px 24px;font-size:14px;font-weight:500;color:#fff;background-color:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px}.document-error-display .retry-button:hover:not(:disabled),.document-error-display .refresh-button:hover{background-color:#2563eb}.document-error-display .retry-button:disabled{background-color:#3b82f680;cursor:not-allowed}.document-error-display .document-error-details{margin-top:32px;width:100%;max-width:500px;text-align:left}.document-error-display .document-error-details summary{font-size:12px;color:#fff6;cursor:pointer;padding:8px}.document-error-display .document-error-details pre{margin:8px 0 0;padding:12px;font-size:11px;color:#ffffff80;background-color:#0000004d;border-radius:4px;overflow:auto;max-height:150px;white-space:pre-wrap;word-break:break-word}.pdf-page-loading.error{background-color:#ef44440d;border-color:#ef44444d}.tile-placeholder{transition:background-color .2s ease,border-color .2s ease}.tile-placeholder:hover{background-color:#ffffff0d!important}@keyframes tile-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tile-spinner{animation:tile-spin .8s linear infinite}.tile-loading-state{opacity:.8}.tile-error-state{opacity:.9}.tile-error-state button{font-family:inherit}.tile-error-state button:focus{outline:2px solid rgba(59,130,246,.5);outline-offset:2px}.pdf-page-tiles{position:relative;overflow:hidden}.pdf-tile-image{display:block;image-rendering:auto;backface-visibility:hidden;transform:translateZ(0);margin:0;padding:0;box-sizing:border-box}.tile-loading-indicator{z-index:10;pointer-events:none;font-family:var(--font-mono, monospace)}.tile-grid-debug{position:absolute;inset:0;pointer-events:none;z-index:100}.tile-grid-debug .tile-debug-cell{position:absolute;border:1px solid rgba(255,0,0,.2);font-size:8px;color:#ff000080;display:flex;align-items:center;justify-content:center}.thumbnail-sidebar{width:90px;min-width:90px;background:var(--bg-secondary);border-right:1px solid var(--border-subtle);overflow-y:auto;overflow-x:hidden;padding:8px 6px;display:flex;flex-direction:column;gap:8px;flex-shrink:0}.refresh-intelligence-btn{width:100%;padding:6px 4px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all .15s ease;color:var(--text-secondary);font-size:10px;flex-shrink:0}.refresh-intelligence-btn:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent-blue);color:var(--accent-blue)}.refresh-intelligence-btn:disabled{opacity:.6;cursor:wait}.refresh-intelligence-btn .refresh-icon{font-size:14px;transition:transform .3s ease}.refresh-intelligence-btn .refresh-icon.spinning{animation:spin 1s linear infinite}.refresh-intelligence-btn .refresh-text{font-size:9px;white-space:nowrap}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.thumbnail-item{position:relative;width:100%;min-height:60px;padding:0;background:var(--bg-card);border:2px solid transparent;border-radius:4px;cursor:pointer;overflow:hidden;transition:all .15s ease;flex-shrink:0;display:flex;flex-direction:column;align-items:center}.thumbnail-item:hover{border-color:var(--border-light)}.thumbnail-item.active{border-color:var(--accent-blue);box-shadow:0 0 0 2px #3b82f64d}.thumbnail-item.loading{opacity:.6;cursor:wait}.thumbnail-item .thumbnail-image{width:100%;height:auto;display:block;min-height:50px;object-fit:contain;background:#fff}.thumbnail-item .thumbnail-placeholder{width:100%;height:60px;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary)}.thumbnail-item .thumbnail-label{display:block;width:100%;padding:4px 2px;background:#000000b3;color:#fff;font-size:10px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.thumbnail-item.active .thumbnail-label{background:var(--accent-blue)}.thumbnail-item:focus{outline:2px solid var(--accent-blue);outline-offset:2px}.thumbnail-item:focus:not(:focus-visible){outline:none}@media(max-width:768px){.thumbnail-sidebar{width:70px;min-width:70px;padding:4px;gap:4px}.thumbnail-item .thumbnail-label{font-size:9px;padding:2px 1px}}.hyperlink-preview{background:#1e293b;border:1px solid rgba(255,255,255,.15);border-radius:8px;box-shadow:0 8px 32px #0006,0 2px 8px #0003;overflow:hidden;pointer-events:auto;animation:hyperlink-preview-fade-in .15s ease-out}@keyframes hyperlink-preview-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.hyperlink-preview .preview-content{padding:8px;background:#0f172a}.hyperlink-preview .preview-thumbnail{display:block;min-width:200px;max-width:280px;height:auto;border-radius:4px;background:#1e293b}.hyperlink-preview .preview-placeholder{display:flex;align-items:center;justify-content:center;min-width:200px;min-height:260px;background:#1e293b;border-radius:4px;color:#ffffff80}.hyperlink-preview .placeholder-text{font-size:13px;font-weight:500}.hyperlink-preview .preview-info{padding:8px 12px;background:#1e293b;border-top:1px solid rgba(255,255,255,.1)}.hyperlink-preview .preview-label{display:block;font-size:13px;font-weight:600;color:#f1f5f9;margin-bottom:2px}.hyperlink-preview .preview-title{display:block;font-size:11px;color:#fff9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
