codex.css

6.4 KB · raw

1/* Peach Codex — generation and restoration view styles.2 *3 * Class names are `peach-codex-*` to avoid colliding with the existing4 * settings/overlay tokens. Colours and surfaces reuse `--peach-*` variables5 * defined in vars.css and popup.css — do not introduce new tokens here.6 */78/* Shared body padding — the overlay header eats the top inset, the rest is9 * scrollable so a long page (toggle + warnings + footnote) still fits in10 * the 320×520 popup without clipping. */11.peach-codex-body {12  padding: 12px 16px 18px;13  display: flex;14  flex-direction: column;15  gap: 12px;16}1718/* When the body hosts the ambient runes layer, give it a positioning context19 * so the absolute-positioned RecoveryRuneBackground anchors to the body. */20.peach-codex-body--runes {21  position: relative;22  overflow: hidden;23  isolation: isolate;24}25.peach-codex-body--runes > *:not(.peach-rune-background) {26  position: relative;27  z-index: 1;28}2930/* Recovery-words confirmation — onboarding feel, but housed in an overlay.31 * Cormorant Garamond italic on the headlines mirrors the lock screen so the32 * user lands in the same mental space as "set up recovery words". */33.peach-codex-recovery-headline {34  display: flex;35  flex-direction: column;36  gap: 6px;37  margin-top: 4px;38}39.peach-codex-recovery-title {40  font-family: "Cormorant Garamond", "Times New Roman", serif;41  font-style: italic;42  font-weight: 400;43  font-size: 1.25rem;44  letter-spacing: -0.005em;45  color: var(--peach-t0);46  margin: 0;47}48.peach-codex-recovery-body {49  margin: 0;50  font-size: 0.8125rem;51  line-height: 1.45;52  color: var(--peach-t1);53}54.peach-codex-recovery-warn {55  margin: 0;56  font-size: 0.75rem;57  line-height: 1.45;58  color: var(--peach-accent);59  font-style: italic;60}6162.peach-codex-words-grid {63  list-style: none;64  margin: 4px 0 0;65  padding: 12px;66  display: grid;67  grid-template-columns: repeat(2, 1fr);68  gap: 6px 16px;69  border: 1px solid var(--peach-t3);70  border-radius: 8px;71  background: rgba(245, 240, 234, 0.04);72}73.peach-codex-word-row {74  display: flex;75  align-items: baseline;76  gap: 6px;77}78.peach-codex-word-numeral {79  font-family: "Cormorant Garamond", "Times New Roman", serif;80  font-style: italic;81  font-size: 0.75rem;82  color: var(--peach-accent);83  width: 28px;84  flex: 0 0 28px;85  letter-spacing: 0.02em;86}87.peach-codex-word-text {88  font-family: "IBM Plex Mono", monospace;89  font-size: 0.6875rem;90  letter-spacing: 0.06em;91  color: var(--peach-t0);92  text-transform: lowercase;93}9495.peach-codex-confirm-section {96  display: flex;97  flex-direction: column;98  gap: 10px;99  margin-top: 4px;100}101.peach-codex-confirm-label {102  font-family: "IBM Plex Mono", monospace;103  font-size: 0.625rem;104  letter-spacing: 0.04em;105  color: var(--peach-t2);106  margin: 0;107}108.peach-codex-confirm-row {109  display: flex;110  align-items: center;111  gap: 8px;112}113.peach-codex-confirm-pos {114  font-family: "IBM Plex Mono", monospace;115  font-size: 0.5625rem;116  color: var(--peach-t2);117  min-width: 52px;118  letter-spacing: 0.04em;119}120.peach-codex-confirm-input {121  flex: 1;122  background: transparent;123  border: none;124  border-bottom: 1px solid var(--peach-t3);125  color: var(--peach-t0);126  font-family: "IBM Plex Mono", monospace;127  font-size: 0.75rem;128  letter-spacing: 0.06em;129  padding: 4px 2px 3px;130  outline: none;131  text-transform: lowercase;132  transition: border-color 120ms ease;133}134.peach-codex-confirm-input:focus {135  border-bottom-color: var(--peach-accent);136}137138.peach-codex-intro {139  padding: 12px;140}141142.peach-codex-blurb {143  margin: 0;144  font-size: 0.8125rem;145  line-height: 1.45;146  color: var(--peach-t1);147}148149.peach-codex-meta {150  margin: 8px 0 0;151  font-size: 0.75rem;152  color: var(--peach-t2);153  letter-spacing: 0.01em;154}155156.peach-codex-meta strong {157  color: var(--peach-t0);158  font-weight: 400;159}160161.peach-codex-toggle-desc {162  margin: 8px 0 0;163  font-size: 0.75rem;164  color: var(--peach-t2);165  line-height: 1.45;166}167168.peach-codex-error {169  margin: 0;170}171172.peach-codex-generate-btn {173  margin-top: 4px;174}175176.peach-codex-footnote {177  margin: 8px 0 0;178  font-size: 0.6875rem;179  color: var(--peach-t2);180  line-height: 1.5;181  font-style: italic;182}183184.peach-codex-done {185  padding: 12px;186  display: flex;187  flex-direction: column;188  gap: 6px;189}190191.peach-codex-verify {192  font-family: var(--font-mono, ui-monospace, monospace);193  letter-spacing: 0.04em;194  color: var(--peach-t0);195}196197/* ── Restore view — scanner ──────────────────────────────────────────── */198199.peach-codex-scanner {200  position: relative;201  width: 100%;202  aspect-ratio: 4 / 3;203  background: var(--peach-s2, rgba(0, 0, 0, 0.6));204  border-radius: 8px;205  overflow: hidden;206}207208.peach-codex-video {209  width: 100%;210  height: 100%;211  object-fit: cover;212  display: block;213}214215.peach-codex-camera-overlay {216  position: absolute;217  inset: 0;218  display: flex;219  align-items: center;220  justify-content: center;221  padding: 16px;222  background: rgba(0, 0, 0, 0.55);223  text-align: center;224}225226.peach-codex-progress-group {227  padding: 10px 12px;228  display: flex;229  flex-direction: column;230  gap: 6px;231}232233.peach-codex-progress-track {234  width: 100%;235  height: 4px;236  background: var(--peach-s2, rgba(255, 255, 255, 0.08));237  border-radius: 2px;238  overflow: hidden;239}240241.peach-codex-progress-fill {242  height: 100%;243  background: var(--peach-accent);244  transition: width 240ms var(--peach-curve-settle, cubic-bezier(0.16, 1, 0.3, 1));245}246247.peach-codex-progress-label {248  display: flex;249  justify-content: space-between;250  align-items: baseline;251  margin: 0;252  font-size: 0.75rem;253  color: var(--peach-t1);254}255256.peach-codex-verify-tag {257  font-family: var(--font-mono, ui-monospace, monospace);258  font-size: 0.6875rem;259  color: var(--peach-t2);260  letter-spacing: 0.04em;261}262263.peach-codex-hint {264  margin: 0;265  font-size: 0.75rem;266  color: var(--peach-t2);267  line-height: 1.4;268}269270.peach-codex-warning {271  margin: 4px 0 0;272}273274.peach-codex-passphrase-group {275  padding: 12px;276  display: flex;277  flex-direction: column;278  gap: 8px;279}280281.peach-codex-cancel-btn {282  margin-top: auto;283}284285/* Pro badge used in Settings → DATA → Peach Codex when free user. */286.peach-pro-badge {287  display: inline-flex;288  align-items: center;289  padding: 1px 6px;290  margin-left: 8px;291  font-family: var(--font-mono, ui-monospace, monospace);292  font-size: 9px;293  letter-spacing: 0.06em;294  text-transform: uppercase;295  color: var(--peach-accent);296  border: 0.5px solid var(--peach-accent);297  border-radius: 4px;298  vertical-align: middle;299  opacity: 0.8;300}