You've already forked computing-box
- Introduce new Binary Simulator page with adjustable bit width (4–16 bits) - Support unsigned and two’s complement representations with live conversion - Add left/right shift operations and custom binary/denary input - Implement accessible bulb-and-switch UI with MD3-inspired styling - Add seven-segment display font assets for realistic number output - Establish shared base layout, styles, and tooling for future simulators Signed-off-by: Alexander Lyall <alex@adcm.uk>
97 lines
2.5 KiB
CSS
97 lines
2.5 KiB
CSS
/* src/styles/md3-tokens.css */
|
|
/* MD3-inspired tokens tuned for education: high readability, clear contrast, calm surfaces */
|
|
:root{
|
|
/* Typography */
|
|
--font-sans: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
|
|
--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
|
|
/* Spacing + shape */
|
|
--radius-1: 10px;
|
|
--radius-2: 16px;
|
|
--radius-3: 22px;
|
|
--shadow-1: 0 1px 2px rgba(0,0,0,.08), 0 2px 8px rgba(0,0,0,.06);
|
|
/* Color roles (keep simple) */
|
|
--md-surface: #ffffff;
|
|
--md-surface-2: #f6f7fb;
|
|
--md-on-surface: #111318;
|
|
--md-primary: #2f6fed; /* calm blue */
|
|
--md-on-primary: #ffffff;
|
|
--md-secondary: #5a5f72; /* muted */
|
|
--md-on-secondary: #ffffff;
|
|
--md-tertiary: #0f766e; /* teal for "practical" tools */
|
|
--md-on-tertiary: #ffffff;
|
|
--md-outline: #d7dbe7;
|
|
--md-success: #1a7f37;
|
|
--md-warning: #b54708;
|
|
--md-danger: #b42318;
|
|
/* Focus ring for accessibility */
|
|
--md-focus: 0 0 0 3px rgba(47,111,237,.28);
|
|
}
|
|
@media (prefers-color-scheme: dark){
|
|
:root{
|
|
--md-surface: #0b0e14;
|
|
--md-surface-2: #121725;
|
|
--md-on-surface: #e8eaf2;
|
|
--md-primary: #9bb6ff;
|
|
--md-on-primary: #0b0e14;
|
|
--md-secondary: #b8bccd;
|
|
--md-on-secondary: #0b0e14;
|
|
--md-tertiary: #4fd1c5;
|
|
--md-on-tertiary: #0b0e14;
|
|
--md-outline: #2b3244;
|
|
--md-focus: 0 0 0 3px rgba(155,182,255,.25);
|
|
}
|
|
}
|
|
|
|
/* src/styles/base.css */
|
|
@import "./md3-tokens.css";
|
|
html, body{ height:100%; }
|
|
body{
|
|
margin:0;
|
|
font-family: var(--font-sans);
|
|
background: var(--md-surface-2);
|
|
color: var(--md-on-surface);
|
|
}
|
|
a{ color: var(--md-primary); text-decoration: none; }
|
|
a:hover{ text-decoration: underline; }
|
|
.container{
|
|
max-width: 1100px;
|
|
margin: 0 auto;
|
|
padding: 16px;
|
|
}
|
|
.card{
|
|
background: var(--md-surface);
|
|
border: 1px solid var(--md-outline);
|
|
border-radius: var(--radius-2);
|
|
box-shadow: var(--shadow-1);
|
|
padding: 16px;
|
|
}
|
|
.btn{
|
|
display:inline-flex;
|
|
gap:8px;
|
|
align-items:center;
|
|
justify-content:center;
|
|
border-radius: 999px;
|
|
border: 1px solid var(--md-outline);
|
|
background: var(--md-surface);
|
|
color: var(--md-on-surface);
|
|
padding: 10px 14px;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
}
|
|
.btn:hover{ filter: brightness(0.98); }
|
|
.btn:focus{ outline:none; box-shadow: var(--md-focus); }
|
|
.btn-primary{
|
|
background: var(--md-primary);
|
|
color: var(--md-on-primary);
|
|
border-color: transparent;
|
|
}
|
|
.badge{
|
|
display:inline-block;
|
|
padding: 2px 10px;
|
|
border-radius: 999px;
|
|
font-size: 12px;
|
|
border: 1px solid var(--md-outline);
|
|
background: var(--md-surface-2);
|
|
}
|
|
code, pre{ font-family: var(--font-mono); }
|