* { box-sizing: border-box; } :root { color-scheme: dark; --bg-app: #0a0a0b; --bg-panel: #111113; --bg-elevated: #17171a; --bg-hover: #1d1d22; --bg-input: #141418; --border-subtle: #26262c; --border-strong: #34343d; --text-primary: #f5f5f7; --text-secondary: #b3b3bd; --text-tertiary: #7c7c88; --accent-blue: #3b82f6; --accent-blue-hover: #4c8dff; --accent-red: #ef4444; --accent-amber: #d97706; --accent-purple-muted: #2a2440; --accent-purple-text: #a5b4fc; --shadow-panel: 0 16px 32px rgba(0, 0, 0, 0.34); --shadow-modal: 0 24px 48px rgba(0, 0, 0, 0.45); --radius-panel: 20px; --radius-control: 14px; } html, body { min-height: 100%; user-select: none; -webkit-user-select: none; -webkit-user-drag: none; } body { margin: 0; font-family: Inter, "SF Pro Text", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: var(--bg-app); color: var(--text-primary); } button, input, select { font: inherit; } button { color: inherit; } button, input, select, pre { transition: border-color 140ms ease, background-color 140ms ease, color 140ms ease, box-shadow 140ms ease, opacity 140ms ease; } button:focus-visible, input:focus-visible, select:focus-visible { outline: none; border-color: var(--accent-blue); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.16); } .hidden { display: none !important; } .subtle { color: var(--text-tertiary); } .login-screen { min-height: 100vh; display: grid; grid-template-rows: 38px minmax(0, 1fr); background: var(--bg-panel); position: relative; } .window-titlebar { height: 38px; } .login-titlebar, .shell-titlebar { width: 100%; } .login-card { width: min(100%, 420px); display: flex; flex-direction: column; align-items: center; gap: 24px; margin: auto; padding: 48px 40px 34px; background: transparent; border: none; box-shadow: none; } .login-main { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 24px; } .login-emblem { width: 56px; height: 56px; display: grid; place-items: center; background: var(--bg-elevated); border: 1px solid var(--border-subtle); border-radius: 999px; } .login-lock-icon { width: 24px; height: 24px; color: var(--text-secondary); stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } .login-title-block { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; } .login-title-block h1, .detail-header h2, .detail-section h3, .modal-header h3, .mcp-json-header h4 { margin: 0; } .login-title-block h1 { font-size: 32px; font-weight: 700; letter-spacing: -0.02em; } .login-subtle { width: 100%; margin: 0; color: var(--text-secondary); font-size: 14px; line-height: 1.45; font-weight: 500; } .login-actions { width: 100%; display: flex; justify-content: center; } .login-google-button { width: 100%; min-height: 40px; padding: 10px 16px; justify-content: center; gap: 10px; border: 1px solid var(--accent-blue); background: var(--accent-blue); } .login-google-mark { width: 18px; height: 18px; color: #f5f5f7; flex: none; } .error-text { width: 100%; margin: 0; color: var(--accent-red); font-size: 13px; text-align: center; } .shell { display: grid; grid-template-columns: 248px minmax(0, 1fr); grid-template-rows: 38px minmax(0, 1fr); min-height: 100vh; background: var(--bg-app); } .shell-titlebar { grid-column: 1 / -1; grid-row: 1; } .sidebar { grid-column: 1; grid-row: 2; display: flex; flex-direction: column; gap: 16px; padding: 20px 16px; background: var(--bg-panel); border-right: 1px solid var(--border-subtle); } .sidebar-spacer { flex: 1; } .user-block { position: relative; } .user-trigger { width: 100%; display: flex; align-items: center; gap: 12px; padding: 14px; border: 1px solid var(--border-subtle); border-radius: 16px; background: var(--bg-elevated); color: var(--text-primary); text-align: left; cursor: pointer; } .avatar { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 999px; background: #d97706; color: var(--text-primary); font-size: 14px; font-weight: 700; } .user-copy { min-width: 0; flex: 1; } .user-name { color: var(--text-primary); font-size: 14px; font-weight: 600; } .user-email { color: var(--text-secondary); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .caret { color: var(--text-tertiary); } .user-menu { position: absolute; top: calc(100% + 8px); left: 0; width: 100%; padding: 6px; background: var(--bg-elevated); border: 1px solid var(--border-subtle); border-radius: 14px; box-shadow: var(--shadow-panel); z-index: 20; } .menu-item { width: 100%; padding: 10px 12px; border: none; border-radius: 10px; background: transparent; color: var(--text-primary); text-align: left; cursor: pointer; } .menu-item:hover { background: var(--bg-hover); } .menu-item.danger { color: #f87171; } .folder-list { display: grid; gap: 10px; } .folder-item { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; border: 1px solid transparent; border-radius: 14px; background: transparent; color: var(--text-secondary); text-align: left; cursor: pointer; } .folder-item:hover { background: rgba(255, 255, 255, 0.02); } .folder-item.active { background: var(--bg-elevated); border-color: var(--border-strong); color: var(--accent-purple-text); font-weight: 600; } .folder-item.active .folder-count { background: var(--accent-purple-muted); color: var(--accent-purple-text); } .folder-count { min-width: 24px; padding: 4px 9px; border-radius: 999px; background: var(--bg-hover); color: var(--text-secondary); font-size: 12px; text-align: center; } .sidebar-footer { display: grid; gap: 8px; } .sidebar-utility { width: 100%; display: flex; align-items: center; gap: 10px; padding: 10px; border: 1px solid var(--border-subtle); border-radius: 12px; background: var(--bg-input); color: var(--text-secondary); text-align: left; cursor: pointer; } .sidebar-utility:hover { background: var(--bg-hover); color: var(--text-primary); } .sidebar-utility-icon { width: 18px; display: inline-flex; justify-content: center; color: var(--text-secondary); } .main-shell { grid-column: 2; grid-row: 2; display: grid; grid-template-columns: 404px minmax(0, 1fr); min-width: 0; min-height: 0; } .list-column { display: flex; flex-direction: column; min-width: 0; background: var(--bg-panel); border-right: 1px solid var(--border-subtle); } .searchbar-shell, .list-pane, .toolbar { background: var(--bg-panel); } .searchbar-shell { padding: 18px 18px 14px; border-bottom: 1px solid var(--border-subtle); } .global-search { max-width: none; } .search-input, .filter-select, .detail-input { width: 100%; padding: 12px 14px; border: 1px solid var(--border-subtle); border-radius: 14px; background: var(--bg-input); color: var(--text-primary); outline: none; } .search-input::placeholder, .detail-input::placeholder { color: var(--text-tertiary); } .filter-select { appearance: none; } .list-pane { display: flex; flex-direction: column; min-width: 0; flex: 1; } .toolbar { padding: 14px 18px; border-bottom: 1px solid var(--border-subtle); } .entry-list { flex: 1; padding: 14px 18px 18px; display: grid; gap: 10px; align-content: start; overflow: auto; } .entry-item { width: 100%; padding: 16px; border: 1px solid var(--border-subtle); border-radius: 16px; background: var(--bg-input); color: inherit; text-align: left; cursor: pointer; } .entry-item:hover { background: var(--bg-hover); } .entry-item.active { background: var(--bg-elevated); border-color: var(--border-strong); } .entry-title { color: var(--text-primary); font-size: 14px; font-weight: 600; } .entry-subtitle, .entry-folder-chip, .integration-path { margin-top: 4px; color: var(--text-secondary); font-size: 13px; } .detail-pane { min-width: 0; overflow: auto; padding: 36px; background: var(--bg-app); } .detail-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 32px; } .detail-title-stack { display: flex; flex-direction: column; gap: 6px; } .detail-folder-label { color: var(--text-tertiary); font-size: 12px; font-weight: 600; } .detail-title-block { display: flex; align-items: center; gap: 10px; } .detail-header h2 { font-size: 32px; font-weight: 700; } .detail-badge { padding: 4px 8px; border-radius: 999px; background: #422006; color: #fbbf24; font-size: 12px; } .detail-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } .primary, .secondary-button { display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: 12px; cursor: pointer; white-space: nowrap; } .primary { border: none; background: var(--accent-blue); color: var(--text-primary); } .primary:hover { background: var(--accent-blue-hover); } .secondary-button { border: 1px solid var(--border-strong); background: var(--bg-elevated); color: var(--text-primary); } .secondary-button:hover { background: var(--bg-hover); } .secondary-button.small, .primary.small { padding: 10px 14px; font-size: 12px; font-weight: 500; } .secondary-button.large { padding: 14px 28px; } .secondary-button.danger { border-color: #4b2529; background: #2b1316; color: #fca5a5; } .secondary-button:disabled, .primary:disabled, .integration-toggle:disabled, .secret-inline-action:disabled { cursor: default; opacity: 0.7; } .detail-section { margin-bottom: 18px; } .detail-section h3 { margin-bottom: 18px; color: var(--text-tertiary); font-size: 11px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; } .detail-edit-section { max-width: 420px; } .detail-inline-value { color: var(--text-primary); font-size: 16px; font-weight: 600; } .detail-section.compact { margin-bottom: 0; } .detail-fields, .device-list { display: grid; gap: 16px; } .detail-fields { grid-template-columns: repeat(2, minmax(220px, 1fr)); } .detail-field { display: flex; flex-direction: column; gap: 8px; padding: 16px 18px; border: 1px solid var(--border-subtle); border-radius: 16px; background: var(--bg-panel); } .detail-label, .secret-type { color: var(--text-tertiary); font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; } .detail-value { color: var(--text-primary); font-size: 15px; font-weight: 600; word-break: break-word; } .metadata-editor { display: grid; gap: 10px; margin-bottom: 12px; } .metadata-row { display: grid; grid-template-columns: minmax(140px, 180px) minmax(0, 1fr) auto; gap: 10px; } .metadata-row .detail-input { min-width: 0; } .secret-list { display: grid; gap: 18px; } .secret-card, .device-card { padding: 20px 22px; border: 1px solid var(--border-subtle); border-radius: 20px; background: var(--bg-elevated); } .secret-row { display: flex; align-items: center; gap: 14px; margin-top: 12px; } .secret-shell { flex: 1; display: flex; align-items: center; gap: 10px; min-width: 0; padding: 14px 16px; border: 1px solid var(--border-subtle); border-radius: 14px; background: var(--bg-input); } .secret-leading-icon, .secret-inline-action { color: var(--text-secondary); font-size: 14px; } .secret-inline-action { border: none; background: transparent; } .secret-value { flex: 1; min-width: 0; color: var(--text-secondary); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 13px; letter-spacing: 0.04em; text-align: left; } .secret-copy-button { flex: none; } .secret-actions { display: flex; flex-wrap: wrap; gap: 8px; } .action-button { min-height: 40px; padding-inline: 16px; } .action-button .button-label { color: inherit; } .modal { position: fixed; inset: 0; display: grid; place-items: center; padding: 24px; background: rgba(5, 5, 7, 0.72); } .modal-card { width: min(560px, 100%); max-height: calc(100vh - 48px); overflow: auto; padding: 28px; background: var(--bg-panel); border: 1px solid var(--border-subtle); border-radius: 24px; box-shadow: var(--shadow-modal); } .modal-card.wide { width: min(960px, 100%); } .modal-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; } .modal-header h3 { font-size: 22px; font-weight: 700; } .icon-button { width: 32px; height: 32px; border: 1px solid var(--border-strong); border-radius: 999px; background: var(--bg-elevated); color: var(--text-primary); cursor: pointer; } .modal-copy { margin: 0 0 20px; color: var(--text-secondary); font-size: 13px; line-height: 1.45; } .modal-section { margin-bottom: 20px; } .modal-footnote { margin: 14px 0 0; color: var(--text-tertiary); font-size: 11px; line-height: 1.45; } .modal-form { display: grid; gap: 14px; } .field-label { display: grid; gap: 8px; color: var(--text-secondary); font-size: 13px; } .detail-textarea { min-height: 128px; resize: vertical; } .modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 22px; } .section-header-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; } .history-list { display: grid; gap: 14px; } .history-item { padding: 18px; border: 1px solid var(--border-subtle); border-radius: 18px; background: var(--bg-elevated); } .history-topline, .history-meta, .toolbar { display: flex; align-items: center; gap: 10px; } .history-topline, .toolbar { justify-content: space-between; } .history-meta { margin-top: 10px; flex-wrap: wrap; color: var(--text-tertiary); font-size: 12px; } .history-value { margin-top: 14px; padding: 14px 16px; border: 1px solid var(--border-subtle); border-radius: 14px; background: var(--bg-input); color: var(--text-secondary); font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; } .history-actions { margin-top: 14px; display: flex; justify-content: flex-end; } .integration-list { display: grid; gap: 0; border: 1px solid var(--border-subtle); border-radius: 18px; overflow: hidden; background: var(--bg-panel); } .integration-row-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 20px; border-bottom: 1px solid var(--border-subtle); } .integration-row-card:last-child { border-bottom: none; } .integration-app { display: flex; align-items: center; gap: 12px; min-width: 0; } .integration-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; background: var(--bg-elevated); color: var(--text-secondary); font-size: 13px; } .integration-path { margin-top: 4px; font-size: 12px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; word-break: break-all; } .integration-toggle { display: inline-flex; align-items: center; justify-content: flex-end; width: 40px; height: 22px; padding: 3px; border: 1px solid transparent; border-radius: 999px; background: var(--bg-hover); cursor: pointer; } .integration-toggle.is-on { background: var(--accent-blue); border-color: var(--accent-blue-hover); } .integration-toggle-knob { width: 16px; height: 16px; border-radius: 999px; background: var(--bg-panel); border: 1px solid var(--bg-app); } .integration-toggle:not(.is-on) .integration-toggle-knob { margin-right: auto; } .integration-toggle.is-loading { opacity: 0.7; } .mcp-json-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; } .mcp-json-header h4 { font-size: 16px; font-weight: 600; } .mcp-config { margin: 0; padding: 18px; border: 1px solid var(--border-subtle); border-radius: 16px; background: var(--bg-input); color: #cbd5e1; overflow: auto; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 12px; line-height: 1.5; } .button-icon { font-size: 13px; color: var(--text-secondary); line-height: 1; } .primary .button-icon { color: var(--text-primary); } .device-list { gap: 12px; } .empty-card { padding: 18px; border: 1px solid var(--border-subtle); border-radius: 16px; background: var(--bg-panel); } .empty-title { color: var(--text-primary); font-size: 14px; font-weight: 600; } .empty-copy { color: var(--text-secondary); font-size: 13px; line-height: 1.45; } @media (max-width: 1180px) { .main-shell { grid-template-columns: 340px minmax(0, 1fr); } .detail-fields { grid-template-columns: minmax(0, 1fr); } } @media (max-width: 960px) { .shell { grid-template-columns: 220px minmax(0, 1fr); } .main-shell { grid-template-columns: minmax(280px, 320px) minmax(0, 1fr); } .detail-pane { padding: 28px 20px; } }