:root{color-scheme:light;--bg:#f3f1ea;--bg-deep:#e7e3d8;--ink:#1f2926;--ink-soft:#3f4b46;--muted:#737e78;--faint:#a8afa7;--line:#d7d3c7;--line-strong:#bdb7a8;--panel:rgba(255,254,249,.86);--panel-solid:#fffef9;--panel-soft:#ece8dc;--accent:#0f766e;--accent-ink:#0b4f4a;--danger:#a8483e;--shadow:0 24px 70px rgba(49,44,34,.14);--shadow-tight:0 14px 34px rgba(49,44,34,.12);--radius:8px;--ease:cubic-bezier(0.16,1,0.3,1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:radial-gradient(circle at 12% 8%,rgba(15,118,110,.09),transparent 26rem),linear-gradient(135deg,#f6f4ee 0,var(--bg) 42%,#ebe6da 100%);color:var(--ink);font-family:Avenir Next,Geist,SF Pro Display,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body:before{position:fixed;inset:0;z-index:10;pointer-events:none;content:"";opacity:.28;background-image:linear-gradient(rgba(31,41,38,.035) 1px,transparent 0),linear-gradient(90deg,rgba(31,41,38,.028) 1px,transparent 0);background-size:28px 28px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.75),transparent 72%);mask-image:linear-gradient(180deg,rgba(0,0,0,.75),transparent 72%)}button,input,textarea{font:inherit}button{min-height:38px;border:1px solid rgba(31,41,38,.16);border-radius:var(--radius);background:var(--ink);color:#fffef9;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:transform .22s var(--ease),background .22s var(--ease),border-color .22s var(--ease),opacity .22s var(--ease)}button:hover:not(:disabled){transform:translateY(-1px);background:#2b3834}button:active:not(:disabled){transform:translateY(0) scale(.985)}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid rgba(15,118,110,.42);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.44}.workspace{height:100dvh;min-height:760px;padding:16px;display:grid;grid-template-rows:auto auto 1fr;overflow:hidden}.navbar{justify-content:space-between;padding:8px 16px;margin-bottom:8px;background:rgba(255,254,249,.72);border:1px solid rgba(31,41,38,.1);border-radius:10px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.navbar,.navbar-brand{display:flex;align-items:center}.navbar-brand{gap:8px}.navbar-logo{font-size:16px;font-weight:700;color:var(--accent-ink);letter-spacing:-.02em}.navbar-links{display:flex;gap:4px}.navbar-links a{display:flex;align-items:center;gap:6px;padding:7px 14px;border-radius:7px;font-size:13px;font-weight:500;color:var(--muted);text-decoration:none;transition:background .18s ease,color .18s ease}.navbar-links a:hover{background:var(--panel-soft);color:var(--ink)}.navbar-links a.active{background:var(--ink);color:#fffef9}.topbar{position:relative;z-index:1;max-width:1680px;width:100%;margin:0 auto 12px;padding:18px 18px 16px;border:1px solid rgba(31,41,38,.11);border-radius:10px;background:rgba(255,254,249,.72);box-shadow:var(--shadow-tight);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);display:flex;justify-content:space-between;gap:24px;align-items:flex-end}.brand-block{display:grid;grid-gap:7px;gap:7px}.eyebrow{width:max-content;border-left:2px solid var(--accent);padding-left:9px;color:var(--accent-ink);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.topbar h1{margin:0;font-size:clamp(28px,3vw,46px);line-height:.98;letter-spacing:0;font-weight:760;text-wrap:balance}.topbar p{max-width:56ch;margin:0;color:var(--muted);font-size:14px;line-height:1.6}.metrics{display:grid;grid-template-columns:repeat(4,minmax(86px,1fr));grid-gap:8px;gap:8px;min-width:min(520px,48vw)}.metric{border:1px solid rgba(31,41,38,.1);border-radius:8px;background:rgba(255,254,249,.72);padding:11px 12px 10px}.metric span{display:block;color:var(--muted);font-size:11px}.metric strong{display:block;margin-top:6px;font-size:21px;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-family:SF Mono,JetBrains Mono,ui-monospace,monospace}.metric[data-warn=true] strong{color:var(--danger)}.shell{position:relative;z-index:1;max-width:1680px;width:100%;height:100%;min-height:0;margin:0 auto;display:grid;grid-template-columns:300px minmax(520px,1fr) 420px;grid-gap:12px;gap:12px}.shell-two-col{grid-template-columns:320px 1fr}.graph-topbar{padding:10px 16px;margin-bottom:0}.graph-controls-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%}.graph-book-select{display:flex;flex-wrap:wrap;gap:6px;flex:1 1;min-width:0}.graph-book-chip{display:flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);font-size:12px;cursor:pointer;transition:border-color .18s ease,background .18s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.graph-book-chip:has(input:checked){border-color:var(--accent);background:rgba(15,118,110,.08)}.graph-book-chip input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.graph-book-chip span{color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.chip-badge{font-style:normal;font-size:10px;padding:1px 5px;border-radius:4px;background:rgba(15,118,110,.15);color:var(--accent-ink);font-weight:500}.graph-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.build-btn{background:var(--accent);color:#fff;border-color:var(--accent);font-size:13px;min-height:34px;padding:0 14px}.build-btn:hover:not(:disabled){background:var(--accent-ink)}.graph-page-body{height:100%;overflow:hidden}.center-panel,.graph-page-body,.left-panel,.right-panel{min-height:0;border:1px solid rgba(31,41,38,.12);border-radius:10px;background:var(--panel);box-shadow:var(--shadow-tight)}.center-panel,.left-panel,.right-panel{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.left-panel,.right-panel{overflow:auto;padding:14px}.center-panel{position:relative;min-width:0;display:grid;grid-template-rows:auto 1fr;overflow:hidden;background:linear-gradient(180deg,rgba(255,254,249,.94),hsla(47,47%,96%,.92)),var(--panel-solid)}.upload-zone{min-height:158px;border:1px dashed var(--line-strong);border-radius:8px;background:linear-gradient(145deg,rgba(255,254,249,.86),hsla(45,30%,89%,.72));display:grid;place-items:center;align-content:center;grid-gap:9px;gap:9px;text-align:center;cursor:pointer;transition:transform .22s var(--ease),border-color .22s var(--ease),background .22s var(--ease)}.upload-zone:hover{transform:translateY(-1px);border-color:rgba(15,118,110,.54)}.upload-mark{width:48px;height:48px;border:1px solid rgba(31,41,38,.13);border-radius:8px;display:grid;place-items:center;color:var(--accent-ink);background:rgba(255,254,249,.74)}.upload-zone strong{font-size:16px}.upload-zone span:not(.upload-mark){max-width:21ch;color:var(--muted);font-size:12px;line-height:1.5}.upload-zone input{display:none}.action-stack{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin:14px 0}.action-stack button,.node-detail button,.tabs button{background:rgba(255,254,249,.72);color:var(--ink)}.action-stack button:hover:not(:disabled),.node-detail button:hover:not(:disabled),.tabs button:hover:not(:disabled){background:var(--panel-soft)}.llm-toggle{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13px;color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.llm-toggle input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}.error,.notice{border-radius:8px;font-size:13px;margin-bottom:10px}.notice{position:relative;overflow:hidden;border:1px solid rgba(15,118,110,.18);background:rgba(230,244,241,.76);color:#115e59;padding:11px 12px 14px}.notice span{position:relative;z-index:1}.notice i{position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:progress-slide 1.25s var(--ease) infinite}.error{border:1px solid rgba(168,72,62,.2);background:hsla(8,86%,95%,.82);color:var(--danger);padding:10px 12px}.book-list{display:grid;grid-gap:9px;gap:9px}.book-card,.chat-history,.compression,.decision-list article,.empty-list,.integrated-text,.rag-answer,.report-preview{border:1px solid rgba(31,41,38,.1);border-radius:8px;background:rgba(255,254,249,.68)}.book-card{padding:12px;display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;grid-gap:4px 10px;gap:4px 10px;align-items:center;transition:transform .22s var(--ease),border-color .22s var(--ease)}.book-card[data-selected=true]{border-color:var(--accent);background:rgba(15,118,110,.06)}.book-card:hover{transform:translateY(-1px);border-color:rgba(15,118,110,.24)}.book-checkbox{grid-row:1/3;display:flex;align-items:center;justify-content:center;cursor:pointer}.book-checkbox input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.book-info{display:flex;flex-direction:column;gap:2px}.book-info strong{line-height:1.35;font-size:13px}.book-info span{color:var(--muted);font-size:12px}.book-badges{display:flex;gap:4px;align-items:center;grid-row:1/3}.book-card small{color:var(--muted);font-size:12px;grid-column:2}.book-card em{width:max-content;font-style:normal;font-size:11px;padding:3px 7px;border-radius:6px;background:var(--panel-soft)}.book-card em[data-status=completed]{background:rgba(209,250,229,.72);color:#047857}.book-card em[data-status=failed]{background:hsla(8,86%,95%,.82);color:var(--danger)}.graph-badge{background:rgba(15,118,110,.15)!important;color:var(--accent-ink)!important;font-weight:500}.empty-list{display:grid;grid-gap:6px;gap:6px;padding:14px;color:var(--muted);font-size:13px;line-height:1.55}.empty-list strong{color:var(--ink)}.graph-toolbar{min-height:62px;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(31,41,38,.1);gap:12px}.graph-toolbar span{color:var(--muted);font-size:12px}.search-box{height:38px;min-width:300px;display:flex;align-items:center;gap:8px;background:rgba(255,254,249,.72);border:1px solid rgba(31,41,38,.12);border-radius:8px;padding:0 11px}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--ink)}.search-box input::placeholder,textarea::placeholder{color:var(--faint)}.empty-graph,.graph-canvas{min-height:0;height:100%;flex:1 1}.graph-canvas{background:radial-gradient(circle at 50% 42%,rgba(15,118,110,.07),transparent 26rem),linear-gradient(rgba(31,41,38,.035) 1px,transparent 0),linear-gradient(90deg,rgba(31,41,38,.03) 1px,transparent 0);background-size:auto,36px 36px,36px 36px}.empty-graph{display:grid;place-items:center;align-content:center;grid-gap:8px;gap:8px;color:var(--muted);text-align:center;padding:24px}.empty-graph strong{color:var(--ink);font-size:18px}.node-detail{position:absolute;left:18px;bottom:18px;width:min(480px,calc(100% - 36px));border:1px solid rgba(31,41,38,.12);border-radius:10px;box-shadow:var(--shadow);padding:16px;background:rgba(255,254,249,.9);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.node-detail button{float:right;min-height:30px}.node-detail h3{margin:0 0 8px;font-size:18px}.node-detail p{color:var(--muted);line-height:1.65}.node-detail dl{display:grid;grid-template-columns:52px 1fr;grid-gap:6px 12px;gap:6px 12px;margin:0;font-size:13px}.node-detail dt{color:var(--muted)}.node-detail dd{margin:0}.graph-container{position:relative;height:100%;display:flex;flex-direction:column}.graph-search{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--panel)}.graph-search svg{color:var(--muted);flex-shrink:0}.graph-search input{flex:1 1;border:none;background:transparent;font-size:13px;color:var(--ink);outline:none}.graph-search input::placeholder{color:var(--faint)}.graph-controls{gap:16px;padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--line);font-size:12px;z-index:10}.graph-controls,.legend{display:flex;flex-wrap:wrap;align-items:center}.legend{gap:12px}.legend-title{color:var(--muted);font-weight:500}.legend-item{display:flex;align-items:center;gap:6px;color:var(--ink-soft)}.legend-line{display:inline-block;width:20px;height:2px;border-radius:1px}.source-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.source-filter span{color:var(--muted);font-weight:500}.source-filter button{min-height:28px;padding:0 10px;font-size:11px;background:var(--panel-soft);color:var(--ink-soft);border:1px solid var(--line)}.source-filter button.active,.source-filter button:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.node-detail-sidebar{position:absolute;right:0;top:0;bottom:0;width:320px;background:var(--panel-solid);border-left:1px solid var(--line);box-shadow:var(--shadow-tight);display:flex;flex-direction:column;z-index:20;overflow:hidden}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--line);background:var(--panel)}.sidebar-header h3{margin:0;font-size:16px;font-weight:600;color:var(--ink)}.close-btn{min-height:32px;min-width:32px;padding:0;background:transparent;color:var(--muted);border:1px solid var(--line);font-size:16px;cursor:pointer;transition:all .2s ease}.close-btn:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.sidebar-content{flex:1 1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:20px}.node-info{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.info-item{display:flex;flex-direction:column;gap:4px}.info-item .label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.info-item .value{font-size:13px;color:var(--ink);font-weight:500}.node-definition,.node-evidence{display:flex;flex-direction:column;gap:8px}.node-definition h4,.node-evidence h4{margin:0;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.node-definition p,.node-evidence p{margin:0;font-size:13px;line-height:1.6;color:var(--ink-soft)}.node-evidence{padding:12px;background:var(--bg-deep);border-radius:var(--radius);border-left:3px solid var(--accent)}.related-nodes{display:flex;flex-direction:column;gap:8px}.related-nodes h4{margin:0;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.related-nodes ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.related-nodes li{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--panel-soft);border-radius:var(--radius);font-size:12px}.related-name{font-weight:500;color:var(--ink)}.related-category{font-size:10px;padding:2px 6px;background:var(--accent);color:#fff;border-radius:10px}@media (max-width:768px){.graph-controls{flex-direction:column;align-items:flex-start;gap:8px}.node-detail-sidebar{width:100%;left:0;right:0}.node-info{grid-template-columns:1fr}}.tabs{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px;margin-bottom:14px;padding:4px;border:1px solid rgba(31,41,38,.1);border-radius:8px;background:hsla(45,30%,89%,.62)}.tabs button{min-height:34px;border-color:transparent}.tabs button[data-active=true]{background:var(--ink);color:#fffef9}.panel-section h2{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:15px;letter-spacing:0}.compression{display:grid;grid-template-columns:1fr 1fr auto;grid-gap:8px;gap:8px;align-items:center;padding:11px;margin-bottom:12px;font-size:12px;color:var(--muted)}.compression strong{color:var(--accent);font-size:19px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-family:SF Mono,JetBrains Mono,ui-monospace,monospace}.compression strong[data-warn=true]{color:var(--danger)}.decision-list{display:grid;grid-gap:8px;gap:8px;max-height:270px;overflow:auto}.decision-list article{padding:11px}.decision-list header{display:flex;justify-content:space-between;font-size:12px}.decision-list header b{color:var(--accent-ink);letter-spacing:.08em;text-transform:uppercase}.decision-list p{margin:8px 0;font-size:13px;line-height:1.55}.decision-list p,.decision-list small{color:var(--muted)}textarea{width:100%;min-height:96px;resize:vertical;border:1px solid rgba(31,41,38,.12);border-radius:8px;padding:11px;outline:0;margin-bottom:10px;background:rgba(255,254,249,.74);color:var(--ink);line-height:1.55}.chat-history,.integrated-text,.rag-answer,.report-preview{margin-top:12px;padding:12px}.rag-answer p{line-height:1.7;color:var(--ink-soft)}details{border-top:1px solid rgba(31,41,38,.1);padding:10px 0;font-size:13px}summary{cursor:pointer;color:var(--accent-ink)}details span{display:block;color:var(--muted);line-height:1.65;margin-top:8px}.chat-history{min-height:184px;max-height:290px;overflow:auto}.chat-history p{width:-moz-fit-content;width:fit-content;max-width:92%;padding:9px 10px;border-radius:8px;background:var(--panel-soft);line-height:1.5}.chat-history p[data-role=teacher]{margin-left:auto;background:rgba(209,250,229,.72)}.integrated-text,.report-preview{white-space:pre-wrap;max-height:360px;overflow:auto;color:var(--muted);line-height:1.6}@keyframes progress-slide{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@media (max-width:1280px){.workspace{height:auto;min-height:100dvh;overflow:auto}.shell{grid-template-columns:1fr}.center-panel{min-height:640px}.topbar{align-items:start;flex-direction:column}.metrics{width:100%;min-width:0}}@media (max-width:720px){.workspace{padding:10px}.topbar{padding:14px}.action-stack,.metrics{grid-template-columns:1fr 1fr}.graph-toolbar{align-items:stretch;flex-direction:column}.search-box{min-width:0}.tabs{grid-template-columns:1fr 1fr}}.modal-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:rgba(31,41,38,.45);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:modal-fade-in .2s ease}.modal-content{width:min(420px,calc(100% - 40px));background:var(--panel-solid);border-radius:14px;box-shadow:0 32px 80px rgba(49,44,34,.22);padding:24px;animation:modal-slide-up .3s var(--ease)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.modal-header h3{margin:0;font-size:17px;font-weight:600;color:var(--ink)}.modal-timer{font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted);font-family:SF Mono,JetBrains Mono,ui-monospace,monospace;padding:4px 10px;background:var(--panel-soft);border-radius:6px}.progress-bar-track{width:100%;height:6px;background:var(--panel-soft);border-radius:3px;overflow:hidden;margin-bottom:20px}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),#14b8a6);border-radius:3px;transition:width .6s var(--ease)}.step-list{display:flex;flex-direction:column;gap:2px}.step-item{display:flex;align-items:flex-start;gap:12px;padding:10px 12px;border-radius:8px;transition:background .2s ease}.step-item.current{background:rgba(15,118,110,.08)}.step-item.done{opacity:.6}.step-item.error{background:rgba(168,72,62,.08)}.step-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-top:1px}.step-item.current .step-icon,.step-item.done .step-icon{color:var(--accent)}.step-item.error .step-icon{color:var(--danger)}.step-text{display:flex;flex-direction:column;gap:3px}.step-label{font-size:14px;font-weight:500;color:var(--ink)}.step-item.done .step-label{color:var(--muted);text-decoration:line-through;-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint)}.step-detail{font-size:12px;color:var(--muted);line-height:1.4}.error-text{color:var(--danger)}.modal-cancel{width:100%;margin-top:18px;min-height:40px;background:var(--panel-soft);color:var(--ink-soft);border:1px solid var(--line)}.modal-cancel:hover{background:var(--danger);color:#fff;border-color:var(--danger)}@keyframes spin{to{transform:rotate(1turn)}}.spin{animation:spin 1s linear infinite}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}