diff --git a/AGENTS.md b/AGENTS.md index d8b2cdc..e39cd57 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -22,6 +22,7 @@ CSS file (Gruvbox, light + dark, theme toggle without reload). | `theme/blog_share_theme.css` | `blog_share_theme.css` (`shareCss`) | the entire Gruvbox theme | | `theme/favicon.svg`, `theme/cookie.woff2` | `favicon`, `Cookie` | site icon + BMC font | | `lib/highlight.js`, `lib/hljs_line_numbers.js` | `highlight.js`, `hljs line numbers plugin` | code highlighting | +| `lib/3d/*` | three.js, OrbitControls, STLLoader, occt-import-js (WASM) | local libraries for the 3D model viewer | | `scripts/*.js` | one code note each (`.blog`), attached via `~shareHtml` | frontend snippets (verbatim content incl. ` \ No newline at end of file diff --git a/theme/blog_share_theme.css b/theme/blog_share_theme.css index 0d3b208..c279360 100644 --- a/theme/blog_share_theme.css +++ b/theme/blog_share_theme.css @@ -808,6 +808,56 @@ html.theme-light #content code { border-radius: 8px; } +/* ---------- 3D model viewer (STL / STEP) ---------- */ +.model-viewer { + margin: 1em 0; + background: #1d2021; + border: 1px solid var(--background-highlight); + border-radius: 8px; + overflow: hidden; +} + +.model-viewer-canvas { + position: relative; +} + +.model-viewer-status { + padding: 48px; + text-align: center; + color: #a89984; + font-size: 0.9em; +} + +.model-viewer-status.error { + color: #fb4934; +} + +.model-viewer-hint { + position: absolute; + top: 8px; + left: 10px; + font-size: 0.75em; + color: #a89984; + z-index: 2; + pointer-events: none; +} + +.model-viewer-caption { + font-size: 0.85em; + font-style: italic; + color: var(--text-menu); + text-align: center; + padding: 4px 12px; + background: var(--background-secondary); + border-top: 1px solid var(--background-highlight); +} + +.model-viewer canvas { + display: block; + width: 100%; + height: auto; +} + /* ---------- Bildunterschriften (Gruvbox) ---------- */ #content figcaption { font-size: 0.85em;