
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  /* backgrounds */
  --bg:#4a2d52;--s1:#55385e;--s2:#604468;--s3:#6b5074;
  /* borders — brand navy #30518F derived */
  --border:#7a5c80;--border2:#8e7094;
  /* brand primary accent — #D81E5B */
  --accent:#d81e5b;--accent2:#f0527e;--accentdim:rgba(216,30,91,0.12);
  /* brand teal — #83D7C2 */
  --teal:#83d7c2;
  /* brand blues — #7091CF / #647EA6 */
  --blue:#7091cf;--blue2:#647ea6;
  /* status / semantic colours (keep functional) */
  --green:#4ddb8a;--purple:#b06eff;--orange:#ff8c42;--red:#ff5555;
  /* text */
  --white:#e8e0eb;--grey:#a08aaa;--dim:#3a2845;
}
body{background:var(--bg);color:var(--white);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;height:100vh;display:flex;flex-direction:column;overflow:hidden}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:44px;background:var(--s1);border-bottom:1px solid var(--border);flex-shrink:0}
.topbar-left{display:flex;align-items:center;gap:16px}
.topbar-logo{height:32px;width:auto}
.topbar-tabs{display:flex;align-items:center;gap:2px;margin-left:20px}
.topbar-tab{padding:5px 14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:1.5px;text-transform:uppercase;color:var(--grey);border:1px solid transparent;border-radius:4px;cursor:pointer;transition:all .15s}
.topbar-tab:hover{color:var(--white);background:var(--s2)}
.topbar-tab.active{color:var(--accent);background:var(--s2);border-color:var(--border2)}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.status-text{font-size:15px;color:var(--grey);letter-spacing:1.5px;text-transform:uppercase}
.topbar-right{display:flex;align-items:center;gap:20px;font-size:15px;color:var(--dim);letter-spacing:1px;text-transform:uppercase}
.topbar-right span{color:var(--grey)}
.main{display:flex;flex:1;overflow:hidden}
.sidebar{width:240px;flex-shrink:0;background:var(--s1);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}
.sidebar-section{padding:14px 16px;border-bottom:1px solid var(--border)}
.sidebar-label{font-size:14px;letter-spacing:2px;text-transform:uppercase;color:var(--grey);margin-bottom:10px}
.quick-btn{width:100%;text-align:left;background:var(--s2);border:1px solid var(--border);border-radius:5px;padding:8px 10px;margin-bottom:6px;cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;color:var(--grey);line-height:1.4;transition:all .15s}
.quick-btn:hover{background:var(--accentdim);border-color:rgba(216,30,91,.4);color:var(--accent2)}
.quick-btn::before{content:'▸ ';color:var(--accent);opacity:.6}
.chat-area{flex:1;display:flex;flex-direction:column;overflow:hidden}
.messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}
.messages::-webkit-scrollbar{width:4px}
.messages::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}
.welcome{padding:24px;text-align:center;margin:auto 0}
.welcome-title{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:28px;font-weight:800;color:var(--accent);margin-bottom:6px}
.welcome-logo{width:150px;height:auto;margin-bottom:10px}
.welcome-sub{font-size:16px;color:var(--grey);line-height:1.7;letter-spacing:.5px}
.welcome-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:16px}
.welcome-chip{background:var(--s2);border:1px solid var(--border2);border-radius:16px;padding:6px 14px;font-size:15px;color:var(--grey);cursor:pointer;transition:all .15s}
.welcome-chip:hover{border-color:var(--accent);color:var(--accent2);background:var(--accentdim)}
.msg{display:flex;flex-direction:column;gap:4px;animation:fadeUp .3s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.msg-user{align-items:flex-end}
.msg-bot{align-items:flex-start}
.msg-header{font-size:14px;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);padding:0 4px;display:flex;align-items:center;gap:10px}
.export-btn{margin-left:auto;font-size:11px;letter-spacing:1px;padding:3px 10px;background:var(--accentdim);border:1px solid var(--accent);color:var(--accent);border-radius:3px;cursor:pointer;text-transform:uppercase}
.export-btn:hover{background:rgba(216,30,91,.25)}
.list-num{color:var(--green);font-weight:600}
.ans-h2{font-size:15px;font-weight:700;color:var(--white);margin:12px 0 4px;letter-spacing:.5px}
.ans-h3{font-size:14px;font-weight:600;color:var(--teal);margin:10px 0 3px;letter-spacing:.3px}
.ans-table{border-collapse:collapse;margin:10px 0;font-size:14px;width:100%}
.ans-table th,.ans-table td{border:1px solid var(--border2);padding:5px 14px;text-align:left}
.ans-table th{color:var(--green);background:rgba(77,219,138,.08)}
.ans-table tr:hover td{background:rgba(77,219,138,.04)}
.clarify-options{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.clarify-btn{padding:7px 16px;font-size:13px;letter-spacing:.5px;background:var(--s2);border:1px solid var(--border2);color:var(--white);border-radius:4px;cursor:pointer;transition:all .15s}
.clarify-btn:hover{background:var(--s3);border-color:var(--accent);color:var(--accent)}
.msg-user .msg-header{color:var(--accent)}
.bubble{max-width:720px;border-radius:8px;padding:12px 16px;font-size:17px;line-height:1.7}
.bubble-user{background:var(--accentdim);border:1px solid rgba(216,30,91,.3);color:var(--accent2);text-align:right}
.bubble-bot{background:var(--s2);border:1px solid var(--border2);color:var(--white)}
.bubble-bot strong{color:var(--teal)}
.cited{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.cited-node{background:rgba(131,215,194,.08);border:1px solid rgba(131,215,194,.25);border-radius:3px;padding:2px 7px;font-size:14px;color:var(--teal);letter-spacing:.5px}
.lineage-diagram{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-top:10px;overflow:hidden}
.lineage-title{font-size:14px;letter-spacing:1.5px;color:var(--dim);padding:8px 12px;border-bottom:1px solid var(--border);text-transform:uppercase}
.thinking{display:flex;align-items:center;gap:8px;font-size:16px;color:var(--grey)}
.dots span{animation:blink 1.2s infinite;display:inline-block}
.dots span:nth-child(2){animation-delay:.2s}
.dots span:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,80%,100%{opacity:.2}40%{opacity:1}}
.input-area{padding:40px 20px 14px 20px;background:var(--s1);flex-shrink:0}
.input-row{display:flex;gap:10px;align-items:flex-end}
.input-prefix{font-size:18px;color:var(--accent);padding-bottom:10px;flex-shrink:0}
textarea{flex:1;background:var(--s2);border:1px solid var(--border2);border-radius:6px;color:var(--white);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:17px;padding:10px 14px;resize:none;outline:none;line-height:1.5;min-height:40px;max-height:120px;transition:border-color .2s}
textarea:focus{border-color:rgba(216,30,91,.5)}
textarea::placeholder{color:var(--dim)}
.send-btn{background:var(--accent);border:none;border-radius:6px;width:40px;height:40px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;transition:background .15s}
.send-btn:hover{background:var(--accent2)}
.send-btn:disabled{background:var(--dim);cursor:not-allowed}
.input-hint{font-size:14px;color:var(--dim);margin-top:6px;letter-spacing:.5px}
.right-panel{width:280px;flex-shrink:0;background:var(--s1);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}
.rp-section{padding:14px 16px;border-bottom:1px solid var(--border)}
.rp-label{font-size:14px;letter-spacing:2px;text-transform:uppercase;color:var(--grey);margin-bottom:10px}
.stat-row{display:flex;justify-content:space-between;margin-bottom:8px;font-size:16px}
.stat-row.clickable{cursor:pointer;padding:4px 6px;margin:-4px -6px 4px;border-radius:4px;transition:all .15s}
.stat-row.clickable:hover{background:var(--accentdim)}
.stat-row.clickable:hover .stat-label{color:var(--accent2)}
.stat-row.clickable:hover .stat-val{color:var(--accent2)}
.stat-row.clickable .stat-label::after{content:' ↗';font-size:13px;opacity:0;transition:opacity .15s}
.stat-row.clickable:hover .stat-label::after{opacity:.6}
.stat-label{color:var(--grey)}
.stat-val{color:var(--white);font-weight:700}
.stat-val.green{color:var(--green)}
.stat-val.gold{color:var(--accent)}
.history-list{flex:1;overflow-y:auto;padding:14px 16px}
.history-item{padding:8px 10px;border-radius:5px;margin-bottom:6px;background:var(--s2);border:1px solid var(--border);font-size:15px;color:var(--grey);cursor:pointer;line-height:1.4;transition:all .15s}
.history-item:hover{border-color:var(--border2);color:var(--white)}
.history-time{font-size:14px;color:var(--dim);margin-top:3px}
/* Tabs */
.tab-bar{display:flex;gap:2px;padding:10px 20px 0;background:var(--s1);border-bottom:1px solid var(--border);flex-shrink:0}
.tab{padding:7px 18px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:1.5px;text-transform:uppercase;color:var(--grey);border:1px solid transparent;border-bottom:none;border-radius:4px 4px 0 0;cursor:pointer;transition:all .15s}
.tab:hover{color:var(--white);background:var(--s2)}
.tab.active{color:var(--accent);background:var(--bg);border-color:var(--border2)}
.tab-panel{display:none;flex:1;flex-direction:column;overflow:hidden}
.tab-panel.active{display:flex}
/* Admin panel */
.admin-area{flex:1;overflow-y:auto;padding:28px 32px;display:flex;flex-direction:column;gap:20px}
.admin-card{background:var(--s1);border:1px solid var(--border2);border-radius:10px;overflow:hidden}
.admin-card-header{padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px;letter-spacing:2px;text-transform:uppercase;color:var(--dim)}
.admin-meta-val{color:var(--grey);font-weight:700;text-transform:none}
.admin-card-body{padding:16px}
.status-row{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.status-badge{display:flex;align-items:center;gap:6px;padding:5px 12px;border-radius:20px;font-size:15px;letter-spacing:1px;text-transform:uppercase;font-weight:700}
.badge-running{background:rgba(77,219,138,.1);border:1px solid rgba(77,219,138,.4);color:var(--green)}
.badge-exited{background:rgba(255,85,85,.1);border:1px solid rgba(255,85,85,.4);color:var(--red)}
.badge-unknown{background:rgba(106,125,158,.1);border:1px solid rgba(106,125,158,.4);color:var(--grey)}
.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.admin-meta{font-size:15px;color:var(--grey);line-height:2}
.admin-meta span{color:var(--white)}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}
.admin-btn{padding:8px 20px;border-radius:5px;border:1px solid;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:all .15s;font-weight:700}
.btn-start{background:rgba(77,219,138,.1);border-color:rgba(77,219,138,.4);color:var(--green)}
.btn-start:hover{background:rgba(77,219,138,.2)}
.btn-stop{background:rgba(255,85,85,.1);border-color:rgba(255,85,85,.4);color:var(--red)}
.btn-stop:hover{background:rgba(255,85,85,.2)}
.btn-restart{background:rgba(216,30,91,.1);border-color:rgba(216,30,91,.4);color:var(--accent)}
.btn-restart:hover{background:rgba(216,30,91,.2)}
.admin-btn:disabled{opacity:.35;cursor:not-allowed}
.log-box{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px;font-size:15px;color:var(--grey);line-height:1.8;max-height:260px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}
.log-box::-webkit-scrollbar{width:4px}
.log-box::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}
.admin-action-msg{font-size:15px;letter-spacing:.5px;padding:4px 0;min-height:18px}
/* Graph explorer */
.graph-shell{display:flex;flex-direction:column;flex:1;overflow:hidden;background:var(--bg);min-height:0}
.graph-toolbar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--s1);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}
.graph-breadcrumb{display:flex;align-items:center;gap:4px;flex:1;font-size:15px;letter-spacing:1px;text-transform:uppercase;color:var(--grey);overflow:hidden}
.bc-item{color:var(--grey);cursor:pointer;white-space:nowrap;transition:color .15s}.bc-item:hover{color:var(--accent)}
.bc-item.active{color:var(--white);cursor:default}
.bc-sep{color:var(--dim);margin:0 2px}
.graph-back-btn{background:var(--s2);border:1px solid var(--border2);border-radius:4px;padding:5px 12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;color:var(--grey);cursor:pointer;letter-spacing:1px;transition:all .15s;flex-shrink:0}
.graph-back-btn:hover{color:var(--white);border-color:var(--accent)}
.graph-back-btn:disabled{opacity:.3;cursor:not-allowed}
.search-wrap{position:relative;display:flex;flex:0 0 auto}
.graph-search{background:var(--s2);border:1px solid var(--border2);border-radius:4px;padding:5px 10px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:16px;color:var(--white);outline:none;width:180px;transition:border-color .15s}
.graph-search:focus{border-color:rgba(216,30,91,.5)}
.graph-search::placeholder{color:var(--dim)}
.search-dropdown{position:absolute;top:100%;left:0;right:0;z-index:200;background:var(--s1);border:1px solid var(--border2);border-top:none;border-radius:0 0 4px 4px;max-height:200px;overflow-y:auto;display:none;box-shadow:0 6px 20px rgba(0,0,0,.4)}
.search-dropdown.open{display:block}
.search-drop-item{padding:6px 10px;font-size:15px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--grey);cursor:pointer;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-drop-item:hover,.search-drop-item.drop-active{background:rgba(112,145,207,.12);color:var(--white)}
.search-drop-mark{color:var(--accent)}
.graph-mode-btn{background:var(--s2);border:1px solid var(--border);border-radius:4px;padding:5px 12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;color:var(--grey);cursor:pointer;letter-spacing:1px;transition:all .15s;flex-shrink:0}
.graph-mode-btn:hover{border-color:var(--border2);color:var(--white)}
.graph-mode-btn.active{background:var(--accentdim);border-color:rgba(216,30,91,.5);color:var(--accent)}
.graph-mode-select{background:var(--s2);border:1px solid var(--border);border-radius:4px;padding:5px 28px 5px 12px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;color:var(--accent);cursor:pointer;letter-spacing:1px;outline:none;flex-shrink:0;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%237a90b0'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}
.graph-hier-btn{background:var(--s2);border:1px solid var(--border);border-radius:4px;padding:4px 10px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:1px;color:var(--grey);cursor:pointer;transition:all .15s;white-space:nowrap}
.graph-hier-btn:hover{border-color:var(--border2);color:var(--white)}
.graph-hier-btn.active{background:var(--accentdim);border-color:rgba(216,30,91,.4);color:var(--accent)}
.graph-mode-select:hover{border-color:var(--border2)}
.graph-mode-select:disabled{opacity:.35;cursor:not-allowed}
.graph-mode-select option{background:var(--s2);color:var(--white)}
.graph-body{display:flex;flex-direction:column;flex:1;overflow:hidden;min-height:0}
.graph-canvas-wrap{position:relative;flex:1;overflow:hidden;min-height:0;background:var(--bg)}
#graphCanvas{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--bg)}
/* ── Depth bar ── */
/* ── Tier labels overlay ── */
.graph-tier-labels{position:absolute;top:8px;left:0;right:0;display:flex;justify-content:space-between;pointer-events:none;padding:0 20px;z-index:5}
.tier-label{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;opacity:.65}
.tier-upstream{color:var(--blue)}
.tier-central{color:#e8b84b;flex:1;text-align:center}
.tier-downstream{color:var(--teal);text-align:right}
/* ── Graph detail panel ── */
.graph-detail{background:var(--s1);border-top:1px solid var(--border2);flex-shrink:0;max-height:280px;display:flex;flex-direction:column}
.graph-detail-header{display:flex;align-items:center;justify-content:space-between;padding:7px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.graph-detail-title{display:flex;align-items:baseline;gap:10px;min-width:0;overflow:hidden}
.graph-detail-name{font-size:16px;font-weight:700;color:var(--white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.graph-detail-type{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--grey);flex-shrink:0}
.graph-detail-close{background:none;border:none;color:var(--grey);cursor:pointer;font-size:18px;padding:0 4px;line-height:1;flex-shrink:0;transition:color .15s}
.graph-detail-close:hover{color:var(--white)}
.graph-detail-body{flex:1;overflow-x:auto;overflow-y:auto;padding:8px 16px;display:flex;gap:20px;align-items:flex-start}
/* Detail columns */
.detail-col{flex-shrink:0;min-width:150px}
.detail-col-title{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--grey);margin-bottom:6px}
.detail-feed-row{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--border);font-size:13px}
.detail-feed-row:last-child{border-bottom:none}
.detail-feed-name{color:var(--white);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detail-feed-rel{color:var(--grey);font-size:11px;letter-spacing:.5px;flex-shrink:0}
.detail-impact-row{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--border);font-size:13px}
.detail-impact-row:last-child{border-bottom:none}
.detail-risk-flag{color:var(--orange);font-size:12px;margin-top:4px}
.detail-prop-row{display:flex;justify-content:space-between;gap:12px;padding:3px 0;border-bottom:1px solid var(--border);font-size:13px}
.detail-prop-row:last-child{border-bottom:none}
.detail-prop-label{color:var(--grey)}
.detail-prop-val{color:var(--white);text-align:right;word-break:break-all}
.detail-sheet-row{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--border);font-size:13px;cursor:pointer;transition:color .15s}
.detail-sheet-row:last-child{border-bottom:none}
.detail-sheet-row:hover .detail-sheet-name{color:var(--accent)}
.detail-sheet-name{color:var(--white);flex:1}
.detail-sheet-meta{color:var(--dim);font-size:11px;flex-shrink:0}
.detail-date-val{color:var(--gold);font-size:12px}
/* Column lineage table */
.col-row{display:grid;grid-template-columns:minmax(80px,1fr) auto minmax(60px,2fr);gap:8px;align-items:baseline;padding:3px 0;border-bottom:1px solid var(--border);font-size:12px}
.col-row:last-child{border-bottom:none}
.col-name{color:var(--white);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-source{padding:1px 5px;border-radius:3px;font-size:11px;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap}
.col-src-hardcoded{background:rgba(106,125,158,.15);color:var(--grey)}
.col-src-formula{background:rgba(131,215,194,.12);color:var(--teal)}
.col-src-cross_sheet_ref{background:rgba(112,145,207,.12);color:var(--blue)}
.col-src-quantlib{background:rgba(176,110,255,.12);color:var(--purple)}
.col-src-engine_calc{background:rgba(255,140,66,.12);color:var(--orange)}
.col-formula{color:var(--grey);font-family:monospace;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.graph-info-empty{font-size:15px;color:var(--dim);text-align:center;margin-top:40px;letter-spacing:.5px}
.info-name{font-size:19px;font-weight:700;color:var(--white);margin-bottom:4px;word-break:break-all;cursor:pointer;transition:color .15s}
.info-name:hover{color:var(--accent2)}
.info-name.showing-id{color:var(--grey);font-size:16px;letter-spacing:1px}
.info-type{font-size:15px;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:14px}
.info-prop{display:flex;justify-content:space-between;font-size:15px;margin-bottom:6px}
.info-prop-label{color:var(--grey)}.info-prop-val{color:var(--white);text-align:right;max-width:130px;word-break:break-all}
.info-prop.info-prop-clickable{padding:3px 5px;margin:-3px -5px 3px;border-radius:4px;transition:background .15s}
.info-prop.info-prop-clickable:hover{background:var(--accentdim)}
.info-prop.info-prop-clickable:hover .info-prop-label{color:var(--accent2)}
.info-prop.info-prop-clickable:hover .conn-link{color:var(--accent2)!important}
.info-actions{display:flex;flex-direction:column;gap:6px;margin-top:16px}
.info-btn{width:100%;padding:7px 10px;border-radius:4px;border:1px solid;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:1px;cursor:pointer;text-align:left;transition:all .15s}
.info-btn-drill{background:rgba(112,145,207,.08);border-color:rgba(112,145,207,.4);color:var(--blue)}
.info-btn-drill:hover{background:rgba(112,145,207,.18)}
.info-btn-trace{background:rgba(77,219,138,.08);border-color:rgba(77,219,138,.4);color:var(--green)}
.info-btn-trace:hover{background:rgba(77,219,138,.18)}
.info-btn-impact{background:rgba(255,140,66,.08);border-color:rgba(255,140,66,.4);color:var(--orange)}
.info-btn-impact:hover{background:rgba(255,140,66,.18)}
.info-row{padding:4px 0;border-bottom:1px solid var(--border)}.info-row:last-of-type{border-bottom:none}
.info-process-row{padding:8px 0}
.conn-back{margin:4px 0 8px}
.conn-list{display:flex;flex-direction:column;gap:4px;margin-top:4px}
.conn-row{display:grid;grid-template-columns:16px auto 1fr;gap:5px;align-items:baseline;padding:4px 0;border-bottom:1px solid var(--border);font-size:15px}
.conn-row:last-child{border-bottom:none}
.conn-arrow{font-size:17px;font-weight:700;text-align:center}
.conn-rel{color:var(--grey);letter-spacing:.4px;white-space:nowrap}
.conn-target{color:var(--fg);word-break:break-word}
.info-process-name{font-size:17px;font-weight:600;color:var(--blue);margin-bottom:6px;word-break:break-all}
.info-divider{border-top:1px solid var(--border);margin:4px 0}
.info-val{font-size:15px;color:var(--white);letter-spacing:.3px}
.edge-pager{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}
.pager-btn{background:rgba(112,145,207,.08);border:1px solid rgba(112,145,207,.3);color:var(--blue);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:17px;padding:3px 10px;border-radius:3px;cursor:pointer;transition:background .15s}
.pager-btn:hover:not(:disabled){background:rgba(112,145,207,.2)}
.pager-btn:disabled{opacity:.3;cursor:default}
.pager-label{font-size:14px;color:var(--dim);letter-spacing:.5px}
.graph-loading{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:rgba(6,9,18,.8);z-index:10;font-size:16px;color:var(--grey);letter-spacing:1px;pointer-events:none}
.graph-stats-bar{padding:6px 14px;background:var(--s1);border-top:1px solid var(--border);font-size:14px;color:var(--dim);letter-spacing:.5px;flex-shrink:0}
/* Diagram modal */
.diagram-overlay{position:fixed;inset:0;background:rgba(6,9,18,.92);z-index:1000;display:flex;align-items:center;justify-content:center}
.diagram-box{background:var(--s1);border:1px solid var(--border2);border-radius:12px;width:860px;max-width:95vw;overflow:hidden}
.diagram-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}
.diagram-header-title{font-size:15px;letter-spacing:2px;text-transform:uppercase;color:var(--grey)}
.diagram-close{background:none;border:none;color:var(--grey);cursor:pointer;font-size:24px;line-height:1;padding:0 4px;transition:color .15s}
.diagram-close:hover{color:var(--white)}
.diagram-body{padding:16px;overflow:auto;max-height:70vh}
.diagram-loading{text-align:center;padding:40px;font-size:16px;color:var(--grey);letter-spacing:1px}
.follow-ups{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.follow-up-chip{background:rgba(112,145,207,.08);border:1px solid rgba(112,145,207,.25);border-radius:12px;padding:5px 12px;font-size:15px;color:var(--blue);cursor:pointer;transition:all .15s;letter-spacing:.3px}
.follow-up-chip:hover{background:rgba(112,145,207,.18);border-color:rgba(112,145,207,.5);color:var(--white)}

/* ── Layout helpers ── */
.topbar-status{display:flex;align-items:center;gap:6px}
.text-grey{color:var(--grey)}
.text-gold{color:var(--accent)}
.signout-btn{background:none;border:1px solid var(--border);border-radius:4px;color:var(--grey);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;letter-spacing:1px;padding:3px 10px;cursor:pointer;transition:all .15s}
.signout-btn:hover{color:var(--white)}
.content-col{display:flex;flex-direction:column;flex:1;overflow:hidden}
.btn-row-top{margin-top:16px}
.admin-card-header-flex{display:flex;justify-content:space-between;align-items:center}
.admin-refresh-btn{background:none;border:none;color:var(--grey);cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;letter-spacing:1px}
.history-section-label{padding:14px 16px 6px;margin-bottom:0}

/* ── Login screen ── */
#loginScreen{position:fixed;inset:0;background:var(--bg);z-index:9999;flex-direction:column;align-items:center;justify-content:center;gap:0;display:flex}
.login-title{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:56px;font-weight:800;color:var(--accent);letter-spacing:6px;margin-bottom:6px}
.login-logo{width:260px;height:auto;margin-bottom:24px}
.login-subtitle{font-size:15px;color:var(--grey);letter-spacing:3px;text-transform:uppercase;margin-bottom:48px}
.login-btn{background:var(--accent);border:none;border-radius:6px;padding:13px 44px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:17px;font-weight:700;letter-spacing:2px;color:#060912;cursor:pointer;transition:background .15s}
.login-btn:hover{background:var(--accent2)}
.login-footer{font-size:14px;color:var(--dim);margin-top:16px;letter-spacing:1px}

/* ── Graph tab hides side panels ── */
.graph-active .right-panel{display:none}
.graph-active .sidebar{display:none}

/* ── Ingest tab ── */
.ingest-area{flex:1;overflow-y:auto;padding:28px 32px;display:flex;flex-direction:column;gap:20px}
.ingest-drop{border:2px dashed var(--border2);border-radius:10px;padding:36px 24px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:var(--bg)}
.ingest-drop:hover,.ingest-drop.drag-over{border-color:var(--accent);background:var(--accentdim)}
.ingest-drop-icon{font-size:32px;color:var(--dim);margin-bottom:10px}
.ingest-drop-text{font-size:17px;color:var(--grey);margin-bottom:8px}
.ingest-browse{color:var(--accent);cursor:pointer;text-decoration:underline}
.ingest-drop-hint{font-size:15px;color:var(--dim);letter-spacing:.5px}
.ingest-selected{display:flex;align-items:center;gap:12px;margin-top:14px;padding:10px 14px;background:rgba(131,215,194,.06);border:1px solid rgba(131,215,194,.2);border-radius:6px}
.ingest-filename{flex:1;font-size:16px;color:var(--teal);word-break:break-all}
.ingest-status{margin-top:14px;font-size:16px;color:var(--grey);letter-spacing:.3px;min-height:20px}
.ingest-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.ingest-stat{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:14px;text-align:center}
.ingest-stat-val{font-size:28px;font-weight:700;color:var(--teal)}
.ingest-stat-label{font-size:14px;color:var(--grey);letter-spacing:1px;text-transform:uppercase;margin-top:4px}
.ingest-conn-table{width:100%;border-collapse:collapse;font-size:15px}
.ingest-conn-table th{color:var(--dim);letter-spacing:1px;text-transform:uppercase;padding:5px 8px;text-align:left;border-bottom:1px solid var(--border)}
.ingest-conn-table td{padding:5px 8px;border-bottom:1px solid var(--border);color:var(--grey)}
.ingest-conn-table tr:last-child td{border-bottom:none}
.ingest-conn-table td:first-child{color:var(--white)}
.ingest-subgraph-list{display:flex;flex-direction:column;gap:6px}
.ingest-subgraph-row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--bg);border:1px solid var(--border);border-radius:6px}
.ingest-subgraph-name{font-size:16px;color:var(--white);font-weight:700}
.ingest-subgraph-count{font-size:15px;color:var(--grey)}
#ingestSidebarPanel{padding:0 4px;overflow-y:auto;flex:1}
.ingest-sidebar-stats{display:flex;gap:8px;margin:6px 0 4px}
.ingest-sidebar-stat{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:8px;text-align:center;font-size:15px;color:var(--grey)}
.ingest-sidebar-stat-val{display:block;font-size:22px;font-weight:700;color:var(--gold);font-family:var(--mono);margin-bottom:2px}
.ingest-sidebar-row{display:flex;align-items:center;gap:6px;padding:4px 0;border-bottom:1px solid var(--border);font-size:15px;color:var(--grey)}
.ingest-sidebar-icon{font-size:16px;flex-shrink:0;width:12px}
.ingest-sidebar-name{color:var(--white);margin-left:auto;text-align:right;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#ingestRightPanel{padding:12px 10px;overflow-y:auto;flex:1}
.ingest-unmatched-row{font-size:15px;color:var(--white);padding:5px 8px;margin-bottom:4px;background:var(--bg);border:1px solid var(--border);border-left:2px solid var(--orange);border-radius:4px;display:flex;align-items:center;gap:6px}

/* ── Ingest result ── */
.ingest-result{display:flex;flex-direction:column;gap:4px}
.ingest-result-row{display:flex;justify-content:space-between;gap:16px;padding:4px 0;border-bottom:1px solid var(--border);font-size:15px}
.ingest-result-row:last-child{border-bottom:none}
.ingest-result-label{color:var(--grey)}
.ingest-result-val{color:var(--white);font-weight:700;text-align:right;word-break:break-all}

/* ── Initially-hidden elements ── */
#graphLoading{display:none}
#diagramOverlay{display:none}
