phonon-reader / src /style.css
davanstrien's picture
davanstrien HF Staff
Styles for convert-first layout
318176e verified
Raw History Blame Contribute Delete
6.27 kB
:root {
--paper: #f4efe6;
--ink: #23201b;
--muted: #776f63;
--line: #ddd4c4;
--accent: #b4532a;
--hl: #f2d9a8;
--done: #a39a8c;
--card: #fbf8f2;
color-scheme: light;
}
@media (prefers-color-scheme: dark) {
:root {
--paper: #1b1a17; --ink: #ece6da; --muted: #9b9385; --line: #34312b;
--accent: #e0855a; --hl: #4a3b22; --done: #6f685d; --card: #24221e;
color-scheme: dark;
}
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--paper); color: var(--ink); }
body {
font: 17px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
min-height: 100dvh; display: flex; flex-direction: column;
padding-bottom: env(safe-area-inset-bottom);
}
.hidden { display: none !important; }
.top {
display: flex; align-items: center; justify-content: space-between;
padding: calc(10px + env(safe-area-inset-top)) 16px 8px;
position: sticky; top: 0; background: var(--paper); z-index: 5;
}
.top h1 { font: 600 20px/1 Georgia, "Iowan Old Style", serif; margin: 0; letter-spacing: .01em; }
.top-actions { display: flex; gap: 6px; }
button { font: inherit; color: inherit; cursor: pointer; border-radius: 999px; }
.ghost { background: transparent; border: 1px solid var(--line); padding: 7px 14px; font-size: 15px; }
.primary { background: var(--accent); color: #fff; border: 0; padding: 10px 22px; font-weight: 600; }
.primary:disabled { opacity: .5; }
.danger { color: #b3261e; border-color: #e3b8b4; }
.model-bar { margin: 0 16px 8px; font-size: 13px; color: var(--muted); }
.model-bar.ready { display: none; }
.progress { height: 3px; background: var(--line); border-radius: 2px; margin-top: 5px; overflow: hidden; }
.progress > div { height: 100%; width: 0; background: var(--accent); transition: width .2s; }
main { flex: 1; padding: 0 16px; }
#view-edit { display: flex; flex-direction: column; gap: 10px; height: 100%; }
textarea {
width: 100%; min-height: 42dvh; resize: vertical;
font: 17px/1.55 Georgia, "Iowan Old Style", serif;
background: var(--card); color: var(--ink);
border: 1px solid var(--line); border-radius: 14px; padding: 14px;
}
textarea:focus { outline: 2px solid var(--accent); outline-offset: -1px; }
.edit-tools { display: flex; gap: 8px; margin-top: -2px; }
.edit-actions { display: grid; grid-template-columns: 1fr 1.6fr; gap: 10px; }
.edit-actions button { min-height: 48px; }
.ghost.small { font-size: 13px; padding: 5px 12px; }
.privacy, .note { font-size: 13px; color: var(--muted); margin: 0; }
.reader {
font: 19px/1.65 Georgia, "Iowan Old Style", serif;
max-width: 680px; margin: 0 auto; padding: 4px 0 230px;
}
.reader p { margin: 0 0 1em; }
.reader .c { border-radius: 4px; transition: background .2s, color .2s; cursor: pointer; }
.reader .c.played { color: var(--done); }
.reader .c.now { background: var(--hl); color: var(--ink); box-decoration-break: clone; -webkit-box-decoration-break: clone; padding: 1px 0; }
.player {
position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
background: color-mix(in srgb, var(--paper) 92%, transparent);
backdrop-filter: blur(8px); border-top: 1px solid var(--line);
padding: 10px 16px calc(14px + env(safe-area-inset-bottom));
}
.status { font-size: 13px; color: var(--muted); text-align: center; min-height: 1.3em; margin-bottom: 6px; }
.controls { display: flex; justify-content: center; align-items: center; gap: 22px; }
.round { width: 48px; height: 48px; border: 1px solid var(--line); background: var(--card); font-size: 18px; display: grid; place-items: center; padding: 0; }
.round.big { width: 64px; height: 64px; background: var(--accent); color: #fff; border: 0; font-size: 24px; }
dialog { border: 0; border-radius: 18px; padding: 0; background: var(--card); color: var(--ink); width: min(420px, 92vw); }
dialog::backdrop { background: rgb(0 0 0 / .35); }
.settings { display: flex; flex-direction: column; gap: 14px; padding: 20px; }
.settings h2 { margin: 0; font: 600 19px Georgia, serif; }
.settings label { display: flex; flex-direction: column; gap: 6px; font-size: 14px; color: var(--muted); }
.settings select, .settings input[type=range] { font: inherit; color: var(--ink); }
.settings select { padding: 9px; border-radius: 10px; border: 1px solid var(--line); background: var(--paper); }
.dialog-actions { display: flex; justify-content: flex-end; }
.pill { font-size: 12px; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--line); color: var(--muted); align-self: center; white-space: nowrap; }
.pill:empty { display: none; }
.pill.ok { color: #2f6b3a; border-color: #b9d6bd; background: #eaf4ea; }
.pill.off { color: #fff; border-color: transparent; background: #3d5a80; }
@media (prefers-color-scheme: dark) { .pill.ok { color: #9fd3a7; border-color: #2f4a33; background: #1d2a1f; } }
.ready { border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; background: var(--card); }
.ready-title { font-weight: 600; font-size: 15px; margin-bottom: 6px; }
.ready-list { list-style: none; padding: 0; margin: 0 0 8px; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 14px; color: var(--muted); }
.ready-list li::before { content: '○ '; }
.ready-list li.yes { color: var(--ink); }
.ready-list li.yes::before { content: '✓ '; color: #2f8a45; font-weight: 700; }
.ready-list li.busy::before { content: '… '; }
.title-input {
font: 600 17px/1.3 Georgia, "Iowan Old Style", serif; color: var(--ink);
background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 10px 14px; width: 100%;
}
.title-input:focus { outline: 2px solid var(--accent); outline-offset: -1px; }
.export {
max-width: 680px; margin: 4px auto 18px; padding: 14px 16px; border-radius: 16px;
background: var(--card); border: 1px solid var(--line);
display: flex; flex-direction: column; gap: 10px;
}
.export-head { display: flex; flex-direction: column; gap: 2px; }
.export-head strong { font: 600 17px/1.3 Georgia, "Iowan Old Style", serif; }
.ex-meta { font-size: 13px; color: var(--muted); }
.progress.big { height: 6px; border-radius: 3px; margin: 0; }
.export-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.export-actions .primary, .export-actions .ghost { flex: 1 1 auto; min-height: 44px; }
.export.done { border-color: #b9d6bd; }