rein damit
This commit is contained in:
1 parent
7f6b8ebe07
commit
07dbc01c92
38 files changed
+5632
-5
No files matched your search
@@ -0,0 +1,200 @@
|
||||
/**
|
||||
* @file simulator.css
|
||||
* @brief Ergänzungen zum reveal.js-Dracula-Theme: scrollbare Fragen-Folien, Optionen, Auflösung, Werkzeugleiste
|
||||
* @author Björn Runden <br@runden.de>
|
||||
* @owner Björn Runden <br@runden.de>
|
||||
* @assist KI-unterstützt (Claude Opus 5.5), geprüft von Björn Runden <br@runden.de>
|
||||
* @version 0.1.1 (29.10.2026)
|
||||
*/
|
||||
|
||||
:root {
|
||||
--bg: #282a36;
|
||||
--line: #44475a;
|
||||
--fg: #f8f8f2;
|
||||
--comment: #6272a4;
|
||||
--cyan: #8be9fd;
|
||||
--green: #50fa7b;
|
||||
--orange: #ffb86c;
|
||||
--pink: #ff79c6;
|
||||
--purple: #bd93f9;
|
||||
--red: #ff5555;
|
||||
--yellow: #f1fa8c;
|
||||
--tb-h: 3rem;
|
||||
--gutter: max(16px, 4vw);
|
||||
/* reveal.js skaliert hier nicht (disableLayout) – Schrift relativ zum Fenster */
|
||||
--r-main-font-size: clamp(15px, 0.6vw + 11px, 21px);
|
||||
--r-heading-font: var(--r-main-font);
|
||||
}
|
||||
|
||||
html, body { background: var(--bg); }
|
||||
|
||||
/* ---------------------------------------------------------------- Werkzeugleiste */
|
||||
.toolbar {
|
||||
position: fixed;
|
||||
inset: 0 0 auto 0;
|
||||
z-index: 50;
|
||||
min-height: var(--tb-h);
|
||||
padding: calc(env(safe-area-inset-top, 0px) + 0.4rem) var(--gutter) 0.4rem;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 0.4rem 1rem;
|
||||
background: #21222c;
|
||||
border-bottom: 1px solid var(--line);
|
||||
color: var(--fg);
|
||||
font: 15px/1.3 -apple-system, BlinkMacSystemFont, "Segoe UI", Ubuntu, Cantarell, Roboto, sans-serif;
|
||||
}
|
||||
.tb-title { color: var(--purple); font-weight: 600; }
|
||||
.tb-info { color: var(--cyan); font-variant-numeric: tabular-nums; }
|
||||
#tb-timer.low { color: var(--red); font-weight: 700; }
|
||||
.tb-buttons { margin-left: auto; display: flex; flex-wrap: wrap; gap: 0.3rem; }
|
||||
|
||||
/* ---------------------------------------------------------------- Buttons */
|
||||
.btn {
|
||||
font: inherit;
|
||||
font-size: 0.9em;
|
||||
color: var(--fg);
|
||||
background: var(--line);
|
||||
border: 1px solid var(--comment);
|
||||
border-radius: 6px;
|
||||
padding: 0.45em 1em;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn:hover:not(:disabled) { border-color: var(--purple); color: var(--purple); }
|
||||
.btn:disabled { opacity: 0.4; cursor: default; }
|
||||
.btn.primary { background: var(--purple); border-color: var(--purple); color: var(--bg); font-weight: 600; }
|
||||
.btn.primary:hover { background: var(--pink); border-color: var(--pink); color: var(--bg); }
|
||||
.btn.small { padding: 0.25em 0.7em; font-size: 0.85em; }
|
||||
|
||||
/* ---------------------------------------------------------------- Folien */
|
||||
.reveal .slides { text-align: left; }
|
||||
.reveal .slides > section {
|
||||
top: 0;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
box-sizing: border-box;
|
||||
/* --tb-h wird per JS auf die tatsächliche (ggf. umbrochene) Höhe der Werkzeugleiste gesetzt */
|
||||
padding: calc(var(--tb-h) + 1.5rem) var(--gutter) 4.5rem;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.reveal .slides > section > * { max-width: 62rem; margin-left: auto; margin-right: auto; }
|
||||
.reveal h1 { font-size: 2em; color: var(--purple); }
|
||||
.reveal h2 { font-size: 1.6em; color: var(--purple); }
|
||||
.reveal h3 { font-size: 1.15em; color: var(--pink); margin: 0 0 0.6em; }
|
||||
.reveal code { font-family: var(--r-code-font); color: var(--green); font-size: 0.92em; }
|
||||
.reveal small { color: var(--comment); font-size: 0.85em; }
|
||||
.reveal p { margin: 0 auto 0.8em; }
|
||||
|
||||
/* ---------------------------------------------------------------- Startseite */
|
||||
.card {
|
||||
background: rgba(68, 71, 90, 0.35);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 10px;
|
||||
padding: 1.2em 1.4em;
|
||||
margin-bottom: 1.2em;
|
||||
}
|
||||
.card.resume { border-color: var(--orange); }
|
||||
.setup fieldset { border: 0; padding: 0; margin: 0 0 1em; }
|
||||
.setup legend { color: var(--cyan); font-weight: 600; margin-bottom: 0.3em; }
|
||||
.exam-group { margin-bottom: 0.4em; }
|
||||
.exam-level { display: block; color: var(--orange); font-size: 0.9em; }
|
||||
.choice { display: flex; gap: 0.6em; align-items: baseline; padding: 0.2em 0; cursor: pointer; }
|
||||
.choice small { display: inline-block; margin-left: 0.4em; }
|
||||
.inline { display: inline-flex; gap: 0.5em; align-items: center; margin-right: 1.5em; }
|
||||
.setup input[type=number], .setup select {
|
||||
font: inherit; color: var(--fg); background: var(--bg); border: 1px solid var(--comment);
|
||||
border-radius: 5px; padding: 0.2em 0.4em;
|
||||
}
|
||||
.setup input[type=number] { width: 5em; }
|
||||
input[type=radio], input[type=checkbox] { accent-color: var(--purple); width: 1.05em; height: 1.05em; }
|
||||
.footnote { color: var(--comment); font-size: 0.8em; }
|
||||
.warn-text { color: var(--orange); }
|
||||
|
||||
/* ---------------------------------------------------------------- Frage */
|
||||
.q-head {
|
||||
display: flex; flex-wrap: wrap; gap: 0.3em 1.2em; align-items: baseline;
|
||||
border-bottom: 1px solid var(--line); padding-bottom: 0.5em; margin-bottom: 1em; font-size: 0.85em;
|
||||
}
|
||||
.q-no { color: var(--purple); font-weight: 700; }
|
||||
.q-obj { color: var(--comment); }
|
||||
.flag { margin-left: auto; color: var(--orange); cursor: pointer; display: inline-flex; gap: 0.4em; align-items: center; }
|
||||
.q-text { font-size: 1.1em; margin-bottom: 0.8em; }
|
||||
.q-code {
|
||||
background: #21222c; border: 1px solid var(--line); border-radius: 6px; padding: 0.7em 1em;
|
||||
overflow-x: auto; font-size: 0.85em; width: auto; box-shadow: none; margin-bottom: 1em;
|
||||
}
|
||||
.reveal pre.q-code code { color: var(--fg); max-height: none; padding: 0; white-space: pre; }
|
||||
.q-hint { color: var(--yellow); font-style: italic; }
|
||||
|
||||
/* reveal-Theme setzt Listen auf inline-block mit Einzug – für Optionen/Erläuterungen aufheben */
|
||||
.reveal ol.options, .reveal ul.explain { display: block; list-style: none; padding: 0; margin: 0 auto 1em; }
|
||||
.reveal ol.options > li, .reveal ul.explain > li { margin-left: 0; }
|
||||
.option label {
|
||||
display: flex; gap: 0.8em; align-items: baseline; padding: 0.55em 0.9em; margin-bottom: 0.45em;
|
||||
border: 1px solid var(--line); border-radius: 8px; cursor: pointer; background: rgba(68, 71, 90, 0.25);
|
||||
}
|
||||
.option label:hover { border-color: var(--purple); }
|
||||
.option:has(input:checked) label { border-color: var(--purple); background: rgba(189, 147, 249, 0.12); }
|
||||
.letter { color: var(--cyan); font-weight: 700; min-width: 1.2em; }
|
||||
.locked .option label { cursor: default; }
|
||||
.locked .option.is-correct label { border-color: var(--green); background: rgba(80, 250, 123, 0.1); }
|
||||
.locked .option.is-wrong label { border-color: var(--red); background: rgba(255, 85, 85, 0.12); }
|
||||
.locked .option.is-missed label { border-style: dashed; }
|
||||
|
||||
input.fill {
|
||||
/* block statt inline-block: nur so greift margin:auto der Inhaltsspalte (sonst klebt das Feld links) */
|
||||
display: block;
|
||||
font-family: var(--r-code-font); font-size: 1em; width: 100%; box-sizing: border-box;
|
||||
color: var(--green); background: #21222c; border: 1px solid var(--comment); border-radius: 6px;
|
||||
padding: 0.5em 0.8em; margin-bottom: 1em;
|
||||
}
|
||||
input.fill:focus { outline: none; border-color: var(--purple); }
|
||||
input.fill.is-correct { border-color: var(--green); }
|
||||
input.fill.is-wrong { border-color: var(--red); color: var(--red); }
|
||||
|
||||
/* ---------------------------------------------------------------- Auflösung */
|
||||
.solution {
|
||||
border-left: 4px solid var(--pink); background: rgba(68, 71, 90, 0.3);
|
||||
border-radius: 0 8px 8px 0; padding: 1em 1.2em; margin-top: 0.5em;
|
||||
}
|
||||
.verdict { font-weight: 700; font-size: 1.15em; }
|
||||
.verdict.right { color: var(--green); }
|
||||
.verdict.wrong { color: var(--red); }
|
||||
.verdict.skipped { color: var(--orange); }
|
||||
.explain li { padding: 0.25em 0; }
|
||||
.explain .mark { font-weight: 600; margin-right: 0.3em; }
|
||||
.explain li.ok .mark { color: var(--green); }
|
||||
.explain li.no .mark { color: var(--red); }
|
||||
.explanation { color: var(--fg); border-top: 1px solid var(--line); padding-top: 0.6em; }
|
||||
.refs { color: var(--comment); font-size: 0.85em; margin-top: 0.6em; }
|
||||
|
||||
/* ---------------------------------------------------------------- Ergebnis */
|
||||
.big { font-size: 1.5em; color: var(--cyan); }
|
||||
.table-wrap { overflow-x: auto; }
|
||||
.reveal table { border-collapse: collapse; margin: 0 0 1em; font-size: 0.9em; }
|
||||
.reveal table th, .reveal table td { border-bottom: 1px solid var(--line); padding: 0.35em 0.8em; text-align: left; }
|
||||
.bar { display: inline-block; width: 6em; height: 0.6em; background: var(--line); border-radius: 3px; vertical-align: middle; }
|
||||
.bar > span { display: block; height: 100%; background: var(--green); border-radius: 3px; }
|
||||
.actions .btn { margin: 0 0.4em 0.4em 0; }
|
||||
|
||||
/* ---------------------------------------------------------------- Meldungen */
|
||||
.toast-box {
|
||||
position: fixed; z-index: 60; right: var(--gutter); bottom: calc(env(safe-area-inset-bottom, 0px) + 3.5rem);
|
||||
display: flex; flex-direction: column; gap: 0.4rem; max-width: min(28rem, calc(100vw - 32px));
|
||||
}
|
||||
.toast {
|
||||
background: var(--line); color: var(--fg); border-left: 4px solid var(--cyan); border-radius: 6px;
|
||||
padding: 0.6em 0.9em; font: 14px/1.35 -apple-system, BlinkMacSystemFont, "Segoe UI", Ubuntu, Roboto, sans-serif;
|
||||
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
.toast.warn { border-left-color: var(--orange); }
|
||||
.toast.error { border-left-color: var(--red); }
|
||||
|
||||
/* reveal-Steuerung nicht über den Inhalt legen */
|
||||
.reveal .controls { bottom: calc(env(safe-area-inset-bottom, 0px) + 12px); right: 12px; }
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.tb-buttons { margin-left: 0; }
|
||||
.flag { margin-left: 0; }
|
||||
}
|
||||
Reference in new issue
Block a user