:root{--bg: #f9fafb;--surface: #ffffff;--border: #e4e8ec;--border-strong: #cfd6dd;--text: #2f3a45;--text-2: #5c6b79;--text-3: #8b97a3;--accent: #1e3a5f;--accent-hover: #2c4d78;--accent-soft: #eef2f7;--accent-soft-2: #e3eaf3;--danger: #a23b2e;--danger-soft: #faf0ee;--warn: #8a6100;--warn-soft: #faf4e4;--ok: #2e6b46;--ok-soft: #ecf5ef;--neutral-soft: #eef1f4;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-display: Georgia, "Times New Roman", serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--radius: 3px;--header-h: 56px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:13px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:5px var(--s2)}input::placeholder,textarea::placeholder{color:var(--text-3)}input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}a{color:var(--accent)}.btn{display:inline-flex;align-items:center;gap:var(--s2);padding:6px var(--s3);font-size:13px;font-weight:500;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--neutral-soft)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{color:#fff;background:var(--accent);border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn-ghost:hover:not(:disabled){background:var(--neutral-soft);color:var(--text)}.btn-link{border:none;background:none;padding:0;font-size:inherit;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.btn.is-active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.chip{display:inline-flex;align-items:center;gap:var(--s1);padding:1px var(--s2);font-size:11.5px;font-weight:500;letter-spacing:.01em;border-radius:10px;border:1px solid var(--border);background:var(--neutral-soft);color:var(--text-2);white-space:nowrap}.chip-ok{background:var(--ok-soft);border-color:#cde4d5;color:var(--ok)}.chip-warn{background:var(--warn-soft);border-color:#ecdcae;color:var(--warn)}.chip-danger{background:var(--danger-soft);border-color:#eccfc9;color:var(--danger)}.chip-accent{background:var(--accent-soft);border-color:var(--accent-soft-2);color:var(--accent)}.warn-glyph{display:inline-block;width:0;height:0;margin-left:var(--s1);border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:9px solid var(--warn);vertical-align:baseline}.skeleton{display:inline-block;height:12px;border-radius:var(--radius);background:linear-gradient(90deg,var(--neutral-soft) 25%,var(--accent-soft) 50%,var(--neutral-soft) 75%);background-size:200% 100%;animation:skeleton-sweep 1.4s ease infinite}@keyframes skeleton-sweep{0%{background-position:200% 0}to{background-position:-200% 0}}.page-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--text-3);font-size:13px}.brand{font-family:var(--font-ui);font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);text-decoration:none}.error-banner{margin:var(--s3) 0;padding:var(--s2) var(--s3);font-size:13px;color:var(--danger);background:var(--danger-soft);border:1px solid #eccfc9;border-radius:var(--radius)}.empty-note{padding:var(--s5);color:var(--text-3);font-size:13px;text-align:center}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{width:380px;padding:var(--s5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.login-card .brand{display:block;margin-bottom:var(--s1)}.login-title{margin:0 0 var(--s4);font-family:var(--font-display);font-size:22px;font-weight:400;color:var(--text)}.login-sub{margin:0 0 var(--s4);font-size:13px;color:var(--text-2)}.field{margin-bottom:var(--s3)}.field label{display:block;margin-bottom:var(--s1);font-size:12px;font-weight:600;color:var(--text-2)}.field input{width:100%;padding:7px var(--s2)}.login-card .btn{width:100%;justify-content:center;margin-top:var(--s1);padding:8px var(--s3)}.totp-qr{display:flex;justify-content:center;margin:var(--s4) 0;padding:var(--s3);background:#fff;border:1px solid var(--border);border-radius:var(--radius)}.totp-manual{margin:var(--s2) 0 var(--s3);font-size:13px}.totp-manual>summary{cursor:pointer;color:var(--accent);-webkit-user-select:none;user-select:none}.totp-secret{margin:var(--s3) 0;padding:var(--s3);font-family:var(--font-mono);font-size:13px;word-break:break-all;background:var(--neutral-soft);border:1px solid var(--border);border-radius:var(--radius)}.matters-page{max-width:880px;margin:0 auto;padding:var(--s5) var(--s4)}.matters-topbar{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--s5)}.matters-topbar .who{font-size:12px;color:var(--text-3)}.matters-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--s4)}.matters-head h1{margin:0;font-family:var(--font-display);font-size:26px;font-weight:400}.matters-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);font-size:13px}.matters-table th{padding:var(--s2) var(--s3);text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);border-bottom:1px solid var(--border-strong);background:var(--bg)}.matters-table td{padding:10px var(--s3);border-bottom:1px solid var(--border);vertical-align:middle}.matters-table tbody tr{cursor:pointer}.matters-table tbody tr:hover{background:var(--accent-soft)}.matters-table .code{font-family:var(--font-mono);font-size:12px;color:var(--text-2);white-space:nowrap}.matters-table .name{font-family:var(--font-display);font-size:15px}.matters-table .num{text-align:right;font-variant-numeric:tabular-nums}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2f3a456b;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;z-index:40}.modal{width:440px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s3) var(--s4);border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:15px;font-weight:600}.modal-body{padding:var(--s4)}.modal-foot{display:flex;justify-content:flex-end;gap:var(--s2);padding:var(--s3) var(--s4);border-top:1px solid var(--border);background:var(--bg)}.modal .field input{width:100%}.workbench{display:flex;flex-direction:column;height:100vh;overflow:hidden}.wb-header{display:flex;align-items:center;gap:var(--s4);height:var(--header-h);padding:0 var(--s4);background:var(--surface);border-bottom:1px solid var(--border-strong);flex:none}.wb-matter{display:flex;align-items:baseline;gap:var(--s2);min-width:0}.wb-matter .code{font-family:var(--font-mono);font-size:11px;color:var(--text-3);white-space:nowrap}.wb-matter .name{font-family:var(--font-display);font-size:18px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wb-actions{display:flex;align-items:center;gap:var(--s2);margin-left:auto}.wb-main{display:flex;flex:1;min-height:0;position:relative}.wb-left{width:58%;min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--border-strong);background:var(--surface)}.wb-right{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--surface);position:relative}.searchbar{display:flex;align-items:center;gap:var(--s2);flex:1;max-width:480px}.searchbar input{flex:1;padding:6px var(--s3)}.chrono-wrap{flex:1;min-height:0;overflow:auto}.chrono-banner{display:flex;align-items:center;gap:var(--s3);padding:var(--s2) var(--s4);font-size:12.5px;color:var(--accent);background:var(--accent-soft);border-bottom:1px solid var(--accent-soft-2);flex:none}.chrono-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.chrono-table th{position:sticky;top:0;z-index:2;padding:6px var(--s2);text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);background:var(--bg);border-bottom:1px solid var(--border-strong)}.chrono-table .filters th{top:28px;padding:var(--s1) var(--s2) var(--s2);background:var(--bg);border-bottom:1px solid var(--border-strong)}.chrono-table .filters input,.chrono-table .filters select{width:100%;font-size:12px;padding:3px 6px}.chrono-table .filters .dates{display:flex;gap:var(--s1)}.chrono-table td{padding:7px var(--s2);border-bottom:1px solid var(--border);vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chrono-table tbody tr{cursor:pointer}.chrono-table tbody tr:hover{background:var(--accent-soft)}.chrono-table tbody tr.selected{background:var(--accent-soft-2);box-shadow:inset 2px 0 0 var(--accent)}.chrono-table .col-n{width:52px}.chrono-table .col-score{width:64px}.chrono-table .col-date{width:92px}.chrono-table .col-from{width:168px}.chrono-table .col-subject{width:auto}.chrono-table .col-summary{width:34%}.chrono-table td.n{color:var(--text-3);font-variant-numeric:tabular-nums}.chrono-table td.date{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-2)}.chrono-table td.score{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600}.chrono-table td.summary{color:var(--text-3);font-size:12.5px}.chrono-foot{display:flex;justify-content:center;padding:var(--s3)}.detail{flex:1;min-height:0;overflow:auto;padding:var(--s4) var(--s5)}.detail-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-3);font-size:13px}.detail h2{margin:0 0 var(--s2);font-family:var(--font-display);font-size:18px;font-weight:400;line-height:1.3}.detail-chips{display:flex;flex-wrap:wrap;gap:var(--s1);margin-bottom:var(--s3)}.detail-meta{display:grid;grid-template-columns:52px 1fr;gap:var(--s1) var(--s3);padding:var(--s3) 0;margin-bottom:var(--s3);border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-size:13px}.detail-meta dt{margin:0;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);line-height:19px}.detail-meta dd{margin:0;color:var(--text);word-break:break-word}.detail-section{margin-bottom:var(--s4)}.detail-section>h3{margin:0 0 var(--s2);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.detail-body{margin:0;padding:var(--s3);max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-family:var(--font-ui);font-size:13px;line-height:1.55;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.attachment-list{margin:0;padding:0;list-style:none;font-size:13px}.attachment-list li{display:flex;align-items:baseline;gap:var(--s2);padding:var(--s1) 0}.attachment-list .size{color:var(--text-3);font-size:12px}.extract-grid{display:grid;grid-template-columns:1fr;gap:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.extract-row{display:grid;grid-template-columns:148px 1fr;border-bottom:1px solid var(--border)}.extract-row:last-child{border-bottom:none}.extract-row dt{margin:0;padding:var(--s2) var(--s3);font-size:12px;font-weight:600;color:var(--text-2);background:var(--bg);border-right:1px solid var(--border)}.extract-row dd{margin:0;padding:var(--s2) var(--s3);font-size:12.5px;white-space:pre-wrap;word-break:break-word}.extract-row dd.failed{color:var(--danger);background:var(--danger-soft);font-weight:600}.extract-row dd.empty{color:var(--text-3)}.thread-box{display:flex;align-items:baseline;gap:var(--s2);font-size:13px}.chat-drawer{position:absolute;top:0;right:0;bottom:0;width:min(440px,100%);display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--border-strong);transform:translate(100%);transition:transform .16s ease;z-index:20}.chat-drawer.open{transform:translate(0)}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s3) var(--s4);border-bottom:1px solid var(--border);flex:none}.chat-head h2{margin:0;font-size:14px;font-weight:600}.chat-messages{flex:1;min-height:0;overflow:auto;padding:var(--s4);display:flex;flex-direction:column;gap:var(--s3)}.chat-msg{max-width:88%;font-size:13px;line-height:1.5}.chat-msg.user{align-self:flex-end}.chat-msg.assistant{align-self:flex-start}.chat-bubble{padding:var(--s2) var(--s3);border-radius:var(--radius);white-space:pre-wrap;word-break:break-word}.chat-msg.user .chat-bubble{background:var(--accent);color:#fff}.chat-msg.assistant .chat-bubble{background:var(--bg);border:1px solid var(--border)}.chat-citations{display:flex;flex-wrap:wrap;gap:var(--s1);margin-top:var(--s1)}.citation-chip{display:inline-block;padding:1px var(--s2);font-size:11.5px;font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-soft-2);border-radius:10px;cursor:pointer;white-space:nowrap}.citation-chip:hover{background:var(--accent-soft-2)}.chat-pending{align-self:flex-start;color:var(--text-3);font-size:12px}.chat-input{display:flex;gap:var(--s2);padding:var(--s3) var(--s4);border-top:1px solid var(--border);flex:none}.chat-input textarea{flex:1;resize:none;min-height:38px;max-height:120px}.chat-error{padding:var(--s1) var(--s4);font-size:12px;color:var(--danger)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s2);padding:var(--s5) var(--s4);margin-bottom:var(--s3);text-align:center;border:1.5px dashed var(--border);border-radius:var(--radius);background:var(--neutral-soft);color:var(--text-soft);cursor:pointer;transition:border-color .12s ease,background .12s ease}.dropzone:hover{border-color:var(--accent)}.dropzone-active{border-color:var(--accent);border-style:solid;background:var(--accent-soft, #eef2f7);color:var(--accent)}.dropzone-icon{color:var(--accent)}.dropzone-main{font-size:14px;color:var(--text)}.dropzone-link{color:var(--accent);text-decoration:underline}.dropzone-hint{font-size:12px;color:var(--text-soft)}.upload-remove{flex:none;width:22px;height:22px;line-height:1;font-size:16px;color:var(--text-soft);background:none;border:none;border-radius:var(--radius);cursor:pointer}.upload-remove:hover{color:var(--danger, #b3261e);background:var(--neutral-soft)}.upload-row{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) 0;border-bottom:1px solid var(--border);font-size:13px}.upload-row:last-child{border-bottom:none}.upload-row .fname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress{width:110px;height:6px;background:var(--neutral-soft);border-radius:3px;overflow:hidden;flex:none}.progress>div{height:100%;background:var(--accent);transition:width .12s linear}.uploads-panel{border-top:1px solid var(--border-strong);background:var(--surface);flex:none;max-height:40%;display:flex;flex-direction:column}.uploads-panel-head{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--s2) var(--s4);font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-2);background:var(--bg);border:none;border-bottom:1px solid var(--border);cursor:pointer}.uploads-panel-body{overflow:auto;padding:0 var(--s4)}.upload-item{display:flex;flex-direction:column;gap:var(--s1);padding:var(--s2) 0;border-bottom:1px solid var(--border);font-size:12.5px}.upload-item:last-child{border-bottom:none}.upload-item .line{display:flex;align-items:center;gap:var(--s2)}.upload-item .fname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-item .meta{color:var(--text-3);font-size:11.5px}.upload-item .error-detail{color:var(--danger);font-size:12px}.upload-item .stale{color:var(--warn);font-size:12px}
