/* GUI App display — canvas-based window rendering */ .app-gui-display { display: flex; flex-direction: column; height: 100%; background: #0a0a0a; } .gui-canvas-wrap { flex: 1; display: flex; overflow: hidden; position: relative; } .gui-canvas { width: 100%; height: 100%; cursor: default; outline: none; image-rendering: auto; object-fit: contain; } /* Status overlays */ .gui-status { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; font-family: var(--font-mono); font-size: 13px; color: var(--text-muted); background: var(--bg-stage); } .gui-status-icon { font-size: 32px; opacity: 0.5; } .gui-status-text { text-align: center; line-height: 1.6; } .gui-status.connecting .gui-status-icon::after { content: ''; display: inline-block; width: 16px; height: 16px; border: 2px solid var(--text-muted); border-top-color: var(--accent); border-radius: 50%; animation: gui-spin 0.8s linear infinite; margin-left: 8px; vertical-align: middle; } @keyframes gui-spin { to { transform: rotate(360deg); } } .gui-status.exited { color: var(--status-red); } .gui-status.exited .gui-status-icon { opacity: 0.7; } .gui-status.exited .gui-status-text, .gui-status.error .gui-status-text { max-width: 600px; font-size: 12px; line-height: 1.5; text-align: left; background: rgba(0,0,0,0.3); padding: 12px 16px; border-radius: var(--radius-md); border: 1px solid var(--border-structural); word-break: break-word; white-space: pre-wrap; } /* Clipboard toast notification */ .gui-clipboard-toast { position: absolute; top: 12px; right: 12px; z-index: 100; display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: var(--bg-titlebar); border: 1px solid var(--border-structural); border-radius: var(--radius-md); box-shadow: 0 4px 16px rgba(0,0,0,0.4); font-family: var(--font-mono); font-size: 12px; color: var(--text-primary); animation: gui-toast-in 0.2s ease-out; max-width: 400px; } .gui-clipboard-toast.copied { border-color: var(--status-green); } .gui-clipboard-toast.fade-out { opacity: 0; transition: opacity 0.3s ease-out; } @keyframes gui-toast-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } .gui-clipboard-toast-icon { flex-shrink: 0; font-size: 14px; } .gui-clipboard-toast-text { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-secondary); } .gui-clipboard-toast-btn { flex-shrink: 0; padding: 4px 10px; background: var(--accent); border: none; border-radius: var(--radius-sm); color: #fff; font-family: var(--font-ui); font-size: 11px; font-weight: 500; cursor: pointer; white-space: nowrap; } .gui-clipboard-toast-btn:hover { opacity: 0.9; }