How a Studio diagram looks is decided in three places: the source (colours, fonts, shapes and direction written in the engine's own language), the theme the canvas is shown in (light or dark), and the workspace around it (which panels are open and where). This page covers all three — the Style flyout with its layout direction and eight journal presets, quick recolouring on the canvas, styling written directly in Mermaid, Graphviz, PlantUML, D2 and chart specs, how light and dark mode change what you see and what you export, and how to arrange the Studio itself, from the code sheet to the Modern and Classic layouts and your accent colour.
At a glance
| You want to | Use | Needs AI? |
|---|---|---|
| Flip a Mermaid flowchart from top-down to left-right | Style → Layout direction | No |
| Restyle a whole diagram to a journal look | Style → Presets | Yes |
| Recolour or enlarge one element | Click it, then Colour or Bigger in Diagram tools | No, on Mermaid, Nomnoml and Graphviz |
| Make a diagram readable for colour-blind readers | The Okabe-Ito (colourblind safe) preset, or the Colourblind-safe prompt suggestion | Yes |
| Set exact colours, fonts and shapes | Write them in the source (examples below) | No |
| Tidy the source's indentation | Format source (⇧⌥F) | No |
| Switch between light and dark | The sun/moon button, Studio ▾ → Theme, or ⇧⌘D | No |
| Export with no background | ⋮ → Export ▸ Transparent background | No |
| Change the workspace arrangement | Studio ▾ → Layout → Modern or Classic | No |
| Change the app's accent colour | Settings → Personalization & privacy → Accent vibe | No |
Where a diagram's look comes from
Everything that changes a diagram's appearance in the Studio ends up as source. The Layout direction button edits the direction keyword; the Colour tool writes a style line; a preset asks AI to rewrite the styling in your engine's own syntax. So the result is always ordinary code you can read, adjust by hand, undo with ⌘Z, share and export.
The two exceptions are display-only and never touch your source: the theme (light or dark mode changes how the canvas draws the diagram) and the workspace (panels, layout and accent colour). Exports are taken from the diagram as it is drawn on screen, which is why the theme matters when you export; see Light, dark and system.
The Style flyout
Select Style on the tool rail. A flyout titled Style opens beside the rail; Escape, a click outside it, or × (Close style) closes it, and applying a preset closes it for you. It floats over the canvas in both the Modern and Classic layouts. On a phone it opens as a bottom sheet.
Layout direction
When the open figure is a Mermaid flowchart (its first flowchart or graph line names a direction), the flyout's first row reads Layout direction, with a button showing the current direction. Each press moves to the next one and rewrites that keyword in your source:
| Button shows | Meaning | Next press gives |
|---|---|---|
| TD | Top-down (Mermaid also accepts TB for this) | LR |
| LR | Left to right | BT |
| BT | Bottom to top | RL |
| RL | Right to left | TD |
A toast confirms the change, for example Direction → LR. No AI is used and each press is one undo step. If a source carries DT or RD — spellings Mermaid does not accept — the button treats them as TD and the first press moves to LR, which also gets the diagram rendering again.
The same command is available from ⌘K as Cycle the layout direction. On any other engine it answers "Direction not applicable for this engine", and the row is not shown in the flyout. Set the direction in the source instead:
| Engine | Direction in the source |
|---|---|
| Mermaid flowchart | flowchart LR (or TD, BT, RL) on the first line |
| Mermaid state diagram | A direction LR line |
| Graphviz (DOT) | rankdir=LR; inside the graph |
| D2 | direction: right (or left, down, up) |
| PlantUML | A left to right direction line |
Presets
Under Presets, eight journal and palette styles are listed by name, each with up to five colour swatches; hover over a row to read its description.
| Preset | Description | Palette | Typography and strokes |
|---|---|---|---|
| Studio default | flowss default palette and typography | Blue, violet, green, red, yellow, sky | Inter |
| Nature journal | Nature/Cell-style: muted earthy palette, Helvetica, thin lines | #E64B35, #4DBBD5, #00A087, #3C5488, #F39B7F | Helvetica / Arial, thin 1 pt strokes, no gridlines, title above the figure |
| IEEE / publication | Black-and-white safe, Times, thicker strokes | #000, #505050, #808080, #a0a0a0, #c0c0c0 | Times New Roman, 1.5 pt strokes, distinct dash patterns per series; legible printed in black and white |
| Tableau 10 | Classic Tableau categorical palette | #1f77b4, #ff7f0e, #2ca02c, #d62728, #9467bd and five more | Matches Tableau dashboards |
| Okabe-Ito (colourblind safe) | Eight-colour palette designed for colour vision deficiency | #000000, #E69F00, #56B4E9, #009E73, #F0E442, #0072B2, #D55E00, #CC79A7 | Every series distinguishable for protanopia, deuteranopia and tritanopia |
| Viridis (perceptual) | Perceptually uniform sequential palette | #440154 through #fde725 | For ordered or continuous values, not categories |
| Monochrome | Single-hue ramp; sober and academic | Slate, #0f172a through #cbd5e1 | Series told apart by shape or dash rather than hue |
| NIH grant | Conservative palette suited to grant figures | #1f4e79, #c00000, #548235, #7030a0, #bf9000 | Calibri / Arial, no gradients, captions outside the plot area |
To apply one:
- Open the figure you want to restyle and select Style.
- Select a preset. A spinner appears on its row, and the other rows are greyed out while it works.
- When it finishes, the flyout closes and the restyled source replaces the old one. Press ⌘Z to go back.
The preset is applied by the flowss Studio Agent, with the instruction to keep the diagram's content and structure unchanged and change only colours, typography and stroke weights. The flowss Studio Agent writes the styling in your engine's own syntax (style and class lines in Mermaid, attributes in Graphviz, skinparam in PlantUML, config in Vega-Lite and so on), so read the result and adjust anything you want different. If it fails, a red message appears under the list — for example "AI returned no result." — and your source is left as it was.
Note: Presets need AI on your plan: Starter with your own key, or Plus and above with hosted AI points. Each application is one standard AI request. The Layout direction control needs no AI and works on every plan.
Quick styling on the canvas
Click any label on the diagram to select that element; the Diagram tools panel appears at the top right of the canvas. Two of its tools change appearance directly, without AI:
| Tool | Mermaid | Nomnoml | Graphviz (DOT) |
|---|---|---|---|
| Colour | Writes style <node> fill:<colour>,stroke:<darker shade>,color:#0b1220 (replacing an earlier style line for that node) | Adds a #fill: directive for the element's colour group | Adds fillcolor="<colour>", style=filled to the node's attributes |
| Bigger | Writes style <node> font-size:18px,padding:14px,font-weight:600 | Not available | Not available |
Colour offers twelve swatches: six pastels (#fee2e2, #fef3c7, #dcfce7, #dbeafe, #ede9fe, #fce7f3) for fills behind dark text, and six strong colours (#ef4444, #f59e0b, #10b981, #3b82f6, #8b5cf6, #ec4899). Each press is one undo step, and the element stays selected so you can recolour several in a row. On other engines these tools say they are not a direct edit there yet; use Ask the flowss Studio Agent… in the same panel (which needs AI), or write the style in the source. See The Studio editor for the rest of the panel.
Styling with AI from the prompt
The prompt at the bottom of the canvas (Describe a diagram or a change…) accepts any styling request in plain words — "make the decision nodes amber", "use a serif font", "thicker arrows". While the canvas is blank, or while the prompt has focus, it offers up to three suggestion chips:
| Chip | What it does |
|---|---|
| Make the layout left-to-right | Fills the prompt with that request, ready to send |
| Bigger boxes | Asks the flowss Studio Agent to "Increase the font size and padding of every node so the diagram is easier to read in a slide." |
| Colourblind-safe | Asks the flowss Studio Agent to recolour the diagram with the Okabe-Ito colourblind-safe palette |
× (Hide suggestions) hides the chips for good in this browser. All of these use AI; see The flowss Studio Agent: prompt and quick help.
Writing styles in the source
For exact control, write styling in the engine's own syntax. These are each engine's standard features; the engine reference at /docs/engines links to each engine's full documentation.
Mermaid
%%{init: {"theme": "neutral", "themeVariables": {"fontFamily": "Georgia"}}}%%
flowchart LR
A[Request] --> B{Valid?}
B -->|yes| C[Process]
B -->|no| D[Reject]
classDef warn fill:#fef3c7,stroke:#b45309,color:#0b1220
class D warn
style C fill:#dcfce7,stroke:#15803d
linkStyle 2 stroke:#dc2626,stroke-width:2px
classDefdefines a reusable style andclassapplies it to nodes;stylestyles one node;linkStylestyles a connection by its position (counting from 0).- An
%%{init: …}%%line at the top sets Mermaid's own theme and theme variables for this diagram, instead of the Studio's light or dark default. - The Studio draws Mermaid with the Inter typeface, curved flowchart connections and HTML labels unless your source says otherwise.
- Mermaid's interactive
clicklinks are disabled on the canvas for safety.
Graphviz (DOT)
digraph G {
rankdir=LR;
node [shape=box, style="rounded,filled", fillcolor="#dbeafe", fontname="Helvetica"];
edge [color="#64748b", arrowsize=0.8];
ingest -> clean -> model;
model [fillcolor="#dcfce7"];
}
Graph, node and edge attributes all work, because the Studio runs the full Graphviz layout engine in your browser.
PlantUML
@startuml
skinparam defaultFontName Helvetica
skinparam ArrowColor #64748b
skinparam rectangle {
BackgroundColor #dbeafe
BorderColor #1d4ed8
}
rectangle Ingest
rectangle Model
Ingest --> Model
@enduml
skinparam settings and PlantUML's own !theme directive are applied by the PlantUML server that draws the diagram.
D2
direction: right
api: API {shape: hexagon}
db: Postgres {shape: cylinder}
api -> db: queries
api.style.fill: "#dbeafe"
db.style.stroke: "#1d4ed8"
flowss draws D2 by translating it to Graphviz, which supports the common subset: shapes, labels, containers, direction, and style.fill and style.stroke colours. Other style keywords (such as opacity, fonts, shadows or stroke widths), attributes on connections, and anything else the translation cannot draw are not silently approximated: they are named in a note under the figure. A colour Graphviz does not accept is reported the same way ("fill … is not a colour Graphviz accepts, so it is not drawn").
Vega-Lite, Vega and Plotly
Style charts through their own config (Vega-Lite and Vega) or layout (Plotly) blocks. On the Studio canvas a few settings are taken over so charts sit cleanly on the dotted ground:
| Engine | What the canvas overrides |
|---|---|
| Vega-Lite, Vega | The chart's background is made transparent, and Vega's dark theme is used in dark mode |
| Plotly | paper_bgcolor and plot_bgcolor are made transparent, and the base layout.font is replaced by Inter in the theme's text colour. Fonts set on individual elements (titles, axes) are kept. The chart is drawn up to 900 pixels wide and 520 high |
Native flowss engines
The engines built into flowss (Sankey, Kanban, PERT, fault trees, value streams, Gantt and the rest) take styling as attributes in their own source; each engine's page under /docs/engines shows the syntax. They are drawn in the current theme.
Light, dark and system
Switching theme
| Where | Control |
|---|---|
| View island (bottom right) | The sun/moon button, Switch to dark mode / Switch to light mode |
| App menu | Studio ▾ → Theme ▸ Light, Dark or System |
| Keyboard | ⇧⌘D toggles light and dark |
| Command palette | Toggle dark / light theme, or Cycle theme (Light → Dark → System) |
| Phone | ⋮ → Theme ▸ |
System follows your device's appearance setting and changes with it. Your choice applies across flowss and is remembered in this browser.
What the theme changes
The theme changes how the diagram is drawn on screen, never its source:
| Engine | In dark mode |
|---|---|
| Mermaid | Drawn with Mermaid's dark theme (unless your source sets its own theme with %%{init}%%) |
| PlantUML, Graphviz, D2, Pikchr, Nomnoml and the Kroki-drawn engines | Black text and black lines are lightened to a pale slate so they read on the dark canvas. Colours you chose are left alone |
| Vega-Lite, Vega | Vega's dark theme |
| Plotly | Light text |
| FlowScript and the native flowss engines | Drawn by the engine itself for the dark theme |
In both themes a plain white page behind the diagram (such as PlantUML's) is removed so the dotted canvas shows through; a coloured background you set in the source is kept.
How the theme affects exports
Exports and clipboard copies are taken from the diagram as drawn, in the current theme:
| Export setting | Light mode | Dark mode |
|---|---|---|
| Default | White page (#ffffff) | Dark navy page (#0b1220) with light ink |
| Transparent background on (PNG and SVG) | No page; dark ink | No page; light ink |
| Always an opaque page in the theme colour, even with Transparent background on | The same |
Warning: Exporting from dark mode with Transparent background on gives pale text and lines with no background. On a white slide or page they will be nearly invisible. For print, papers and light slides, switch to light mode before exporting.
Image scale (1×, 2× or 3×; 3× by default) and Transparent background are in ⋮ → Export ▸, and are remembered. See Exporting your work.
Arranging the workspace
Modern and Classic layouts
| Layout | What it looks like | Available |
|---|---|---|
| Modern (default) | The canvas fills the window and every control floats over it in an island | At every window size |
| Classic | The same controls docked: a header bar, the tool rail with its panel beside it, and the canvas in the space between | Windows at least 1,024 pixels wide |
Switch with Studio ▾ → Layout, the layout button in the view island (Switch to classic layout / Switch to modern layout), or ⌘K Switch layout (Modern ↔ Classic). In Classic, the code sheet takes a column of its own beside the rail, and the Library opens as a docked panel that stays until you close it; the Style and Convert flyouts still float, because they close as soon as you use them. See A tour of the workspace.
The code sheet and panels
| To | Do this |
|---|---|
| Show or hide the code | ⌘\ or the rail's Show code / Hide code |
| Make the code wider or narrower | Drag the sheet's right edge (320 pixels to 55% of the window); double-click the edge to reset to 480 |
| Keep the canvas clear while you work | Close the sheet; Fit (1) then frames the diagram in the whole canvas |
| Open a side panel | The rail for Data, Icons, Intelligence, Timeline and TikZ; the prompt and people island for the flowss Studio Agent, Collaborate and Comments |
| Hide everything but the diagram | ⌥Z (Hide interface), or Present (P) for full-screen presentation |
The Studio remembers the code sheet's width and whether it was open, which side-panel pane was open, and in Classic which rail panel was open. See The Studio editor for the full controls.
Accent colour
Settings (⌘,) → Personalization & privacy → Accent vibe tints buttons, highlights and gradients across the app. The choices are Indigo (the default), Fuchsia, Cyan, Emerald, Amber, Rose and Violet. It changes the interface only, never your diagrams, and is stored in this browser. Choosing a role in the same section tunes recommendations only and keeps your accent.
Separately, the Studio tints a few details in the current engine's colour — the dot beside the engine name, the stripe on template rows, the canvas focus ring — so you can tell at a glance which engine a figure uses.
Motion
flowss honours your device's reduce motion setting: interface animations are cut to nothing, and on the Studio launchpad the animated preview, the typing placeholder and the decorative background stay still.
Tips
- Decide on a preset early, then edit content; re-applying a preset after big content changes costs another AI request.
- For papers, IEEE / publication survives black-and-white printing, and Okabe-Ito is the safest colour palette for any audience.
- Keep a styled figure as a template for yourself: duplicate it from the figure switcher whenever you need the same look.
- Mermaid
classDefstyles are easier to maintain than manystylelines: define a class once and apply it to every node that needs it. - To match a document's look exactly, write the colours in the source rather than relying on a preset; the source is what exports.
- Export from light mode for print; use dark mode exports for dark slide decks.
Limits and known constraints
- Layout direction works only on Mermaid flowcharts; other engines set direction in the source.
- Presets, the AI prompt and Ask the flowss Studio Agent… need AI (Starter with your own key, Plus and above with hosted points). Free has no AI.
- Direct Colour works on Mermaid, Nomnoml and Graphviz; Bigger on Mermaid only.
- D2 is drawn through Graphviz in flowss, so only part of D2's styling is drawn; what is not drawn is listed under the figure.
- On the Studio canvas, chart backgrounds and Plotly's base font are set by the canvas, as described above.
- Exports reflect the current theme; there is no separate "export in light mode" switch.
- Classic layout needs a window at least 1,024 pixels wide.
- The accent colour, theme and layout are per browser and do not follow you to another device.
Troubleshooting
| You see | What it means | What to do |
|---|---|---|
| No Layout direction row in Style | The figure is not a Mermaid flowchart with a direction | Add one (flowchart TD), or set the direction in the source for your engine |
| "Direction not applicable for this engine" | ⌘K Cycle the layout direction on a non-flowchart | Use the source syntax for your engine |
| A preset shows "The flowss Studio Agent returned no result." or another red message | The request failed or was refused | Check your plan and AI points, then try again; your source is unchanged |
| A preset changed more than colours | AI occasionally restructures | Press ⌘Z and try again, or apply the styling by hand |
| "Colour isn't a direct edit on … yet" | No direct colour tool for this engine | Write the colour in the source, or use Ask the flowss Studio Agent… |
| Exported text is invisible on a white page | Exported from dark mode with a transparent background | Switch to light mode and export again |
A Plotly font size from layout.font is ignored | The canvas sets the base font | Set fonts on the individual title and axis elements |
| A D2 style is missing, with a note under the figure | That D2 feature is not drawn by flowss's D2 translator | Use style.fill / style.stroke, or convert the figure to Graphviz |
| Classic is greyed out ("The classic layout needs a window at least 1024px wide") | The window is too narrow | Widen the window, or stay in Modern |
