:root{--color-text-primary: #111827;--color-text-secondary: #6b7280;--color-text-tertiary: #9ca3af;--color-bg-page: #f3f4f6;--color-bg-card: #ffffff;--color-bg-element: #f3f4f6;--color-border: #e5e7eb;--color-border-strong: #d1d5db;--color-btn-primary-bg: #111827;--color-btn-primary-bg-hover: #1f2937;--color-btn-primary-text: #ffffff;--color-btn-secondary-border: #d1d5db;--color-btn-secondary-text: #111827;--color-rating-star: #fbbf24;--color-accent-gradient: linear-gradient(135deg, #7c3aed 0%, #6366f1 100%);--color-danger-text: #991b1b;--color-danger-bg: #fef2f2;--color-success-text: #047857;--color-highlight: #fbbf24;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--text-hero: 3rem;--text-section: 2.25rem;--text-card: 1.25rem;--text-body: .9375rem;--text-small: .8125rem;--leading-tight: 1.18;--leading-body: 1.55;--tracking-tight: -.02em;--radius-card: 16px;--radius-element: 12px;--radius-button: 8px;--radius-pill: 9999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--max-page: 1200px;--transition: .16s ease}*,*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{margin:0;font-family:var(--font-sans);font-size:var(--text-body);font-weight:var(--weight-regular);line-height:var(--leading-body);color:var(--color-text-secondary);background:var(--color-bg-page)}a{color:inherit;text-decoration:none;transition:color var(--transition)}::selection{background:var(--color-text-primary);color:#fff}h1,h2,h3,h4{margin:0;color:var(--color-text-primary);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);font-weight:var(--weight-bold)}h1{font-size:var(--text-hero);font-weight:var(--weight-extrabold)}h2{font-size:var(--text-section)}h3{font-size:var(--text-card)}p{margin:0 0 var(--space-3);max-width:60ch}code,pre{font-family:ui-monospace,SF Mono,Menlo,monospace}.btn,button{font-family:inherit;font-size:var(--text-body);font-weight:var(--weight-medium);border-radius:var(--radius-button);padding:10px 20px;border:1px solid transparent;cursor:pointer;transition:background var(--transition),border-color var(--transition),opacity var(--transition)}.btn-primary{background:var(--color-btn-primary-bg);color:var(--color-btn-primary-text)}.btn-primary:hover{background:var(--color-btn-primary-bg-hover)}.btn-secondary{background:var(--color-bg-card);color:var(--color-btn-secondary-text);border-color:var(--color-btn-secondary-border)}.btn-secondary:hover{background:var(--color-bg-element)}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-6)}.pill{display:inline-flex;align-items:center;gap:var(--space-1);background:var(--color-bg-element);color:var(--color-text-primary);font-size:var(--text-small);font-weight:var(--weight-medium);line-height:1;padding:4px 12px;border-radius:var(--radius-pill)}.badge{display:inline-flex;align-items:center;background:var(--color-bg-element);color:var(--color-text-primary);font-size:var(--text-small);font-weight:var(--weight-medium);line-height:1;padding:2px 10px;border-radius:var(--radius-pill)}input[type=file]{font-family:inherit;font-size:var(--text-body);color:var(--color-text-secondary)}input[type=file]::file-selector-button{font-family:inherit;font-size:var(--text-body);font-weight:var(--weight-medium);margin-right:var(--space-3);padding:8px 16px;border:1px solid var(--color-btn-secondary-border);border-radius:var(--radius-button);background:var(--color-bg-card);color:var(--color-text-primary);cursor:pointer;transition:background var(--transition)}input[type=file]::file-selector-button:hover{background:var(--color-bg-element)}.meta,.status{font-size:var(--text-small);color:var(--color-text-secondary)}#viewer{flex:1;overflow-y:auto;background:var(--color-bg-page);padding:var(--space-5);text-align:center}.pdf-page{display:block;margin:0 auto var(--space-4);max-width:100%;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-button);overflow:hidden}.pdf-page canvas{display:block;width:100%;height:auto}.pdf-page-pending{animation:pulse 1.4s ease-in-out infinite}#results-pane{width:38%;min-width:340px;overflow-y:auto;background:var(--color-bg-card);border-left:1px solid var(--color-border)}#results{padding:var(--space-5)}.results-heading{font-size:var(--text-body);margin:var(--space-5) 0 var(--space-3)}.results-loading{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-5);text-align:center;color:var(--color-text-secondary)}.result-meta{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-small)}.rm-row{display:flex;gap:var(--space-3)}.rm-label{width:88px;flex-shrink:0;color:var(--color-text-tertiary);font-weight:var(--weight-medium)}.rm-value{color:var(--color-text-primary);font-weight:var(--weight-medium)}.grievance{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-element);margin-bottom:var(--space-3);overflow:hidden;transition:border-color var(--transition)}.grievance:hover,.grievance.open{border-color:var(--color-border-strong)}.grievance .g-head{display:flex;align-items:center;gap:var(--space-3);width:100%;text-align:left;background:transparent;border:none;border-radius:0;padding:var(--space-3) var(--space-4);font-weight:var(--weight-semibold);font-size:var(--text-body);color:var(--color-text-primary);cursor:pointer;transition:background var(--transition)}.grievance .g-head:hover{background:var(--color-bg-element)}.grievance .g-summary{flex:1;min-width:0}.grievance:not(.open) .g-summary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grievance .g-status{flex-shrink:0;font-size:11px;font-weight:var(--weight-medium);line-height:1;padding:4px 10px;border-radius:var(--radius-pill)}.g-status-ok{background:#ecfdf5;color:var(--color-success-text)}.g-status-gap{background:var(--color-danger-bg);color:var(--color-danger-text)}.grievance .g-chevron{flex-shrink:0;color:var(--color-text-tertiary);transition:transform var(--transition)}.grievance.open .g-chevron{transform:rotate(180deg)}.grievance .g-body{display:flex;flex-direction:column;gap:var(--space-3);padding:0 var(--space-4) var(--space-4);border-top:1px solid var(--color-border);padding-top:var(--space-3)}.grievance .g-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.grievance .g-action{font-size:var(--text-small);font-weight:var(--weight-medium);color:var(--color-text-secondary);background:var(--color-bg-element);border:none;border-radius:var(--radius-pill);padding:4px 12px;line-height:1.4;cursor:pointer;transition:background var(--transition),color var(--transition)}.grievance .g-action:hover{color:var(--color-text-primary);background:var(--color-border)}.grievance .quote{font-size:var(--text-small);color:var(--color-text-secondary);border-left:3px solid var(--color-border-strong);padding-left:var(--space-3);margin:0;white-space:pre-wrap;max-height:180px;overflow-y:auto}.grievance .g-source{font-size:11px;color:var(--color-text-tertiary);margin:0}.rm-stats{font-weight:var(--weight-regular);color:var(--color-text-secondary)}.gap{font-size:var(--text-small);color:var(--color-danger-text);background:var(--color-danger-bg);padding:var(--space-2) var(--space-3);border-radius:var(--radius-button)}.copy-box{background:var(--color-bg-element);border:1px solid var(--color-border);border-radius:var(--radius-button);overflow:hidden}.copy-box-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-card)}.copy-box-label{font-size:var(--text-small);font-weight:var(--weight-semibold);color:var(--color-text-primary)}.copy-box-text{font-size:var(--text-small);color:var(--color-text-primary);padding:var(--space-3);white-space:pre-wrap;-webkit-user-select:all;user-select:all;max-height:320px;overflow-y:auto}.copy-btn{padding:4px 12px;font-size:var(--text-small)}.copy-btn.copied{color:var(--color-success-text);border-color:var(--color-success-text)}.recommendation{margin-bottom:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}pre{background:var(--color-bg-element);border:1px solid var(--color-border);border-radius:var(--radius-button);padding:var(--space-3);overflow-x:auto;font-size:var(--text-small);color:var(--color-text-primary)}.brand{font-size:1.125rem;font-weight:var(--weight-bold);color:var(--color-text-primary);letter-spacing:var(--tracking-tight)}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-6);padding:var(--space-3) var(--space-6);background:var(--color-bg-card);border-bottom:1px solid var(--color-border)}.topnav{display:flex;gap:var(--space-2);flex:1}.nav-link{display:inline-flex;align-items:center;gap:var(--space-2);background:transparent;border:none;border-radius:var(--radius-button);padding:8px 14px;font-size:var(--text-body);font-weight:var(--weight-medium);color:var(--color-text-secondary)}.nav-link:hover,.nav-link.active{background:var(--color-bg-element);color:var(--color-text-primary)}.pill-soon{font-size:11px;padding:2px 8px;background:var(--color-bg-page);border:1px solid var(--color-border);color:var(--color-text-tertiary)}.btn-small{padding:6px 14px;font-size:var(--text-small)}.btn-block{display:block;width:100%}#login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-5)}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:var(--space-3);text-align:center}.login-card h2{font-size:1.5rem}.login-desc{margin:0 auto}.login-card form{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-2)}.login-card input[type=password]{font-family:inherit;font-size:var(--text-body);padding:10px 14px;border:1px solid var(--color-border-strong);border-radius:var(--radius-button);color:var(--color-text-primary);background:var(--color-bg-card);outline:none;transition:border-color var(--transition)}.login-card input[type=password]:focus{border-color:var(--color-text-primary)}.login-error{font-size:var(--text-small);color:var(--color-danger-text);background:var(--color-danger-bg);padding:var(--space-2) var(--space-3);border-radius:var(--radius-button);margin:0;max-width:none}.spinner{display:inline-block;width:22px;height:22px;border:2.5px solid var(--color-border);border-top-color:var(--color-text-primary);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}.spinner-small{width:12px;height:12px;border-width:2px;margin-right:var(--space-2);vertical-align:-1px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.skeleton{background:var(--color-bg-element);border-radius:var(--radius-button);animation:pulse 1.4s ease-in-out infinite}.skeleton-card{display:flex;flex-direction:column;gap:var(--space-3)}.sk-pill{width:80px;height:20px;border-radius:var(--radius-pill)}.sk-line{width:100%;height:14px}.sk-line.short{width:55%}.pill-working .spinner-small{margin-right:var(--space-1)}.pill-failed{background:var(--color-danger-bg);color:var(--color-danger-text)}.soon-main{max-width:var(--max-page);margin:0 auto;padding:var(--space-8) var(--space-6);display:flex;justify-content:center}.soon-card{max-width:480px;width:100%;text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-6)}.hub-main{max-width:var(--max-page);margin:0 auto;padding:var(--space-8) var(--space-6);display:grid;grid-template-columns:400px 1fr;gap:var(--space-7);align-items:start}.upload-section h2{font-size:1.5rem;margin-bottom:var(--space-2)}.upload-desc{color:var(--color-text-secondary);margin-bottom:var(--space-5);max-width:44ch}.drop-zone{background:var(--color-bg-card);border:2px dashed var(--color-border-strong);border-radius:var(--radius-card);padding:var(--space-7) var(--space-6);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);transition:border-color var(--transition),background var(--transition);cursor:pointer}.drop-zone.drag-over{border-color:var(--color-text-primary);background:var(--color-bg-element)}.drop-icon{width:56px;height:56px;background:var(--color-bg-element);border-radius:var(--radius-element);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.drop-label{font-size:var(--text-body);font-weight:var(--weight-medium);color:var(--color-text-primary);margin:0}.drop-sub{font-size:var(--text-small);color:var(--color-text-tertiary);margin:0}.drop-hint{font-size:var(--text-small);color:var(--color-text-tertiary);margin:var(--space-2) 0 0}.history-header{margin-bottom:var(--space-5)}.history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4)}.empty-state{color:var(--color-text-tertiary);font-size:var(--text-body);padding:var(--space-7) 0}.history-card{cursor:pointer;transition:border-color var(--transition),box-shadow var(--transition);display:flex;flex-direction:column;gap:var(--space-2);position:relative}.history-card.hc-deleting{cursor:default;pointer-events:none;opacity:.6}.hc-deleting-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:var(--color-bg-card);border-radius:inherit;font-size:.85rem;color:var(--color-text-secondary)}.history-card:hover{border-color:var(--color-border-strong);box-shadow:0 2px 8px #0000000f}.hc-header{display:flex;justify-content:space-between;align-items:flex-start}.hc-name{font-size:var(--text-body);font-weight:var(--weight-semibold);color:var(--color-text-primary);margin:0;word-break:break-all;max-width:100%}.hc-meta{display:flex;gap:var(--space-2);font-size:var(--text-small);color:var(--color-text-secondary)}.hc-date{font-size:var(--text-small);color:var(--color-text-tertiary);margin:0}.btn-icon{background:transparent;border:none;padding:var(--space-1);color:var(--color-text-tertiary);border-radius:var(--radius-button);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color var(--transition),background var(--transition);flex-shrink:0}.btn-icon:hover{color:var(--color-text-primary);background:var(--color-bg-element)}.ws-header{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap;padding:var(--space-3) var(--space-5);background:var(--color-bg-card);border-bottom:1px solid var(--color-border)}.ws-filename{font-weight:var(--weight-semibold);color:var(--color-text-primary);font-size:var(--text-small);color:var(--color-text-secondary);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.back-btn{display:flex;align-items:center;gap:var(--space-2);padding:6px 14px;font-size:var(--text-small)}.ws-main{display:flex;height:calc(100vh - 58px)}.ws-tabs{display:none}.ws-tab{flex:1;background:transparent;border:none;border-bottom:2px solid transparent;border-radius:0;padding:10px 0;font-size:var(--text-small);font-weight:var(--weight-medium);color:var(--color-text-secondary)}.ws-tab.active{color:var(--color-text-primary);border-bottom-color:var(--color-text-primary)}.viewer-placeholder{color:var(--color-text-tertiary);text-align:center;padding:var(--space-7);display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}@media(max-width:900px){.hub-main{grid-template-columns:1fr;padding:var(--space-6) var(--space-4);gap:var(--space-6)}}@media(max-width:800px){.ws-tabs{display:flex;background:var(--color-bg-card);border-bottom:1px solid var(--color-border)}#workspace{display:flex;flex-direction:column;height:calc(100dvh - 58px)}.ws-main{flex:1;min-height:0;height:auto}#viewer,#results-pane{display:none;width:100%;min-width:0}.ws-main.show-doc #viewer,.ws-main.show-analysis #results-pane{display:block}#results-pane{border-left:none}}
