/* ===== Apps: shared scaffolding, Files, Text Editor, Terminal, Calculator ===== */

/* ---------- Files (Nautilus) ---------- */
.naut { display:flex; flex-direction:column; height:100%; background:var(--win-bg); }
.naut-body { flex:1; display:flex; min-height:0; }
.naut-side {
  width:190px; flex:none; background:var(--sidebar-bg);
  border-right:1px solid var(--border); padding:8px 7px; overflow-y:auto;
}
.naut-side .side-item {
  display:flex; align-items:center; gap:9px; padding:6px 9px; border-radius:8px; cursor:pointer;
  font-size:13.5px; margin-bottom:1px; white-space:nowrap;
}
.naut-side .side-item:hover { background:var(--hover-row); }
.naut-side .side-item.active { background:var(--selected-row); font-weight:500; }
.naut-side .side-item .sym { width:16px; height:16px; fill:currentColor; opacity:.8; flex:none; }
.naut-side .side-item .count { margin-left:auto; font-size:11.5px; color:var(--fg-dim); }
.naut-main { flex:1; min-width:0; display:flex; flex-direction:column; }
.naut-toolbar {
  display:flex; align-items:center; gap:6px; padding:6px 10px;
}
.crumbs { flex:1; display:flex; align-items:center; gap:2px; overflow:hidden; min-width:0; }
.crumb {
  padding:4px 9px; border-radius:7px; cursor:pointer; font-size:13px; white-space:nowrap;
  color:var(--fg-dim);
}
.crumb:hover { background:var(--hover-row); color:var(--fg); }
.crumb.current { color:var(--fg); font-weight:500; }
.crumb-sep svg { width:11px; height:11px; fill:var(--fg-dim); display:block; }
.path-entry { flex:1; }

.naut-view-wrap { flex:1; overflow-y:auto; padding:4px 12px 14px; position:relative; }
.file-grid { display:grid; grid-template-columns:repeat(auto-fill, 108px); gap:2px; align-content:start; }
.file-cell {
  display:flex; flex-direction:column; align-items:center; gap:5px;
  padding:10px 6px 8px; border-radius:12px; cursor:pointer; position:relative;
}
.file-cell:hover { background:var(--hover-row); }
.file-cell.selected { background:color-mix(in srgb, var(--accent) 22%, transparent); }
.file-cell img.thumb, .file-cell svg.f-icon { width:64px; height:64px; }
.file-cell .f-name {
  font-size:12.5px; text-align:center; max-width:100px; line-height:1.25;
  overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
  word-break:break-word;
}
.file-list { width:100%; border-collapse:collapse; }
.file-list th {
  text-align:left; font-size:12px; font-weight:700; color:var(--fg-dim);
  padding:6px 10px; border-bottom:1px solid var(--border); cursor:pointer; user-select:none;
}
.file-list th:hover { color:var(--fg); }
.file-list td { font-size:13px; padding:5px 10px; }
.file-list tr.row { cursor:pointer; border-radius:8px; }
.file-list tr.row:hover td { background:var(--hover-row); }
.file-list tr.row.selected td { background:color-mix(in srgb, var(--accent) 20%, transparent); }
.file-list .fl-name { display:flex; align-items:center; gap:9px; min-width:0; }
.file-list .fl-name img, .file-list .fl-name svg.f-icon { width:24px; height:24px; flex:none; }
.file-list .fl-name span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.file-list td.dim { color:var(--fg-dim); font-size:12.5px; }
.rename-input {
  font-size:12.5px; text-align:center; border:1.5px solid var(--accent); border-radius:6px;
  outline:none; width:96px; padding:2px 4px; background:var(--entry-bg); color:var(--fg); user-select:text;
}
.naut-statusbar {
  display:flex; align-items:center; gap:10px; padding:4px 12px; font-size:11.5px; color:var(--fg-dim);
  border-top:1px solid var(--border); flex:none;
}
.naut-searchbar { padding:0 10px 6px; display:none; }
.naut-searchbar.show { display:block; }
.trash-restore-bar {
  display:flex; align-items:center; justify-content:center; gap:10px;
  background:color-mix(in srgb, var(--accent) 14%, transparent);
  padding:6px; font-size:12.5px; border-radius:8px; margin-bottom:6px;
}

/* ---------- Text Editor ---------- */
.editor-root { display:flex; flex-direction:column; height:100%; }
.editor-area {
  flex:1; width:100%; resize:none; border:none; outline:none; padding:16px 20px;
  background:var(--view-bg); color:var(--fg);
  font-family:var(--font-mono); font-size:14.5px; line-height:1.55;
  user-select:text; tab-size:4;
}
.editor-statusbar {
  display:flex; align-items:center; gap:14px; padding:4px 12px; font-size:11.5px; color:var(--fg-dim);
  border-top:1px solid var(--border); flex:none; justify-content:flex-end;
}
.editor-findbar {
  display:none; align-items:center; gap:8px; padding:6px 10px; border-bottom:1px solid var(--border);
  background:var(--hb-bg);
}
.editor-findbar.show { display:flex; }
.find-count { font-size:12px; color:var(--fg-dim); min-width:64px; text-align:center; }
mark.find-hit { background:color-mix(in srgb, var(--warning) 60%, transparent); color:inherit; border-radius:3px; }
mark.find-hit.current { background:var(--accent); color:#fff; }

/* ---------- Terminal ---------- */
.term-root {
  height:100%; display:flex; flex-direction:column;
  background:#300a24; color:#ffffff;
  font-family:var(--font-mono); font-size:14px; line-height:1.42;
}
.term-scroll { flex:1; overflow-y:auto; padding:10px 12px 4px; user-select:text; cursor:text; }
.term-scroll::-webkit-scrollbar-thumb { background:rgba(255,255,255,.25); }
.term-line { white-space:pre-wrap; word-break:break-all; min-height:1.42em; }
.term-line a { color:#8ff2ff; }
.t-green { color:#26a269; font-weight:700; }
.t-blue { color:#5e9bff; font-weight:700; }
.t-yellow { color:#e5a50a; }
.t-red { color:#ff6b63; }
.t-dim { color:#c9b8d6; }
.t-cyan { color:#5fd7d7; }
.term-input-row { display:flex; padding:0 12px 10px; }
.term-input-row .term-prompt { white-space:pre; }
#term-hidden-input {
  position:absolute; opacity:0; width:1px; height:1px; border:none; padding:0;
}
.term-caret {
  display:inline-block; width:8px; height:1.15em; background:#fff; vertical-align:text-bottom;
  animation:caret-blink 1.06s steps(1) infinite;
}
@keyframes caret-blink { 50% { opacity:0; } }
.term-progress-line { color:#c9b8d6; }

/* ---------- Calculator ---------- */
.calc-root { display:flex; flex-direction:column; height:100%; background:var(--win-bg); user-select:none; }
.calc-display {
  padding:18px 18px 10px; text-align:right; min-height:104px;
  display:flex; flex-direction:column; justify-content:flex-end; gap:2px;
}
.calc-expr { font-size:15px; color:var(--fg-dim); min-height:20px; word-break:break-all; user-select:text; }
.calc-result { font-size:38px; font-weight:300; word-break:break-all; user-select:text; }
.calc-error { color:var(--danger); font-size:22px !important; }
.calc-pad { flex:1; display:grid; grid-template-columns:repeat(4,1fr); gap:7px; padding:10px 12px 12px; }
.calc-btn {
  border:none; border-radius:9px; font-size:17px; font-weight:400; cursor:pointer;
  background:var(--btn-bg); color:var(--fg); box-shadow:inset 0 0 0 1px var(--border);
  transition:background .08s ease, transform .04s ease;
}
.calc-btn:hover { background:var(--btn-hover); }
.calc-btn:active { transform:scale(.97); }
.calc-btn.op { color:var(--accent); font-weight:700; }
.calc-btn.eq { background:var(--accent); color:var(--accent-fg); font-weight:700; box-shadow:none; }
.calc-btn.eq:hover { background:var(--accent-hover); }
.calc-btn.fn { color:var(--fg-dim); }
.calc-mode-row { display:flex; gap:6px; padding:8px 12px 0; }
.calc-mode-row button {
  border:none; background:transparent; color:var(--fg-dim); font-size:12.5px; font-weight:700;
  padding:4px 10px; border-radius:99px; cursor:pointer;
}
.calc-mode-row button.active { background:var(--selected-row); color:var(--fg); }
