/* * Line-number gutter element class; the marker is a pseudo-element that, like * IDEA, replaces the number (centred on the element's content box). */ .bp { position: relative; color: transparent !important; } .bp::before { content: ""; position: absolute; left: calc(50% + 1px); top: 50%; width: 1em; height: 1em; transform: translate(-50%, -50%); border-radius: 50%; background: var(--danger); box-sizing: border-box; pointer-events: none; } .normal::before { background: var(--danger); } /* Disabled / muted: hollow circle. */ .disabled::before { background: transparent; border: 1.5px solid var(--danger); } /* Not bound by the adapter. */ .unverified::before { background: var(--fg-gutter); } /* Condition / hit count: dot with a small notch. */ .conditional::before { background: radial-gradient(circle at 50% 50%, var(--bg-app) 0 0.16em, var(--danger) 0.18em); } /* Logpoint: diamond. */ .log::before { border-radius: 1.5px; width: 0.8em; height: 0.8em; transform: translate(-50%, -50%) rotate(45deg); } /* Bound by the debugger in a running session (expui breakpointValid). */ .verified::before { border-radius: 0; background: url("../../../ui/expui/breakpoints/breakpointValid.svg") center / contain no-repeat; } :global(:root[data-theme^="dark"]) .verified::before { background-image: url("../../../ui/expui/breakpoints/breakpointValid_dark.svg"); } /* Method breakpoints / field watchpoints (expui icons). */ .method::before { border-radius: 0; background: url("../../../ui/expui/breakpoints/breakpointMethod.svg") center / contain no-repeat; } :global(:root[data-theme^="dark"]) .method::before { background-image: url("../../../ui/expui/breakpoints/breakpointMethod_dark.svg"); } .methodDisabled::before { border-radius: 0; background: url("../../../ui/expui/breakpoints/breakpointMethodDisabled.svg") center / contain no-repeat; } :global(:root[data-theme^="dark"]) .methodDisabled::before { background-image: url("../../../ui/expui/breakpoints/breakpointMethodDisabled_dark.svg"); } .methodVerified::before { border-radius: 0; background: url("../../../ui/expui/breakpoints/breakpointMethodValid.svg") center / contain no-repeat; } :global(:root[data-theme^="dark"]) .methodVerified::before { background-image: url("../../../ui/expui/breakpoints/breakpointMethodValid_dark.svg"); } .field::before { border-radius: 0; background: url("../../../ui/expui/breakpoints/breakpointField.svg") center / contain no-repeat; } :global(:root[data-theme^="dark"]) .field::before { background-image: url("../../../ui/expui/breakpoints/breakpointField_dark.svg"); } .fieldDisabled::before { border-radius: 0; background: url("../../../ui/expui/breakpoints/breakpointFieldDisabled.svg") center / contain no-repeat; } :global(:root[data-theme^="dark"]) .fieldDisabled::before { background-image: url("../../../ui/expui/breakpoints/breakpointFieldDisabled_dark.svg"); } .fieldVerified::before { border-radius: 0; background: url("../../../ui/expui/breakpoints/breakpointFieldValid.svg") center / contain no-repeat; } :global(:root[data-theme^="dark"]) .fieldVerified::before { background-image: url("../../../ui/expui/breakpoints/breakpointFieldValid_dark.svg"); } /* Beat the caret row (`.cm-activeLine`), as IDEA does; the suspended line wins over a breakpoint. */ :global(.cm-editor) :global(.cm-line).bpLine { background: var(--bg-breakpoint-line); } :global(.cm-editor) :global(.cm-line).execLine { background: var(--bg-debug-line); } .inlineValue { margin-left: 24px; color: var(--syn-inline-value); font-size: var(--fs-ui); font-family: var(--font-mono); white-space: pre; pointer-events: none; -webkit-user-select: none; user-select: none; } /* Data Views › Show value tooltip on mouse hover. */ .valueTooltip { max-width: 520px; padding: 4px 8px; font-family: var(--font-mono); font-weight: var(--fw-code); font-size: var(--fs-code); white-space: pre-wrap; word-break: break-word; } .valueTooltipTree { padding: 2px 0; white-space: normal; } .valueExpand { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; margin-right: 4px; padding: 0; border: 0; border-radius: var(--radius-small); background: transparent; color: var(--fg-muted); vertical-align: -3px; cursor: pointer; } .valueExpand:hover { background: var(--bg-hover, transparent); color: var(--fg-strong); } .valueName { color: var(--fg-strong); } .valueType { color: var(--fg-subtle); } /* Smart Step Into: calls on the paused line framed, the selected one filled. */ .stepTarget { border-radius: 2px; box-shadow: inset 0 0 0 1px var(--border-strong); cursor: pointer; } .stepTargetSelected { background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent); } /* Inlay Run to Cursor button, left of a hovered line's text. */ .runToCursor { position: absolute; z-index: 5; display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 0; border: 1px solid var(--border-popup); border-radius: var(--radius-small); background: var(--bg-popup); box-shadow: var(--shadow-tooltip); color: var(--fg); cursor: pointer; } .runToCursor:hover { background: var(--bg-hover); }