:root{--bg:#f6f7f9;--surface:#fff;--text:#1c1f24;--muted:#6b7280;--border:#e3e6ea;--primary:#2f5fdc;--primary-text:#fff;--error:#b42318;--error-bg:#fef3f2;--side-panel-width:400px;--translation-width:0px;color:var(--text);background:var(--bg);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Apple SD Gothic Neo,Noto Sans KR,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2{margin:0 0 .5rem;font-weight:600}h1{font-size:1.25rem}h2{font-size:1rem}input,button{font:inherit}input[type=text],input[type=search],input[type=password],input[type=number],input:not([type]){border:1px solid var(--border);background:var(--surface);border-radius:6px;width:100%;padding:.5rem .65rem}label{color:var(--muted);flex-direction:column;gap:.25rem;font-size:.875rem;display:flex}.btn{white-space:nowrap;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-align:center;border-radius:6px;padding:.5rem .9rem;display:inline-block}.btn:hover{border-color:#c9cdd3;text-decoration:none}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn-block{width:100%;display:block}.btn-sm{padding:.3rem .6rem;font-size:.85rem}.muted{color:var(--muted)}.error{color:var(--error);background:var(--error-bg);border:1px solid #fecdca;border-radius:6px;margin:.5rem 0;padding:.5rem .75rem}.notice{background:#eef3ff;border:1px solid #c7d7fb;border-radius:6px;margin:.5rem 1rem;padding:.5rem .75rem}.center{text-align:center;padding:2rem}.stack{flex-direction:column;gap:.75rem;display:flex}.auth-page{place-items:center;min-height:100%;padding:1rem;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:.75rem;width:100%;max-width:380px;padding:1.5rem;display:flex}.divider{color:var(--muted);align-items:center;gap:.5rem;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";border-top:1px solid var(--border);flex:1}.page{flex-direction:column;min-height:100%;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.6rem 1rem;display:flex}.topbar h1{margin:0}.topbar h1 a{color:inherit}.topbar-right{align-items:center;gap:.75rem;margin-left:auto;display:flex}.library{flex-direction:column;gap:1rem;width:100%;max-width:960px;margin:0 auto;padding:1rem;display:flex}.upload-form{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem}.upload-row{grid-template-columns:1fr auto 1fr auto;align-items:end;gap:.75rem;display:grid}.upload-or{padding-bottom:.6rem}.upload-actions,.search-form{gap:.5rem;display:flex}.paper-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.paper-row{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:.75rem 1rem;display:flex}.paper-title{font-weight:600}.paper-authors{font-size:.875rem}.paper-meta{white-space:nowrap;align-items:center;gap:.6rem;font-size:.85rem;display:flex}.badge{color:#374151;background:#eef0f3;border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-queued{background:#f3f4f6}.badge-extracting,.badge-summarizing{color:#92400e;background:#fff4e5}.badge-ready{color:#166534;background:#e7f6ec}.badge-failed{background:var(--error-bg);color:var(--error)}.badge-deleted{color:#6b7280;background:#e5e7eb;text-decoration:line-through}.reader-page{height:100vh}.reader-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:1rem;overflow:hidden}.back{white-space:nowrap}.reader-grid{grid-template-columns:minmax(0, 1fr) var(--side-panel-width) var(--translation-width);flex:1;grid-template-areas:"pdf panel translation";min-height:0;display:grid}.pdf-viewer{border-right:1px solid var(--border);flex-direction:column;grid-area:pdf;min-width:0;min-height:0;display:flex}.pdf-toolbar{background:var(--surface);border-bottom:1px solid var(--border);justify-content:center;align-items:center;gap:.5rem;padding:.4rem;display:flex}.pdf-toolbar button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:6px;padding:.25rem .6rem}.pdf-toolbar button:disabled{opacity:.4;cursor:default}.pdf-page-form{align-items:center;gap:.25rem;display:flex}.pdf-page-input{text-align:center;width:4.5rem;padding:.25rem .4rem}.pdf-canvas{background:#e9ebee;flex:1;justify-content:center;padding:1rem;display:flex;overflow:auto}.pdf-canvas .react-pdf__Page{box-shadow:0 1px 6px #0003}.side-panel{background:var(--surface);flex-direction:column;grid-area:panel;min-height:0;display:flex}.translation-panel{grid-area:translation;overflow:hidden}.translation-panel[hidden]{display:none}.reader-grid.translation-open{grid-template-columns:minmax(0, 1fr) minmax(0, 1fr) var(--side-panel-width);grid-template-areas:"pdf translation panel"}.reader-grid.translation-open .translation-panel{border-right:1px solid var(--border);background:var(--bg);flex-direction:column;min-width:0;min-height:0;display:flex}.translation-body{flex-direction:column;flex:1;min-height:0;display:flex}.translation-body .pdf-viewer{border-right:none;flex:1}.translation-toolbar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.4rem .6rem;font-size:.85rem;display:flex}.translation-quality select{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:.2rem .4rem}.translation-meta{font-size:.8rem}.translation-status{border-bottom:1px solid var(--border);background:#f3f4f6;padding:.5rem .75rem;font-size:.9rem}.translation-status p{margin:.1rem 0}.translation-body>.error{border-bottom:1px solid var(--border);margin:0;padding:.5rem .75rem}.translation-empty .translation-actions{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.tabs{border-bottom:1px solid var(--border);display:flex}.tab{cursor:pointer;color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:.6rem}.tab.active{color:var(--text);border-bottom-color:var(--primary);font-weight:600}.tabpanel{flex:1;overflow:auto}.panel-body{padding:1rem}.processing{background:#f3f4f6;border-radius:8px;padding:.75rem 1rem}.summary-md{word-break:break-word;font-size:.95rem}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md h1,.md h2,.md h3,.md h4{margin:1rem 0 .4rem;line-height:1.3}.md h1{font-size:1.15rem}.md h2{border-bottom:1px solid var(--border,#e5e7eb);padding-bottom:.2rem;font-size:1.05rem}.md h3{font-size:1rem}.md p,.md ul,.md ol,.md table,.md pre,.md blockquote{margin:.5rem 0}.md ul,.md ol{padding-left:1.4rem}.md li+li{margin-top:.2rem}.md code{background:#f3f4f6;border-radius:4px;padding:.05rem .3rem;font-size:.88em}.md pre{background:#f3f4f6;border-radius:6px;padding:.6rem .8rem;overflow-x:auto}.md pre code{background:0 0;padding:0}.md table{border-collapse:collapse;font-size:.9em;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--border,#e5e7eb);text-align:left;padding:.25rem .5rem}.md th{background:#f9fafb}.md blockquote{border-left:3px solid var(--border,#e5e7eb);color:#4b5563;padding-left:.7rem}.md .katex-display{margin:.6rem 0;overflow:auto hidden}.summary-meta{margin-top:1rem;font-size:.8rem}@media (width<=900px){:root{--side-panel-width:320px}.upload-row{grid-template-columns:1fr}.upload-or{padding:0}}@media (width<=700px){.reader-page{height:auto}.reader-grid,.reader-grid.translation-open{grid-template-columns:1fr;grid-template-areas:"pdf""translation""panel"}.reader-grid.translation-open .translation-panel,.pdf-viewer{border-right:none;border-bottom:1px solid var(--border);height:70vh}}.btn-danger{color:var(--error)}.btn.active{border-color:var(--primary);color:var(--primary)}.thread-list-panel{flex-direction:column;gap:.75rem;display:flex}.thread-list-head{justify-content:space-between;align-items:center;display:flex}.thread-list-head h2{margin:0}.thread-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.thread-row{text-align:left;border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;flex-direction:column;gap:.15rem;width:100%;padding:.6rem .75rem;display:flex}.thread-row:hover{border-color:#c9cdd3}.thread-row-title{font-weight:600}.thread-row-meta{font-size:.8rem}.vis-badge{margin-left:.3rem;font-size:.85em}.thread-chat{flex-direction:column;height:100%;min-height:0;display:flex}.thread-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}.thread-title{text-overflow:ellipsis;white-space:nowrap;cursor:text;flex:1;min-width:0;margin:0;font-size:.95rem;overflow:hidden}.thread-title-input{flex:1;min-width:8rem;padding:.25rem .5rem}.thread-actions{gap:.35rem;display:flex}.thread-readonly{font-size:.8rem}.msg-list{flex-direction:column;flex:1;gap:.6rem;min-height:0;padding:.75rem;display:flex;overflow:auto}.msg{border-radius:10px;max-width:88%;padding:.5rem .75rem;font-size:.92rem}.msg-user{background:var(--primary);color:var(--primary-text);border-bottom-right-radius:2px;align-self:flex-end}.msg-user .muted{color:#fffc}.msg-assistant{background:#f3f4f6;border-bottom-left-radius:2px;align-self:flex-start}.msg-assistant.streaming:after{content:"▍";color:var(--muted);animation:1s steps(2,end) infinite blink}@keyframes blink{50%{opacity:0}}.msg-text{word-break:break-word}.msg-cost{text-align:right;margin-top:.3rem;font-size:.72rem}.msg-attachments{flex-wrap:wrap;gap:.4rem;margin-top:.4rem;display:flex}.att-thumb{flex-direction:column;align-items:center;gap:.15rem;margin:0;font-size:.72rem;display:flex}.att-thumb img{background:var(--surface);border:1px solid #fff6;border-radius:4px;max-width:120px;max-height:120px}.cite-wrap{display:inline-block;position:relative}.cite-chip{color:var(--primary);cursor:pointer;vertical-align:baseline;background:#eef3ff;border:1px solid #c7d7fb;border-radius:999px;margin:0 .1rem;padding:0 .35rem;font-size:.78em;line-height:1.4;display:inline-block}.cite-chip:hover{background:#dfe8ff}.cite-chip-nopage{color:var(--muted);background:#f3f4f6;border-style:dashed}.cite-popover{z-index:5;border:1px solid var(--border);background:var(--surface);width:16rem;max-width:70vw;color:var(--text);border-radius:6px;padding:.4rem .6rem;font-size:.8rem;position:absolute;bottom:100%;left:0;box-shadow:0 2px 8px #0000001f}.composer{border-top:1px solid var(--border);background:var(--surface);flex-direction:column;gap:.4rem;padding:.6rem .75rem;display:flex}.composer-tools{align-items:center;gap:.4rem;display:flex}.glossary-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.glossary-list{margin:0}.glossary-item{border-bottom:1px solid var(--border,#e5e7eb);padding:.45rem 0}.glossary-item dt{align-items:center;gap:.4rem;font-weight:600;display:flex}.glossary-item dd{margin:.2rem 0 0;font-size:.92rem}.glossary-quote{border-left:2px solid var(--border,#e5e7eb);margin:.25rem 0 0;padding-left:.6rem;font-size:.8rem}.link-btn{cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.badge-manual{color:#374151;background:#f3f4f6}.page-input{width:5rem}.glossary-group h2 .count{font-size:.85rem;font-weight:400}tr.warn td{background:#fff7ed}.mark-controls{align-items:center;gap:.4rem;display:flex}.mark-state{padding:.2rem .4rem;font-size:.85rem}.star{color:#d97706;margin-right:.3rem}.badge-read-reading{color:#1d4ed8;background:#eaf3ff}.badge-read-done{color:#15803d;background:#e7f7ee}.memo-form{border-bottom:1px solid var(--border,#e5e7eb);flex-direction:column;gap:.4rem;padding:.5rem 1rem;display:flex}.memo-form textarea{width:100%;font:inherit;padding:.4rem}.memo-cell{white-space:pre-wrap;max-width:28rem}.composer-hint{margin:0;font-size:.8rem}.chip-mode{margin-bottom:.25rem;font-size:.72rem;font-weight:600}.chip-mode-review{color:#9a4b00;background:#fff1e6}.chip-mode-equation{color:#1d4ed8;background:#eaf3ff}.composer-count{margin-left:auto;font-size:.78rem}.composer-row{align-items:flex-end;gap:.5rem;display:flex}.composer-input{resize:vertical;border:1px solid var(--border);min-height:2.5rem;font:inherit;border-radius:6px;flex:1;padding:.5rem .65rem}.chips{flex-wrap:wrap;gap:.35rem;display:flex}.chip{background:#eef0f3;border-radius:999px;align-items:center;gap:.25rem;padding:.1rem .5rem;font-size:.78rem;display:inline-flex}.chip-x{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:0 .1rem;line-height:1}.pdf-page-wrap{position:relative}.pdf-page-wrap.selecting{cursor:crosshair}.pdf-select-overlay{z-index:3;touch-action:none;-webkit-user-select:none;user-select:none;background:#2f5fdc0f;outline:none;position:absolute;inset:0}.pdf-select-rect{border:2px solid var(--primary);pointer-events:none;background:#2f5fdc2e;position:absolute}.pdf-select-banner{background:#eef3ff;border-bottom:1px solid #c7d7fb;justify-content:center;align-items:center;gap:.75rem;padding:.35rem;font-size:.85rem;display:flex}.topnav{gap:.25rem;display:flex}.topnav a{color:var(--muted);border-radius:6px;padding:.3rem .6rem}.topnav a:hover{background:var(--bg);text-decoration:none}.topnav a.active{color:var(--text);background:#eef3ff;font-weight:600}.role-badge{color:var(--primary);background:#eef3ff;border-radius:999px;margin-left:.35rem;padding:0 .4rem;font-size:.72rem;font-weight:600}.page-title{margin:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem}.card h2{margin-bottom:.75rem}.card-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;display:grid}.count{color:var(--muted);margin-left:.35rem;font-size:.9rem;font-weight:400}.table{border-collapse:collapse;width:100%;font-size:.9rem}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:.45rem .6rem}.table th{color:var(--muted);white-space:nowrap;font-size:.8rem;font-weight:600}.table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.table tr.current{background:#eef3ff}.table .error-cell{text-overflow:ellipsis;white-space:nowrap;max-width:18rem;color:var(--error);overflow:hidden}.th-sort{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}.row-actions{white-space:nowrap;gap:.35rem;display:flex}.stat-row{flex-wrap:wrap;gap:1.5rem;display:flex}.stat-list{flex-wrap:wrap;gap:1.25rem;margin:0;display:flex}.stat{flex-direction:column;gap:.1rem;display:flex}.stat dd{margin:0}.stat-label{color:var(--muted);font-size:.78rem}.stat-value{font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:600}.stat-value.small{font-size:.95rem;font-weight:500}.badge-vis-public{color:#166534;background:#e7f6ec}.badge-vis-private{background:#eef0f3}.badge-user-pending{color:#92400e;background:#fff4e5}.badge-user-approved{color:#166534;background:#e7f6ec}.badge-user-rejected,.badge-user-disabled{color:#6b7280;background:#e5e7eb}.badge-running,.badge-started{color:#92400e;background:#fff4e5}.badge-done,.badge-succeeded{color:#166534;background:#e7f6ec}.badge-current{background:var(--primary);color:var(--primary-text);margin-left:.4rem}.admin-tabs{background:var(--surface);border:1px solid var(--border);border-radius:10px 10px 0 0}.admin-tabs .tab{flex:none;padding:.6rem 1rem}.admin-panel{padding-top:.25rem}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.inline-form label{min-width:10rem}.inline-form label.grow{flex:1}.inline-form select,.inline-label select{border:1px solid var(--border);background:var(--surface);font:inherit;border-radius:6px;padding:.5rem .65rem}.inline-label{flex-direction:row;align-items:center;gap:.5rem;min-width:0}.usage-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.pending-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.pending-row{background:#fffaf2;border:1px solid #fde7c7;border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem .75rem;display:flex}.budget-bar-wrap{flex-direction:column;gap:.3rem;margin:.5rem 0;display:flex}.budget-bar-head{justify-content:space-between;font-size:.9rem;display:flex}.budget-bar{background:#e9ebee;border-radius:999px;height:10px;overflow:hidden}.budget-bar-fill{background:var(--primary);height:100%;transition:width .3s}.budget-warn .budget-bar-fill{background:#f59e0b}.budget-high .budget-bar-fill{background:#ea580c}.budget-stop .budget-bar-fill{background:var(--error)}.bar-list{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.bar-row{grid-template-columns:6.5rem 1fr 5rem;align-items:center;gap:.5rem;font-size:.85rem;display:grid}.bar-label{color:var(--muted);font-variant-numeric:tabular-nums}.bar-track{background:#e9ebee;border-radius:4px;height:12px;overflow:hidden}.bar-fill{background:var(--primary);height:100%;display:block}.bar-value{text-align:right;font-variant-numeric:tabular-nums}.flag-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.flag-row{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;grid-template-areas:"switch state""desc desc""cap cap";gap:.2rem 1rem;padding:.75rem 0;display:grid}.flag-row:last-child{border-bottom:none}.flag-switch{color:var(--text);cursor:pointer;flex-direction:row;grid-area:switch;align-items:center;gap:.6rem;font-size:1rem}.flag-switch input{width:1.1rem;height:1.1rem}.flag-label{font-weight:600}.flag-desc{grid-area:desc;margin:0;font-size:.85rem}.flag-cap{grid-area:cap;align-items:flex-end;gap:.5rem;margin-top:.4rem;display:flex}.flag-cap input[type=number]{width:8rem}.flag-state{color:#166534;white-space:nowrap;grid-area:state;font-size:.8rem}
