/* ── File Explorer Modal ── */ .fe-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); display: flex; align-items: center; justify-content: center; z-index: 1000; } .fe-modal { background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); width: 90vw; max-width: 1100px; height: 80vh; display: flex; flex-direction: column; } .fe-header { display: flex; align-items: center; justify-content: space-between; padding: var(--s2) var(--s3); border-bottom: var(--border-width) solid var(--f1-border); background: var(--f1-bg); flex-shrink: 0; } .fe-nav { display: flex; align-items: center; gap: var(--s2); flex: 1; overflow: hidden; } .fe-path { opacity: 0.6; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .fe-btn { padding: var(--s1) var(--s2); } .fe-btn:disabled { opacity: 0.4; cursor: default; } .fe-body { display: flex; flex: 1; overflow: hidden; } .fe-sidebar { width: 280px; min-width: 200px; border-right: var(--border-width) solid var(--f1-border); overflow-y: auto; background: var(--f1-bg); flex-shrink: 0; } .fe-sidebar-full { width: 100%; } .fe-main { flex: 1; overflow: hidden; display: flex; } .fe-item { padding: var(--s1) var(--s3); cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .fe-item:hover { background: var(--f2-bg); } .fe-item.active { background: var(--f3-bg); border-left: 2px solid var(--primary); } .fe-dir { color: var(--text); } .fe-file { color: var(--text); opacity: 0.85; } .fe-loading, .fe-error, .fe-empty, .fe-placeholder { padding: var(--s4); text-align: center; opacity: 0.5; align-self: center; margin: auto; } /* Preview */ .fe-preview { display: flex; flex: 1; overflow: hidden; font-size: 0.9em; } .fe-line-numbers { padding: var(--s2); padding-right: var(--s3); background: var(--f1-bg); color: var(--text); opacity: 0.35; text-align: right; overflow: hidden; user-select: none; line-height: 1.5; font-family: monospace; font-size: 1em; border-right: var(--border-width) solid var(--f1-border); flex-shrink: 0; min-width: 3em; } .fe-line-numbers div { height: 1.5em; } .fe-textarea { flex: 1; resize: none; border: none; background: var(--f2-bg); color: var(--text); font-family: monospace; font-size: 1em; line-height: 1.5; padding: var(--s2); outline: none; overflow-y: auto; white-space: pre; tab-size: 4; min-height: unset; height: auto; } .fe-textarea:hover { border-color: transparent; } .fe-textarea::selection { background: rgba(180, 68, 17, 0.35); } /* Footer */ .fe-footer { display: flex; align-items: center; justify-content: space-between; padding: var(--s2) var(--s3); border-top: var(--border-width) solid var(--f1-border); background: var(--f1-bg); flex-shrink: 0; gap: var(--s3); } .fe-info { opacity: 0.6; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }