:root { --bg: #14171a; --surface: #1b1f24; --surface-2: #222831; --line: #2c333d; --text: #e6edf3; --muted: #8b98a5; --accent: #4493f8; --ok: #3fb950; --warn: #d29922; --err: #f85149; } * { box-sizing: border-box; } body { margin: 0; height: 100vh; display: grid; grid-template-rows: auto auto 1fr auto; /* One column, hard-capped at the body's width. Without this the implicit column sizes to max-content — the nowrap instance URL once blew it out to ~390px inside a 268px view, pushing the right side of every row and the second footer button past the visible edge. */ grid-template-columns: minmax(0, 1fr); background: var(--bg); color: var(--text); font: 13px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; user-select: none; overflow-y: hidden; /* clip, not hidden: hidden containers can still be scrolled programmatically (e.g. by focusing the rename input), which shoved the whole sidebar sideways. clip forbids scrolling entirely. */ overflow-x: clip; } header, #alerts, #accounts, footer { overflow-x: clip; min-width: 0; /* grid items may never dictate the column width */ } header { padding: 14px 14px 10px; border-bottom: 1px solid var(--line); -webkit-app-region: drag; } h1 { margin: 0 0 3px; font-size: 13px; font-weight: 600; } #instance { font: 10px ui-monospace, monospace; color: var(--muted); cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; -webkit-app-region: no-drag; } #instance:hover { color: var(--accent); } /* --- unified alerts --- */ #alerts { padding: 8px; border-bottom: 1px solid var(--line); background: var(--surface); max-height: 190px; overflow-y: auto; } #alerts .empty { color: var(--muted); font-size: 11px; padding: 2px 4px; } .alert { padding: 7px 9px; margin-bottom: 5px; border: 1px solid var(--accent); border-radius: 6px; background: #12283f; cursor: pointer; animation: pulse 1.6s ease-in-out infinite; } .alert:last-child { margin-bottom: 0; } .alert b { display: block; } .alert span { color: var(--muted); font-size: 11px; } @keyframes pulse { 50% { border-color: #7cc0ff; } } /* --- accounts --- */ #accounts { padding: 8px; overflow-y: auto; } .acct { display: flex; align-items: center; gap: 8px; padding: 8px 9px; margin-bottom: 3px; border: 1px solid transparent; border-radius: 6px; cursor: pointer; } .acct:hover { background: var(--surface-2); } .acct.active { background: var(--surface-2); border-color: var(--line); } .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--muted); flex: none; } .dot.loading { background: var(--warn); } .dot.ready { background: var(--ok); } .dot.err { background: var(--err); } .dot.off { background: #566270; } .acct .state { flex: none; font-size: 10px; color: var(--muted); } /* which Connect instance the account lives on */ .acct .inst { flex: none; padding: 1px 5px; border: 1px solid var(--line); border-radius: 4px; font-size: 9px; font-weight: 700; letter-spacing: 0.4px; color: var(--muted); } .acct:hover .inst { display: none; /* make room for the tool buttons */ } .acct:hover .state { display: none; /* make room for the tool buttons */ } .acct .label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .acct .label.placeholder { color: var(--muted); font-style: italic; } .rename { flex: 1; min-width: 0; padding: 3px 6px; border: 1px solid var(--accent); border-radius: 4px; background: #0d1117; color: var(--text); font: inherit; outline: none; } .acct .badge { min-width: 17px; padding: 0 5px; border-radius: 9px; background: var(--accent); color: #06101d; font-size: 10px; font-weight: 700; text-align: center; } .acct .tools { display: none; gap: 4px; } .acct:hover .tools { display: flex; } .acct .tools button { border: 0; background: none; color: var(--muted); cursor: pointer; padding: 0 2px; font-size: 12px; } .acct .tools button:hover { color: var(--text); } /* --- footer --- */ footer { padding: 10px; border-top: 1px solid var(--line); -webkit-app-region: no-drag; } footer button { -webkit-app-region: no-drag; } #bulk-label { margin-bottom: 5px; font-size: 10px; font-weight: 600; letter-spacing: 0.4px; text-transform: uppercase; color: var(--muted); } #bulk, #bulk2 { display: flex; gap: 6px; margin-bottom: 8px; } /* appearance:none everywhere — if a button ever loses its styling it must degrade to a dark rectangle, never a white UA-default widget. */ #bulk button, #bulk2 button, #add, #signins { appearance: none; -webkit-appearance: none; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-2); color: var(--text); font: inherit; cursor: pointer; } #bulk button { flex: 1 1 0; min-width: 0; display: inline-flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap; padding: 7px 4px; font-size: 12px; } #bulk button:hover, #bulk2 button:hover, #add:hover, #signins:hover { border-color: var(--accent); } #bulk button:active, #bulk2 button:active, #add:active, #signins:active { background: #2a313b; } #bulk2 button { flex: 1 1 0; min-width: 0; white-space: nowrap; padding: 6px 4px; font-size: 12px; } #signins { width: 100%; padding: 6px; margin-top: 6px; font-size: 12px; color: var(--muted); } .bdot { width: 8px; height: 8px; border-radius: 50%; flex: none; } .bdot.av { background: var(--ok); } .bdot.off { background: #566270; } #add { width: 100%; padding: 7px; } #hint { margin-top: 8px; font-size: 10px; line-height: 1.45; color: var(--muted); } #credit { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--line); font-size: 10px; letter-spacing: 0.3px; text-align: center; color: var(--muted); } /* --- toast --- */ #toast { position: fixed; left: 10px; right: 10px; bottom: 10px; z-index: 40; padding: 8px 10px; background: #0d1117; border: 1px solid var(--line); border-radius: 8px; font-size: 11px; line-height: 1.4; } #toast[hidden] { display: none; } #incoming-pop { position: fixed; inset: 0; z-index: 60; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(8, 10, 12, 0.82); } #incoming-pop[hidden] { display: none; } .incoming-pop-card { width: 100%; padding: 16px 14px 14px; border: 2px solid #3fb950; border-radius: 10px; background: #12283f; text-align: center; animation: pulse 1.2s ease-in-out infinite; } .incoming-pop-kicker { font-size: 11px; font-weight: 700; letter-spacing: 0.8px; text-transform: uppercase; color: #7ee787; } #incoming-pop-name { margin: 8px 0 14px; font-size: 16px; font-weight: 700; line-height: 1.3; } #incoming-pop-go { appearance: none; -webkit-appearance: none; width: 100%; padding: 10px; border: 0; border-radius: 8px; background: #3fb950; color: #0d1117; font: inherit; font-weight: 700; cursor: pointer; } /* --- saved sign-ins panel --- */ #creds { position: fixed; inset: 0; z-index: 50; overflow-y: auto; overflow-x: clip; padding: 14px; background: var(--bg); } #creds[hidden] { display: none; } .creds-head { font-size: 13px; font-weight: 600; margin-bottom: 6px; } .creds-note { font-size: 10px; line-height: 1.5; color: var(--muted); margin-bottom: 12px; } .creds-row { margin-bottom: 12px; } .creds-row.cleared { opacity: 0.35; } .creds-name { font-size: 12px; font-weight: 600; margin-bottom: 4px; } .creds-line { display: flex; flex-direction: column; gap: 4px; } .creds-line .rename { width: 100%; } /* per-account action bar */ .creds-rowbar { display: flex; align-items: center; gap: 6px; margin-top: 5px; } .creds-rowbar button { appearance: none; padding: 3px 9px; border: 1px solid var(--line); border-radius: 5px; background: var(--surface-2); color: var(--text); font: inherit; font-size: 11px; cursor: pointer; } .creds-rowbar button:hover { border-color: var(--accent); } .creds-rowbar button.primary { border-color: var(--accent); background: var(--accent); color: #06101d; font-weight: 600; } .creds-status { flex: 1; min-width: 0; font-size: 10px; color: var(--ok); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .creds-forget { flex: none; border: 0; background: none; color: var(--muted); font-size: 10px; cursor: pointer; padding: 0; } .creds-forget:hover { color: var(--err); } .creds-row.cleared .creds-forget { color: var(--err); font-weight: 700; } .creds-actions { display: flex; gap: 6px; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--line); } .creds-actions button { appearance: none; flex: 1 1 0; min-width: 0; white-space: nowrap; padding: 8px 4px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-2); color: var(--text); font: inherit; font-size: 12px; cursor: pointer; } .creds-actions button:hover { border-color: var(--accent); } .creds-actions button.primary { border-color: var(--accent); background: var(--accent); color: #06101d; font-weight: 600; }