:root{--bg:#f5f7fb;--panel:#fff;--ink:#172033;--muted:#6c7484;--line:#e5e9f0;--brand:#152238;--brand2:#263f66;--soft:#eef3fa;--danger:#a12828;--gold:#9b7625;--shadow:0 14px 40px rgba(21,34,56,.10)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Segoe UI",Tahoma,Arial,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.topbar{position:sticky;top:0;z-index:20;min-height:74px;display:flex;align-items:center;justify-content:space-between;padding:10px 24px;background:rgba(255,255,255,.95);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:42px;height:42px;border-radius:13px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:24px;font-weight:800}.brand h1{font-size:18px;margin:0}.brand p{font-size:12px;margin:3px 0 0;color:var(--muted)}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
button{border:0;border-radius:11px;padding:10px 14px}.primary{background:var(--brand);color:#fff}.primary:hover{background:var(--brand2)}.ghost{background:var(--soft);color:var(--ink)}.danger{background:#f8e8e8;color:var(--danger)}.icon-btn{width:40px;height:40px;padding:0;background:transparent;display:grid;place-items:center}.small{padding:7px 10px;font-size:13px}.wide{width:100%;margin-top:12px}.mobile-only{display:none}
.layout{display:grid;grid-template-columns:295px minmax(0,1fr);min-height:calc(100vh - 118px)}.sidebar{border-left:1px solid var(--line);background:#fbfcfe;padding:18px;position:sticky;top:74px;height:calc(100vh - 74px);overflow:auto}.search-row{display:grid;grid-template-columns:1fr auto;gap:7px}.search-wrap input,.search-wrap select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}.search-wrap select{margin-top:8px}.search-hint{font-size:11px;line-height:1.6;color:var(--muted);margin:7px 2px}.index-section{margin-top:22px}.section-title{display:flex;justify-content:space-between;font-weight:700;font-size:14px;margin-bottom:9px}.count{color:var(--muted);font-weight:500}.index-list{display:flex;flex-direction:column;gap:5px}.index-list button{text-align:right;background:transparent;padding:8px 10px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.index-list button:hover,.index-list button.active{background:var(--soft)}.index-list.compact button{font-size:13px}
.reader{padding:34px;max-width:980px;width:100%;margin:0 auto}.reader-empty{text-align:center;padding:110px 20px}.book-mark{font-size:62px;color:var(--gold)}.reader-empty h2{font-size:30px;margin:8px 0}.reader-empty p{color:var(--muted);margin:0 auto 20px}.reader-article{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:32px 34px;box-shadow:0 5px 22px rgba(21,34,56,.05);min-height:64vh}.reader-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.reader-head h2{font-size:30px;margin:0;line-height:1.45}.reader-meta{color:var(--muted);font-size:13px;margin-top:8px}.reader-actions{display:flex;gap:8px}.reader-tags{display:flex;gap:7px;flex-wrap:wrap;margin:18px 0}.reader-tags span{background:var(--soft);padding:6px 10px;border-radius:999px;font-size:12px}.reader-text{white-space:pre-wrap;line-height:2.15;font-size:19px;border-top:1px solid var(--line);padding-top:26px}.link-indicator-wrap{text-align:center;margin:-10px 0 18px}.link-indicator{background:#fff9e8;border:1px solid #ead9a5;color:#6e5317;padding:8px 14px;border-radius:999px}.link-indicator span{margin-left:6px}.links-panel{margin-top:28px;border-top:2px solid #ead9a5;padding-top:20px}.links-head{display:flex;justify-content:space-between;align-items:flex-start}.links-head h3{margin:0}.links-head p{margin:4px 0;color:var(--muted)}.links-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.link-card{border:1px solid var(--line);border-radius:13px;padding:13px;background:#fbfcfe}.link-card button{background:transparent;padding:0;text-align:right;font-weight:800;color:var(--brand)}.link-type{display:inline-block;background:#fff2ca;color:#765812;border-radius:999px;padding:4px 8px;font-size:11px;margin-bottom:7px}.link-reason{color:var(--muted);font-size:13px;line-height:1.7;margin-top:5px}.link-direction{font-size:12px;margin-top:5px}
.app-footer{min-height:44px;border-top:1px solid var(--line);background:#fff;color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 24px;font-size:12px}
.backdrop{position:fixed;inset:0;background:rgba(10,15,25,.45);z-index:40}.modal,.drawer{position:fixed;z-index:50;background:#fff;box-shadow:var(--shadow);border:1px solid var(--line)}.modal{width:min(760px,calc(100vw - 24px));max-height:90vh;overflow:auto;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:18px;padding:22px}.drawer{top:0;left:0;height:100vh;width:min(550px,100vw);padding:22px;overflow:auto}.modal-head,.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.modal-head h3,.drawer-head h3{margin:0}.modal-head p,.drawer-head p{margin:5px 0 0;color:var(--muted)}.tabs{display:flex;gap:8px;margin:20px 0 12px}.tab{background:var(--soft)}.tab.active{background:var(--brand);color:#fff}textarea,input,select{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 13px;background:#fff;color:var(--ink)}textarea{resize:vertical;line-height:1.7}label{display:block;margin-top:13px}label>span{display:block;font-weight:700;font-size:13px;margin-bottom:7px}label small{display:block;color:var(--muted);margin-top:5px}.file-drop{border:2px dashed var(--line);padding:35px;text-align:center;border-radius:16px}.file-drop input{display:none}.file-drop span,.file-drop strong,.file-drop small{display:block}.file-icon{font-size:36px}.file-name{text-align:center;margin-top:10px;color:var(--muted)}.analysis-actions,.approve-row{display:flex;align-items:center;gap:10px;margin-top:16px;flex-wrap:wrap}.status{font-size:13px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.suggestions{border-top:1px solid var(--line);margin-top:18px;padding-top:5px}.relation-preview{background:#fff9e8;border:1px solid #ead9a5;padding:12px;border-radius:12px;margin-top:14px}.relation-preview span{float:left}.relation-preview p{margin:6px 0 0;color:var(--muted);font-size:12px}.quick-prompts{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.quick-prompts button{background:var(--soft)}.result-wrap{margin-top:18px}.result-head{display:flex;justify-content:space-between;align-items:center}.result-wrap pre{white-space:pre-wrap;background:#f7f9fc;border:1px solid var(--line);padding:14px;border-radius:12px;line-height:1.8}.security-note{background:#fff7df;border:1px solid #f0df9d;padding:12px;border-radius:12px;margin-top:14px;font-size:13px}.selection-box{border:1px solid var(--line);border-radius:14px;padding:12px;margin:18px 0}.selection-head{display:flex;justify-content:space-between;align-items:center}.check-inline{display:flex;gap:7px;align-items:center;margin:0;font-size:13px}.check-inline input{width:auto}.titles-checklist{max-height:260px;overflow:auto;margin-top:10px;border-top:1px solid var(--line)}.title-check{display:flex;gap:9px;align-items:flex-start;padding:10px 2px;border-bottom:1px solid var(--line)}.title-check input{width:auto}.title-check small{display:block;color:var(--muted);margin-top:3px}
@media(max-width:850px){.layout{grid-template-columns:1fr}.mobile-only{display:inline-block}.sidebar{position:fixed;z-index:35;top:74px;right:0;width:min(330px,88vw);height:calc(100vh - 74px);transform:translateX(110%);transition:.2s;box-shadow:var(--shadow)}.sidebar.open{transform:translateX(0)}.reader{padding:18px}.reader-head{flex-direction:column}.reader-head h2{font-size:25px}.app-footer{flex-direction:column;align-items:flex-start}.reader-article{padding:22px}}
@media(max-width:620px){.brand p{display:none}.topbar{padding:10px}.form-grid{grid-template-columns:1fr}.drawer{width:100vw}.reader-text{font-size:17px}.top-actions .ghost:not(.mobile-only){font-size:0}.top-actions .ghost:not(.mobile-only)::after{content:"✦";font-size:18px}}
