Files
fast_reader/frontend/src/styles/style.css

307 lines
4.6 KiB
CSS
Raw Normal View History

:root {
font-family:
Inter,
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
--background: #121218;
--text: #e8e8ed;
--surface: #1c1c24;
--border: #30303a;
--muted: #92929e;
--accent: #8b7cf6;
--red: #ff4c55;
--secondary-background: #292932;
--secondary-border: #3a3a45;
--secondary-text: #d0d0da;
--progress-track: #32323c;
color: var(--text);
background: var(--background);
}
:root[data-theme="light"] {
--background: #f4f4f8;
--text: #24242d;
--surface: #ffffff;
--border: #dedee7;
--muted: #707080;
--accent: #6958df;
--red: #d93645;
--secondary-background: #ededf3;
--secondary-border: #d5d5df;
--secondary-text: #33333e;
--progress-track: #dedee7;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 600px;
min-height: 100vh;
background: var(--background);
color: var(--text);
}
button,
textarea,
input {
font: inherit;
}
.layout {
max-width: 1000px;
margin: 0 auto;
padding: 36px 48px;
}
header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 32px;
}
h1 {
font-size: 28px;
font-weight: 700;
letter-spacing: -0.8px;
margin: 0;
}
.subtitle {
margin: 6px 0 0;
color: var(--muted);
font-size: 14px;
}
.version {
color: var(--muted);
font-size: 12px;
border: 1px solid var(--border);
padding: 5px 10px;
border-radius: 20px;
}
.input-section {
margin-bottom: 24px;
}
.input-section label,
.settings label {
display: block;
font-size: 13px;
font-weight: 600;
margin-bottom: 10px;
}
textarea {
display: block;
width: 100%;
height: 130px;
resize: vertical;
padding: 14px;
color: var(--text);
background: var(--surface);
border: 1px solid var(--border);
border-radius: 10px;
outline: none;
line-height: 1.6;
font-size: 14px;
}
textarea:focus {
border-color: var(--accent);
}
.input-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 8px;
}
#word-count {
font-size: 12px;
color: var(--muted);
}
button {
border: 0;
border-radius: 8px;
cursor: pointer;
transition: opacity 0.15s;
}
button:hover {
opacity: 0.85;
}
.primary {
background: var(--accent);
color: white;
padding: 12px 28px;
font-weight: 600;
}
.secondary {
color: var(--secondary-text);
background: var(--secondary-background);
border: 1px solid var(--secondary-border);
padding: 10px 16px;
}
.reader {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 14px;
padding: 24px;
}
.reader-top {
display: flex;
justify-content: space-between;
color: var(--muted);
font-size: 12px;
}
.word-display {
display: flex;
align-items: baseline;
justify-content: center;
min-height: 180px;
padding: 48px 0;
font-size: clamp(36px, 6vw, 64px);
font-weight: 500;
letter-spacing: 0.5px;
font-variant-ligatures: none;
}
.word-prefix,
.word-focus,
.word-suffix {
white-space: pre;
}
.word-focus {
color: var(--red);
font-weight: 700;
}
.progress-track {
height: 4px;
border-radius: 4px;
overflow: hidden;
background: var(--progress-track);
}
#progress-bar {
height: 100%;
width: 0;
background: var(--accent);
transition: width 0.08s linear;
}
.controls {
display: flex;
justify-content: center;
align-items: center;
gap: 12px;
margin: 24px 0 32px;
}
.settings {
max-width: 500px;
margin: 0 auto;
}
.speed-control {
display: flex;
align-items: center;
gap: 20px;
}
input[type="range"] {
flex: 1;
accent-color: var(--accent);
cursor: pointer;
}
#speed-value {
min-width: 80px;
font-size: 13px;
text-align: right;
}
footer {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 24px;
margin-top: 24px;
color: var(--muted);
font-size: 12px;
}
@media (max-width: 700px) {
.layout {
padding: 24px 18px;
}
.reader {
padding: 16px;
}
.word-display {
min-height: 140px;
padding: 36px 0;
}
}
.setting-group {
margin-bottom: 20px;
}
.settings select {
width: 100%;
padding: 10px 12px;
color: var(--text);
background: var(--surface);
border: 1px solid var(--border);
border-radius: 8px;
outline: none;
color-scheme: light dark;
}
.settings select option {
color: var(--text);
background-color: var(--surface);
}
.settings select:focus {
border-color: var(--accent);
}
.settings-footer {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16px;
margin-top: 24px;
}
#settings-status {
color: var(--muted);
font-size: 12px;
}