How this site is built to look
The rules, the strategy and the current state of the design, with the colours, type, spacing and components behind them. Values are read from the files. As of 30 September 2026.
Start here
This is the English site, kagels-trading.com, built new in Astro. Pages are plain files in this repository and the whole site is generated at build time, so there is no theme, no page builder and no database.
Modern, minimal, not a template
Quiet, but not old-fashioned, and never the look every AI-built site has. The charts, the numbers and Karsten's photo are the decoration. The list of what is not allowed is under Rules.
Six colours and one width
The shared values live in the
:rootblock ofBase.astro. Everything else is styled inside the component it belongs to.One web font: IBM Plex
Since 2 October 2026 every page uses IBM Plex Sans, served from our own server (no request to Google), so the site looks the same on a Mac and a Windows PC. IBM Plex Mono sets prices that stand in a column on the homepage.
Content beats decoration
Karsten's charts, his photo and the price levels carry the pages. When something new is added, it is added in small steps and it has to earn its place.
Design strategy: a modern look that comes from trading
Karsten set the direction on 29 September 2026. The site should look modern and minimal, but not old-fashioned, and not like the template that almost every site built with AI tools shares. The work runs in small steps, and Karsten decides after each one.
Step 1: say what is not allowed
Done on 29 and 30 September 2026. The list is under Rules on this page and in AGENTS.md, so no work session brings these elements back. It changes no page by itself.
Step 2: a look taken from the charts
Started on 2 October 2026 with the homepage sample (draft V2 "Chart Hero"), approved by Karsten the same day. The idea is to take the design from the work itself instead of from a template. Forecasts and blog follow.
- Thin horizontal lines as the main element, drawn like price levels on a chart.
- The three level colours as markers: yellow #ffd814, light green #9be870 and orange #ffa500, only for things that matter.
- Digits of equal width for every price and number, so columns line up like on a trading screen.
- One clear modern font instead of the system font. A little technical, no newspaper serif.
- Small, sharp corners of 2 to 4 pixels.
- Chart navy #0d1b33 as the brand colour, so the site and the charts match.
Order
- The "not allowed" list. Done.
- The homepage as a sample, with before and after screenshots. Karsten decides. Done: approved on 2 October 2026.
- Only then the forecasts and the blog.
Exception, 2 October 2026: Karsten moved step 3, the left sidebar, ahead of the homepage sample. It is built in today's look; when step 2 comes, only font and colours change, not the layout.
Step 3: left sidebar for forecasts and blog
Built on 2 October 2026 (SideNav.astro). There is only one sidebar, on the left; it replaces the contents list on the right.
- Forecasts: all forecasts grouped as metals, indices, forex, energy and interest rates. The current market is bold and underlined like the active menu item; its sections are opened underneath, in short form without the market name.
- Blog: all topics from
src/data/topics.ts, the post's topic highlighted, its sections underneath (from four H2 up, as before). Topic pages show the same list. - From 1280px only. Narrower screens get a box to open at the top ("Markets" or "Topics"), plus the "On this page" or "Contents" box as before.
- Charts first. Forecast pages grow to 1360px from 1280px, so the charts stay about as wide as before: 1,044 instead of 1,052px at 1440px, 1,000 instead of 1,052px at 1280px.
- New menu item "Topics" after Blog, leading to the overview
/blog/topics/.
This page is updated in the same commit as every design change. The plan itself is in Karsten's office notes, ~/Project-office/decisions-and-plans.md.
Decisions so far
| Date | Decision |
|---|---|
| 14 Sep 2026 | The first design is the base and grows in small steps. Drafts A to C (newspaper, chart desk, letter) rejected as too old-fashioned |
| 17 Sep 2026 | Chart background #0d1b33, after comparing black, navy and a lighter blue |
| 26 Sep 2026 | New logo and favicon. Contents list and back-to-top button on posts and forecasts. Topic pages. Chart at the start of each forecast section |
| 28 Sep 2026 | First summary box in pastel with badges rejected as "typical SaaS" |
| 29 Sep 2026 | Summary box and FAQ box in dark blue, no labels above their headings. Forecast header black on white like the blog, at most one dark block per page area. The design strategy and the "not allowed" list |
| 29 Sep 2026 | Five homepage drafts made (V1 to V5), local only. No decision yet |
| 30 Sep 2026 | Two-tone H2. Forecast summaries with exactly four short items. Bull case cards light green, bear case cards light red |
| 1 Oct 2026 | Homepage draft V2 "Chart Hero" chosen as the base for the sample |
| 2 Oct 2026 | Homepage sample from draft V2 approved and live |
| 2 Oct 2026 | IBM Plex as the font of the whole site |
| 8 Oct 2026 | Back-to-top button without shadow, with a thin white ring |
| 7 Oct 2026 | Prop trading in the step 2 look; no page keeps its own look any more (Karsten: "house standard with 3 pixels") |
| 6 Oct 2026 | Search in the step 2 look: fields and button with 3px corners, results box without shadow, result type in the grey line instead of an uppercase label |
| 3 Oct 2026 | About page in the step 2 look: timeline as rows with the year in Plex Mono, team without frames, round team photos |
| 2 Oct 2026 | Forecast overview in the step 2 look: no dark box, facts as a sentence, text links instead of chips |
| 2 Oct 2026 | Blog in the step 2 look: no labels above headings, topic guides as rows, author box without frame, 3px corners |
| 2 Oct 2026 | Forecasts in the step 2 look (Nasdaq as sample): no label above the headline, price ladder with level colours, lists instead of cards, 3px corners |
| 2 Oct 2026 | Left sidebar on forecasts and blog posts, before the homepage sample. Menu item "Topics" |
Where the design stands today
The site is live on kagels-trading.com since 20 September 2026. This is what a reader sees now, page type by page type.
| Page type | What it looks like now |
|---|---|
| Homepage | White page, no dark box: headline, author line with a small photo and two buttons left, the Nasdaq yearly chart right with open, high and low between thin lines. Then the four latest chart updates as real charts, three principles as lines, the latest articles as a list, all topics with reader tasks, all forecasts grouped by market with dates. IBM Plex, 3px corners, buttons in chart navy |
| Forecasts | Header black on white, headline in chart navy, no label above it. Summary in a dark box with four items on thin lines, no cards inside. Each section starts with its chart, then the text, then the levels as a price ladder on thin lines. "More forecasts" as lists by market with dates. Sidebar with all markets on the left from 1280px. Scenario cards in light green and light red. FAQ box at the end |
| Forecast overview | White header with the facts as one sentence, a jump bar of text links with counts on thin lines, "Latest update" with the lead chart, cards with chart thumbnails grouped by asset class (3px) |
| Blog posts | Black on white. Summary box and FAQ box in dark blue, two-tone H2, sidebar with all topics and the post's sections on the left from 1280px, author box without a frame (round photo, thin lines) directly under the text, then "More … guides" as rows on thin lines |
| Blog and topic pages | A list of posts under "Browse by topic"; topic pages list the guides as rows on thin lines, the reader's task in navy on the left |
| Text pages | About, contact, imprint, privacy, how we work: plain text column |
Where the site still breaks the rules
The "not allowed" list is newer than most of the site. These places still use a banned element. They are changed in step 2, starting with the homepage, not one by one in between.
| Rule | Where |
|---|---|
| Labels above headlines | None left (homepage, forecasts, blog, forecast overview, search and prop trading cleared on 2 to 7 October 2026) |
| Coloured left borders | None left (homepage, forecast range rows, about page timeline and prop trading notice cleared on 2 to 7 October 2026) |
| Numbered cards | None left (homepage cleared on 2 October 2026) |
| Rows of big numbers | None left (homepage and forecast overview cleared on 2 October 2026) |
| Pills and chips | None left (forecast overview chips, search fields and prop trading tags and bars cleared on 2 to 7 October 2026) |
| Soft shadows | None left (search results box cleared on 6 October 2026, back-to-top button on 8 October 2026: a thin white ring instead of a shadow) |
| Big rounded corners | None left. Every page uses 3px since 2 to 7 October 2026 |
| Gradients, glow, icons, dot backgrounds | None found |
Checked in the source files on 30 September 2026. Round things that really are round (the portrait, the back-to-top button, the lightbox close button, the small markers on charts) are allowed.
Drafts waiting for a decision
Five homepage drafts from 29 September 2026, with the same content and colours as today. They are local files and not published, in ~/Claude/builds/2026-09/design-varianten-taste/. They were made before the "not allowed" list, so each has to be checked against it.
| Draft | Idea | Font |
|---|---|---|
| V1 Refined | Today's page cleaned up, more space. The smallest change | Public Sans |
| V2 Chart hero | White hero with the yearly chart as the big picture | IBM Plex Sans, numbers in Plex Mono |
| V3 Forecast board | Short navy band, then the forecasts first, as chart tiles | Source Sans 3 |
| V4 Track record | Large portrait and a timeline of real dates | Figtree |
| V5 Bento | The first screen as one grid of tiles. The most modern | Geist |
Logo
Two colours, no more. The wordmark is blue and black on white, and it is never recoloured, tinted or put on a busy background. Since 26 September 2026 the bull and the bear stand left of the name, and the name reads "KagelsTrading" in one word, "Kagels" bold and "Trading" regular, a little more than half as tall as the animals and centred on them (Karsten, in the style of Interactive Brokers). The animals keep their old shapes; the letters are Inter (SIL Open Font License), turned into paths.
- Logo blue#084ec5The bull and the bear left of the name
- Logo black#000000The whole wordmark, both words
The logo blue is not the site blue. The logo carries #084ec5, the site works with --color-accent-dark #0f2a5c, which is much darker. They sit next to each other on every page and neither replaces the other. Do not use #084ec5 for text, buttons or surfaces, and do not repaint the logo in #0f2a5c.
Where the files are
| File | Size | Used for |
|---|---|---|
src/assets/kagels-trading-logo.svg | 219 x 28 | The header. Shown 25px high, 27px from 640px up, 29px from 1024px up. Made with scripts/logo/make-logo.py, never edited by hand |
src/assets/kagels-trading-logo.png | 640 x 117 | The structured data, so Google has a logo it can read |
src/assets/kagels-trading-logo-white.svg | 219 x 28 | Dark surfaces. Same paths as the SVG above, white fills |
Two versions, one geometry
On white the logo blue reaches 7.23:1, which is comfortable. On the dark blue it would fall to 1.93:1 and bull and bear would disappear, so dark surfaces get the white version instead. Both files hold the same 35 paths in the same places: only the fills differ, and the shapes are never redrawn.
Left, the original on white and on any light surface. Right, kagels-trading-logo-white.svg on the dark blue. The white version is for dark grounds only: on white it is invisible.
Colour
Six colour variables, declared once in src/layouts/Base.astro, used everywhere. The chips fill from the variables themselves.
- --color-text#111111Body text, headings
- --color-text-soft#555555Captions, meta lines, secondary text
- --color-accent-dark#0f2a5cHomepage hero, the second part of a two-tone H2, FAQ questions, links on light
- --color-chart-bg#0d1b33Chart background; summary box and FAQ heading strip since 29 September
- --color-border#e5e5e5Every hairline and card edge
- --color-background#ffffffPage background
Colours that are not variables yet
These colours are written directly into the components that use them. They are part of the look, so they belong here even though they do not have a name yet. The chart background also lives in TradingView and is baked into every exported chart.
| Value | Where | What it does |
|---|---|---|
| #b9ccff | Homepage hero, summary box | Labels and links on dark blue |
| #dbe4ff | Homepage hero, summary box | Running text on dark blue |
| #084ec5 | FAQ box | The small "Q" in front of each question (the logo blue) |
| #eef7f0, heading #1d6b34 | Forecast scenario cards | Bull case card, light green |
| #fcf0f0, heading #a12a2a | Forecast scenario cards | Bear case card, light red |
| #e6ecff | Homepage button | Hover state of the white button on dark blue |
| #f4f6fa | Tables in forecasts and posts | Header row background |
Contrast
Text has to stay readable, so these are the pairs the site actually uses, measured against the WCAG rule of 4.5:1 for normal text.
| Pair | Ratio | Verdict |
|---|---|---|
| #111111 on white | 18.88:1 | Body text, passes |
| #555555 on white | 7.46:1 | Secondary text, passes |
| White on #0f2a5c | 13.94:1 | Hero copy, passes |
| #b9ccff on #0f2a5c | 8.73:1 | Hero links, passes |
| #dbe4ff on #0f2a5c | 10.99:1 | Hero text, passes |
| White on #0d1b33 | 17.19:1 | Summary box heading, passes |
| #dbe4ff on #0d1b33 | 13.55:1 | Summary box text, passes |
| #b9ccff on #0d1b33 | 10.76:1 | Summary box links, passes |
| #0f2a5c on white | 13.94:1 | Figures and links on light, passes |
Type
One family since 2 October 2026: IBM Plex Sans, with the system stack as fallback (system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif). Loaded in Base.astro from the packages@fontsource/ibm-plex-sans and@fontsource/ibm-plex-mono, Latin only: weights 400, 500, 600 and 700, italic 400 and 700. IBM Plex Mono 500 for prices in a column (homepage). Body text is 1.125rem with a line height of 1.6.
Sizes are set per page rather than in one scale, so the same level can differ between a text page and a forecast. These are the sizes in use.
| Where | Level | Size |
|---|---|---|
| Homepage hero | h1 | clamp(2.1rem, 5vw, 3.4rem), line height 1.15 |
| Forecast hero | h1 | clamp(2rem, 5vw, 3rem), line height 1.15 |
| Text pages | h1 | clamp(2rem, 5vw, 2.8rem), line height 1.15 |
| Homepage and forecast | Section h2 | 1.9rem |
| Text pages | h2 | 1.4rem |
| All h2 in the page body | h2 | line height 1.2, letter spacing −0.015em, balanced lines; after the first colon regular weight in navy #0f2a5c (white inside dark boxes) |
| Cards and tables of contents | h3 | 1.2rem, homepage cards 1.25rem |
| Lead paragraph | p | 1.3rem, forecast hero 1.25rem |
| Label above a headline (not allowed any more, still on some pages) | p | 0.95rem, weight 600, letter spacing 0.08em |
| Captions, meta, breadcrumbs | p | 0.95rem to 1rem |
Prices and price levels always use font-variant-numeric: tabular-nums, so the digits line up in a column. How a price is written (decimals, currency sign, points) is decided in src/lib/prices.ts, not in the markup.
Layout and spacing
| Value | What it does |
|---|---|
| 1100px | --content-width, the width of the page, centred; 1360px on forecasts from 1280px (left sidebar) |
| 2rem 1.5rem | Padding around the main column, 2.5rem on top from 1024px up |
| 70ch | Reading column for running text |
| 60ch | Lead paragraph under a headline |
| 22ch to 24ch | Headline in a hero box, so it breaks into two or three lines |
| 1rem | Gap in every card grid |
| 1px solid #e5e5e5 | Every border on the site |
Corners
Every page uses 3px since 7 October 2026, when prop trading followed the homepage, forecasts, blog, forecast overview, about page and search. Only real round things stay round: portrait photos and the back-to-top button.
The target is 2 to 4px (strategy step 2). The homepage uses 3px since 2 October 2026, and so do the forecasts, the blog, every chart and the summary and FAQ boxes; the remaining pages follow when step 2 reaches them. Until then, new elements there take the value of their neighbours, so a page does not end up with a mix.
Grids
Card rows are repeat(auto-fit, minmax(...)) with a minimum between 200px and 260px, so they fold from three columns to two to one without a media query. Only the layouts that carry a photo or a sidebar switch at 1024px and 700px.
Components
Fourteen components, two layouts, two shared stylesheets and three markdown plugins that shape how posts look. Build with these before writing anything new.
| File | What it is |
|---|---|
Base.astro | The frame of every page: head, structured data, header, footer. Title and description are required |
Page.astro | Text pages and blog posts. Has a side column (slot aside) for the contents list |
Header.astro | Logo and navigation, one hairline underneath |
Footer.astro | Legal links and the year, set automatically |
Breadcrumbs.astro | The trail above the headline, also reported to Google |
ChartFigure.astro | Every chart on the site. Image, caption, and the click that opens it larger |
Lightbox.astro | The enlarged chart: a <dialog> that closes on click, Escape or the round button |
LevelList.astro | Support and resistance as a price ladder on thin lines, with a short level-colour line before each price |
ForecastCards.astro | "More forecasts" under each forecast: lists by market with the update date, the forecast's own group first |
AuthorBox.astro | Round photo, "Written by" with name, role, bio and profile links under an article, between thin lines |
ExternalLink.astro | A link that leaves the site. Opens in a new tab and carries rel="noopener" |
TableOfContents.astro | "Contents" and "On this page" from four H2 sections up, as a box to open above the text below 1280px |
SideNav.astro | Left sidebar from 1280px: all markets or all topics, the current one bold and underlined, its sections underneath, the current section marked while reading. Below 1280px a box to open at the top |
BackToTop.astro | The round button that jumps back to the top |
TopicGuides.astro | Rows on thin lines on topic pages and under posts: the reader's task in navy, then title and one sentence |
ArticleFigures.astro | Screenshots with numbered explanations in posts, placed with <!-- figure:id --> |
styles/section-boxes.css | The summary box and the FAQ box in posts and forecasts |
styles/graphics.css | Decision helpers, price bars and step graphics in posts |
lib/section-boxes-plugin.mjs | Turns an H2 "… in 30 seconds" into the summary box and an H2 "Frequently asked questions …" or "FAQ …" into the FAQ box |
lib/split-heading.mjs | Splits an H2 at the first colon for the two-tone heading |
lib/external-links-plugin.mjs | Opens every external link in markdown in a new tab |
Patterns
The shapes that carry almost every page. They are shown here as they are built, not as pictures of themselves. Patterns marked "on the way out" break a rule and are replaced in step 2.
Two-tone H2
Gold forecast for this week: the March range holds
Since 30 September 2026 in posts and forecasts. The part before the first colon is bold black, the rest regular in navy #0f2a5c. Tight line height and balanced lines. New H2 are best written as "Topic: statement".
Summary box
Gold price forecast in 30 seconds
- Price $3,642, above the March range.
- Next resistance at $3,700.
The first H2 of a post or forecast, "… in 30 seconds", becomes this box on its own. Dark blue, white and light blue only, no label above the heading. Forecasts show exactly four short items: price now, short term, key support, next target.
FAQ box
Frequently asked questions about gold
Where is the next support?
At $3,560, the low of the March range.
How often is this forecast updated?
After every larger move, with new charts.
A dark heading strip, then light questions with fine lines between them and a small "Q". Made from an H2 "Frequently asked questions …" or "FAQ …".
Scenario cards
Bull case
A close above $3,700 opens the way to $3,790.
Bear case
Below $3,560 the March range fails.
In forecasts, recognised by the heading: "Bullish …" or "Bull case …" turns light green, "Bearish …" or "Bear case …" light red. Other cards stay neutral.
Hero box
Gold holds above its March range
What the levels say, and what would change the picture.
Dark blue, 12px corners, white text. Since 29 September 2026 only on the homepage and the forecast overview; forecasts and posts open black on white. At most one dark block per page area. The label above the headline, still on the live pages, is on the way out.
Figure tiles (on the way out)
- 1980First shares bought
- 1986Trading actively
- 2015Forecasts published
The number is 2.2rem in dark blue, the label sits underneath in the soft grey. Not allowed since 29 September 2026 (rows of big numbers). Still on the homepage and the forecast overview.
Card
Silver price forecast
Updated twice a day, with six charts from hour to year.
Copper price forecast
Three charts, the contango explained in plain words.
1px border, 10px corners, heading and one soft grey line. On hover the border turns dark blue. Nothing else moves.
Price levels
Resistance
- $3,790
- $3,700
Price at analysis$3,642
Support
- $3,560
- $3,480
The real component (LevelList.astro): a price ladder on thin lines, highest level first. A short line in the chart's level colour marks each price: orange for resistance, yellow for the price at analysis, light green for support. Prices in IBM Plex Mono, so the digits line up.
Range row
- This week$3,560 to $3,700
- This month$3,480 to $3,790
Label above, range in IBM Plex Mono, between a thin line above and below. Used for forecast ranges (gold, DAX, Dow Jones). Since 2 October 2026 without the coloured left edge.
Table
| Period | Low | High |
|---|---|---|
| Week | 3,560 | 3,700 |
| Month | 3,480 | 3,790 |
Header row on #f4f6fa, every cell framed, and the whole table scrolls sideways on a phone instead of breaking the page.
Charts
Charts are the most valuable thing on this site, so they get their own rule. Karsten draws them in TradingView and exports them as images, which means the background colour is baked into every file. It is decided once and then left alone.
The chart background is #0d1b33, a near black with a blue cast. Not the hero blue and not plain black: it sits at the brightness of a black background, which is what hours of chart reading need, and it still belongs to the blue family the rest of the site is built from. Black backgrounds are no longer used.
It was weighed, not picked. The same setting produces the charts Karsten works in all day and the charts a reader sees for half a minute, so daily comfort counted for more than branding. Against the hero blue, this background gains three points of contrast on white bars and about a point on every coloured marker, which is what a long session notices. Do not change it for looks.
Publication choice: white bars on navy
Recorded on 2 October 2026 after comparing a white-background candlestick chart with a navy-background chart using white OHLC bars (open, high, low and close). Use Karsten's white bars on #0d1b33 as the forecast standard. In the examples, the dark chart looked cleaner and more distinctive, with price movement standing out clearly.
This is our editorial choice, not a measured reader preference or proof that dark backgrounds are always easier to read. The examples differed in market, timeframe, proportions and indicator density. Background colour and chart type are separate decisions: candlesticks can also work on navy, and their bodies can help when teaching individual candle patterns. That teaching use does not change the forecast standard.
Readability checks before publication
- Make annotations large enough at the displayed size.Enlarge small labels such as “2023 High”; check both the article view and the enlarged image, including on a phone.
- Keep analysis lines clearly visible. Use the bright palette below and enough line thickness for important trend lines and levels. Faint red, green or blue diagonals must not disappear behind the white price bars.
- Keep the grid quieter than the analysis. Reduce vertical grid prominence so price, levels and trend lines lead the eye.
- Name the market and timeframe in plain English.For example, “Crude Oil Futures: 4-Hour Chart”; a ticker alone is not a sufficient reader-facing title.
- Choose the visible history deliberately. Too many bars compress candles and opening/closing ticks. Larger labels and a suitable number of bars matter more than background colour alone. Keep click-to-enlarge available for fine detail.
What can be drawn on it
Measured against the chart background, so nothing is chosen by eye.
| Element | Colour | Ratio | Verdict |
|---|---|---|---|
| Bars and candles | white | 17.19:1 | The default. Direction is carried by shape, not colour |
| Axis labels, dates, prices | #dbe4ff | 13.55:1 | Reads clearly without shouting |
| Secondary labels | #b9ccff | 10.76:1 | For anything below the main scale |
| Up marker | #26a69a | 5.73:1 | Check thickness and visibility at the displayed image size |
| Down marker | #ef5350 | 4.93:1 | Works. Still worth drawing thick on a busy chart |
| Indicator lines | #ffd814 or #ffa500 | 12.35:1, 8.70:1 | Yellow and orange. White works too |
| Any blue line | #2962ff | 3.51:1 | Never. TradingView's default blue for moving averages sits too close to the background, so indicators are recoloured instead |
| Logo blue | #084ec5 | 2.38:1 | Never. It disappears on this background |
Line colours for levels
Horizontal levels are the one thing drawn on almost every chart, so they get a small fixed set. All three clear 8:1 on the background. Contrast alone does not guarantee that a one-pixel line survives image scaling; check the exported image at the size readers actually see.
| Colour | Ratio | Use |
|---|---|---|
| #ffd814 yellow | 12.35:1 | The level that matters most on this chart |
| #9be870 light green | 11.60:1 | Support, and levels that held |
| #ffa500 orange | 8.70:1 | Resistance, and levels still to be tested |
Three colours are enough. A fourth and a fifth turn a chart into a colour code the reader has to learn, and the price action stops being the loudest thing on the screen.
How to keep them identical
- Save a TradingView template and load it for every export.Six charts in one forecast have to look like six pictures of the same screen, not six settings.
- Grid lines stay quiet. A faint white is enough on this background. Visible grid lines compete with the price itself.
- The background is never edited afterwards. Changing it later means exporting every chart on the site again.
- Labels in English. Text inside the image cannot be translated later, so it has to be right when the chart is exported.
- Charts go through
ChartFigure.astro, which gives them the 10px corners, the caption and the click that opens them larger.
Rules
Decisions that are already made. They are in AGENTS.md in full, with the date and the reason.
- Design direction
- The current look is the starting point and gets developed in small steps, not reinvented. Modern touches sparingly: no gradients, no glow, no dot or grid backgrounds, no generic icons, no "Get started".
- Not allowed
- The typical AI template look, decided on 29 September 2026. Modern and minimal, but not old-fashioned. None of these come back, not even sparingly:
- Small uppercase labels above headlines ("eyebrows").
- Coloured left borders on boxes, quotes and notes.
- Numbered cards like "01, 02, 03".
- Rows of big numbers as decoration.
- Pill buttons and chips with fully round ends.
- Cards inside cards, soft shadows, big rounded corners.
- Gradients, glow, generic icons, dot or grid backgrounds.
- One dark block
- At most one dark block per page area. The navy hero stays on the homepage; forecast and post headers are black on white since 29 September 2026.
- Summary and FAQ
- The summary "… in 30 seconds" is a dark box, the FAQ has a dark heading strip with light questions below. Hero colours only: navy, white, light blue #b9ccff. No labels like "In 30 seconds" or "FAQ" above the headings. Rejected: pastel with badges and ticks, coloured left bars, yellow as an accent.
- Headings
- Two-tone H2 in posts and forecasts: bold black up to the first colon, the rest regular in navy. Write new H2 as "Topic: statement".
- Forecast summary
- Exactly four items: price now, short term, key support, next target. About two lines each, key numbers in bold, no bold italic. An odd last card runs full width.
- Scenario cards
- Bull case light green, bear case light red, found by the heading. All other cards neutral.
- Forecast sections
- Heading, then the chart, then the explanation, then the levels. Charts run the full width of the column next to the sidebar.
- Emphasis
- Each paragraph gets one bold italic anchor and two to four bold key terms, in posts and forecasts, as on the German site.
- Contents list
- Automatic from four H2 sections up. From 1280px the sections sit in the left sidebar under the current market or topic and the current one is marked; below that it is a box to open. The author box is its last entry on posts.
- Charts
- Every chart goes through
ChartFigure.astroand can be opened larger by clicking it. New exports are labelled in English; older charts with German labels are replaced when a forecast gets new charts. - Real content first
- Karsten's charts, his photo and price levels beat decoration. Software comparisons get real screenshots, knowledge articles get diagrams, and every new article starts with a small image plan.
- Logo
- Made by
scripts/logo/make-logo.py, never edited by hand. White version on dark grounds, never the logo blue on chart navy. - External links
- Always a new tab, always through
ExternalLink.astroor the markdown plugin, alwaysrel="noopener"without noreferrer, so a linked provider can see where the visitor came from. - No affiliate links
- Providers are linked directly, never through the German redirects.
- Copy
- English, plain, no dashes as punctuation. Write two sentences instead of one with an insert.
- Prices
- Formatted by
src/lib/prices.ts, which knows dollars, points and exchange rates. Never formatted by hand in a page. - Addresses
- Forecasts keep the addresses the old WordPress site used, so their rankings survive without a redirect.
- Internal links
- A new article links to the ones it belongs with, and they link back to it. A dead internal link breaks the build.
- Translations
- Every translation from the German site follows
docs/translation-checklist.md. Where it disagrees with AGENTS.md, AGENTS.md wins.
Where things live
| Path | What is in it |
|---|---|
src/layouts/Base.astro | The colour variables, the page width, the global styles |
src/components/ | The thirteen components, each with its own styles |
src/styles/ | The summary and FAQ boxes, and the graphics in posts |
src/pages/ | One file per page, styles included |
src/content/ | Blog posts and forecasts as markdown |
src/data/site.ts | Company facts, team, dates. Edited by hand, never guessed |
src/lib/prices.ts | How every price on the site is written |
src/assets/charts/ | Karsten's chart images, one folder per market |
AGENTS.md | Every decision, with its date |
docs/translation-checklist.md | What a translation has to clear before it goes live |
docs/article-visuals.md | How to add decision helpers, figures and price bars to a post |
docs/work-board.md | Who is working on which files right now. Read it before design work |
Open questions
An honest list, so nobody designs into a gap that is already known. Karsten decides each of these.
- Forecasts and blog in the step 2 look. The font is site-wide since 2 October 2026; thin lines, 2 to 4px corners and chart navy follow page type by page type.
- The summary and FAQ boxes use chart navy, the rule says hero navy.
AGENTS.mdsays #0f2a5c. The stylesheet has used #0d1b33 since 29 September 2026, 18:51, changed in the same commit as a Nasdaq update and not written down. Step 2 plans chart navy as the brand colour anyway, so this is either kept and recorded, or set back. - Two navies, one brand colour. Hero navy #0f2a5c and chart navy #0d1b33 both live on the site. Step 2 would make #0d1b33 the brand colour, which touches the homepage hero, the links and the second half of every two-tone H2.
- Corners. Today 6 to 12px, the target is 2 to 4px. It changes every card, box and image at once, so it belongs to the homepage sample.
- The palette is only half named. Six colours are variables, the others are written into the components that use them. If a navy changes, those have to be found by hand.
- There is no type scale. Sizes are chosen per page, so an h2 is 1.9rem on the homepage and 1.4rem on a text page. A new font in step 2 is the moment to fix this.
- Older charts still carry German labels in their pixels.New exports are English. The old ones are replaced market by market.