/* ori-desktop — minimal dark shell around the ori webapp. */ :root { --bg: #18181b; --panel: #232327; --border: #34343a; --text: #e4e4e7; --muted: #9ca3af; --accent: #7c9cff; --ok: #34d399; --err: #f87171; color-scheme: dark; } * { box-sizing: border-box; } html, body { margin: 0; height: 100%; background: var(--bg); color: var(--text); font: 14px / 1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; -webkit-user-select: none; user-select: none; } .screen { height: 100%; } /* Class + attribute selectors only: an id selector such as #connect-screen would outrank .screen[hidden] and keep the screen visible for ever. */ .screen[hidden] { display: none !important; } /* ---- connection screen ---------------------------------------------- */ .connect { display: grid; place-items: center; padding: 24px; } .card { width: min(460px, 100%); background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 28px; display: flex; flex-direction: column; gap: 10px; } h1 { margin: 0 0 4px; font-size: 28px; font-weight: 600; letter-spacing: 0.02em; } .hint { margin: 0 0 8px; color: var(--muted); } label { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; } input { -webkit-user-select: text; user-select: text; width: 100%; padding: 10px 12px; border-radius: 8px; border: 1px solid var(--border); background: var(--bg); color: var(--text); font: inherit; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } input:focus { outline: 2px solid var(--accent); outline-offset: 1px; } .actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 6px; } button { font: inherit; padding: 8px 14px; border-radius: 8px; border: 1px solid var(--border); background: var(--panel); color: var(--text); cursor: pointer; } button:hover { border-color: var(--accent); } button:disabled { opacity: 0.5; cursor: progress; } button.primary { background: var(--accent); border-color: var(--accent); color: #0b1020; font-weight: 600; } button.ghost { background: transparent; padding: 4px 10px; font-size: 13px; } .status { min-height: 1.4em; margin: 4px 0 0; -webkit-user-select: text; user-select: text; } .status.ok { color: var(--ok); } .status.err { color: var(--err); } .fineprint { margin: 0; font-size: 11px; color: var(--muted); word-break: break-all; } /* ---- viewer -------------------------------------------------------- */ .viewer { display: flex; flex-direction: column; } .viewer[hidden] { display: none; } .bar { display: flex; align-items: center; gap: 8px; padding: 4px 8px; border-bottom: 1px solid var(--border); background: var(--panel); font-size: 13px; } .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ok); } .url { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--muted); -webkit-user-select: text; user-select: text; } .spacer { flex: 1; } iframe { flex: 1; width: 100%; border: 0; background: var(--bg); }