popup.css

253.4 KB · raw

1html,2body,3#app,4.popup-root {5  width: 320px;6  min-height: 520px;7  height: 520px;8  margin: 0;9}1011body {12  overflow: hidden;13  background: var(--bg);14  color: var(--t0);15  font-family: var(--font-ui);16  font-weight: 300;17  position: relative;18}1920* {21  box-sizing: border-box;22}2324button,25input,26textarea,27select {28  font: inherit;29}3031button {32  border: 0;33}3435.popup-root {36  position: relative;37  overflow: hidden;38}3940.peach-theme {41  color: var(--peach-t0);42  font-family: var(--font-ui);43  font-weight: 300;44  box-sizing: border-box;45  text-align: left;46}47.peach-theme, .peach-theme * { box-sizing: inherit; }4849.peach-brand-mark {50  width: 14px;51  height: 14px;52  flex-shrink: 0;53}5455.peach-status-pip.is-hidden {56  display: none;57}5859.peach-status-pip.unlocked {60  background: var(--peach-health-ok);61  box-shadow: 0 0 6px rgba(100, 210, 100, 0.6);62}6364.peach-status-pip.pulse {65  animation: pip-pulse 400ms var(--peach-curve-settle) both;66}6768/* Shell */69.peach-shell, .peach-screen {70  background:71    radial-gradient(120% 80% at 0% 0%, var(--shell-accent-a) 0%, transparent 65%),72    radial-gradient(85% 100% at 100% 100%, var(--shell-accent-b) 0%, transparent 70%),73    var(--peach-bg);74  border: 1px solid var(--peach-t3);75  box-shadow:76    0 2px 8px rgba(0,0,0,0.55),77    0 14px 48px rgba(0,0,0,0.7),78    0 0 0 1px rgba(240,232,216,0.04);79  overflow: hidden;80}81.peach-shell {82  display: grid;83  grid-template-rows: auto 1fr;84  min-height: 520px;85  position: relative;86  isolation: isolate;87}8889.peach-shell[data-surface="extension"] {90  width: min(320px, 100vw);91  border-radius: 0;92  height: 520px;93  max-height: 520px;94  overflow: hidden;95}9697/* ── Lock screen – full-window lock/create stage ── */98.lock-screen--vault-stage {99  display: flex;100  flex-direction: column;101  gap: 18px;102  padding: 20px 18px 18px;103  justify-content: flex-start;104}105.lock-screen--vault-stage .peach-lock-panel {106  margin-top: auto;107}108.peach-lock-headline--unlock {109  max-width: 220px;110  text-align: center;111  margin: 0 auto;112  padding: 0;113}114.peach-lock-hero--unlock {115  flex: 1 1 auto;116  padding-top: 0;117}118.peach-lock-panel--unlock {119  gap: 10px;120}121122.peach-lock-restore-link {123  background: transparent;124  border: none;125  cursor: pointer;126  font-family: var(--font-mono);127  font-size: 0.625rem;128  letter-spacing: 0.08em;129  color: var(--t1);130  padding: 5px 0;131  text-align: left;132  transition: color 150ms ease;133}134135.peach-lock-restore-link:hover {136  color: var(--t0);137}138.peach-shell[data-surface="extension"] .peach-stage {139  min-height: 250px;140}141142/* Screen (unlock) */143.peach-screen {144  width: min(320px, 100vw);145  min-height: 100%;146  height: 100%;147  border-radius: 0;148  padding: 16px 20px 18px;149  display: grid;150  gap: 14px;151}152.peach-screen[data-motion-phase="enter"] {153  animation: peach-screen-enter var(--peach-dur-600) var(--peach-curve-arrival) both;154}155.peach-screen-header { min-height: 20px; }156157/* Wordmark */158.peach-wordmark {159  margin: 0;160  font-family: var(--font-display);161  font-size: 0.9375rem;162  font-style: italic;163  letter-spacing: 0.03em;164  color: var(--peach-t0);165  display: inline-flex;166  min-height: 1em;167}168169/* Motion text / char animation */170.peach-motion-text { display: inline-flex; min-height: 1em; }171.peach-motion-char {172  display: inline-block;173  white-space: pre;174  opacity: 0;175  transform: translateY(0.22em);176  animation: peach-char-enter var(--peach-motion-duration, 380ms) var(--peach-curve-arrival) forwards;177  animation-delay: calc(var(--peach-char-index, 0) * 20ms);178}179180/* Chrome */181.peach-chrome {182  position: relative;183  z-index: 10;184  padding: 16px 20px 0;185  display: flex;186  justify-content: space-between;187  align-items: center;188  /* z-index:10 keeps the header icons above `.peach-loading` (Suspense189     fallback) per §15 regression guard. Without pointer-events:none, the190     empty header strip also sits above `.peach-overlay-view` (z-index:2)191     and swallows clicks meant for an overlay's back button / top search. */192  pointer-events: none;193}194.peach-chrome .peach-btn { pointer-events: auto; }195.peach-chrome.is-hidden-for-overlay,196.peach-search-wrap.is-hidden-for-overlay {197  opacity: 0;198  visibility: hidden;199  pointer-events: none;200}201/* The pair-device surface owns its own header and header — fully collapse the global202   chrome row so the warm gradient reaches the popup edge. */203.peach-chrome.is-collapsed,204.peach-search-wrap.is-collapsed {205  display: none;206}207.peach-wordmark-wrap { display: flex; align-items: center; gap: 5px; }208.peach-status-pip {209  width: 5px;210  height: 5px;211  border-radius: 50%;212  background: var(--peach-t3);213  display: inline-flex;214  flex-shrink: 0;215  transition: background 400ms ease, box-shadow 400ms ease;216}217.peach-chrome-actions { display: flex; gap: 6px; }218219/* Shell body */220.peach-shell-body {221  position: relative;222  display: grid;223  grid-template-rows: 1fr auto;224  min-height: 0;225  min-width: 0;226  width: 100%;227  overflow: hidden;228  height: 100%;229}230.peach-shell-veil {231  position: absolute; inset: 0;232  background: #000; opacity: 0;233  pointer-events: none; z-index: 1;234}235.peach-shell[data-motion-phase="enter"] .peach-shell-body {236  animation: peach-shell-fade-in var(--peach-dur-600) var(--peach-curve-arrival) both;237}238.peach-shell[data-motion-phase="exit"] .peach-shell-veil {239  animation: peach-veil-in 300ms var(--peach-curve-departure) forwards;240}241242/* Content frame */243.peach-content-frame {244  display: grid;245  grid-template-rows: 1fr auto;246  grid-template-columns: minmax(0, 1fr);247  align-content: start;248  min-height: 0;249  min-width: 0;250  overflow: hidden;251  transition: opacity 80ms ease, transform 80ms ease;252}253.peach-content-frame.navigating {254  opacity: 0.93;255  transform: translateX(2px);256}257.peach-content-frame[data-content-phase="enter"] {258  animation: peach-content-enter 135ms ease-out both;259}260.peach-content-frame[data-content-phase="exit"] {261  animation: peach-content-exit 95ms ease-in forwards;262}263.peach-content-frame[data-content-phase="idle"] { opacity: 1; transform: none; }264265/* Stage */266.peach-stage {267  padding: 10px 20px 12px;268  display: grid;269  gap: 12px;270  align-content: start;271  min-width: 0;272  min-height: 0;273  max-width: 100%;274  overflow-y: auto;275  overflow-x: hidden;276  scrollbar-width: none;277  -ms-overflow-style: none;278  overscroll-behavior: contain;279}280.peach-stage::-webkit-scrollbar { display: none; }281282/* Entry name */283.peach-entry-name-wrap { position: relative; overflow: hidden; max-width: 100%; }284.peach-entry-header {285  position: relative;286  z-index: 1;287  display: flex;288  align-items: flex-start;289  gap: 6px;290  min-width: 0;291}292.peach-entry-header-name {293  flex: 1;294  min-width: 0;295}296.peach-entry-name {297  margin: 0;298  padding-bottom: 0.12em;299  font-family: var(--font-display);300  font-style: italic; font-weight: 400;301  font-size: 44px; line-height: 0.95;302  color: var(--peach-t0);303  display: -webkit-box;304  -webkit-line-clamp: 2;305  -webkit-box-orient: vertical;306  overflow: hidden;307  text-wrap: balance;308}309.peach-entry-name--lg { font-size: 40px; }310.peach-entry-name--xl { font-size: 34px; line-height: 0.98; }311.peach-entry-name--xxl { font-size: 30px; line-height: 1.02; }312.peach-entry-name-text { display: block; overflow: hidden; max-width: 100%; overflow-wrap: anywhere; padding-bottom: 0.12em; }313314/* Trash icon in entry header */315.peach-entry-trash-btn {316  flex-shrink: 0;317  padding: 4px;318  margin-top: 4px;319  background: transparent;320  border: none;321  cursor: pointer;322  color: var(--peach-t2);323  border-radius: 4px;324  transition: color 140ms ease, background 140ms ease;325  display: flex;326  align-items: center;327  justify-content: center;328}329.peach-entry-trash-btn:hover {330  color: var(--peach-t1);331  background: var(--peach-t3);332}333.peach-entry-trash-confirm {334  display: flex;335  align-items: center;336  gap: 6px;337  flex-shrink: 0;338  margin-top: 6px;339  flex-wrap: nowrap;340}341.peach-entry-trash-confirm-label {342  font-family: var(--font-mono);343  font-size: 0.5625rem;344  letter-spacing: 0.1em;345  color: var(--peach-t2);346  white-space: nowrap;347}348.peach-entry-name-button {349  padding: 0;350  background: transparent;351  text-align: left;352  cursor: pointer;353  max-width: 100%;354  overflow: hidden;355  display: block;356}357.peach-entry-name-char {358  display: inline-block;359  white-space: pre;360  opacity: 0;361  transform: translateY(0.22em);362  animation: peach-char-enter 380ms var(--peach-curve-arrival) forwards;363  animation-delay: calc(var(--char-index, 0) * 20ms);364}365366/* Domain */367.peach-domain { border-top: 1px solid var(--peach-t3); padding-top: 9px; }368.peach-domain-row {369  width: 100%; border: 0; background: transparent; color: inherit;370  padding: 0; display: flex; justify-content: space-between; align-items: baseline;371  cursor: default;372}373.peach-domain-value {374  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;375  font-size: 0.625rem; font-style: italic;376  letter-spacing: 0.12em; color: var(--peach-t1);377}378379/* Fields */380.peach-fields { display: grid; gap: 10px; }381.peach-field-card { display: grid; gap: 7px; }382.peach-label {383  font-family: Inter, system-ui, sans-serif;384  text-transform: uppercase; letter-spacing: 0.2em;385  font-size: 0.5rem; color: var(--peach-t2);386}387.peach-add-field-btn {388  align-self: flex-start;389  background: none; border: none; padding: 2px 0;390  font-family: Inter, system-ui, sans-serif;391  font-size: 0.6875rem; color: var(--peach-accent);392  cursor: pointer; opacity: 0.75;393  letter-spacing: 0.02em;394}395.peach-add-field-btn:hover { opacity: 1; }396.peach-field-value-row {397  display: flex; justify-content: space-between;398  align-items: center; gap: 8px;399  min-width: 0;400}401.peach-field-value {402  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;403  font-size: 0.8125rem; color: var(--peach-t1);404  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;405  flex: 1;406  min-width: 0;407}408.peach-password-value {409  display: inline-flex;410  align-items: center;411  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;412  font-size: 1rem; letter-spacing: 0.3em; color: var(--peach-t0);413  overflow: hidden;414  text-overflow: ellipsis;415  white-space: nowrap;416  flex: 1;417  min-width: 0;418  max-width: 100%;419}420.peach-password-value.is-revealed {421  font-size: 0.875rem;422  letter-spacing: 0.08em;423}424.peach-password-text,425.peach-password-mask {426  display: block;427  width: 100%;428  overflow: hidden;429  white-space: nowrap;430  /* Render as uniform mid-line bullets, not baseline periods */431  font-family: Inter, system-ui, sans-serif;432  font-size: 0.625rem;433  letter-spacing: 3px;434  user-select: none;435}436.peach-field-actions { display: flex; gap: 4px; align-items: center; }437.peach-password-strength { display: flex; align-items: center; gap: 8px; }438.peach-strength-bar { display: flex; gap: 3px; }439.peach-strength-seg { width: 28px; height: 4px; border-radius: 2px; background: #eee; }440.peach-strength-label {441  font-family: "IBM Plex Mono", monospace;442  font-style: italic;443  font-size: 0.5625rem;444  font-weight: 300;445  min-width: 36px;446  text-align: right;447  color: var(--peach-t2);448  letter-spacing: 0.06em;449}450451.peach-strength-hairline {452  display: flex;453  align-items: center;454  gap: 10px;455  margin-top: -2px;456}457458.peach-strength-hairline-track {459  flex: 1;460  height: 3px;461  border-radius: 2px;462  background: var(--peach-s2);463  overflow: hidden;464}465466.peach-strength-hairline-fill {467  height: 100%;468  border-radius: 2px;469  transition: width 400ms cubic-bezier(0.16, 1, 0.3, 1),470    background 400ms ease;471}472473/* Note content (display) */474.peach-note-content {475  border-top: 1px solid var(--peach-t3);476  padding-top: 10px;477  font-family: var(--font-display);478  font-size: 0.9375rem;479  line-height: 1.75;480  color: var(--peach-t1);481}482483/* ── Inline editing ─────────────────────────────────────────────────── */484485/* Clickable display values */486.peach-inline-clickable {487  cursor: text;488  border-radius: 3px;489  transition: background 150ms ease;490}491.peach-inline-clickable:hover {492  background: rgba(240, 232, 216, 0.05);493}494495/* Subtle "edit" hint that appears on hover */496.peach-inline-edit-hint {497  font-family: Inter, system-ui, sans-serif;498  font-size: 0.5625rem;499  text-transform: uppercase;500  letter-spacing: 0.14em;501  color: var(--peach-t2);502  opacity: 0;503  transition: opacity 120ms ease;504  pointer-events: none;505  margin-left: 6px;506  flex-shrink: 0;507}508.peach-domain-row:hover .peach-inline-edit-hint {509  opacity: 1;510}511512/* Title editing */513.peach-inline-title-wrap {514  display: flex;515  flex-direction: column;516  gap: 6px;517}518.peach-inline-title-input {519  font-family: var(--font-display);520  font-style: italic;521  font-weight: 400;522  font-size: 40px;523  line-height: 0.95;524  color: var(--peach-t0);525  background: transparent;526  border: none;527  border-bottom: 1px solid var(--peach-accent);528  outline: none;529  width: 100%;530  padding: 2px 0;531}532533/* Generic inline field */534.peach-inline-field-wrap {535  display: flex;536  flex-direction: column;537  gap: 6px;538}539.peach-inline-input {540  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;541  font-size: 0.8125rem;542  color: var(--peach-t0);543  background: transparent;544  border: none;545  border-bottom: 1px solid var(--peach-accent);546  outline: none;547  width: 100%;548  padding: 3px 0;549}550.peach-inline-textarea {551  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;552  font-size: 0.6875rem;553  line-height: 1.7;554  color: var(--peach-t0);555  background: rgba(240, 232, 216, 0.04);556  border: 1px solid var(--peach-accent);557  border-radius: 4px;558  outline: none;559  width: 100%;560  padding: 8px;561  resize: vertical;562  min-height: 80px;563}564565/* Save / cancel row */566.peach-inline-actions {567  display: flex;568  gap: 6px;569  align-items: center;570}571.peach-inline-save-btn,572.peach-inline-cancel-btn {573  display: inline-flex;574  align-items: center;575  justify-content: center;576  width: 26px;577  height: 26px;578  border-radius: 4px;579  border: none;580  cursor: pointer;581  transition: background 140ms ease, opacity 140ms ease;582  flex-shrink: 0;583}584.peach-inline-save-btn {585  background: color-mix(in srgb, var(--peach-accent) 18%, transparent);586  color: var(--peach-accent);587}588.peach-inline-save-btn:hover:not(:disabled) {589  background: color-mix(in srgb, var(--peach-accent) 30%, transparent);590}591.peach-inline-cancel-btn {592  background: rgba(240, 232, 216, 0.06);593  color: var(--peach-t2);594}595.peach-inline-cancel-btn:hover:not(:disabled) {596  background: rgba(240, 232, 216, 0.12);597  color: var(--peach-t1);598}599.peach-inline-save-btn:disabled,600.peach-inline-cancel-btn:disabled {601  opacity: 0.4;602  cursor: not-allowed;603}604605/* Inline password generator wrapper */606.peach-inline-generator-wrap {607  margin-top: 10px;608  padding-top: 10px;609  border-top: 1px solid var(--peach-t3);610  display: flex;611  flex-direction: column;612  gap: 8px;613}614.peach-inline-generator-cancel {615  align-self: flex-start;616  font-size: 0.6875rem;617  color: var(--peach-t2);618}619620/* "is-editing" card state */621.peach-field-card.is-editing {622  background: rgba(240, 232, 216, 0.02);623  border-radius: 6px;624  padding: 8px;625  margin: -8px;626}627628/* Inline tag editor on Entry detail view */629.peach-inline-tag-editor {630  display: flex;631  flex-direction: column;632  gap: 6px;633}634635/* Quiet inline "+ add X" link in the entry detail body */636.peach-entry-add-link {637  justify-self: start;638  margin-top: 8px;639}640641/* Additional URLs editor revealed by clicking the URL field */642.peach-additional-urls {643  display: flex;644  flex-direction: column;645  gap: 6px;646  margin-top: 8px;647}648.peach-additional-urls-label {649  font-size: 0.5625rem;650  letter-spacing: 0.1em;651  text-transform: uppercase;652  color: var(--peach-t2);653  margin-bottom: 2px;654}655/* UI-5 / LV-4: recovery words grid in the view-words reveal. */656.peach-recovery-words-grid {657  display: grid;658  grid-template-columns: 1fr 1fr;659  gap: 4px 10px;660}661.peach-recovery-word {662  font-family: "IBM Plex Mono", "SFMono-Regular", monospace;663  font-size: 11px;664  color: var(--peach-t0);665}666.peach-recovery-word b {667  color: var(--peach-t2);668  font-weight: 400;669  margin-right: 4px;670}671672/* UI-1 / HV-1b: dismissible sync alert banners at the top of the vault view. */673.peach-sync-alerts {674  display: flex;675  flex-direction: column;676  gap: 6px;677  padding: 8px 12px 0;678  /* Grid item of .peach-shell: without a zero min-width the nowrap alert text679     sizes this item to its min-content, blowing the fixed-width shell past680     320px and clipping/distorting everything else in it. */681  min-width: 0;682}683.peach-sync-alert {684  display: flex;685  align-items: center;686  gap: 8px;687  padding: 8px 10px;688  border-radius: 7px;689  min-width: 0;690  max-width: 100%;691  background: color-mix(in srgb, #C8A840 14%, transparent);692  border: 1px solid color-mix(in srgb, #C8A840 38%, transparent);693}694.peach-sync-alert-text {695  flex: 1;696  min-width: 0;697  font-family: "IBM Plex Mono", "SFMono-Regular", monospace;698  font-size: 10px;699  line-height: 1.45;700  color: var(--peach-t0);701  overflow: hidden;702  text-overflow: ellipsis;703  white-space: nowrap;704}705.peach-sync-alert-flip {706  flex-shrink: 0;707  background: none;708  border: none;709  color: var(--peach-t2);710  font-size: 14px;711  line-height: 1;712  cursor: pointer;713  padding: 0 2px;714}715.peach-sync-alert-flip:hover { color: var(--peach-t0); }716.peach-sync-alert-count {717  flex-shrink: 0;718  font-family: "IBM Plex Mono", "SFMono-Regular", monospace;719  font-size: 9px;720  color: var(--peach-t2);721  min-width: 24px;722  text-align: center;723}724.peach-sync-alert-dismiss {725  flex-shrink: 0;726  background: none;727  border: none;728  color: var(--peach-t2);729  font-size: 14px;730  line-height: 1;731  cursor: pointer;732  padding: 0 2px;733}734.peach-sync-alert-dismiss:hover { color: var(--peach-t0); }735736/* UI-8 / LV-2: non-blocking homograph warning under the URL editor. */737.peach-homograph-warning {738  margin: 4px 0 2px;739  padding: 6px 8px;740  border-radius: 6px;741  background: color-mix(in srgb, var(--peach-breach) 12%, transparent);742  border: 1px solid color-mix(in srgb, var(--peach-breach) 36%, transparent);743  color: var(--peach-t1);744  font-size: 0.6875rem;745  line-height: 1.4;746}747.peach-additional-url-row {748  display: flex;749  align-items: center;750  gap: 6px;751}752.peach-additional-url-row .peach-inline-input { flex: 1; min-width: 0; }753.peach-additional-url-remove {754  background: transparent;755  border: 1px solid var(--peach-t3);756  color: var(--peach-t2);757  width: 22px;758  height: 22px;759  border-radius: 4px;760  cursor: pointer;761  font-size: 0.875rem;762  line-height: 1;763  display: inline-flex;764  align-items: center;765  justify-content: center;766  flex-shrink: 0;767  transition: color 120ms ease, border-color 120ms ease;768}769.peach-additional-url-remove:hover:not(:disabled) {770  color: var(--peach-accent);771  border-color: var(--peach-border-accent);772}773.peach-additional-urls-add { align-self: flex-start; }774775/* Delete row */776.peach-entry-delete-row {777  display: flex;778  align-items: center;779  gap: 8px;780  padding-top: 18px;781  margin-top: 8px;782  border-top: 1px solid var(--peach-t3);783}784.peach-delete-btn {785  font-size: 0.6875rem;786  color: var(--peach-t2);787  padding: 4px 0;788}789.peach-delete-confirm-text {790  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;791  font-size: 0.6875rem;792  font-style: italic;793  color: var(--peach-t2);794  flex-shrink: 0;795}796797/* TOTP band */798.peach-totp-band {799  border-top: 1px solid var(--peach-t3);800  padding: 12px 20px 14px;801  position: relative;802  display: grid;803  grid-template-columns: 1fr auto;804  gap: 10px;805}806.peach-totp-main {807  min-width: 0;808  cursor: pointer;809  user-select: none;810}811.peach-totp-code.is-copied { opacity: 0.55; transition: opacity 140ms ease; }812.peach-totp-code-row {813  display: flex;814  align-items: flex-end;815  gap: 10px;816  min-width: 0;817}818.peach-totp-code {819  margin: 2px 0 0;820  font-family: var(--font-display);821  font-style: italic;822  font-weight: 300;823  font-size: 38px; color: var(--peach-accent);824  line-height: 0.95; min-height: 1em;825  min-width: 0;826}827.peach-totp-code-text {828  display: inline-flex;829  overflow: hidden;830  text-overflow: ellipsis;831  white-space: nowrap;832}833.peach-totp-copy-btn {834  margin-bottom: 2px;835  flex-shrink: 0;836  border-color: transparent;837}838.peach-totp-meta { display: grid; justify-items: end; align-content: start; gap: 4px; }839.peach-totp-countdown {840  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;841  font-size: 22px; color: var(--peach-t1);842}843.peach-totp-ring { transform: rotate(-90deg); }844.peach-totp-ring-track { fill: none; stroke: var(--peach-t3); stroke-width: 2; }845.peach-totp-ring-progress {846  fill: none; stroke: var(--peach-accent); stroke-width: 2;847  stroke-linecap: round;848  transition: stroke-dashoffset 1s linear, stroke 500ms ease;849}850/* Search bar */851.peach-search-wrap {852  border-top: 1px solid var(--peach-t3);853  background: var(--peach-s1);854  min-height: 54px; position: relative;855  box-shadow: inset 0 6px 18px transparent;856  transition: box-shadow 700ms ease;857}858.peach-search-wrap::before {859  content: "";860  position: absolute;861  left: 0;862  top: 0;863  height: 2px;864  width: var(--peach-totp-progress, 0%);865  background: var(--peach-accent);866  opacity: 0;867  transition: width 1s linear, opacity 180ms ease;868  pointer-events: none;869}870.peach-shell[data-totp-active="true"] .peach-search-wrap::before {871  opacity: 0.9;872}873.peach-shell[data-totp-active="true"] .peach-search-wrap {874  box-shadow: inset 0 6px 18px rgba(180, 140, 110, 0.07);875}876877@keyframes peach-totp-code-flare {878  0%   { filter: brightness(1); }879  25%  { filter: brightness(1.3); }880  100% { filter: brightness(1); }881}882.peach-totp-code.is-hot {883  animation: peach-totp-code-flare 3000ms ease-in-out both;884}885.peach-search-bar {886  min-height: 54px;887  display: grid;888  grid-template-columns: auto minmax(0, 1fr) auto;889  align-items: center;890  gap: 8px; padding: 0 9px 0 12px;891}892.peach-search-icon { color: var(--peach-t2); display: inline-flex; align-items: center; }893.peach-search-input {894  border: 0; background: transparent; color: var(--peach-t0);895  font-family: var(--font-display);896  font-style: italic; font-size: 18px;897  outline: none; width: 100%; min-width: 0; padding: 0;898  caret-color: var(--peach-accent);899}900.peach-search-input::placeholder { color: var(--peach-t2); }901.peach-search-meta {902  display: grid;903  grid-auto-flow: column;904  align-items: center;905  justify-content: end;906  gap: 6px;907  min-width: max-content;908}909.peach-search-counter {910  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;911  font-size: 0.625rem; color: var(--peach-t2);912  display: inline-flex;913  align-items: center;914  line-height: 1;915}916.peach-divider { width: 1px; height: 12px; background: var(--peach-t3); display: inline-block; flex-shrink: 0; }917918/* Buttons */919.peach-btn {920  border: 1px solid transparent; border-radius: 12px;921  background: transparent; color: var(--peach-t0);922  font-family: Inter, system-ui, sans-serif;923  font-size: 0.75rem; letter-spacing: 0.02em; padding: 8px 12px;924  cursor: pointer;925  transition:926    background-color var(--peach-dur-80) var(--peach-curve-arrival),927    color var(--peach-dur-80) var(--peach-curve-arrival),928    border-color var(--peach-dur-150) var(--peach-curve-arrival);929}930.peach-btn:hover:not(:disabled) { background: var(--peach-s2); }931.peach-btn:disabled {932  opacity: 0.45;933  cursor: not-allowed;934}935.peach-btn--sm { min-height: 32px; padding: 6px 9px; font-size: 0.6875rem; }936.peach-btn--md { min-height: 38px; }937.peach-btn--accent {938  background: var(--peach-accent);939  color: rgba(0,0,0,0.92);940  font-weight: 500;941  box-shadow:942    0 1px 0 rgba(255,255,255,0.08) inset,943    0 0 0 1px color-mix(in srgb, var(--peach-accent) 21%, transparent),944    0 3px 16px var(--peach-glow),945    0 0 24px color-mix(in srgb, var(--peach-accent) 10%, transparent);946}947.peach-btn--accent:hover:not(:disabled) {948  background: var(--peach-accent);949  filter: brightness(1.10) saturate(1.05);950  box-shadow:951    0 1px 0 rgba(255,255,255,0.10) inset,952    0 0 0 1px color-mix(in srgb, var(--peach-accent) 25%, transparent),953    0 4px 20px color-mix(in srgb, var(--peach-accent) 21%, transparent),954    0 0 30px color-mix(in srgb, var(--peach-accent) 14%, transparent);955}956.peach-btn--ghost:not(.peach-icon-btn) { border-color: var(--peach-t3); color: var(--peach-t1); }957.peach-btn--ghost.peach-icon-btn { color: var(--peach-t1); }958.peach-btn--subtle { color: var(--peach-t2); border-color: var(--peach-t3); }959.peach-icon-btn {960  min-width: 32px; min-height: 32px; border-radius: 8px; padding: 6px;961  display: inline-flex; align-items: center; justify-content: center;962  border-color: transparent;963  transition:964    color var(--peach-dur-80) var(--peach-curve-arrival),965    box-shadow var(--peach-dur-150) var(--peach-curve-arrival),966    background-color var(--peach-dur-80) var(--peach-curve-arrival);967}968.peach-icon-btn:hover:not(:disabled) {969  background: transparent;970  color: var(--peach-accent);971  box-shadow: 0 0 12px color-mix(in srgb, var(--peach-accent) 28%, transparent),972              0 0 4px color-mix(in srgb, var(--peach-accent) 16%, transparent);973}974975/* Topbar sync. Only rendered when a device is paired, so it never sits there976   as a control that cannot do anything. */977.peach-sync-btn.is-syncing { color: var(--peach-accent); }978.peach-sync-btn.is-syncing .peach-sync-icon {979  animation: peach-sync-spin 900ms linear infinite;980  transform-origin: 50% 50%;981}982.peach-sync-btn.is-ok { color: var(--peach-accent); }983.peach-sync-btn.is-error { color: var(--peach-breach, #d66); }984@keyframes peach-sync-spin { to { transform: rotate(360deg); } }985986/* Sync indicator light — same taxonomy as the Settings pip, sized for the987   14px topbar icon. Unlit when nothing has happened yet; never green when988   sync is not actually working. */989.peach-sync-btn { position: relative; }990.peach-sync-pip {991  position: absolute;992  top: 2px;993  right: 2px;994  width: 5px;995  height: 5px;996  border-radius: 50%;997  background: transparent;998}999.peach-sync-pip.is-ok,1000.peach-sync-pip.is-busy {1001  background: var(--peach-health-ok);1002  box-shadow: 0 0 4px color-mix(in srgb, var(--peach-health-ok) 60%, transparent);1003}1004.peach-sync-pip.is-busy { animation: peach-sync-pip-pulse 1600ms ease-in-out infinite; }1005/* Yellow — the dial did not reach the peer, but the alarm will retry. Distinct1006   from is-error (red) so a transient network miss does not look like a real1007   fault. */1008.peach-sync-pip.is-warn {1009  background: var(--peach-health-warn);1010  box-shadow: 0 0 4px color-mix(in srgb, var(--peach-health-warn) 60%, transparent);1011}1012.peach-sync-pip.is-error {1013  background: var(--peach-breach);1014  box-shadow: 0 0 4px color-mix(in srgb, var(--peach-breach) 60%, transparent);1015}1016@keyframes peach-sync-pip-pulse {1017  0%, 100% { opacity: 1; }1018  50% { opacity: 0.35; }1019}1020@media (prefers-reduced-motion: reduce) {1021  .peach-sync-btn.is-syncing .peach-sync-icon { animation: none; opacity: 0.6; }1022  .peach-sync-pip.is-busy { animation: none; }1023}10241025.peach-btn:focus-visible {1026  outline: none;1027  box-shadow: 0 0 0 2px var(--peach-bg), 0 0 0 4px color-mix(in srgb, var(--peach-accent) 50%, transparent);1028}10291030/* Lock button */1031.peach-lock-icon { transform-origin: center; }1032/* Beat .peach-btn--ghost.peach-icon-btn (rest) and .peach-icon-btn:hover1033   (hover) so the lock reads accent in both states. */1034.peach-btn--ghost.peach-icon-btn.peach-lock-btn { color: var(--peach-accent); }1035.peach-lock-btn.is-locking .peach-lock-icon {1036  animation: peach-lock-settle var(--peach-dur-600) var(--peach-curve-arrival);1037}10381039/* Biometric unlock button */1040.peach-biometric-btn {1041  display: flex;1042  align-items: center;1043  justify-content: center;1044  gap: 6px;1045  margin-top: 8px;1046  width: 100%;1047}10481049/* Copy button */1050.peach-copy-btn {1051  position: relative; overflow: hidden;1052  color: var(--peach-t2); border-color: var(--peach-t3);1053}1054.peach-copy-icon {1055  display: inline-flex; align-items: center; justify-content: center;1056  position: relative; z-index: 1;1057}1058.peach-copy-icon-svg { display: block; }1059.peach-copy-sheen {1060  position: absolute; inset: 0;1061  background: linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--peach-accent) 18%, transparent) 30%, color-mix(in srgb, var(--peach-accent) 8%, transparent) 100%);1062  opacity: 0; transform: scaleX(0.15); transform-origin: left center;1063}1064.peach-copy-btn.is-copied {1065  animation: peach-copy-confirm var(--peach-dur-150) var(--peach-curve-settle) forwards;1066  box-shadow:1067    0 0 0 1px color-mix(in srgb, var(--peach-accent) 22%, transparent),1068    0 0 18px color-mix(in srgb, var(--peach-accent) 20%, transparent),1069    inset 0 0 20px color-mix(in srgb, var(--peach-accent) 12%, transparent);1070}1071.peach-copy-btn.is-copied .peach-copy-icon {1072  animation: peach-copy-icon-settle var(--peach-dur-150) var(--peach-curve-settle) both;1073}1074.peach-copy-btn.is-copied .peach-copy-sheen {1075  animation: peach-copy-flood var(--peach-dur-150) var(--peach-curve-settle) forwards;1076}1077.peach-copy-btn.is-retreat {1078  animation: peach-copy-retreat var(--peach-dur-150) var(--peach-curve-departure) forwards;1079}1080.peach-copy-btn.is-retreat .peach-copy-sheen {1081  animation: peach-copy-sheen-retreat var(--peach-dur-150) var(--peach-curve-departure) forwards;1082}1083.peach-copy-drain { position: absolute; left: 0; right: 0; bottom: 0; height: 1px; overflow: hidden; }1084.peach-copy-drain-bar {1085  display: block; width: 100%; height: 100%;1086  background: var(--peach-accent); opacity: 0.7;1087  animation: peach-copy-drain var(--peach-copy-clear, 1.8s) linear forwards;1088}10891090/* Unlock screen elements */1091.peach-underline-input {1092  width: 100%; border: 0; border-bottom: 1px solid var(--peach-t3);1093  padding: 6px 0; background: transparent; color: var(--peach-t0);1094  outline: none;1095  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;1096  font-size: 0.8125rem;1097  caret-color: var(--peach-accent);1098}1099.peach-unlock-input { font-size: 22px; letter-spacing: 0.24em; }1100.peach-unlock-input::placeholder { letter-spacing: 0.04em; color: var(--peach-t2); }1101.peach-hint {1102  margin: 0;1103  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;1104  font-size: 0.625rem; color: var(--peach-t2);1105}1106.peach-unlock-footer {1107  margin-top: 4px; display: flex; align-items: center; gap: 7px;1108  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;1109  font-size: 0.625rem; color: var(--peach-t2);1110}1111.peach-unlock-footer--lock {1112  padding-top: 2px;1113}11141115/* Desktop helper (peach-sync) code pairing — additive hooks. The shared pairing1116   classes (peach-pair-*) carry the shared layout; these only style the parts1117   unique to the typed-code path. Inline styles cover the SAS/confirm gate. */1118.peach-desktop-pair { display: flex; flex-direction: column; }1119.peach-desktop-enter,1120.peach-desktop-searching,1121.peach-desktop-paired,1122.peach-desktop-error {1123  display: flex; flex-direction: column; gap: 8px;1124  padding: 4px 18px 16px; text-align: center; align-items: center;1125}1126.peach-desktop-enter .peach-label { align-self: flex-start; }1127/* Sized for a full 19-character pairing code (A74H-48J3-KI32-OEP4) in a1128   320px popup — a 6-digit legacy helper code still reads fine at this size. */1129.peach-code-input {1130  text-align: center; letter-spacing: 0.12em; padding-left: 0.12em;1131  font-size: 15px;1132}1133.peach-code-input::placeholder { letter-spacing: 0.12em; }11341135/* Sync card "pair a device" options — bordered, raised tappable rows that read1136   as buttons on any card hue (theme-neutral light overlay, not the peach accent). */1137.peach-sync-pair-option {1138  display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;1139  width: 100%; text-align: left; cursor: pointer; font-family: inherit;1140  padding: 11px 12px; border-radius: 10px;1141  background: color-mix(in srgb, var(--peach-t0) 6%, transparent);1142  border: 1px solid color-mix(in srgb, var(--peach-t0) 16%, transparent);1143  color: var(--peach-t0);1144  transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;1145}1146.peach-sync-pair-option + .peach-sync-pair-option { margin-top: 8px; }1147.peach-sync-pair-option:hover {1148  background: color-mix(in srgb, var(--peach-t0) 10%, transparent);1149  border-color: color-mix(in srgb, var(--peach-t0) 28%, transparent);1150}1151.peach-sync-pair-option:active { transform: translateY(1px); }1152.peach-sync-pair-option:disabled { opacity: 0.5; cursor: default; }1153.peach-sync-pair-option-icon { flex-shrink: 0; display: flex; align-items: center; color: var(--peach-t1); margin-top: 1px; }1154.peach-sync-pair-option-main { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }1155.peach-sync-pair-option-title { font-size: 0.8125rem; font-weight: 600; }1156.peach-sync-pair-option-sub { font-size: 0.6875rem; line-height: 1.45; color: var(--peach-t2); }1157.peach-sync-pair-option-chevron { flex-shrink: 0; color: var(--peach-t2); font-size: 1.05rem; line-height: 1.3; }11581159/* Breach badge */1160.peach-breach-badge {1161  display: flex;1162  position: relative;1163  z-index: 1;1164  align-items: center;1165  gap: 7px;1166  font-size: 0.5625rem;1167  color: var(--peach-breach);1168  padding: 5px 10px;1169  margin-bottom: 4px;1170  border-radius: 8px;1171  background: rgba(220, 80, 60, 0.07);1172  border: 1px solid rgba(220, 80, 60, 0.18);1173  letter-spacing: 0.04em;1174}11751176.peach-password-value.is-breached {1177  color: rgba(220, 80, 60, 0.75);1178  border-bottom: 1px solid rgba(220, 80, 60, 0.22);1179}11801181/* ── Overlay views ─────────────────────────────────────────────────── */1182.peach-overlay-view {1183  position: absolute;1184  inset: 0;1185  display: flex;1186  flex-direction: column;1187  background:1188    radial-gradient(120% 80% at 0% 0%, var(--shell-accent-a) 0%, transparent 65%),1189    radial-gradient(85% 100% at 100% 100%, var(--shell-accent-b) 0%, transparent 70%),1190    var(--peach-bg);1191  z-index: 2;1192  overflow: hidden;1193  animation: overlay-in 180ms cubic-bezier(0.4, 0, 0.2, 1) both;1194}11951196.peach-overlay-view:has(.stk-shell) {1197  background: var(--peach-bg);1198}1199@keyframes overlay-in {1200  from { opacity: 0; transform: translateY(8px); }1201  to   { opacity: 1; transform: translateY(0); }1202}1203.peach-overlay-view.ov-enter-up {1204  animation: ov-enter-up 280ms cubic-bezier(0.16, 1, 0.3, 1) both;1205}1206.peach-overlay-view.ov-exit-up {1207  animation: ov-exit-up 200ms cubic-bezier(0.4, 0, 1, 1) both;1208}1209.peach-overlay-view.ov-enter-right {1210  animation: ov-enter-right 280ms cubic-bezier(0.16, 1, 0.3, 1) both;1211}1212.peach-overlay-view.ov-exit-right {1213  animation: ov-exit-right 200ms cubic-bezier(0.4, 0, 1, 1) both;1214}12151216@keyframes ov-enter-up {1217  from { opacity: 0; transform: translateY(18px); }1218  to   { opacity: 1; transform: translateY(0); }1219}1220@keyframes ov-exit-up {1221  from { opacity: 1; transform: translateY(0); }1222  to   { opacity: 0; transform: translateY(-12px); }1223}1224@keyframes ov-enter-right {1225  from { opacity: 0; transform: translateX(20px); }1226  to   { opacity: 1; transform: translateX(0); }1227}1228@keyframes ov-exit-right {1229  from { opacity: 1; transform: translateX(0); }1230  to   { opacity: 0; transform: translateX(20px); }1231}12321233/* Overlay shared header */1234.peach-overlay-header {1235  padding: 10px 12px 8px;1236  display: flex;1237  align-items: center;1238  gap: 10px;1239  flex-shrink: 0;1240}1241/* Back button — circular pill matching the settings stack masthead (.stk-back) */1242.peach-overlay-header .peach-btn--ghost.peach-icon-btn {1243  width: 28px;1244  height: 28px;1245  flex: 0 0 28px;1246  border-radius: 999px;1247  border: 1px solid var(--peach-border);1248  background: color-mix(in srgb, var(--peach-t0) 4%, transparent);1249  color: var(--peach-t1);1250  padding: 0;1251}1252.peach-overlay-header .peach-btn--ghost.peach-icon-btn:hover {1253  color: var(--peach-t0);1254  border-color: color-mix(in srgb, var(--peach-accent) 34%, transparent);1255  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);1256}1257.peach-overlay-title {1258  font-family: var(--font-display);1259  font-style: italic;1260  font-weight: 400;1261  font-size: 20px;1262  line-height: 1;1263  color: var(--peach-t0);1264  flex: 1;1265  text-align: center;1266}1267/* Balances the 28px back button so the title stays visually centred */1268.peach-overlay-spacer {1269  width: 28px;1270  flex: 0 0 28px;1271}12721273.peach-overlay-card {1274  background: var(--peach-s1);1275  border: 1px solid var(--peach-t3);1276  border-radius: 12px;1277  overflow: hidden;1278  width: 100%;1279}12801281.peach-onboarding-alt-actions {1282  display: flex;1283  flex-direction: column;1284  gap: 4px;1285  padding: 0;1286}12871288.peach-settings-copy {1289  margin: 0 0 10px;1290  font-size: 0.6875rem;1291  line-height: 1.5;1292  color: var(--peach-t2);1293}12941295.peach-settings-copy strong {1296  color: var(--peach-t0);1297}12981299.peach-settings-copy--spacious {1300  margin-bottom: 12px;1301}13021303.peach-settings-copy--result {1304  color: var(--peach-accent);1305  font-size: 0.8125rem;1306  text-align: center;1307  padding: 8px 0;1308}13091310.peach-settings-copy--danger {1311  color: var(--peach-breach);1312}13131314.peach-settings-copy--success {1315  color: var(--peach-accent);1316}13171318.peach-inline-feedback {1319  font-size: 0.6875rem;1320  margin: 10px 0 0;1321}13221323.peach-inline-feedback--ok {1324  color: var(--peach-accent);1325}13261327.peach-inline-feedback--error {1328  color: var(--peach-breach);1329}13301331.peach-inline-feedback--muted {1332  color: var(--peach-t2);1333  font-size: 0.625rem;1334  margin: 4px 0;1335}13361337.peach-inline-feedback--spaced {1338  margin-top: 12px;1339}13401341.peach-settings-actions--row {1342  display: flex;1343  gap: 6px;1344}13451346.peach-settings-actions--end {1347  margin-top: 14px;1348  justify-content: flex-end;1349}13501351.peach-settings-stack {1352  display: flex;1353  flex-direction: column;1354  gap: 6px;1355}13561357.peach-settings-stack--tight {1358  gap: 4px;1359}13601361.peach-settings-stack--spacious {1362  gap: 8px;1363}13641365.peach-settings-input {1366  width: 100%;1367  box-sizing: border-box;1368  padding: 8px 10px;1369  background: rgba(0, 0, 0, 0.22);1370  border: 1px solid transparent;1371  border-radius: 6px;1372  color: var(--peach-t0);1373  font-family: var(--font-ui);1374  font-size: 0.75rem;1375  outline: none;1376  transition: border-color 120ms ease, background 120ms ease;1377}13781379.peach-settings-input:focus {1380  border-color: color-mix(in srgb, var(--peach-accent) 55%, transparent);1381  background: rgba(0, 0, 0, 0.28);1382}13831384.peach-settings-input[type="password"] {1385  font-family: var(--font-mono);1386  letter-spacing: 0.04em;1387}13881389.peach-hidden-file-input {1390  display: none;1391}13921393.peach-checkbox-note {1394  display: flex;1395  align-items: flex-start;1396  gap: 8px;1397  font-size: 0.6875rem;1398  color: var(--peach-t1);1399  cursor: pointer;1400  margin: 12px 0;1401}14021403.peach-checkbox-note input {1404  margin-top: 1px;1405}14061407.peach-danger-notice {1408  background: rgba(220, 80, 60, 0.08);1409  border: 1px solid rgba(220, 80, 60, 0.2);1410  border-radius: 6px;1411  padding: 9px 11px;1412  font-size: 0.6875rem;1413  color: var(--peach-t1);1414  line-height: 1.5;1415}14161417.peach-info-notice {1418  font-size: 0.6875rem;1419  color: var(--peach-t1);1420  line-height: 1.5;1421  background: var(--surface-card);1422  border: 1px solid var(--peach-t3);1423  border-radius: 6px;1424  padding: 8px 10px;1425}14261427.peach-info-notice--warn {1428  border-color: rgba(220, 38, 38, 0.4);1429  background: rgba(220, 38, 38, 0.06);1430  color: rgba(220, 38, 38, 0.92);1431  margin-bottom: 8px;1432}14331434/* Warm helpful-context note — reads as a soft aside, not an alert. */1435.peach-info-notice--note {1436  background: color-mix(in srgb, var(--peach-bg-elevated, var(--peach-bg)) 88%, var(--peach-accent) 12%);1437  border-color: color-mix(in srgb, var(--peach-accent) 18%, transparent);1438  color: var(--peach-t2);1439}14401441.peach-strength-row {1442  display: flex;1443  align-items: center;1444  gap: 8px;1445  margin-bottom: 10px;1446}14471448.peach-strength-track {1449  flex: 1;1450  height: 4px;1451  background: var(--peach-s2);1452  border-radius: 2px;1453  overflow: hidden;1454}14551456.peach-strength-fill {1457  height: 100%;1458  border-radius: 2px;1459  transition: width 120ms ease, background 120ms ease;1460}14611462/* ── Type selector tabs ── */1463.peach-type-tabs {1464  display: flex;1465  gap: 0;1466  background: var(--peach-t4);1467  border-radius: 8px;1468  padding: 3px;1469}14701471.peach-type-tab {1472  flex: 1;1473  display: flex;1474  align-items: center;1475  justify-content: center;1476  gap: 6px;1477  padding: 6px 10px;1478  border-radius: 6px;1479  border: none;1480  background: transparent;1481  cursor: pointer;1482  font-family: Inter, system-ui, sans-serif;1483  font-size: 0.6875rem;1484  font-weight: 400;1485  letter-spacing: 0.04em;1486  color: var(--peach-t1);1487  transition: background 150ms ease, color 150ms ease;1488}14891490.peach-type-tab.is-active {1491  background: var(--peach-s2);1492  color: var(--peach-t0);1493  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);1494}14951496.peach-type-tab:not(.is-active):hover {1497  color: var(--peach-t0);1498}14991500.peach-type-tab svg {1501  opacity: 0.7;1502  flex-shrink: 0;1503}15041505.peach-type-tab.is-active svg {1506  opacity: 1;1507}15081509/* ── List view ───────────────────────────────────────────────────────── */1510.peach-list-top {1511  padding: 0 10px;1512  min-height: 46px;1513  display: flex;1514  align-items: center;1515  gap: 6px;1516  border-bottom: 1px solid var(--peach-t3);1517  flex-shrink: 0;1518  background: var(--peach-s1);1519}15201521.peach-vault-list {1522  flex: 1;1523  overflow-y: auto;1524  scrollbar-width: none;1525}1526.peach-vault-list::-webkit-scrollbar { display: none; }15271528/* Scrollbar — vault list */1529.peach-vault-list {1530  scrollbar-width: thin;1531  scrollbar-color: var(--peach-t3) transparent;1532}15331534.peach-vault-list::-webkit-scrollbar {1535  width: 3px;1536}15371538.peach-vault-list::-webkit-scrollbar-thumb {1539  background: var(--peach-t3);1540  border-radius: 2px;1541}15421543.peach-entry-row {1544  width: 100%;1545  display: flex;1546  align-items: center;1547  gap: 10px;1548  padding: 9px 16px;1549  background: transparent;1550  border: none;1551  border-bottom: 1px solid var(--peach-t3);1552  cursor: pointer;1553  color: inherit;1554  text-align: left;1555  transition: background 80ms ease;1556}1557.peach-entry-row:hover { background: rgba(240,232,216,0.03); }1558.peach-entry-row:last-child { border-bottom: none; }1559.peach-entry-row.is-active {1560  box-shadow: inset 2px 0 0 var(--peach-accent);1561  background: rgba(240,232,216,0.03);1562}1563.peach-entry-row:focus-visible {1564  outline: none;1565  box-shadow: 0 0 0 1px var(--peach-border-accent);1566  background: rgba(240,232,216,0.03);1567}1568.peach-entry-row-icon {1569  width: 26px; height: 26px;1570  border-radius: 7px;1571  border: 1px solid var(--peach-t3);1572  display: flex; align-items: center; justify-content: center;1573  color: var(--peach-t2);1574  flex-shrink: 0;1575}1576.peach-entry-row-icon.is-breach {1577  border-color: rgba(220,80,60,0.3);1578  color: rgba(220,80,60,0.7);1579}15801581/* Title-initials chip used as the favicon fallback for login entries whose1582 * real favicon hasn't been cached by the browser yet (freshly-imported,1583 * never-visited domains). Background colour is hashed from the title so1584 * the same entry always shows the same chip. The chip fits the same1585 * 26×26 row icon slot the favicon would take. */1586.peach-favicon-initials {1587  display: inline-flex;1588  align-items: center;1589  justify-content: center;1590  width: 100%;1591  height: 100%;1592  border-radius: 4px;1593  font-family: "IBM Plex Mono", monospace;1594  font-size: 0.5625rem;1595  font-weight: 600;1596  letter-spacing: 0.04em;1597  color: rgba(240, 232, 216, 0.92);1598  text-transform: uppercase;1599  user-select: none;1600}1601.peach-entry-row-info { flex: 1; min-width: 0; }1602.peach-entry-row-name {1603  display: block;1604  font-family: var(--font-display);1605  font-size: 1.0625rem;1606  font-style: italic;1607  font-weight: 400;1608  color: var(--peach-t0);1609  line-height: 1.2;1610  white-space: nowrap;1611  overflow: hidden;1612  text-overflow: ellipsis;1613}1614.peach-entry-row-meta {1615  display: block;1616  font-family: "IBM Plex Mono", monospace;1617  font-size: 0.5625rem;1618  color: var(--peach-t2);1619  margin-top: 1px;1620  letter-spacing: 0.05em;1621}1622.peach-entry-row-dot {1623  width: 5px; height: 5px;1624  border-radius: 50%;1625  background: rgba(220,80,60,0.7);1626  flex-shrink: 0;1627}1628.peach-new-entry-row {1629  display: flex;1630  align-items: center;1631  justify-content: center;1632  gap: 6px;1633  width: 100%;1634  padding: 11px;1635  background: transparent;1636  border: none;1637  border-top: 1px solid var(--peach-t3);1638  color: var(--peach-t2);1639  font-family: "IBM Plex Mono", monospace;1640  font-size: 0.5625rem;1641  text-transform: uppercase;1642  letter-spacing: 0.14em;1643  cursor: pointer;1644  flex-shrink: 0;1645  transition: color 120ms ease, background 120ms ease;1646}1647.peach-new-entry-row:hover { color: var(--peach-t0); background: rgba(240,232,216,0.02); }16481649/* ── Multi-select mode ─────────────────────────────────────────────── */16501651/* Select-mode trigger button in sort bar — same shape as trash btn */1652.peach-sort-select-btn {1653  display: flex;1654  align-items: center;1655  justify-content: center;1656  padding: 3px 5px;1657  background: transparent;1658  border: none;1659  cursor: pointer;1660  color: var(--peach-t2);1661  border-radius: 4px;1662  transition: color 140ms ease, background 140ms ease;1663}1664.peach-sort-select-btn:hover {1665  color: var(--peach-t1);1666  background: var(--peach-t3);1667}16681669/* Sort bar in select mode */1670.peach-select-cancel-btn {1671  background: transparent;1672  border: none;1673  padding: 0 4px;1674  cursor: pointer;1675  font-family: "IBM Plex Mono", monospace;1676  font-size: 0.5625rem;1677  letter-spacing: 0.12em;1678  text-transform: uppercase;1679  color: var(--peach-t2);1680  transition: color 140ms ease;1681  flex-shrink: 0;1682}1683.peach-select-cancel-btn:hover { color: var(--peach-t0); }16841685.peach-select-count-label {1686  flex: 1;1687  text-align: center;1688  font-family: "IBM Plex Mono", monospace;1689  font-size: 0.5625rem;1690  letter-spacing: 0.14em;1691  text-transform: uppercase;1692  color: var(--peach-t1);1693}16941695.peach-select-all-btn {1696  background: transparent;1697  border: none;1698  padding: 0 4px;1699  cursor: pointer;1700  font-family: "IBM Plex Mono", monospace;1701  font-size: 0.5625rem;1702  letter-spacing: 0.12em;1703  text-transform: uppercase;1704  color: var(--peach-t2);1705  transition: color 140ms ease;1706  flex-shrink: 0;1707}1708.peach-select-all-btn:hover { color: var(--peach-accent); }17091710/* List in select mode */1711.peach-vault-list.is-selecting .peach-entry-row {1712  cursor: default;1713}1714.peach-vault-list.is-selecting .peach-entry-row:hover {1715  background: rgba(240,232,216,0.02);1716}1717.peach-vault-list.is-selecting .peach-entry-row.is-selected {1718  background: color-mix(in srgb, var(--peach-accent) 6%, transparent);1719}1720.peach-vault-list.is-selecting .peach-entry-row.is-selected:hover {1721  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);1722}17231724/* Select indicator circles in icon slot */1725.peach-entry-row-icon.is-select-icon {1726  color: var(--peach-t2);1727}1728.peach-entry-row.is-selected .peach-entry-row-icon.is-select-icon {1729  color: var(--peach-accent);1730}17311732/* Delete action bar at bottom (replaces new-entry row) */1733.peach-select-action-bar {1734  display: flex;1735  align-items: center;1736  justify-content: center;1737  gap: 7px;1738  width: 100%;1739  padding: 11px;1740  background: transparent;1741  border: none;1742  border-top: 1px solid var(--peach-t3);1743  color: var(--peach-t1);1744  font-family: "IBM Plex Mono", monospace;1745  font-size: 0.5625rem;1746  text-transform: uppercase;1747  letter-spacing: 0.14em;1748  cursor: pointer;1749  flex-shrink: 0;1750  transition: color 120ms ease, background 120ms ease;1751}1752.peach-select-action-bar:not(:disabled):hover {1753  color: var(--peach-t0);1754  background: rgba(220,80,60,0.06);1755}1756.peach-select-action-bar:not(:disabled):hover svg {1757  stroke: rgba(220,80,60,0.8);1758}1759.peach-select-action-bar:disabled,1760.peach-select-action-bar.is-empty {1761  color: var(--peach-t2);1762  cursor: default;1763  opacity: 0.5;1764}1765.peach-search-counter-list {1766  white-space: nowrap;1767  flex-shrink: 0;1768}1769.peach-list-empty {1770  min-height: 180px;1771  display: grid;1772  place-items: center;1773  color: var(--peach-t2);1774  font-family: "IBM Plex Mono", monospace;1775  font-size: 0.6875rem;1776}17771778/* ── Settings view ───────────────────────────────────────────────────── */1779.peach-settings-body {1780  flex: 1;1781  overflow-y: auto;1782  min-height: 0;1783  display: flex;1784  flex-direction: column;1785  padding: 2px 0 10px;1786}1787.peach-settings-group {1788  margin: 4px 10px;1789  padding: 9px 14px 11px;1790  border-radius: 12px;1791  border: 1px solid rgba(255, 255, 255, 0.07);1792  background: rgba(26, 20, 16, 0.60);1793  backdrop-filter: blur(10px) saturate(1.3);1794  -webkit-backdrop-filter: blur(10px) saturate(1.3);1795}17961797.peach-settings-group + .peach-settings-group {1798  margin-top: 6px;1799}18001801@supports not (backdrop-filter: blur(1px)) {1802  .peach-settings-group {1803    background: rgba(26, 20, 16, 0.90);1804    border-color: rgba(255, 255, 255, 0.09);1805    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 4px 20px rgba(0, 0, 0, 0.35);1806  }1807}18081809.light .peach-settings-group,1810[data-theme="light"] .peach-settings-group {1811  background: rgba(245, 237, 226, 0.70);1812  border-color: rgba(26, 18, 8, 0.08);1813  backdrop-filter: blur(10px) saturate(1.2);1814  -webkit-backdrop-filter: blur(10px) saturate(1.2);1815}18161817@supports not (backdrop-filter: blur(1px)) {1818  .light .peach-settings-group,1819  [data-theme="light"] .peach-settings-group {1820    background: rgba(245, 237, 226, 0.97);1821    border-color: rgba(26, 18, 8, 0.10);1822  }1823}1824.peach-export-intro {1825  padding-bottom: 8px;1826}1827.peach-export-card {1828  display: grid;1829  gap: 10px;1830}1831.peach-rune-canvas {1832  border-radius: 8px;1833  background: rgba(0, 0, 0, 0.22);1834  flex: 1;1835  align-self: center;1836}1837.peach-script-input {1838  font-family: "PeachScript", monospace;1839  font-size: 0.6875rem;1840  line-height: 1.9;1841  letter-spacing: 0.06em;1842  color: var(--peach-t0);1843  background: rgba(0, 0, 0, 0.22);1844  border: none;1845  border-radius: 6px;1846  padding: 12px;1847  width: 100%;1848  min-height: 96px;1849  resize: vertical;1850  word-break: break-all;1851  scrollbar-width: none;1852  -ms-overflow-style: none;1853}18541855.peach-script-input::-webkit-scrollbar { display: none; }1856.peach-csv-warning {1857  background: color-mix(in srgb, var(--peach-breach) 14%, transparent);1858  border: 1px solid color-mix(in srgb, var(--peach-breach) 40%, transparent);1859  color: var(--peach-t0);1860  border-radius: 6px;1861  padding: 10px 12px;1862  margin-bottom: 8px;1863  font-size: 0.75rem;1864  line-height: 1.45;1865}1866.peach-export-card--primary {1867  background:1868    linear-gradient(180deg, color-mix(in srgb, var(--peach-accent) 8%, transparent), color-mix(in srgb, var(--peach-accent) 2%, transparent));1869}18701871/* Export menu — distribute the three format cards across the popup. */1872.peach-export-menu {1873  display: flex;1874  flex-direction: column;1875  flex: 1;1876  min-height: 0;1877}1878.peach-export-menu .peach-settings-group {1879  flex: 1;1880  display: flex;1881  flex-direction: column;1882  justify-content: center;1883  gap: 10px;1884}18851886/* Result view — the script-string fills the remaining vertical surface. */1887.peach-export-result-group {1888  flex: 1;1889  display: flex;1890  flex-direction: column;1891  min-height: 0;1892  border-bottom: none;1893}1894.peach-export-result-group .peach-export-card {1895  flex: 1;1896  min-height: 0;1897  display: flex;1898  flex-direction: column;1899  gap: 10px;1900}1901.peach-export-result-group .peach-export-card-copy {1902  flex-shrink: 0;1903}1904.peach-export-result-group .peach-settings-label {1905  flex-shrink: 0;1906}1907.peach-export-result-group button {1908  flex-shrink: 0;1909}1910.peach-export-card-head {1911  display: flex;1912  align-items: center;1913  justify-content: space-between;1914  gap: 10px;1915}1916.peach-export-card-copy {1917  margin: 0;1918  font-size: 0.75rem;1919  line-height: 1.55;1920  color: var(--peach-t1);1921}1922.peach-export-note {1923  margin: 0;1924  font-size: 0.625rem;1925  line-height: 1.5;1926  color: var(--peach-t2);1927}1928.peach-export-strength-track {1929  height: 3px;1930  background: var(--peach-border);1931  border-radius: 2px;1932  margin: 4px 0 2px;1933  overflow: hidden;1934}1935.peach-export-strength-fill {1936  height: 100%;1937  border-radius: 2px;1938  transition: width 250ms ease, background 250ms ease;1939}1940.peach-export-strength-warn {1941  margin: 0;1942  font-size: 0.625rem;1943  line-height: 1.5;1944  color: #e84040;1945  font-family: "IBM Plex Mono", monospace;1946}1947.peach-export-strength-hint {1948  margin: 0;1949  font-size: 0.625rem;1950  line-height: 1.5;1951  color: var(--peach-t2);1952  font-family: "IBM Plex Mono", monospace;1953}1954.peach-export-pill {1955  display: inline-flex;1956  align-items: center;1957  padding: 4px 8px;1958  border-radius: 999px;1959  border: 1px solid color-mix(in srgb, var(--peach-accent) 22%, transparent);1960  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);1961  color: var(--peach-accent);1962  font-family: "IBM Plex Mono", monospace;1963  font-size: 0.5rem;1964  letter-spacing: 0.12em;1965  text-transform: uppercase;1966  white-space: nowrap;1967}1968.peach-export-pill--danger {1969  border-color: rgba(220,80,60,0.22);1970  background: rgba(220,80,60,0.08);1971  color: var(--peach-breach);1972}1973.peach-settings-label {1974  margin: 0 0 6px;1975  font-family: "IBM Plex Mono", monospace;1976  font-size: 0.5rem;1977  text-transform: uppercase;1978  letter-spacing: 0.18em;1979  color: var(--peach-t2);1980}1981.peach-settings-row {1982  display: flex;1983  align-items: center;1984  justify-content: space-between;1985  gap: 12px;1986  min-height: 34px;1987  padding: 6px 0;1988  font-size: 0.8125rem;1989  color: var(--peach-t1);1990}1991.peach-settings-row--meta { color: var(--peach-t2); font-size: 0.75rem; }1992.peach-settings-value {1993  font-family: "IBM Plex Mono", monospace;1994  font-size: 0.625rem;1995  color: var(--peach-t2);1996}19971998.peach-settings-value--status {1999  display: flex;2000  align-items: center;2001  gap: 6px;2002}20032004.peach-settings-link {2005  font-family: "IBM Plex Mono", monospace;2006  font-size: 0.625rem;2007  color: var(--peach-accent);2008  text-decoration: none;2009  cursor: pointer;2010}2011.peach-settings-link:hover {2012  text-decoration: underline;2013}20142015.peach-settings-row--stack {2016  flex-direction: column;2017  align-items: stretch;2018  gap: 6px;2019}20202021.peach-settings-row--top {2022  align-items: flex-start;2023}20242025.peach-settings-row-main {2026  display: flex;2027  flex-direction: column;2028  gap: 4px;2029  flex: 1;2030}2031.peach-toggle {2032  width: 28px; height: 16px;2033  border-radius: 999px;2034  background: var(--peach-t3);2035  border: 1px solid var(--peach-t3);2036  display: flex; align-items: center; justify-content: flex-start; padding: 2px;2037  flex-shrink: 0;2038  transition: background 200ms ease, border-color 200ms ease;2039  cursor: pointer;2040}2041.peach-toggle.is-on {2042  background: color-mix(in srgb, var(--peach-accent) 22%, transparent);2043  border-color: color-mix(in srgb, var(--peach-accent) 40%, transparent);2044}2045.peach-toggle-knob {2046  width: 10px; height: 10px;2047  border-radius: 50%;2048  background: var(--peach-t2);2049  flex-shrink: 0;2050  transform: translateX(0px);2051  transition: background 200ms ease, transform 200ms var(--peach-curve-settle);2052}2053.peach-toggle.is-on .peach-toggle-knob {2054  background: var(--peach-accent);2055  transform: translateX(12px);2056}2057.peach-settings-footer {2058  display: flex;2059  align-items: center;2060  gap: 8px;2061  margin-top: auto;2062  padding: 14px 16px 8px;2063  font-family: "IBM Plex Mono", monospace;2064  font-size: 0.5625rem;2065  color: var(--peach-t2);2066}20672068/* ── Settings home navigation ──────────────────────────────────────────── */2069.peach-settings-nav-label {2070  margin: 0 0 2px;2071  padding: 12px 16px 4px;2072  font-family: "IBM Plex Mono", monospace;2073  font-size: 0.5rem;2074  text-transform: uppercase;2075  letter-spacing: 0.18em;2076  color: var(--peach-t2);2077}20782079.peach-settings-cat-row {2080  display: flex;2081  align-items: center;2082  gap: 10px;2083  width: 100%;2084  padding: 9px 16px;2085  background: none;2086  border: none;2087  border-bottom: 1px solid var(--peach-t3);2088  cursor: pointer;2089  text-align: left;2090  color: inherit;2091  transition: background var(--peach-dur-80) ease;2092}2093.peach-settings-cat-row:hover {2094  background: var(--peach-t3);2095}2096.peach-settings-cat-row:last-child {2097  border-bottom: none;2098}20992100.peach-settings-cat-icon {2101  width: 28px;2102  height: 28px;2103  border-radius: 7px;2104  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);2105  color: var(--peach-accent);2106  display: flex;2107  align-items: center;2108  justify-content: center;2109  flex-shrink: 0;2110}2111/* Light theme: peach-on-cream is too low-contrast — both colors are warm.2112   Darken the icon stroke to ink and bump the bg tint so the icon reads2113   sharply while the cell still feels accent-tinted. */2114.light .peach-settings-cat-icon {2115  background: color-mix(in srgb, var(--peach-accent) 18%, transparent);2116  color: color-mix(in srgb, var(--peach-accent) 50%, var(--peach-t0));2117}21182119.peach-settings-cat-content {2120  flex: 1;2121  display: flex;2122  flex-direction: column;2123  gap: 2px;2124  min-width: 0;2125}21262127.peach-settings-cat-name {2128  font-size: 0.8125rem;2129  font-weight: 450;2130  color: var(--peach-t0);2131  line-height: 1.2;2132}21332134.peach-settings-cat-desc {2135  font-size: 0.625rem;2136  color: var(--peach-t2);2137  line-height: 1.3;2138  white-space: nowrap;2139  overflow: hidden;2140  text-overflow: ellipsis;2141}21422143.peach-settings-cat-chevron {2144  color: var(--peach-t2);2145  flex-shrink: 0;2146  opacity: 0.5;2147}21482149/* ── Settings sub-view section labels ──────────────────────────────────── */2150.peach-settings-sub-label {2151  margin: 12px 0 4px;2152  font-family: "IBM Plex Mono", monospace;2153  font-size: 0.5rem;2154  text-transform: uppercase;2155  letter-spacing: 0.18em;2156  color: var(--peach-t2);2157}2158.peach-settings-sub-label:first-child {2159  margin-top: 4px;2160}21612162/* ── Settings: collapsible Advanced section ─────────────────────────────── */2163.peach-settings-advanced-toggle {2164  display: flex;2165  align-items: center;2166  justify-content: space-between;2167  width: 100%;2168  background: none;2169  border: none;2170  cursor: pointer;2171  padding: 12px 0 4px;2172  margin: 0;2173  color: inherit;2174}2175.peach-settings-advanced-toggle:hover .peach-settings-advanced-chevron {2176  color: var(--peach-t1);2177}2178.peach-settings-advanced-chevron {2179  font-size: 0.5625rem;2180  color: var(--peach-t3);2181  letter-spacing: 0;2182  transition: color 120ms ease;2183}21842185.peach-sync-disclosure-toggle {2186  min-height: 48px;2187  padding: 10px 0;2188  text-align: left;2189}21902191.peach-sync-disclosure-toggle > span:first-child {2192  display: flex;2193  flex-direction: column;2194  gap: 3px;2195}21962197.peach-sync-disclosure-summary {2198  color: var(--peach-t2);2199  font-size: 0.6875rem;2200  line-height: 1.35;2201}22022203.peach-sync-disclosure-content {2204  padding-bottom: 4px;2205}22062207/* ── Feedback form ──────────────────────────────────────────────────────── */2208.peach-feedback-group {2209  flex: 1;2210  display: flex;2211  flex-direction: column;2212  border-bottom: none;2213}22142215.peach-feedback-intro {2216  margin: 4px 0 14px;2217  font-size: 0.75rem;2218  line-height: 1.55;2219  color: var(--peach-t1);2220}22212222.peach-feedback-chips {2223  display: flex;2224  flex-wrap: wrap;2225  gap: 6px;2226  margin-bottom: 14px;2227}22282229.peach-feedback-chip {2230  padding: 4px 10px;2231  border-radius: 999px;2232  border: 1px solid var(--peach-t3);2233  background: none;2234  color: var(--peach-t2);2235  font-size: 0.6875rem;2236  font-family: var(--font-ui);2237  cursor: pointer;2238  transition: border-color var(--peach-dur-80) ease, color var(--peach-dur-80) ease,2239    background var(--peach-dur-80) ease;2240}2241.peach-feedback-chip:hover {2242  border-color: var(--peach-t2);2243  color: var(--peach-t1);2244}2245.peach-feedback-chip.is-active {2246  border-color: color-mix(in srgb, var(--peach-accent) 82%, white 18%);2247  background: color-mix(in srgb, var(--peach-accent) 22%, rgba(255, 255, 255, 0.08));2248  color: color-mix(in srgb, var(--peach-accent) 86%, white 14%);2249  box-shadow:2250    0 0 0 1px color-mix(in srgb, var(--peach-accent) 42%, transparent),2251    0 0 14px color-mix(in srgb, var(--peach-accent) 22%, transparent);2252  font-weight: 700;2253}22542255.peach-feedback-textarea {2256  flex: 1;2257  width: 100%;2258  min-height: 120px;2259  box-sizing: border-box;2260  background: rgba(0, 0, 0, 0.22);2261  border: 1px solid transparent;2262  border-radius: 6px;2263  color: var(--peach-t0);2264  font-size: 0.75rem;2265  font-family: var(--font-ui);2266  line-height: 1.5;2267  padding: 8px 10px;2268  resize: none;2269  outline: none;2270  transition: border-color var(--peach-dur-150) ease, background var(--peach-dur-150) ease;2271}2272.peach-feedback-textarea:focus {2273  border-color: color-mix(in srgb, var(--peach-accent) 55%, transparent);2274  background: rgba(0, 0, 0, 0.28);2275}2276.peach-feedback-textarea:focus {2277  border-color: color-mix(in srgb, var(--peach-accent) 40%, transparent);2278}2279.peach-feedback-textarea::placeholder {2280  color: var(--peach-t2);2281}22822283.peach-feedback-meta {2284  margin: 6px 0 0;2285  font-size: 0.625rem;2286  color: var(--peach-t2);2287  font-family: "IBM Plex Mono", monospace;2288}22892290.peach-feedback-result {2291  margin: 8px 0 0;2292  font-size: 0.6875rem;2293  font-family: "IBM Plex Mono", monospace;2294}2295.peach-feedback-result--ok { color: var(--peach-sync-ok); }2296.peach-feedback-result--err { color: var(--peach-breach); }22972298.peach-feedback-submit {2299  width: 100%;2300  margin-top: 12px;2301  justify-content: center;2302}23032304.peach-feedback-anon {2305  margin: 8px 0 0;2306  font-size: 0.625rem;2307  color: var(--peach-t2);2308  text-align: center;2309}23102311.peach-feedback-thanks {2312  margin: auto 0;2313  padding: 18px 14px;2314  border: 1px solid color-mix(in srgb, var(--peach-accent) 42%, transparent);2315  border-radius: 8px;2316  background:2317    linear-gradient(180deg, color-mix(in srgb, var(--peach-accent) 16%, transparent), transparent),2318    rgba(0, 0, 0, 0.18);2319  color: var(--peach-t1);2320  text-align: center;2321}23222323.peach-feedback-thanks p {2324  margin: 0;2325  font-size: 0.75rem;2326  line-height: 1.5;2327}23282329.peach-feedback-thanks-title {2330  color: var(--peach-t0);2331  font-family: "Cormorant Garamond", serif;2332  font-size: 1.375rem !important;2333  line-height: 1.1 !important;2334  margin-bottom: 8px !important;2335}23362337.peach-passkey-badge {2338  margin-left: 8px;2339  font-size: 0.625rem;2340  letter-spacing: 0.06em;2341  text-transform: uppercase;2342  color: var(--peach-t2);2343  font-family: var(--font-ui);2344  vertical-align: middle;2345}23462347.peach-passkey-delete-btn {2348  color: var(--peach-breach);2349  border-color: rgba(229, 85, 85, 0.25);2350}23512352.peach-passkey-delete-confirm {2353  display: flex;2354  align-items: center;2355  gap: 8px;2356  padding: 8px 10px;2357  background: rgba(229, 85, 85, 0.06);2358  border: 1px solid rgba(229, 85, 85, 0.2);2359  border-radius: 6px;2360}23612362.peach-passkey-delete-confirm-copy {2363  flex: 1;2364  font-size: 0.6875rem;2365  color: var(--peach-t1);2366}23672368.peach-passkey-delete-btn--confirm {2369  color: var(--peach-breach);2370  border-color: rgba(229, 85, 85, 0.4);2371}23722373.peach-passkey-activity {2374  flex-direction: column;2375  align-items: flex-start;2376  gap: 4px;2377}23782379.peach-passkey-meta {2380  font-size: 0.6875rem;2381  color: var(--peach-t2);2382}23832384.peach-passkey-actions {2385  position: relative;2386  z-index: 1;2387  margin-top: 14px;2388  display: flex;2389  flex-direction: column;2390  gap: 8px;2391}23922393.peach-passkey-approval {2394  display: flex;2395  flex-direction: column;2396  align-items: center;2397  padding: 16px 20px 14px;2398  gap: 8px;2399  text-align: center;2400}24012402.peach-passkey-approval-icon {2403  width: 36px;2404  height: 36px;2405  border-radius: 10px;2406  background: var(--peach-s2);2407  border: 1px solid var(--peach-t3);2408  display: flex;2409  align-items: center;2410  justify-content: center;2411  flex-shrink: 0;2412  color: var(--peach-accent);2413}24142415.peach-passkey-approval-icon img,2416.peach-passkey-approval-icon svg {2417  width: 22px;2418  height: 22px;2419  border-radius: 5px;2420}24212422.peach-passkey-approval-rp {2423  font-family: var(--font-ui);2424  font-size: 0.75rem;2425  color: var(--peach-t2);2426  letter-spacing: 0.03em;2427}24282429.peach-passkey-approval-action {2430  font-family: var(--font-display);2431  font-style: italic;2432  font-weight: 300;2433  font-size: 18px;2434  color: var(--peach-t0);2435  line-height: 1.1;2436  margin: 1px 0;2437}24382439.peach-passkey-approval-user {2440  font-family: var(--font-mono);2441  font-size: 0.6875rem;2442  color: var(--peach-t1);2443  background: var(--peach-s2);2444  border: 1px solid var(--peach-t3);2445  border-radius: 4px;2446  padding: 3px 8px;2447}24482449.peach-passkey-approval-notice {2450  font-size: 0.625rem;2451  color: var(--peach-t2);2452  line-height: 1.5;2453  max-width: 220px;2454}24552456.peach-passkey-approval-actions {2457  display: flex;2458  gap: 8px;2459  width: 100%;2460  margin-top: 6px;2461}24622463.peach-passkey-approval-actions .peach-btn {2464  flex: 1;2465}24662467/* ── Inline generator drawer ── */2468.peach-generator-drawer {2469  display: grid;2470  grid-template-rows: 0fr;2471  transition: grid-template-rows 320ms var(--peach-curve-arrival);2472  overflow: hidden;2473}2474.peach-generator-drawer.is-open {2475  grid-template-rows: 1fr;2476}2477.peach-generator-drawer-inner {2478  min-height: 0;2479  overflow: hidden;2480}2481.peach-generator-drawer-content {2482  border-top: 1px solid var(--peach-t3);2483  padding: 8px 0 4px;2484  display: flex;2485  flex-direction: column;2486  gap: 8px;2487}24882489/* ── Compact generator (inside entry edit) ── */2490.peach-generator-drawer-content--compact {2491  border-top: 1px solid var(--peach-t3);2492  padding: 8px 0 2px;2493  gap: 7px;2494}2495.peach-pwgen-compact-display-row {2496  display: flex;2497  align-items: center;2498  gap: 6px;2499}2500.peach-pwgen-compact-output {2501  flex: 1;2502  min-width: 0;2503  font-family: "IBM Plex Mono", monospace;2504  font-size: 0.6875rem;2505  font-weight: 400;2506  letter-spacing: 0.04em;2507  color: var(--peach-t0);2508  background: rgba(240, 232, 216, 0.04);2509  border: 1px solid var(--peach-t3);2510  border-radius: 5px;2511  padding: 5px 8px;2512  line-height: 1.5;2513  outline: none;2514  transition: border-color 120ms ease;2515}25162517.peach-pwgen-compact-output:focus {2518  border-color: var(--peach-t1);2519}2520.peach-pwgen-compact-controls {2521  display: flex;2522  align-items: center;2523  gap: 6px;2524}2525.peach-pwgen-compact-slider {2526  flex: 1;2527  min-width: 0;2528  height: 2px !important;2529}2530.peach-pwgen-compact-controls .peach-pwgen-len-num {2531  flex-shrink: 0;2532  min-width: 18px;2533  text-align: right;2534}2535.peach-pwgen-compact-pills {2536  display: flex;2537  gap: 3px;2538  flex-shrink: 0;2539}2540.peach-pwgen-compact-pills .peach-pwgen-pill {2541  padding: 2px 7px;2542  font-size: 0.5rem;2543}2544.peach-pwgen-compact-use {2545  flex-shrink: 0;2546  font-size: 0.625rem !important;2547  padding: 3px 9px !important;2548  min-height: 22px !important;2549  border-radius: 5px !important;2550}25512552/* ── Password edit row (input + eye toggle side-by-side) ── */2553.peach-password-edit-row {2554  display: flex;2555  align-items: center;2556  gap: 6px;2557}2558.peach-password-edit-row .peach-inline-input {2559  flex: 1;2560  min-width: 0;2561}25622563/* ── Generate toggle link ── */2564.peach-generate-toggle-link {2565  display: inline-flex;2566  align-items: center;2567  gap: 5px;2568  background: none;2569  border: none;2570  padding: 0;2571  cursor: pointer;2572  font-family: "IBM Plex Mono", monospace;2573  font-size: 0.625rem;2574  color: var(--peach-t2);2575  letter-spacing: 0.04em;2576  transition: color 120ms ease;2577  align-self: flex-start;2578}2579.peach-generate-toggle-link:hover {2580  color: var(--peach-accent);2581}25822583/* Holds the generate + history toggle links on one row under the editor. */2584.peach-password-edit-links {2585  display: flex;2586  align-items: center;2587  gap: 14px;2588  flex-wrap: wrap;2589}25902591/* ── Past-password history list ── */2592.peach-password-history {2593  display: grid;2594  gap: 4px;2595  margin-top: 2px;2596  max-height: 168px;2597  overflow-y: auto;2598  scrollbar-width: thin;2599}2600.peach-history-row {2601  display: flex;2602  align-items: center;2603  justify-content: space-between;2604  gap: 8px;2605  padding: 5px 7px;2606  border-radius: 7px;2607  background: color-mix(in srgb, var(--peach-accent) 5%, transparent);2608  border: 1px solid color-mix(in srgb, var(--peach-accent) 9%, transparent);2609}2610.peach-history-main {2611  display: flex;2612  flex-direction: column;2613  gap: 1px;2614  min-width: 0;2615  flex: 1;2616}2617.peach-history-pw {2618  font-family: "IBM Plex Mono", monospace;2619  font-size: 0.6875rem;2620  color: var(--peach-t1);2621  white-space: nowrap;2622  overflow: hidden;2623  text-overflow: ellipsis;2624}2625.peach-history-pw .peach-password-mask {2626  letter-spacing: 0.08em;2627  color: var(--peach-t2);2628}2629.peach-history-age {2630  font-family: "IBM Plex Mono", monospace;2631  font-size: 0.5625rem;2632  color: var(--peach-t3, var(--peach-t2));2633  letter-spacing: 0.03em;2634}2635.peach-history-actions {2636  display: flex;2637  align-items: center;2638  gap: 2px;2639  flex-shrink: 0;2640}2641.peach-history-use {2642  font-family: "IBM Plex Mono", monospace;2643  font-size: 0.5625rem;2644  letter-spacing: 0.05em;2645  padding: 3px 7px;2646}2647.peach-history-empty {2648  font-family: "IBM Plex Mono", monospace;2649  font-size: 0.625rem;2650  line-height: 1.45;2651  color: var(--peach-t2);2652  padding: 6px 8px;2653  border-radius: 7px;2654  background: color-mix(in srgb, var(--peach-accent) 4%, transparent);2655  border: 1px solid color-mix(in srgb, var(--peach-accent) 8%, transparent);2656}26572658/* ── New entry body (Add.tsx — mirrors .peach-stage) ─────────────────── */2659.peach-entry-body {2660  flex: 1;2661  overflow-y: auto;2662  overflow-x: hidden;2663  scrollbar-width: none;2664  -ms-overflow-style: none;2665  overscroll-behavior: contain;2666  display: grid;2667  gap: 10px;2668  align-content: start;2669  padding: 10px 20px 14px;2670  min-width: 0;2671  min-height: 0;2672}2673.peach-entry-body::-webkit-scrollbar { display: none; }26742675/* Type-toggle pills + inline note toolbar */2676.peach-new-type-row {2677  display: flex;2678  align-items: center;2679  gap: 6px;2680  margin-bottom: 2px;2681}2682.peach-new-type-btn {2683  background: transparent;2684  border: 1px solid var(--peach-t3);2685  border-radius: 12px;2686  padding: 3px 10px;2687  font-family: "IBM Plex Mono", monospace;2688  font-size: 0.5625rem;2689  letter-spacing: 0.12em;2690  text-transform: uppercase;2691  color: var(--peach-t2);2692  cursor: pointer;2693  transition: color 140ms ease, border-color 140ms ease, background 140ms ease;2694}2695.peach-new-type-btn.is-active {2696  color: var(--peach-t0);2697  border-color: var(--peach-accent);2698  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);2699}2700.peach-new-type-btn:not(.is-active):hover {2701  color: var(--peach-t1);2702  border-color: var(--peach-t2);2703}27042705/* Editable title */2706.peach-new-title-wrap { margin: 0 0 2px; }2707.peach-new-title-input {2708  background: transparent;2709  border: none;2710  outline: none;2711  width: 100%;2712  color: var(--peach-t0);2713  font-family: var(--font-display);2714  font-style: italic;2715  font-weight: 400;2716  font-size: 40px;2717  line-height: 0.95;2718  caret-color: var(--peach-accent);2719}2720.peach-new-title-input::placeholder { color: var(--peach-t2); }27212722/* Editable domain field */2723.peach-domain-edit-row {2724  display: flex;2725  align-items: center;2726  gap: 6px;2727}27282729.peach-domain-edit-row .peach-domain-value--edit {2730  flex: 1;2731  width: 0;2732}27332734.peach-domain-url-btn {2735  flex-shrink: 0;2736  background: transparent;2737  border: none;2738  cursor: pointer;2739  color: var(--peach-t3);2740  padding: 2px 3px;2741  display: flex;2742  align-items: center;2743  line-height: 0;2744  border-radius: 3px;2745  transition: color 120ms ease;2746}27472748.peach-domain-url-btn:hover {2749  color: var(--peach-accent);2750}27512752.peach-domain-value--edit {2753  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;2754  font-size: 0.625rem;2755  font-style: italic;2756  letter-spacing: 0.12em;2757  color: var(--peach-t1);2758  background: transparent;2759  border: none;2760  border-bottom: 1px solid var(--peach-t3);2761  outline: none;2762  width: 100%;2763  padding: 2px 0;2764  caret-color: var(--peach-accent);2765  transition: border-color 140ms ease, color 140ms ease;2766}2767.peach-domain-value--edit::placeholder { color: var(--peach-t2); opacity: 0.6; }2768.peach-domain-value--edit:focus {2769  border-bottom-color: rgba(240, 232, 216, 0.28);2770  color: var(--peach-t0);2771}27722773/* Editable field values (username, password, totp) */2774.peach-field-value--edit {2775  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;2776  font-size: 0.8125rem;2777  color: var(--peach-t0);2778  background: transparent;2779  border: none;2780  border-bottom: 1px solid var(--peach-t3);2781  outline: none;2782  flex: 1;2783  min-width: 0;2784  padding: 3px 0;2785  caret-color: var(--peach-accent);2786  transition: border-color 140ms ease, color 140ms ease;2787}2788.peach-field-value--edit::placeholder { color: var(--peach-t2); opacity: 0.6; }2789.peach-field-value--edit[type="password"] { letter-spacing: 0.12em; }2790.peach-field-value--edit:focus {2791  border-bottom-color: rgba(240, 232, 216, 0.28);2792  color: var(--peach-t0);2793}27942795/* "+ add optional field" links */2796.peach-entry-add-links {2797  display: flex;2798  gap: 12px;2799  flex-wrap: wrap;2800  margin-top: -2px;2801}2802.peach-add-field-link {2803  background: transparent;2804  border: none;2805  padding: 0;2806  cursor: pointer;2807  font-family: "IBM Plex Mono", monospace;2808  font-size: 0.5625rem;2809  letter-spacing: 0.1em;2810  text-transform: uppercase;2811  color: var(--peach-t2);2812  transition: color 140ms ease;2813}2814.peach-add-field-link:hover { color: var(--peach-accent); }28152816/* ── New entry form (legacy classes) ────────────────────────────────── */2817.peach-new-body {2818  flex: 1;2819  overflow-y: auto;2820  padding: 10px 20px 14px;2821}2822.peach-new-name-input {2823  background: transparent;2824  border: none;2825  outline: none;2826  width: 100%;2827  color: var(--peach-t0);2828  font-family: var(--font-display);2829  font-style: italic;2830  font-weight: 400;2831  font-size: 40px;2832  line-height: 0.95;2833  caret-color: var(--peach-accent);2834}2835.peach-new-name-input::placeholder { color: var(--peach-t2); }2836.peach-new-field-input {2837  background: transparent;2838  border: none;2839  outline: none;2840  flex: 1;2841  min-width: 0;2842  caret-color: var(--peach-accent);2843}2844.peach-new-field-input::placeholder { color: var(--peach-t2); opacity: 0.7; }28452846/* ── Canary card ── */2847.peach-canary-card {2848  border: 1px solid rgba(217, 160, 48, 0.2);2849  background: rgba(217, 160, 48, 0.03);2850  border-radius: 8px;2851  padding: 12px;2852}28532854.peach-canary-settings-header {2855  display: flex;2856  align-items: center;2857  justify-content: space-between;2858  cursor: pointer;2859  user-select: none;2860}28612862.peach-canary-card .peach-label {2863  color: rgba(217, 160, 48, 0.85);2864}28652866.peach-canary-card .peach-new-field-input {2867  border-color: rgba(217, 160, 48, 0.25);2868}28692870.peach-canary-card .peach-new-field-input:focus {2871  border-color: rgba(217, 160, 48, 0.5);2872}28732874.peach-canary-body {2875  margin-top: 12px;2876  display: flex;2877  flex-direction: column;2878  gap: 10px;2879}28802881.peach-canary-explainer {2882  display: flex;2883  gap: 10px;2884  padding: 10px 12px;2885  border-radius: 10px;2886  background: rgba(217, 160, 48, 0.06);2887  border: 1px solid rgba(217, 160, 48, 0.22);2888  margin-bottom: 4px;2889}28902891.peach-canary-explainer-icon {2892  font-size: 1rem;2893  flex-shrink: 0;2894  line-height: 1.2;2895}28962897.peach-canary-explainer-title {2898  font-family: var(--font-ui);2899  font-size: 0.6875rem;2900  font-weight: 500;2901  color: rgba(217, 160, 48, 0.9);2902  margin: 0 0 3px;2903}29042905.peach-canary-explainer-copy {2906  font-family: var(--font-ui);2907  font-size: 0.625rem;2908  color: var(--peach-t2);2909  line-height: 1.55;2910  margin: 0;2911}29122913.peach-canary-hint {2914  font-size: 0.625rem;2915  color: var(--peach-t2);2916  font-family: Inter, system-ui, sans-serif;2917  line-height: 1.5;2918  margin-top: 4px;2919}29202921.peach-canary-actions-row {2922  display: flex;2923  align-items: center;2924  gap: 8px;2925}29262927.peach-canary-test-btn {2928  border-color: rgba(217, 160, 48, 0.3);2929  color: rgba(217, 160, 48, 0.85);2930}29312932.peach-canary-test-result {2933  font-size: 0.625rem;2934  font-family: Inter, system-ui, sans-serif;2935}29362937.peach-canary-test-result.ok { color: rgba(100, 210, 100, 0.9); }2938.peach-canary-test-result.err { color: rgba(220, 80, 60, 0.9); }29392940.peach-canary-badge {2941  display: flex;2942  position: relative;2943  z-index: 1;2944  align-items: center;2945  gap: 5px;2946  padding: 4px 10px;2947  background: rgba(217, 160, 48, 0.12);2948  border: 1px solid rgba(217, 160, 48, 0.35);2949  border-radius: 6px;2950  margin-bottom: 6px;2951  width: fit-content;2952}29532954.peach-canary-badge-label {2955  font-size: 0.625rem;2956  letter-spacing: 0.06em;2957  color: rgba(217, 160, 48, 0.9);2958  font-family: var(--font-ui);2959  text-transform: uppercase;2960}29612962.peach-canary-badge-icon {2963  font-size: 0.6875rem;2964}29652966.peach-canary-suppress-row {2967  display: flex;2968  align-items: center;2969  gap: 8px;2970  padding: 6px 10px;2971  background: rgba(217, 160, 48, 0.08);2972  border-radius: 6px;2973  margin-bottom: 8px;2974}29752976.peach-canary-suppress-label {2977  font-size: 0.6875rem;2978  color: rgba(217, 160, 48, 0.85);2979  cursor: pointer;2980  font-family: var(--font-ui);2981  letter-spacing: 0.04em;2982}29832984.peach-regen-panel {2985  position: relative;2986  z-index: 1;2987  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);2988  border: 1px solid color-mix(in srgb, var(--peach-accent) 25%, transparent);2989  border-radius: 8px;2990  padding: 12px;2991  margin-bottom: 8px;2992}29932994.peach-regen-panel-header {2995  display: flex;2996  align-items: center;2997  justify-content: space-between;2998  margin-bottom: 10px;2999}30003001.peach-regen-panel-title {3002  font-size: 0.6875rem;3003  font-weight: 600;3004  letter-spacing: 0.06em;3005  text-transform: uppercase;3006  color: color-mix(in srgb, var(--peach-accent) 90%, transparent);3007}30083009.peach-regen-output {3010  background: rgba(0, 0, 0, 0.2);3011  border-radius: 6px;3012  padding: 10px;3013  margin-bottom: 10px;3014  font-family: var(--font-mono);3015  font-size: 0.8125rem;3016  word-break: break-all;3017  color: var(--peach-t1);3018}30193020.peach-regen-actions {3021  display: flex;3022  gap: 6px;3023}30243025.peach-regen-actions--spaced {3026  margin-bottom: 8px;3027}30283029.peach-regen-action-grow {3030  flex: 1;3031}30323033.peach-regen-copy-btn {3034  padding: 0 8px;3035}30363037.peach-regen-success {3038  position: relative;3039  z-index: 1;3040  background: rgba(40, 180, 80, 0.1);3041  border: 1px solid rgba(40, 180, 80, 0.3);3042  border-radius: 8px;3043  padding: 10px 12px;3044  margin-bottom: 8px;3045  display: flex;3046  align-items: center;3047  gap: 8px;3048  font-size: 0.6875rem;3049  color: rgba(40, 180, 80, 0.9);3050}30513052/* ── Note editor overlay ── */3053.peach-note-editor {3054  position: absolute;3055  inset: 0;3056  z-index: 200;3057  display: flex;3058  flex-direction: column;3059  background:3060    radial-gradient(120% 80% at 0% 0%, color-mix(in srgb, var(--peach-accent) 7%, transparent) 0%, transparent 65%),3061    var(--peach-bg);3062  animation: overlay-in 180ms cubic-bezier(0.4, 0, 0.2, 1) both;3063}30643065.peach-note-editor-header {3066  display: flex;3067  align-items: center;3068  gap: 10px;3069  padding: 14px 16px 10px;3070  border-bottom: 1px solid var(--peach-t3);3071  flex-shrink: 0;3072}30733074.peach-note-editor-back {3075  background: transparent;3076  border: none;3077  cursor: pointer;3078  color: var(--peach-t2);3079  padding: 4px 6px;3080  border-radius: 6px;3081  display: flex;3082  align-items: center;3083  transition: color 120ms ease, background 120ms ease;3084  flex-shrink: 0;3085}3086.peach-note-editor-back:hover { color: var(--peach-t0); background: var(--peach-t4); }30873088.peach-note-editor-label {3089  flex: 1;3090  font-family: var(--font-display);3091  font-style: italic;3092  font-size: 0.9375rem;3093  color: var(--peach-t1);3094  letter-spacing: 0.02em;3095}30963097.peach-note-editor-save-btn {3098  background: transparent;3099  border: 1px solid color-mix(in srgb, var(--peach-accent) 40%, transparent);3100  border-radius: 8px;3101  color: var(--peach-accent);3102  font-family: "IBM Plex Mono", monospace;3103  font-size: 0.625rem;3104  letter-spacing: 0.06em;3105  text-transform: uppercase;3106  padding: 3px 10px;3107  cursor: pointer;3108  transition: background 120ms ease, border-color 120ms ease;3109}3110.peach-note-editor-save-btn:hover:not(:disabled) {3111  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);3112  border-color: color-mix(in srgb, var(--peach-accent) 65%, transparent);3113}3114.peach-note-editor-save-btn:disabled { opacity: 0.4; cursor: not-allowed; }31153116.peach-note-toolbar {3117  display: flex;3118  align-items: center;3119  gap: 3px;3120  padding: 6px 14px 5px;3121  border-bottom: 1px solid var(--peach-t3);3122  flex-shrink: 0;3123}31243125.peach-note-tool-btn {3126  background: transparent;3127  border: 1px solid transparent;3128  border-radius: 5px;3129  color: var(--peach-t2);3130  font-family: "IBM Plex Mono", monospace;3131  font-size: 0.625rem;3132  letter-spacing: 0.04em;3133  padding: 2px 8px;3134  cursor: pointer;3135  line-height: 1.6;3136  transition: background 100ms ease, color 100ms ease, border-color 100ms ease;3137}3138.peach-note-tool-btn:hover {3139  background: var(--peach-t4);3140  color: var(--peach-t0);3141  border-color: var(--peach-t3);3142}31433144.peach-note-tool-icon {3145  padding: 3px 7px;3146  display: inline-flex;3147  align-items: center;3148  justify-content: center;3149}31503151.peach-note-tool-divider {3152  width: 1px;3153  height: 14px;3154  background: var(--peach-t3);3155  margin: 0 4px;3156  flex-shrink: 0;3157}31583159.peach-note-editor-body {3160  flex: 1;3161  overflow-y: auto;3162  padding: 16px 20px 20px;3163  outline: none;3164  font-family: var(--font-display);3165  font-size: 1rem;3166  line-height: 1.75;3167  color: var(--peach-t0);3168  scrollbar-width: none;3169  word-break: break-word;3170}3171.peach-note-editor-body:empty::before {3172  content: "write your note…";3173  color: var(--peach-t3);3174  font-style: italic;3175  pointer-events: none;3176}31773178/* Inline variant (Add.tsx, Entry.tsx note) — toolbar hoisted to parent row */3179.peach-note-editor-inline {3180  display: flex;3181  flex-direction: column;3182  flex: 1;3183  min-height: 0;3184}3185.peach-note-editor-body--inline {3186  flex: 1;3187  min-height: 0;3188  font-size: 0.9375rem;3189  padding: 10px 20px 14px;3190}31913192/* Right-aligned inline toolbar sitting inside .peach-new-type-row (Add.tsx)3193   or .peach-entry-note-toolbar-row (Entry.tsx). Reuses .peach-note-tool-btn3194   and .peach-note-tool-divider button-level styles. */3195.peach-note-toolbar-inline {3196  display: flex;3197  align-items: center;3198  gap: 3px;3199  margin-left: auto;3200  padding-left: 10px;3201  border-left: 1px solid var(--peach-t3);3202  min-height: 22px;3203}32043205/* Entry.tsx toolbar row (no tabs, toolbar only) */3206.peach-entry-note-toolbar-row {3207  display: flex;3208  align-items: center;3209  margin: 4px 0 6px;3210  position: relative;3211  z-index: 1;3212}3213.peach-entry-note-toolbar-row .peach-note-toolbar-inline {3214  border-left: none;3215  padding-left: 0;3216  margin-left: 0;3217}32183219/* Note body — fills available vertical space in Add.tsx and Entry.tsx */3220.peach-note-body {3221  display: flex;3222  flex-direction: column;3223  flex: 1;3224  min-height: 0;3225  margin: 4px 0 0;3226}3227/* Rich content element styles (editor + display) */3228.peach-note-editor-body h2,3229.peach-note-content h2 {3230  font-family: var(--font-display);3231  font-size: 20px;3232  font-weight: 600;3233  font-style: italic;3234  color: var(--peach-t0);3235  margin: 6px 0 2px;3236  line-height: 1.3;3237}3238.peach-note-editor-body ul,3239.peach-note-content ul {3240  padding-left: 18px;3241  margin: 3px 0;3242  list-style: disc;3243}3244.peach-note-editor-body ol,3245.peach-note-content ol {3246  padding-left: 18px;3247  margin: 3px 0;3248  list-style: decimal;3249}3250.peach-note-editor-body li,3251.peach-note-content li { margin: 2px 0; }3252.peach-note-editor-body hr,3253.peach-note-content hr {3254  border: none;3255  border-top: 1px solid var(--peach-t3);3256  margin: 10px 0;3257}32583259/* font size elements from execCommand */3260.peach-note-editor-body font[size="1"],3261.peach-note-content font[size="1"] { font-size: 0.6875rem; line-height: 1.6; }3262.peach-note-editor-body font[size="2"],3263.peach-note-content font[size="2"] { font-size: 0.8125rem; }3264.peach-note-editor-body font[size="3"],3265.peach-note-content font[size="3"] { font-size: 1rem; }3266.peach-note-editor-body font[size="4"],3267.peach-note-content font[size="4"] { font-size: 20px; }3268.peach-note-editor-body font[size="5"],3269.peach-note-content font[size="5"] { font-size: 26px; line-height: 1.4; }32703271/* bold / italic inside the editor and note display */3272.peach-note-editor-body b, .peach-note-editor-body strong,3273.peach-note-content b, .peach-note-content strong { font-weight: 700; }3274.peach-note-editor-body em, .peach-note-editor-body i,3275.peach-note-content em, .peach-note-content i { font-style: italic; }3276.peach-note-content blockquote {3277  border-left: 2px solid var(--peach-accent);3278  margin: 12px 0;3279  padding-left: 16px;3280  color: var(--peach-t1);3281  font-style: italic;3282}32833284/* note display — rendered HTML, no pre-wrap */3285.peach-note-content {3286  overflow: auto;3287  max-height: 340px;3288  word-break: break-word;3289}32903291/* ── Note textarea ── */3292.peach-note-textarea {3293  width: 100%;3294  min-height: 180px;3295  max-height: 280px;3296  resize: vertical;3297  background: var(--peach-t4);3298  border: 1px solid var(--peach-t3);3299  border-radius: 8px;3300  padding: 10px 12px;3301  font-family: "IBM Plex Mono", monospace;3302  font-size: 0.75rem;3303  line-height: 1.7;3304  color: var(--peach-t1);3305  outline: none;3306  transition: border-color 150ms ease;3307}33083309.peach-note-textarea:focus {3310  border-color: var(--peach-t2);3311}33123313.peach-note-char-count {3314  font-family: "IBM Plex Mono", monospace;3315  font-size: 0.5625rem;3316  color: var(--peach-t3);3317  text-align: right;3318  margin-top: 4px;3319  letter-spacing: 0.1em;3320}33213322/* ── Field input baseline ── */3323.peach-new-field-input {3324  width: 100%;3325  background: transparent;3326  border: none;3327  border-bottom: 1px solid var(--peach-t3);3328  padding: 4px 0;3329  color: var(--peach-t1);3330  font-family: "IBM Plex Mono", monospace;3331  font-size: 0.8125rem;3332  outline: none;3333  transition: border-color 150ms ease;3334}33353336.peach-new-field-input:focus {3337  border-bottom-color: var(--peach-t0);3338  color: var(--peach-t0);3339}33403341.peach-new-name-input {3342  width: 100%;3343  background: transparent;3344  border: none;3345  border-bottom: 1px solid var(--peach-t3);3346  padding: 6px 0;3347  font-family: var(--font-display);3348  font-style: italic;3349  font-size: 28px;3350  color: var(--peach-t0);3351  outline: none;3352  transition: border-color 150ms ease;3353}33543355.peach-new-name-input:focus {3356  border-bottom-color: var(--peach-t1);3357}33583359.peach-new-name-input::placeholder {3360  color: var(--peach-t2);3361  font-style: italic;3362}33633364.peach-new-field-input::placeholder {3365  color: var(--peach-t3);3366}33673368/* ── Demo entrance animation ── */3369#hd-shell {3370  animation: hd-shell-enter 700ms cubic-bezier(0.34, 1.56, 0.64, 1) 200ms both;3371}3372@keyframes hd-shell-enter {3373  from { opacity: 0; transform: scale(0.96) translateY(16px); }3374  to   { opacity: 1; transform: scale(1) translateY(0); }3375}33763377/* ── Keyframes ── */3378@keyframes peach-char-enter {3379  from { opacity: 0; transform: translateY(0.22em); }3380  to   { opacity: 1; transform: translateY(0); }3381}3382@keyframes peach-content-enter {3383  from { opacity: 0.96; transform: translateY(4px); }3384  to   { opacity: 1; transform: translateY(0); }3385}3386@keyframes peach-content-exit {3387  from { opacity: 1; transform: translateY(0); }3388  to   { opacity: 0.92; transform: translateY(-3px); }3389}3390@keyframes peach-screen-enter {3391  from { opacity: 0; transform: translateY(14px); }3392  to   { opacity: 1; transform: translateY(0); }3393}3394@keyframes peach-shell-fade-in {3395  from { opacity: 0; }3396  to   { opacity: 1; }3397}3398@keyframes peach-veil-in {3399  from { opacity: 0; }3400  to   { opacity: 1; }3401}3402@keyframes peach-lock-settle {3403  0%   { transform: scale(0.9); }3404  65%  { transform: scale(1.08); }3405  100% { transform: scale(1); }3406}3407@keyframes peach-copy-confirm {3408  from { color: var(--peach-t2); border-color: var(--peach-t3); background-color: transparent; box-shadow: none; }3409  to   { color: var(--peach-accent); border-color: color-mix(in srgb, var(--peach-accent) 42%, transparent); background-color: color-mix(in srgb, var(--peach-accent) 9%, transparent); box-shadow: 0 0 18px color-mix(in srgb, var(--peach-accent) 22%, transparent), inset 0 0 18px color-mix(in srgb, var(--peach-accent) 12%, transparent); }3410}3411@keyframes peach-copy-retreat {3412  from { color: var(--peach-accent); border-color: color-mix(in srgb, var(--peach-accent) 42%, transparent); background-color: color-mix(in srgb, var(--peach-accent) 9%, transparent); box-shadow: 0 0 18px color-mix(in srgb, var(--peach-accent) 22%, transparent), inset 0 0 18px color-mix(in srgb, var(--peach-accent) 12%, transparent); }3413  to   { color: var(--peach-t2); border-color: var(--peach-t3); background-color: transparent; box-shadow: none; }3414}3415@keyframes peach-copy-flood {3416  from { opacity: 0; transform: scaleX(0.15); }3417  to   { opacity: 1; transform: scaleX(1); }3418}3419@keyframes peach-copy-icon-settle {3420  from  { transform: scale(0.84); }3421  70%   { transform: scale(1.08); }3422  to    { transform: scale(1); }3423}3424@keyframes peach-copy-sheen-retreat {3425  from { opacity: 1; transform: scaleX(1); }3426  to   { opacity: 0; transform: scaleX(0.15); }3427}3428@keyframes peach-copy-drain {3429  from { width: 100%; }3430  to   { width: 0; }3431}3432@keyframes peach-shake {3433  0%, 100% { transform: translateX(0); }3434  20%      { transform: translateX(-6px); }3435  40%      { transform: translateX(6px); }3436  60%      { transform: translateX(-4px); }3437  80%      { transform: translateX(4px); }3438}34393440@keyframes pip-pulse {3441  0% { transform: scale(1); }3442  40% { transform: scale(2.2); }3443  100% { transform: scale(1); }3444}344534463447/* ── Password generator ── */3448.peach-pwgen-body {3449  flex: 1; overflow-y: auto;3450  display: flex; flex-direction: column;3451}3452.peach-policy-badge {3453  display: flex; align-items: center;3454  padding: 6px 20px 0;3455  font-size: 0.625rem; font-family: Inter, sans-serif;3456  color: var(--peach-t2); letter-spacing: 0.04em;3457}3458.peach-pwgen-display {3459  padding: 14px 20px 12px;3460  border-bottom: 1px solid var(--peach-t3);3461  display: flex; align-items: flex-start; gap: 10px;3462}3463.peach-pwgen-display-row {3464  display: flex;3465  align-items: flex-start;3466  gap: 8px;3467  padding-bottom: 8px;3468  border-bottom: 1px solid var(--peach-t3);3469}3470.peach-pwgen-output {3471  flex: 1; min-width: 0; margin: 0;3472  font-family: "IBM Plex Mono", monospace;3473  font-size: 0.8125rem; color: var(--peach-t0);3474  line-height: 1.6; word-break: break-all; overflow-wrap: break-word;3475  white-space: normal;3476  padding: 10px 12px;3477  background: var(--peach-t4);3478  border-radius: 6px;3479  min-height: 36px;3480}3481.peach-pwgen-output-display {3482  flex: 1;3483  min-width: 0;3484  margin: 0;3485  font-family: var(--font-display);3486  font-style: italic;3487  font-weight: 300;3488  font-size: 32px;3489  line-height: 1.05;3490  color: var(--peach-t0);3491  word-break: break-all;3492  overflow-wrap: break-word;3493  white-space: normal;3494  letter-spacing: 0.02em;3495}3496.peach-pwgen-display-actions {3497  display: flex;3498  flex-direction: column;3499  gap: 4px;3500  flex-shrink: 0;3501  margin-top: 2px;3502}3503.peach-pwgen-settings { padding: 12px 20px 14px; display: flex; flex-direction: column; gap: 14px; }3504.peach-pwgen-length-row { display: flex; flex-direction: column; gap: 6px; }3505.peach-pwgen-length-labels { display: flex; justify-content: space-between; align-items: center; }3506.peach-pwgen-len-num {3507  font-family: "IBM Plex Mono", monospace;3508  font-size: 0.75rem; color: var(--peach-accent);3509}3510.peach-pwgen-len-num--edit {3511  cursor: text;3512  border-bottom: 1px dotted color-mix(in srgb, var(--peach-accent) 50%, transparent);3513}3514.peach-pwgen-len-input {3515  font-family: "IBM Plex Mono", monospace;3516  font-size: 0.75rem;3517  color: var(--peach-accent);3518  background: transparent;3519  border: none;3520  border-bottom: 1px solid var(--peach-accent);3521  outline: none;3522  width: 32px;3523  text-align: right;3524  padding: 0;3525}3526.peach-pwgen-slider { width: 100%; accent-color: var(--peach-accent); cursor: pointer; height: 2px; }3527.peach-pwgen-toggles { display: flex; flex-direction: column; }3528.peach-pwgen-charset-pills {3529  display: flex;3530  gap: 6px;3531  flex-wrap: wrap;3532}3533.peach-pwgen-pill {3534  padding: 4px 11px;3535  border-radius: 999px;3536  border: 1px solid var(--peach-t3);3537  background: transparent;3538  color: var(--peach-t2);3539  font-family: "IBM Plex Mono", monospace;3540  font-size: 0.5625rem;3541  letter-spacing: 0.08em;3542  cursor: pointer;3543  transition: all 150ms ease;3544}3545.peach-pwgen-pill.is-on {3546  border-color: color-mix(in srgb, var(--peach-accent) 50%, transparent);3547  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);3548  color: var(--peach-accent);3549}3550.peach-pwgen-pill:not(.is-on):hover {3551  color: var(--peach-t1);3552  border-color: var(--peach-t2);3553}3554.peach-pwgen-use-btn {3555  width: 100%;3556  min-height: 34px;3557  border-radius: 8px;3558  margin-top: 2px;3559}3560.peach-generator-constraint-note {3561  font-family: 'IBM Plex Mono', monospace;3562  font-size: 10px;3563  color: var(--peach-t3);3564  letter-spacing: 0.04em;3565  margin: 0;3566  transition: opacity 200ms ease;3567}3568.peach-pwgen-toggle-row {3569  display: flex; align-items: center; justify-content: space-between;3570  padding: 6px 0; border-bottom: 1px solid var(--peach-t3);3571}3572.peach-pwgen-toggle-row:last-child { border-bottom: none; }3573.peach-pwgen-toggle-label { font-size: 0.8125rem; color: var(--peach-t1); }35743575/* Peach popup should not expose native scrollbars on internal panels. */3576.peach-settings-body,3577.peach-new-body,3578.peach-pwgen-body,3579.lock-screen,3580.peach-import-preview {3581  scrollbar-width: none;3582  -ms-overflow-style: none;3583  overscroll-behavior: contain;3584}3585.peach-settings-body::-webkit-scrollbar,3586.peach-new-body::-webkit-scrollbar,3587.peach-pwgen-body::-webkit-scrollbar,3588.lock-screen::-webkit-scrollbar,3589.peach-import-preview::-webkit-scrollbar {3590  width: 0;3591  height: 0;3592  display: none;3593}35943595.lock-screen {3596  height: 100%;3597  min-height: 100%;3598  overflow-y: auto;3599  padding: 18px 18px 16px;3600  gap: 14px;3601  grid-template-rows: auto auto auto 1fr auto;3602  align-content: stretch;3603  position: relative;3604  isolation: isolate;3605}3606.peach-screen.lock-screen--vault-stage {3607  display: flex;3608  flex-direction: column;3609  justify-content: flex-start;3610  gap: 18px;3611  padding: 20px 18px 18px;3612  overflow: hidden;3613}3614.peach-screen.lock-screen--vault-stage .peach-lock-panel {3615  margin-top: 0;3616}3617.lock-screen--onboarding {3618  display: flex;3619  flex-direction: column;3620  gap: 12px;3621  justify-content: flex-start;3622}36233624.lock-screen::before {3625  content: "";3626  position: absolute;3627  inset: 12px 18px auto auto;3628  width: 160px;3629  height: 160px;3630  border-radius: 999px;3631  background:3632    radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--peach-accent) 18%, transparent) 0%, color-mix(in srgb, var(--peach-accent) 6%, transparent) 42%, transparent 72%);3633  filter: blur(6px);3634  opacity: 0.7;3635  pointer-events: none;3636  z-index: 0;3637}36383639.peach-lock-rune-string {3640  flex: 1;3641  display: flex;3642  align-items: center;3643  justify-content: center;3644  gap: 6px;3645  font-family: PeachScript, monospace;3646  font-size: 0.8125rem;3647  letter-spacing: 0.05em;3648  pointer-events: none;3649  user-select: none;3650  position: relative;3651  z-index: 1;3652}36533654.peach-lock-rune-string span {3655  color: color-mix(in srgb, var(--peach-t0) 12%, transparent);3656  text-shadow:3657    0 0 0 color-mix(in srgb, var(--peach-accent) 0%, transparent),3658    0 0 0 color-mix(in srgb, var(--peach-accent) 0%, transparent);3659  transition: color 0.9s ease, text-shadow 0.9s ease;3660}36613662.peach-lock-rune-string span.is-glowing {3663  color: color-mix(in srgb, var(--peach-accent) 65%, transparent);3664  text-shadow:3665    0 0 8px color-mix(in srgb, var(--peach-accent) 50%, transparent),3666    0 0 20px color-mix(in srgb, var(--peach-accent) 22%, transparent);3667}36683669.lock-screen-header {3670  display: flex;3671  align-items: center;3672  justify-content: space-between;3673  position: relative;3674  z-index: 1;3675}36763677.lock-password-input.shake {3678  animation: peach-shake 300ms ease-in-out;3679}36803681.peach-hint-error {3682  color: rgba(220, 80, 60, 0.92);3683}36843685.peach-onboarding-headline {3686  margin: 0;3687  font-family: var(--font-display);3688  font-size: 35px;3689  line-height: 0.88;3690  font-style: italic;3691  font-weight: 400;3692  max-width: 252px;3693}36943695.peach-lock-copy {3696  display: grid;3697  gap: 8px;3698  position: relative;3699  z-index: 1;3700}37013702.peach-lock-copy--onboarding {3703  gap: 10px;3704}37053706.peach-lock-hero {3707  position: relative;3708  z-index: 1;3709  display: flex;3710  flex-direction: column;3711  align-items: center;3712  justify-content: center;3713  text-align: center;3714  gap: 10px;3715  min-height: 0;3716  padding: 4px 2px 0;3717  border: none;3718  border-radius: 0;3719  background: transparent;3720  box-shadow: none;3721}3722.peach-lock-hero > * {3723  position: relative;3724  z-index: 1;3725}37263727.peach-lock-mark {3728  width: 40px;3729  height: 40px;3730  margin: 0 auto 6px;3731  display: block;3732}37333734.peach-lock-eyebrow {3735  display: inline-flex;3736  align-items: center;3737  width: fit-content;3738  margin: 0 auto;3739  padding: 4px 9px;3740  border-radius: 999px;3741  border: 1px solid color-mix(in srgb, var(--peach-accent) 22%, transparent);3742  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);3743  color: var(--peach-t0);3744  font-family: "IBM Plex Mono", monospace;3745  font-weight: 600;3746  font-size: 0.55rem;3747  letter-spacing: 0.14em;3748  text-transform: uppercase;3749}37503751.peach-lock-label-row {3752  display: flex;3753  align-items: center;3754  justify-content: space-between;3755  margin-bottom: 0;3756}37573758.peach-lock-reveal-btn {3759  display: inline-flex;3760  align-items: center;3761  gap: 4px;3762  background: none;3763  border: none;3764  cursor: pointer;3765  font-family: "IBM Plex Mono", monospace;3766  font-size: 0.5625rem;3767  letter-spacing: 0.06em;3768  color: var(--peach-t2);3769  padding: 2px 0;3770  transition: color 150ms ease;3771}37723773.peach-lock-reveal-btn:hover {3774  color: var(--peach-t1);3775}37763777.peach-lock-warning {3778  color: rgba(220, 80, 60, 0.85) !important;3779  line-height: 1.5;3780}37813782.peach-onboarding-cards {3783  display: grid;3784  gap: 8px;3785  position: relative;3786  z-index: 1;3787}37883789.peach-lock-panel {3790  position: relative;3791  z-index: 1;3792  display: grid;3793  gap: 9px;3794  padding: 14px 16px 15px;3795  border-radius: 18px;3796  border: 1px solid var(--peach-t3);3797  background:3798    linear-gradient(180deg, rgba(240, 232, 216, 0.03), rgba(240, 232, 216, 0.015));3799  box-shadow:3800    inset 0 1px 0 rgba(240, 232, 216, 0.04),3801    0 12px 28px rgba(0, 0, 0, 0.12);3802}38033804/* Glass surface — lock panel and settings groups */3805.peach-glass {3806  background: rgba(26, 20, 16, 0.65);3807  border: 1px solid rgba(255, 255, 255, 0.08);3808  border-radius: 12px;3809  backdrop-filter: blur(12px) saturate(1.4);3810  -webkit-backdrop-filter: blur(12px) saturate(1.4);3811}38123813@supports not (backdrop-filter: blur(1px)) {3814  .peach-glass {3815    background: rgba(26, 20, 16, 0.92);3816    border: 1px solid rgba(255, 255, 255, 0.10);3817    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 4px 24px rgba(0, 0, 0, 0.4);3818  }3819}38203821.light .peach-glass,3822[data-theme="light"] .peach-glass {3823  background: rgba(240, 233, 223, 0.72);3824  border: 1px solid rgba(26, 18, 8, 0.08);3825  backdrop-filter: blur(12px) saturate(1.2);3826  -webkit-backdrop-filter: blur(12px) saturate(1.2);3827}38283829@supports not (backdrop-filter: blur(1px)) {3830  .light .peach-glass,3831  [data-theme="light"] .peach-glass {3832    background: rgba(240, 233, 223, 0.97);3833    border: 1px solid rgba(26, 18, 8, 0.10);3834  }3835}38363837/* Lock panel keeps its own border-radius over the generic glass token */3838.peach-lock-panel.peach-glass {3839  border-radius: 18px;3840  background: rgba(26, 20, 16, 0.65);3841  border: 1px solid rgba(255, 255, 255, 0.08);3842  box-shadow:3843    inset 0 1px 0 rgba(255, 255, 255, 0.05),3844    0 12px 28px rgba(0, 0, 0, 0.3);3845}38463847.light .peach-lock-panel.peach-glass,3848[data-theme="light"] .peach-lock-panel.peach-glass {3849  background: rgba(240, 233, 223, 0.82);3850  border: 1px solid rgba(26, 18, 8, 0.08);3851  box-shadow:3852    inset 0 1px 0 rgba(255, 255, 255, 0.4),3853    0 8px 24px rgba(80, 56, 32, 0.15);3854}38553856@supports not (backdrop-filter: blur(1px)) {3857  .peach-lock-panel.peach-glass {3858    background: rgba(26, 20, 16, 0.92);3859    box-shadow:3860      inset 0 1px 0 rgba(255, 255, 255, 0.05),3861      0 12px 28px rgba(0, 0, 0, 0.4);3862  }3863  .light .peach-lock-panel.peach-glass,3864  [data-theme="light"] .peach-lock-panel.peach-glass {3865    background: rgba(240, 233, 223, 0.98);3866  }3867}38683869.peach-lock-panel--secondary {3870  gap: 12px;3871}38723873.peach-lock-panel-header {3874  display: flex;3875  align-items: baseline;3876  justify-content: space-between;3877  gap: 12px;3878}38793880.peach-lock-option-grid {3881  display: grid;3882  gap: 10px;3883}38843885.peach-lock-option {3886  width: 100%;3887  display: grid;3888  gap: 6px;3889  padding: 14px 15px;3890  border-radius: 16px;3891  border: 1px solid rgba(240, 232, 216, 0.08);3892  background: rgba(240, 232, 216, 0.02);3893  color: var(--peach-t0);3894  text-align: left;3895  transition: border-color 140ms ease, background 140ms ease, transform 140ms ease;3896}38973898.peach-lock-option:hover {3899  border-color: color-mix(in srgb, var(--peach-accent) 28%, transparent);3900  background: rgba(240, 232, 216, 0.04);3901  transform: translateY(-1px);3902}39033904.peach-lock-option-title {3905  font-size: 0.75rem;3906  color: var(--peach-t0);3907}39083909.peach-lock-option-copy {3910  font-size: 0.6875rem;3911  line-height: 1.55;3912  color: var(--peach-t1);3913}39143915.peach-onboarding-stack {3916  margin-top: 2px;3917}3918.peach-lock-panel-footer {3919  display: grid;3920  gap: 6px;3921  margin-top: 2px;3922  padding-top: 10px;3923  border-top: 1px solid rgba(240, 232, 216, 0.06);3924}39253926/* ── Restore surface ────────────────────────────────────────────────────3927   The onboarding restore screen. Shares the create-vault screen's glass3928   card language: Cormorant headline, hairline divider, choice rows. The3929   card lists the backup sources; picking one swaps the card body to that3930   source's form. */39313932/* Content centers in the tall card (mirrors the onboarding cards) and3933   scrolls as a fallback on shorter viewports. */3934.peach-restore-card {3935  justify-content: center;3936  overflow-y: auto;3937  scrollbar-width: none;3938}3939.peach-restore-card::-webkit-scrollbar { display: none; }39403941.peach-restore-sources {3942  display: grid;3943  gap: 6px;3944  margin-top: 4px;3945}39463947/* Choice rows reuse .peach-onboarding-choice; tighten them to the same3948   compactness as the final onboarding card's rows. */3949.peach-restore-source {3950  min-height: 40px;3951  padding: 6px 10px;3952  cursor: pointer;3953  transition: border-color 140ms ease, background 140ms ease;3954}3955.peach-restore-source:hover {3956  border-color: color-mix(in srgb, var(--peach-accent) 34%, transparent);3957  background: color-mix(in srgb, var(--peach-accent) 9%, transparent);3958}39593960/* In-card header shown once a source is picked */3961.peach-restore-source-head {3962  display: flex;3963  align-items: baseline;3964  justify-content: space-between;3965  gap: 10px;3966}39673968.peach-restore-source-title {3969  margin: 0;3970  font-family: var(--font-display);3971  font-style: italic;3972  font-weight: 400;3973  font-size: 18px;3974  line-height: 1.1;3975  color: var(--peach-t0);3976}39773978.peach-restore-picker-back {3979  background: none;3980  border: none;3981  cursor: pointer;3982  padding: 2px 0;3983  font-family: var(--font-mono);3984  font-size: 0.625rem;3985  letter-spacing: 0.06em;3986  color: var(--peach-t2);3987  transition: color 150ms ease;3988}3989.peach-restore-picker-back:hover {3990  color: var(--peach-t0);3991}39923993/* Shared inner form layout */3994.peach-restore-form {3995  display: flex;3996  flex-direction: column;3997  gap: 8px;3998}39994000/* Drag-and-drop import — the one file path that survives the action popup4001   (the popup dismisses itself when the OS file picker steals focus). */4002.peach-restore-form.is-dragover {4003  outline: 2px dashed color-mix(in srgb, var(--peach-accent) 55%, transparent);4004  outline-offset: 6px;4005  border-radius: 8px;4006}40074008.peach-restore-drop-hint {4009  margin: -2px 0 0;4010  text-align: center;4011  font-family: var(--font-mono);4012  font-size: 0.5625rem;4013  letter-spacing: 0.06em;4014  color: var(--peach-t2);4015}40164017.peach-restore-submit {4018  width: 100%;4019}40204021.peach-restore-file-btn {4022  display: inline-flex;4023  align-items: center;4024  justify-content: center;4025  width: 100%;4026}40274028/* ── PeachScript source ───────────────────────────────────────────────── */40294030/* Rune textarea styled as an underline input to match the card's other4031   fields. */4032.peach-restore-script {4033  width: 100%;4034  box-sizing: border-box;4035  min-height: 56px;4036  max-height: 72px;4037  padding: 6px 0;4038  resize: none;4039  overflow: hidden;4040  scrollbar-width: none;4041  -ms-overflow-style: none;4042  border: 0;4043  border-bottom: 1px solid var(--peach-t3);4044  border-radius: 0;4045  background: transparent;4046  color: var(--peach-t0);4047  outline: none;4048  caret-color: var(--peach-accent);4049  font-family: "PeachScript", monospace;4050  font-size: 13px;4051  line-height: 1.9;4052  letter-spacing: 0.1em;4053  word-break: break-all;4054}4055.peach-restore-script::-webkit-scrollbar { display: none; }4056.peach-restore-script::placeholder { color: var(--peach-t2); }4057.peach-restore-script:focus {4058  border-bottom-color: color-mix(in srgb, var(--peach-accent) 40%, transparent);4059}40604061.peach-restore-or {4062  display: flex;4063  align-items: center;4064  gap: 8px;4065  font-family: var(--font-mono);4066  font-size: 0.5625rem;4067  letter-spacing: 0.14em;4068  text-transform: uppercase;4069  color: var(--peach-t2);4070}4071.peach-restore-or::before,4072.peach-restore-or::after {4073  content: "";4074  flex: 1;4075  border-top: 1px solid var(--peach-t3);4076}40774078.peach-restore-anim-canvas {4079  width: 100%;4080  height: 180px;4081  border-radius: 10px;4082  overflow: hidden;4083  display: block;4084}40854086/* ── Codex source ─────────────────────────────────────────────────────── */40874088.peach-restore-codex-copy {4089  margin: 0;4090  font-size: 0.75rem;4091  line-height: 1.55;4092  color: var(--peach-t1);4093}40944095/* ── CSV source ───────────────────────────────────────────────────────── */40964097.peach-restore-csv-sources {4098  margin: 0;4099  text-align: center;4100}41014102/* ── Intro popup ──────────────────────────────────────────────────────── */41034104.peach-restore-intro-overlay {4105  position: absolute;4106  inset: 0;4107  z-index: 100;4108  display: flex;4109  align-items: center;4110  justify-content: center;4111  padding: 20px;4112  background: rgba(12, 10, 6, 0.7);4113  backdrop-filter: blur(4px);4114  animation: peach-card-in 280ms cubic-bezier(0.16, 1, 0.3, 1) both;4115}41164117.peach-restore-intro-card {4118  width: 100%;4119  display: flex;4120  flex-direction: column;4121  gap: 12px;4122  padding: 22px 20px 20px;4123  border-radius: 16px;4124  border: 1px solid var(--peach-t3);4125  background: linear-gradient(180deg, rgba(240, 232, 216, 0.05), rgba(240, 232, 216, 0.02));4126  backdrop-filter: blur(4px);4127  -webkit-backdrop-filter: blur(4px);4128  box-shadow: inset 0 1px 0 rgba(240, 232, 216, 0.06), 0 16px 36px rgba(0, 0, 0, 0.3);4129}41304131.peach-restore-intro-headline {4132  margin: 0;4133  font-family: var(--font-display);4134  font-style: italic;4135  font-size: 20px;4136  font-weight: 400;4137  color: var(--peach-t0);4138}41394140.peach-restore-intro-body {4141  display: flex;4142  flex-direction: column;4143  gap: 8px;4144}4145.peach-restore-intro-body p {4146  margin: 0;4147  font-size: 0.75rem;4148  color: var(--peach-t1);4149  line-height: 1.5;4150}41514152.peach-restore-intro-btn {4153  width: 100%;4154  margin-top: 4px;4155}41564157/* Snapshot restore panel */4158.peach-snapshot-panel {4159  gap: 10px;4160  overflow-y: auto;4161  max-height: 340px;4162}4163.peach-snapshot-list {4164  display: flex;4165  flex-direction: column;4166  gap: 4px;4167}4168.peach-snapshot-row {4169  display: flex;4170  align-items: center;4171  justify-content: space-between;4172  width: 100%;4173  padding: 8px 10px;4174  border-radius: 8px;4175  border: 1px solid rgba(240, 232, 216, 0.07);4176  background: transparent;4177  cursor: pointer;4178  transition: border-color 120ms, background 120ms;4179  text-align: left;4180  gap: 8px;4181}4182.peach-snapshot-row:hover {4183  border-color: rgba(240, 232, 216, 0.14);4184  background: rgba(240, 232, 216, 0.03);4185}4186.peach-snapshot-row.is-selected {4187  border-color: color-mix(in srgb, var(--peach-accent) 40%, transparent);4188  background: color-mix(in srgb, var(--peach-accent) 7%, transparent);4189}4190.peach-snapshot-time {4191  font-size: 11.5px;4192  color: var(--peach-t0);4193  flex: 1;4194}4195.peach-snapshot-count {4196  font-family: "IBM Plex Mono", monospace;4197  font-size: 0.625rem;4198  color: var(--peach-t2);4199  flex-shrink: 0;4200}4201.peach-snapshot-confirm {4202  display: flex;4203  flex-direction: column;4204  gap: 8px;4205  padding-top: 10px;4206  border-top: 1px solid rgba(240, 232, 216, 0.06);4207}4208.peach-snapshot-warning {4209  display: flex;4210  align-items: flex-start;4211  gap: 6px;4212  font-size: 10.5px;4213  color: rgba(220, 80, 60, 0.85);4214  line-height: 1.55;4215}4216.peach-snapshot-warning svg { flex-shrink: 0; margin-top: 2px; }4217.peach-snapshot-confirm-row {4218  display: flex;4219  gap: 6px;4220  align-items: center;4221}4222.peach-snapshot-restore-btn {4223  width: 100%;4224}4225.peach-lock-hero--unlock .peach-lock-hero-art {4226  display: none;4227}42284229.peach-card {4230  border: 1px solid var(--peach-t3);4231  border-radius: 18px;4232  background:4233    linear-gradient(180deg, rgba(240, 232, 216, 0.03) 0%, rgba(240, 232, 216, 0.015) 100%);4234  box-shadow:4235    inset 0 0 0 1px var(--peach-border-accent),4236    inset 0 1px 0 rgba(240, 232, 216, 0.04),4237    0 12px 32px rgba(0, 0, 0, 0.14);4238  overflow: hidden;4239}42404241.peach-card-active {4242  border-color: color-mix(in srgb, var(--peach-accent) 35%, transparent);4243  box-shadow:4244    inset 0 1px 0 rgba(240, 232, 216, 0.05),4245    0 16px 38px rgba(0, 0, 0, 0.18),4246    0 0 0 1px color-mix(in srgb, var(--peach-accent) 8%, transparent);4247}42484249.peach-card-disabled {4250  opacity: 0.72;4251}42524253.peach-card-header {4254  width: 100%;4255  padding: 13px 16px 11px;4256  background: transparent;4257  color: var(--peach-t0);4258  display: flex;4259  justify-content: space-between;4260  align-items: center;4261  text-align: left;4262  font-size: 0.75rem;4263}42644265.peach-card-body {4266  padding: 0 16px 16px;4267  display: grid;4268  gap: 9px;4269}42704271.peach-card-tag {4272  color: var(--peach-t2);4273  font-family: "IBM Plex Mono", monospace;4274  font-size: 0.5625rem;4275  letter-spacing: 0.12em;4276  text-transform: uppercase;4277}42784279.peach-empty-copy {4280  display: grid;4281  gap: 6px;4282  color: var(--peach-t1);4283  font-size: 0.8125rem;4284}42854286.peach-lock-submit {4287  width: 100%;4288  box-shadow:4289    0 1px 0 rgba(255,255,255,0.10) inset,4290    0 0 0 1px color-mix(in srgb, var(--peach-accent) 19%, transparent),4291    0 12px 32px color-mix(in srgb, var(--peach-accent) 19%, transparent),4292    0 0 48px color-mix(in srgb, var(--peach-accent) 10%, transparent);4293}42944295.peach-lock-secondary {4296  width: 100%;4297  border-color: var(--peach-t3);4298  background: rgba(240, 232, 216, 0.02);4299}43004301.peach-lock-secondary:hover {4302  background: rgba(240, 232, 216, 0.04);4303}43044305.peach-lock-note {4306  max-width: none;4307  line-height: 1.55;4308  margin: 0;4309}43104311.peach-overlay-action {4312  font-size: 0.625rem;4313  padding: 4px 8px;4314  letter-spacing: 0.06em;4315  min-width: 44px;4316  text-align: center;4317}43184319.peach-inline-action {4320  flex-shrink: 0;4321  font-size: 0.5625rem;4322  letter-spacing: 0.1em;4323  text-transform: uppercase;4324  padding: 4px 7px;4325}4326.peach-password-toggle-btn {4327  display: inline-flex;4328  align-items: center;4329  justify-content: center;4330  min-width: 30px;4331  min-height: 26px;4332  padding: 0 7px;4333  border: 1px solid var(--peach-t3);4334  border-radius: 999px;4335  background: rgba(240, 232, 216, 0.04);4336  color: var(--peach-t2);4337  transition: border-color 140ms ease, color 140ms ease, background 140ms ease;4338}4339.peach-password-toggle-btn:hover {4340  border-color: var(--peach-t2);4341  color: var(--peach-t0);4342  background: rgba(240, 232, 216, 0.06);4343}43444345.peach-new-textarea {4346  width: 100%;4347  min-height: 88px;4348  resize: vertical;4349  border: 0;4350  outline: none;4351  background: transparent;4352  color: var(--peach-t1);4353  font-family: "IBM Plex Mono", monospace;4354  font-size: 0.75rem;4355  line-height: 1.65;4356  caret-color: var(--peach-accent);4357}43584359.peach-new-textarea::placeholder {4360  color: var(--peach-t2);4361  opacity: 0.7;4362}43634364.peach-settings-actions {4365  display: grid;4366  gap: 8px;4367}43684369.peach-sync-section-label {4370  font-size: 0.6875rem;4371  color: var(--peach-t2);4372  text-transform: uppercase;4373  letter-spacing: 0.05em;4374}43754376.peach-sync-network-note {4377  margin: 0 0 6px;4378  font-size: 0.75rem;4379  color: var(--peach-t2);4380  line-height: 1.4;4381}43824383.peach-settings-row--tappable {4384  background: none;4385  border: none;4386  width: 100%;4387  text-align: left;4388  cursor: pointer;4389  color: var(--peach-t1);4390  font-size: 0.8125rem;4391}4392.peach-settings-row--tappable:hover {4393  color: var(--peach-t0);4394}43954396.peach-sync-pro-hint {4397  display: flex;4398  flex-direction: column;4399  align-items: flex-start;4400  gap: 8px;4401  padding: 12px 0 4px;4402}44034404.peach-sync-device-row {4405  display: flex;4406  justify-content: space-between;4407  align-items: center;4408  padding: 6px 0;4409  border-bottom: 1px solid var(--peach-t3);4410}44114412.peach-sync-device-info {4413  display: flex;4414  flex-direction: column;4415  gap: 2px;4416}44174418.peach-sync-device-name {4419  font-size: 0.8125rem;4420  color: var(--peach-t0);4421}44224423.peach-sync-device-meta {4424  font-size: 0.6875rem;4425  color: var(--peach-t2);4426}44274428.peach-sync-status-dot {4429  display: inline-block;4430  width: 8px;4431  height: 8px;4432  border-radius: 50%;4433  vertical-align: middle;4434}44354436.peach-sync-remove-btn {4437  color: var(--peach-breach);4438}44394440.peach-sync-advanced-row {4441  display: flex;4442  justify-content: space-between;4443  align-items: center;4444  padding: 6px 0;4445  gap: 12px;4446}44474448.peach-sync-advanced-info {4449  display: flex;4450  flex-direction: column;4451  gap: 2px;4452  flex: 1;4453}44544455.peach-sync-advanced-name {4456  font-size: 0.8125rem;4457  color: var(--peach-t0);4458}44594460.peach-sync-reset-confirm {4461  display: flex;4462  flex-direction: column;4463  gap: 8px;4464  padding: 10px;4465  border: 1px solid var(--peach-breach);4466  border-radius: 10px;4467  background: color-mix(in srgb, var(--peach-breach) 6%, transparent);4468}44694470.peach-sync-reset-confirm-headline {4471  font-size: 0.8125rem;4472  font-weight: 600;4473  color: var(--peach-t0);4474  margin: 0;4475}44764477.peach-sync-reset-confirm-body {4478  font-size: 0.75rem;4479  color: var(--peach-t1);4480  margin: 0;4481  line-height: 1.4;4482}44834484.peach-btn--danger {4485  background: var(--peach-breach);4486  color: #fff;4487  border-color: var(--peach-breach);4488}4489.peach-btn--danger:hover:not(:disabled) {4490  background: color-mix(in srgb, var(--peach-breach) 88%, #000);4491}4492.peach-btn--danger:disabled {4493  opacity: 0.55;4494  cursor: not-allowed;4495}44964497.peach-sync-hero-icon {4498  color: var(--peach-t1);4499  opacity: 0.85;4500}45014502.peach-import-preview {4503  margin-bottom: 12px;4504  max-height: 152px;4505  overflow-y: auto;4506  border: 1px solid var(--peach-t3);4507  border-radius: 10px;4508  padding: 8px 10px;4509  display: grid;4510  gap: 8px;4511  background: rgba(240, 232, 216, 0.02);4512}45134514.peach-import-preview-row {4515  display: flex;4516  justify-content: space-between;4517  gap: 10px;4518  font-size: 0.6875rem;4519  color: var(--peach-t1);4520}45214522.peach-import-preview-title {4523  color: var(--peach-t0);4524  flex: 1;4525  min-width: 0;4526  overflow: hidden;4527  text-overflow: ellipsis;4528  white-space: nowrap;4529}45304531.peach-import-preview-meta {4532  color: var(--peach-t2);4533  flex-shrink: 0;4534  max-width: 42%;4535  overflow: hidden;4536  text-overflow: ellipsis;4537  white-space: nowrap;4538}45394540.peach-import-preview-more {4541  color: var(--peach-t2);4542  font-size: 0.625rem;4543}45444545.peach-restore-copy {4546  margin: 0;4547  color: var(--peach-t1);4548  font-size: 0.6875rem;4549  line-height: 1.6;4550}45514552.peach-restore-warning {4553  padding: 10px 12px;4554  border-radius: 12px;4555  border: 1px solid color-mix(in srgb, var(--peach-breach) 35%, transparent);4556  background: color-mix(in srgb, var(--peach-breach) 10%, transparent);4557  color: var(--peach-t0);4558  font-size: 0.6875rem;4559  line-height: 1.55;4560}45614562.peach-provider-chips {4563  display: flex;4564  flex-wrap: wrap;4565  gap: 6px;4566}45674568.peach-provider-chip {4569  display: inline-flex;4570  align-items: center;4571  padding: 5px 8px;4572  border-radius: 999px;4573  border: 1px solid var(--peach-t3);4574  background: rgba(240, 232, 216, 0.02);4575  color: var(--peach-t1);4576  font-family: "IBM Plex Mono", monospace;4577  font-size: 0.5rem;4578  letter-spacing: 0.08em;4579  text-transform: uppercase;4580}45814582.peach-restore-file,4583.peach-restore-input {4584  width: 100%;4585  border-radius: 10px;4586  border: 1px solid var(--peach-t3);4587  background: var(--peach-s2);4588  color: var(--peach-t0);4589  font-size: 0.75rem;4590}45914592.peach-restore-file {4593  padding: 9px 10px;4594}45954596.peach-restore-file::file-selector-button {4597  margin-right: 10px;4598  padding: 7px 10px;4599  border: 1px solid color-mix(in srgb, var(--peach-accent) 28%, transparent);4600  border-radius: 999px;4601  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);4602  color: var(--peach-t0);4603  font-size: 0.625rem;4604  letter-spacing: 0.08em;4605  text-transform: uppercase;4606  cursor: pointer;4607}46084609.peach-restore-input {4610  padding: 10px 12px;4611}46124613.peach-auth-grid {4614  display: grid;4615  gap: 10px;4616}46174618.peach-import-summary {4619  color: var(--peach-t1);4620  font-size: 0.75rem;4621  line-height: 1.6;4622  margin-bottom: 12px;4623}46244625.peach-restore-error {4626  color: rgba(220, 80, 60, 0.95);4627  font-size: 0.75rem;4628  line-height: 1.55;4629}46304631.peach-passkey-card {4632  max-width: 400px;4633  margin: auto 16px;4634  align-self: center;4635  width: calc(100% - 32px);4636}46374638/* Center the approval card vertically inside the overlay-view (which sets4639 * flex-direction: column without justify-content). Without this, the card4640 * sits at the top with a tall empty band below — looks unfinished on the4641 * 320px popup. */4642.peach-overlay-view:has(.peach-passkey-card) {4643  justify-content: center;4644}46454646.peach-pro-badge {4647  padding: 2px 6px;4648  border-radius: 999px;4649  font-family: var(--font-ui);4650  font-size: 0.625rem;4651  letter-spacing: 0.08em;4652  text-transform: uppercase;4653  background: color-mix(in srgb, var(--peach-accent) 14%, transparent);4654  color: var(--peach-accent);4655}46564657/* ── Shortcuts rebind table ─────────────────────────────────── */4658.peach-shortcuts-group { display: flex; flex-direction: column; gap: 6px; }4659.peach-shortcut-row {4660  display: flex;4661  align-items: center;4662  gap: 10px;4663  padding: 6px 0;4664}4665.peach-shortcut-row-label {4666  flex: 1;4667  font-size: 0.75rem;4668  color: var(--peach-t0);4669}4670.peach-shortcut-chip {4671  min-width: 64px;4672  padding: 4px 10px;4673  border-radius: 6px;4674  border: 1px solid var(--peach-t3);4675  background: var(--peach-input-bg, var(--surface-card));4676  color: var(--peach-t0);4677  font-family: var(--font-mono);4678  font-size: 0.6875rem;4679  letter-spacing: 0.04em;4680  cursor: pointer;4681  text-align: center;4682  transition: border-color 120ms ease, background 120ms ease, color 120ms ease;4683}4684.peach-shortcut-chip:hover { border-color: color-mix(in srgb, var(--peach-accent) 35%, transparent); }4685.peach-shortcut-chip.is-custom {4686  border-color: color-mix(in srgb, var(--peach-accent) 40%, transparent);4687  color: var(--peach-accent);4688}4689.peach-shortcut-chip.is-capturing {4690  border-color: var(--peach-accent);4691  background: color-mix(in srgb, var(--peach-accent) 14%, transparent);4692  color: var(--peach-accent);4693  animation: peach-shortcut-capture-pulse 1.4s ease-in-out infinite;4694}4695@keyframes peach-shortcut-capture-pulse {4696  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--peach-accent) 30%, transparent); }4697  50%      { box-shadow: 0 0 0 4px color-mix(in srgb, var(--peach-accent) 12%, transparent); }4698}4699.peach-shortcut-reset {4700  background: transparent;4701  border: none;4702  cursor: pointer;4703  color: var(--peach-t2);4704  padding: 4px 6px;4705  border-radius: 5px;4706  font-size: 0.875rem;4707  line-height: 1;4708  transition: color 120ms ease, background 120ms ease;4709}4710.peach-shortcut-reset:hover {4711  color: var(--peach-t0);4712  background: color-mix(in srgb, var(--peach-text, var(--peach-t0)) 6%, transparent);4713}4714.peach-shortcuts-conflict {4715  margin: 4px 0 0;4716  padding: 8px 10px;4717  border-radius: 7px;4718  background: color-mix(in srgb, var(--peach-breach) 10%, transparent);4719  border: 1px solid color-mix(in srgb, var(--peach-breach) 30%, transparent);4720  font-family: var(--font-mono);4721  font-size: 0.6875rem;4722  color: var(--peach-t0);4723}47244725/* ── Help dialog overlay (? to open) ────────────────────────── */4726.peach-shortcuts-help-backdrop {4727  position: fixed;4728  inset: 0;4729  background: rgba(0, 0, 0, 0.55);4730  backdrop-filter: blur(2px);4731  display: flex;4732  align-items: center;4733  justify-content: center;4734  z-index: 1000;4735  animation: peach-help-fade-in 140ms ease forwards;4736}4737@keyframes peach-help-fade-in { from { opacity: 0 } to { opacity: 1 } }4738.peach-shortcuts-help-card {4739  width: min(320px, 92vw);4740  max-height: 80vh;4741  overflow-y: auto;4742  border-radius: 14px;4743  border: 1px solid var(--peach-t3);4744  background: var(--peach-bg);4745  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.5);4746  padding: 16px 18px 18px;4747  display: flex;4748  flex-direction: column;4749  gap: 12px;4750}4751.peach-shortcuts-help-head {4752  display: flex; align-items: center; justify-content: space-between;4753}4754.peach-shortcuts-help-head h3 {4755  margin: 0;4756  font-family: var(--font-display);4757  font-style: italic;4758  font-weight: 400;4759  font-size: 22px;4760  color: var(--peach-t0);4761}4762.peach-shortcuts-help-close {4763  background: transparent;4764  border: none;4765  color: var(--peach-t2);4766  cursor: pointer;4767  font-size: 0.875rem;4768  padding: 4px 8px;4769  border-radius: 5px;4770}4771.peach-shortcuts-help-close:hover { color: var(--peach-t0); background: var(--surface-card); }4772.peach-shortcuts-help-body ul {4773  list-style: none; padding: 0; margin: 4px 0 12px;4774  display: grid; gap: 8px;4775}4776.peach-shortcuts-help-body li {4777  display: flex; align-items: center; justify-content: space-between; gap: 12px;4778  font-size: 0.75rem; color: var(--peach-t0);4779}4780.peach-shortcuts-help-body kbd {4781  font-family: var(--font-mono);4782  font-size: 0.6875rem;4783  padding: 3px 8px;4784  border-radius: 6px;4785  background: var(--surface-card);4786  border: 1px solid var(--peach-t3);4787  color: var(--peach-accent);4788  letter-spacing: 0.04em;4789}47904791/* ── Pro promo on Account screen ────────────────────────────── */4792.peach-pro-promo {4793  position: relative;4794  border-radius: 14px;4795  border: 1px solid color-mix(in srgb, var(--peach-accent) 22%, transparent);4796  background:4797    radial-gradient(120% 80% at 0% 0%, color-mix(in srgb, var(--peach-accent) 10%, transparent) 0%, transparent 60%),4798    radial-gradient(85% 100% at 100% 100%, color-mix(in srgb, var(--peach-accent) 6%, transparent) 0%, transparent 65%),4799    var(--surface-card);4800  overflow: hidden;4801  margin-bottom: 14px;4802}4803.peach-pro-promo-glow {4804  position: absolute;4805  inset: -40% -20% auto auto;4806  width: 220px; height: 220px;4807  background: radial-gradient(closest-side, var(--peach-glow), transparent 70%);4808  pointer-events: none;4809  filter: blur(8px);4810}4811.peach-pro-promo-inner {4812  position: relative;4813  padding: 18px 18px 16px;4814}4815.peach-pro-promo-title {4816  font-family: var(--font-display);4817  font-style: italic;4818  font-weight: 400;4819  font-size: 28px;4820  line-height: 1;4821  letter-spacing: -0.005em;4822  color: var(--peach-t0);4823  margin: 0 0 4px;4824}4825.peach-pro-promo-tagline {4826  font-family: var(--font-mono);4827  font-size: 0.625rem;4828  letter-spacing: 0.06em;4829  color: var(--peach-t2);4830  margin: 0 0 14px;4831}4832.peach-pro-promo-list {4833  list-style: none;4834  margin: 0 0 16px;4835  padding: 0;4836  display: grid;4837  gap: 9px;4838}4839.peach-pro-promo-list li {4840  display: flex;4841  align-items: flex-start;4842  gap: 9px;4843  font-size: 0.75rem;4844  color: var(--peach-t1);4845  line-height: 1.4;4846}4847.peach-pro-promo-list svg {4848  width: 14px;4849  height: 14px;4850  flex-shrink: 0;4851  color: var(--peach-accent);4852  margin-top: 2px;4853}4854.peach-pro-promo-list span {4855  color: var(--peach-t0);4856}4857.peach-pro-promo-cta {4858  width: 100%;4859  background: var(--peach-accent);4860  color: #fff;4861  border: none;4862  padding: 9px 12px;4863  border-radius: 9px;4864  font-size: 0.75rem;4865  font-weight: 500;4866  font-family: var(--font-ui);4867  letter-spacing: 0.02em;4868  text-decoration: none;4869  display: inline-flex;4870  align-items: center;4871  justify-content: center;4872  cursor: pointer;4873  transition: filter 120ms ease, box-shadow 120ms ease, transform 80ms ease;4874  box-shadow: 0 2px 16px var(--peach-glow);4875}4876.peach-pro-promo-cta:hover {4877  filter: brightness(1.07);4878  box-shadow: 0 4px 24px var(--peach-glow);4879  transform: translateY(-1px);4880}4881.peach-pro-promo-cta:active { transform: translateY(0); filter: brightness(0.96); }48824883.peach-pro-or-divider {4884  display: flex;4885  align-items: center;4886  gap: 10px;4887  margin: 4px 0 12px;4888  font-family: var(--font-mono);4889  font-size: 0.625rem;4890  letter-spacing: 0.06em;4891  color: var(--peach-t2);4892  text-transform: uppercase;4893}4894.peach-pro-or-divider::before,4895.peach-pro-or-divider::after {4896  content: "";4897  flex: 1;4898  height: 1px;4899  background: var(--peach-t3);4900}49014902.peach-loading {4903  position: absolute;4904  inset: 0;4905  display: flex;4906  align-items: center;4907  justify-content: center;4908  background: var(--bg);4909  animation: peach-loading-pulse 1.2s ease-in-out infinite;4910}49114912@keyframes peach-loading-pulse {4913  0%, 100% { opacity: 0.6; }4914  50% { opacity: 1; }4915}49164917/* ── Health Dashboard ─────────────────────────────────────────────────── */4918.peach-health-body {4919  flex: 1;4920  overflow-y: auto;4921  display: flex;4922  flex-direction: column;4923  /* Hide the platform scrollbar — every other scrollable surface in the4924   * popup hides it; the Health view was the one outlier and it ruined the4925   * polish. Behavior unchanged, just no rail rendered. */4926  scrollbar-width: none;4927  -ms-overflow-style: none;4928}4929.peach-health-body::-webkit-scrollbar { display: none; }49304931/* Loading screen for the Vault Health view. The advanced report computation4932 * can run for a few seconds on a large vault — without a clear loading4933 * screen the surface looked broken (the entry view bleeds through the4934 * empty body). Centered glyph + title + copy + indeterminate progress bar. */4935.peach-health-loading-screen {4936  flex: 1;4937  display: flex;4938  flex-direction: column;4939  align-items: center;4940  justify-content: center;4941  gap: 14px;4942  padding: 32px 28px;4943  text-align: center;4944}49454946.peach-health-loading-glyph {4947  width: 48px;4948  height: 48px;4949  display: flex;4950  align-items: center;4951  justify-content: center;4952  border-radius: 14px;4953  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);4954  color: var(--peach-accent);4955}49564957.peach-health-loading-title {4958  margin: 0;4959  font-family: var(--font-display);4960  font-style: italic;4961  font-weight: 300;4962  font-size: 19px;4963  line-height: 1.2;4964  color: var(--peach-t0);4965}49664967.peach-health-loading-copy {4968  margin: 0;4969  max-width: 240px;4970  font-size: 0.75rem;4971  line-height: 1.55;4972  color: var(--peach-t2);4973}49744975.peach-health-loading-track {4976  width: 200px;4977  height: 3px;4978  margin-top: 6px;4979  border-radius: 999px;4980  background: rgba(240, 232, 216, 0.06);4981  overflow: hidden;4982}49834984.peach-health-loading-fill {4985  width: 40%;4986  height: 100%;4987  border-radius: inherit;4988  background: linear-gradient(4989    90deg,4990    transparent 0%,4991    var(--peach-accent) 50%,4992    transparent 100%4993  );4994  animation: peach-health-loading-sweep 1.4s ease-in-out infinite;4995}49964997@keyframes peach-health-loading-sweep {4998  0%   { transform: translateX(-100%); }4999  100% { transform: translateX(350%); }5000}50015002[data-motion="reduce"] .peach-health-loading-fill,5003[data-motion="reduce"] .peach-health-loading-glyph svg path {5004  animation: none;5005}50065007.peach-health-summary {5008  padding: 10px 16px 6px;5009  font-family: "IBM Plex Mono", monospace;5010  font-size: 0.6875rem;5011}5012.peach-health-summary-warn { color: rgba(220,80,60,0.9); }5013.peach-health-summary-ok { color: var(--peach-t2); }50145015.peach-health-check-row {5016  padding: 0 16px 10px;5017}5018.peach-health-check-btn {5019  width: 100%;5020  display: flex;5021  align-items: center;5022  justify-content: center;5023}50245025.peach-health-sections {5026  flex: 1;5027  display: flex;5028  flex-direction: column;5029}50305031.peach-health-section {5032  border-bottom: 1px solid var(--peach-t3);5033}50345035.peach-health-section-header {5036  width: 100%;5037  display: flex;5038  align-items: center;5039  justify-content: space-between;5040  padding: 9px 16px;5041  background: transparent;5042  cursor: pointer;5043  color: var(--peach-t0);5044}50455046.peach-health-section-title-row {5047  display: flex;5048  align-items: center;5049  gap: 8px;5050}50515052.peach-health-count-badge {5053  display: inline-flex;5054  align-items: center;5055  justify-content: center;5056  min-width: 20px;5057  height: 18px;5058  padding: 0 5px;5059  border-radius: 999px;5060  background: rgba(220,80,60,0.15);5061  border: 1px solid rgba(220,80,60,0.25);5062  font-family: "IBM Plex Mono", monospace;5063  font-size: 0.5625rem;5064  color: rgba(220,80,60,0.9);5065}50665067.peach-health-section-title {5068  font-family: "IBM Plex Mono", monospace;5069  font-size: 0.6875rem;5070  text-transform: uppercase;5071  letter-spacing: 0.1em;5072  color: var(--peach-t1);5073}50745075.peach-health-chevron {5076  color: var(--peach-t2);5077  transition: transform 200ms ease;5078  flex-shrink: 0;5079}5080.peach-health-chevron.is-expanded {5081  transform: rotate(180deg);5082}50835084.peach-health-section-body {5085  padding: 0 16px 10px;5086  display: flex;5087  flex-direction: column;5088  gap: 4px;5089}50905091.peach-health-row {5092  display: flex;5093  align-items: flex-start;5094  justify-content: space-between;5095  gap: 8px;5096  padding: 6px 8px;5097  border-radius: 8px;5098  background: rgba(240,232,216,0.02);5099}51005101.peach-health-row-info {5102  flex: 1;5103  min-width: 0;5104  display: flex;5105  flex-direction: column;5106  gap: 2px;5107}51085109.peach-health-row-name {5110  font-family: var(--font-display);5111  font-size: 0.9375rem;5112  font-style: italic;5113  font-weight: 400;5114  color: var(--peach-t0);5115  white-space: nowrap;5116  overflow: hidden;5117  text-overflow: ellipsis;5118}51195120.peach-health-row-meta {5121  font-family: "IBM Plex Mono", monospace;5122  font-size: 0.5625rem;5123  color: var(--peach-t2);5124  letter-spacing: 0.05em;5125}51265127.peach-health-fix-btn {5128  font-size: 0.5625rem;5129  letter-spacing: 0.08em;5130  text-transform: uppercase;5131  padding: 4px 7px;5132  flex-shrink: 0;5133  display: flex;5134  align-items: center;5135}51365137.peach-health-empty {5138  font-family: "IBM Plex Mono", monospace;5139  font-size: 0.625rem;5140  color: var(--peach-t2);5141  padding: 6px 0;5142}51435144.peach-health-loading {5145  font-family: "IBM Plex Mono", monospace;5146  font-size: 0.625rem;5147  color: var(--peach-t2);5148  padding: 6px 0;5149  display: flex;5150  align-items: center;5151  gap: 6px;5152}51535154.peach-health-loading::before {5155  content: "";5156  width: 10px;5157  height: 10px;5158  border: 1.5px solid var(--peach-t3);5159  border-top-color: var(--peach-accent);5160  border-radius: 50%;5161  animation: peach-spin 600ms linear infinite;5162}51635164@keyframes peach-spin {5165  to { transform: rotate(360deg); }5166}51675168.peach-spinner {5169  width: 32px;5170  height: 32px;5171  border: 2px solid var(--peach-s2);5172  border-top-color: var(--peach-accent);5173  border-radius: 50%;5174  margin: 0 auto 16px;5175  animation: peach-spin 0.8s linear infinite;5176}51775178.peach-progress-screen {5179  text-align: center;5180  padding: 32px 16px;5181}51825183.peach-progress-screen-title {5184  font-size: 0.8125rem;5185  color: var(--peach-t0);5186  margin-bottom: 16px;5187}51885189.peach-progress-screen-stage {5190  font-size: 0.6875rem;5191  color: var(--peach-t2);5192  min-height: 14px;5193}51945195.peach-progress-screen-note {5196  font-size: 0.625rem;5197  color: var(--peach-t2);5198  margin-top: 8px;5199}52005201/* Pairing commits the vault key before the first entry sync. Keep that5202   implementation detail off-screen until the paired source records a real,5203   durable sync completion. */5204.peach-initial-sync {5205  position: relative;5206  display: flex;5207  align-items: center;5208  justify-content: center;5209  overflow: hidden;5210}52115212.peach-initial-sync-card {5213  position: relative;5214  z-index: 1;5215  width: min(100%, 320px);5216  display: flex;5217  flex-direction: column;5218  align-items: center;5219  gap: 10px;5220  padding: 36px 26px;5221  text-align: center;5222}52235224.peach-initial-sync-mark {5225  width: 54px;5226  height: 54px;5227  display: flex;5228  align-items: center;5229  justify-content: center;5230  border-radius: 18px;5231  background: color-mix(in srgb, var(--peach-accent) 12%, transparent);5232  margin-bottom: 4px;5233}52345235.peach-initial-sync-mark svg {5236  width: 34px;5237  height: 34px;5238}52395240.peach-initial-sync-card h1 {5241  margin: 0;5242  color: var(--peach-t0);5243  font-family: var(--font-display);5244  font-size: 1.55rem;5245  font-style: italic;5246  font-weight: 400;5247}52485249.peach-initial-sync-card > p {5250  margin: 0;5251}52525253.peach-initial-sync-card #initial-sync-copy {5254  color: var(--peach-t1);5255  font-size: 0.78rem;5256  line-height: 1.55;5257}52585259.peach-initial-sync-progress {5260  width: 100%;5261  height: 3px;5262  overflow: hidden;5263  border-radius: 999px;5264  background: color-mix(in srgb, var(--peach-t0) 8%, transparent);5265  margin: 8px 0 2px;5266}52675268.peach-initial-sync-progress span {5269  display: block;5270  width: 42%;5271  height: 100%;5272  border-radius: inherit;5273  background: var(--peach-accent);5274  animation: peach-initial-sync-progress 1.4s cubic-bezier(0.2, 0, 0, 1) infinite;5275}52765277@keyframes peach-initial-sync-progress {5278  from { transform: translateX(-115%); }5279  to { transform: translateX(340%); }5280}52815282.peach-initial-sync-note {5283  color: var(--peach-t2);5284  font-size: 0.625rem;5285  line-height: 1.45;5286}52875288.peach-initial-sync-slow {5289  width: 100%;5290  display: flex;5291  flex-direction: column;5292  gap: 10px;5293  padding-top: 10px;5294  border-top: 1px solid var(--peach-border);5295}52965297.peach-initial-sync-slow p {5298  margin: 0;5299  color: var(--peach-t2);5300  font-size: 0.6875rem;5301  line-height: 1.45;5302}53035304.peach-initial-sync-slow .peach-btn {5305  width: 100%;5306}53075308@media (prefers-reduced-motion: reduce) {5309  .peach-initial-sync-progress span {5310    width: 100%;5311    opacity: 0.7;5312    animation: none;5313  }5314}53155316/* Tag chips */5317.peach-tag-chip {5318  display: inline-flex;5319  align-items: center;5320  gap: 4px;5321  padding: 3px 8px;5322  border-radius: 999px;5323  border: 1px solid color-mix(in srgb, var(--peach-accent) 28%, transparent);5324  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);5325  color: var(--peach-t0);5326  font-family: "IBM Plex Mono", monospace;5327  font-size: 0.625rem;5328  letter-spacing: 0.04em;5329}53305331.peach-tag-chip-remove {5332  background: transparent;5333  border: none;5334  color: inherit;5335  opacity: 0.6;5336  cursor: pointer;5337  padding: 0;5338  font-size: 0.75rem;5339  line-height: 1;5340}53415342.peach-tag-chip-remove:hover {5343  opacity: 1;5344}53455346/* Tag input */5347.peach-tag-input-wrap {5348  border-bottom: 1px solid var(--peach-t3);5349}53505351.peach-tag-suggestions {5352  display: flex;5353  flex-wrap: wrap;5354  gap: 4px;5355  padding: 6px 0;5356}53575358.peach-tag-suggestion {5359  padding: 2px 8px;5360  border-radius: 999px;5361  border: 1px solid var(--peach-t3);5362  background: var(--peach-s2);5363  color: var(--peach-t1);5364  font-family: "IBM Plex Mono", monospace;5365  font-size: 0.625rem;5366  cursor: pointer;5367  transition: border-color 80ms ease, background 80ms ease;5368}53695370.peach-tag-suggestion:hover {5371  border-color: color-mix(in srgb, var(--peach-accent) 40%, transparent);5372  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);5373}53745375/* Identity suggestions — shown below username/email inputs in new-entry form */5376@keyframes peach-suggest-in {5377  from { opacity: 0; transform: translateY(-4px); }5378  to   { opacity: 1; transform: none; }5379}53805381.peach-identity-suggestions {5382  display: flex;5383  flex-direction: column;5384  gap: 1px;5385  margin-top: 4px;5386  animation: peach-suggest-in 180ms cubic-bezier(0.16, 1, 0.3, 1) both;5387}53885389.peach-identity-filter-row {5390  display: flex;5391  align-items: center;5392  gap: 4px;5393  padding: 2px 0 5px;5394}53955396.peach-identity-collapse-btn {5397  margin-left: auto;5398  background: transparent;5399  border: none;5400  cursor: pointer;5401  color: var(--peach-t3);5402  padding: 2px 4px;5403  display: flex;5404  align-items: center;5405  line-height: 0;5406  border-radius: 3px;5407  transition: color 100ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1);5408}54095410.peach-identity-collapse-btn:hover {5411  color: var(--peach-t1);5412}54135414.peach-identity-collapse-btn.is-collapsed {5415  transform: rotate(-90deg);5416}54175418.peach-identity-rows {5419  display: grid;5420  grid-template-rows: 1fr;5421  transition: grid-template-rows 220ms cubic-bezier(0.16, 1, 0.3, 1);5422}54235424.peach-identity-rows.is-collapsed {5425  grid-template-rows: 0fr;5426}54275428.peach-identity-rows-inner {5429  overflow-y: auto;5430  min-height: 0;5431  max-height: 148px;5432  scrollbar-width: thin;5433  scrollbar-color: var(--peach-t3) transparent;5434  mask-image: linear-gradient(to bottom, black calc(100% - 18px), transparent 100%);5435  -webkit-mask-image: linear-gradient(to bottom, black calc(100% - 18px), transparent 100%);5436}54375438.peach-identity-rows-inner::-webkit-scrollbar {5439  width: 4px;5440}54415442.peach-identity-rows-inner::-webkit-scrollbar-track {5443  background: transparent;5444}54455446.peach-identity-rows-inner::-webkit-scrollbar-thumb {5447  background: var(--peach-t3);5448  border-radius: 2px;5449}54505451.peach-identity-filter-pill {5452  padding: 2px 7px;5453  border-radius: 999px;5454  border: 1px solid var(--peach-t3);5455  background: transparent;5456  color: var(--peach-t2);5457  font-family: "IBM Plex Mono", monospace;5458  font-size: 0.6rem;5459  cursor: pointer;5460  transition: border-color 80ms, background 80ms, color 80ms;5461}54625463.peach-identity-filter-pill.is-on {5464  border-color: color-mix(in srgb, var(--peach-accent) 50%, transparent);5465  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);5466  color: var(--peach-accent);5467}54685469.peach-identity-suggestion {5470  display: flex;5471  align-items: center;5472  gap: 6px;5473  width: 100%;5474  padding: 4px 6px;5475  border-radius: 5px;5476  border: none;5477  background: transparent;5478  cursor: pointer;5479  text-align: left;5480  transition: background 80ms ease;5481}54825483.peach-identity-suggestion:hover,5484.peach-identity-suggestion:focus {5485  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);5486  outline: none;5487}54885489.peach-identity-suggestion-value {5490  font-family: "IBM Plex Mono", monospace;5491  font-size: 0.7rem;5492  color: var(--peach-t1);5493  overflow: hidden;5494  text-overflow: ellipsis;5495  white-space: nowrap;5496  flex: 1;5497  min-width: 0;5498}54995500.peach-identity-suggestion-type {5501  font-family: "IBM Plex Mono", monospace;5502  font-size: 0.55rem;5503  font-weight: 600;5504  flex-shrink: 0;5505  padding: 1px 4px;5506  border-radius: 3px;5507}55085509.peach-identity-suggestion-type--email {5510  color: color-mix(in srgb, var(--peach-accent) 70%, transparent);5511  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);5512}55135514.peach-identity-suggestion-type--username {5515  color: color-mix(in srgb, var(--peach-t1) 60%, transparent);5516  background: color-mix(in srgb, var(--peach-t3) 40%, transparent);5517}55185519.peach-identity-suggestion-meta {5520  font-family: "IBM Plex Mono", monospace;5521  font-size: 0.6rem;5522  color: var(--peach-t3);5523  flex-shrink: 0;5524}55255526/* Tag filter strip */5527.peach-tag-filter-strip {5528  border-bottom: 1px solid var(--peach-t3);5529  flex-shrink: 0;5530}55315532.peach-tag-filter-chip {5533  display: inline-flex;5534  align-items: center;5535  padding: 4px 10px;5536  border-radius: 999px;5537  border: 1px solid var(--peach-t3);5538  background: transparent;5539  color: var(--peach-t2);5540  font-family: "IBM Plex Mono", monospace;5541  font-size: 0.5625rem;5542  letter-spacing: 0.06em;5543  text-transform: uppercase;5544  cursor: pointer;5545  transition: border-color 120ms ease, color 120ms ease, background 120ms ease;5546  white-space: nowrap;5547}55485549.peach-tag-filter-chip:hover {5550  border-color: color-mix(in srgb, var(--peach-accent) 35%, transparent);5551  color: var(--peach-t1);5552}55535554.peach-tag-filter-chip.is-selected {5555  border-color: color-mix(in srgb, var(--peach-accent) 50%, transparent);5556  background: color-mix(in srgb, var(--peach-accent) 12%, transparent);5557  color: var(--peach-t0);5558}55595560/* ─────────────────────────────────────────────────────────────────────────5561   v1.4.12 additions5562   ─────────────────────────────────────────────────────────────────────── */55635564/* Sort bar */5565.peach-sort-bar {5566  display: flex;5567  align-items: center;5568  gap: 4px;5569  padding: 5px 12px;5570  border-bottom: 1px solid var(--peach-t3);5571  flex-shrink: 0;5572  overflow-x: auto;5573  scrollbar-width: none;5574}55755576.peach-sort-btn {5577  padding: 2px 9px;5578  border-radius: 999px;5579  border: 1px solid transparent;5580  background: transparent;5581  color: var(--peach-t2);5582  font-family: "IBM Plex Mono", monospace;5583  font-size: 0.5625rem;5584  letter-spacing: 0.07em;5585  text-transform: uppercase;5586  cursor: pointer;5587  transition: border-color 120ms ease, color 120ms ease, background 120ms ease;5588  white-space: nowrap;5589}55905591.peach-sort-btn:hover {5592  border-color: color-mix(in srgb, var(--peach-accent) 30%, transparent);5593  color: var(--peach-t1);5594}55955596.peach-sort-btn.is-active {5597  border-color: color-mix(in srgb, var(--peach-accent) 50%, transparent);5598  background: color-mix(in srgb, var(--peach-accent) 12%, transparent);5599  color: var(--peach-t0);5600}56015602.peach-sort-scope-btn {5603  padding-inline: 8px;5604  font-size: 0.53125rem;5605  letter-spacing: 0.05em;5606}56075608.peach-sort-domain-hint {5609  margin-left: auto;5610  font-family: "IBM Plex Mono", monospace;5611  font-size: 0.5625rem;5612  color: color-mix(in srgb, var(--peach-accent) 60%, transparent);5613  white-space: nowrap;5614  overflow: hidden;5615  text-overflow: ellipsis;5616  max-width: 110px;5617}56185619/* Tab-match badge on entry rows */5620.peach-tab-match-badge {5621  display: inline-block;5622  width: 6px;5623  height: 6px;5624  border-radius: 50%;5625  background: color-mix(in srgb, var(--peach-accent) 75%, transparent);5626  margin-left: 5px;5627  vertical-align: middle;5628  flex-shrink: 0;5629  box-shadow: 0 0 4px color-mix(in srgb, var(--peach-accent) 40%, transparent);5630}56315632.peach-entry-row.is-tab-match {5633  background: color-mix(in srgb, var(--peach-accent) 4%, transparent);5634  border-bottom-color: color-mix(in srgb, var(--peach-accent) 8%, transparent);5635}56365637.peach-entry-row.is-tab-match:hover {5638  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);5639}56405641/* Entry list stagger entrance */5642@keyframes peach-entry-fadein {5643  from { opacity: 0; transform: translateY(4px); }5644  to   { opacity: 1; transform: translateY(0); }5645}56465647.peach-vault-list .peach-entry-row {5648  animation: peach-entry-fadein 220ms cubic-bezier(0.16, 1, 0.3, 1) both;5649}56505651/* Button press micro-interaction */5652.peach-btn:active {5653  transform: scale(0.95);5654  transition: transform 80ms cubic-bezier(0.34, 1.56, 0.64, 1);5655}56565657.peach-sort-btn:active,5658.peach-tag-filter-chip:active {5659  transform: scale(0.93);5660  transition: transform 80ms cubic-bezier(0.34, 1.56, 0.64, 1);5661}56625663/* Password strength bar (Lock view + shared) */5664.peach-password-strength {5665  display: flex;5666  align-items: center;5667  gap: 8px;5668  margin-top: 6px;5669}56705671.peach-strength-bar {5672  flex: 1;5673  height: 3px;5674  border-radius: 2px;5675  background: var(--peach-t3);5676  overflow: hidden;5677}56785679.peach-strength-fill {5680  height: 100%;5681  border-radius: 2px;5682  transition: width 300ms cubic-bezier(0.34, 1.56, 0.64, 1),5683              background 300ms ease;5684}56855686.peach-strength-bar--weak   .peach-strength-fill { width: 25%; background: rgba(220, 80, 60, 0.65); }5687.peach-strength-bar--fair   .peach-strength-fill { width: 50%; background: rgba(200, 140, 60, 0.6); }5688.peach-strength-bar--good   .peach-strength-fill { width: 75%; background: rgba(180, 162, 100, 0.55); }5689.peach-strength-bar--strong .peach-strength-fill { width: 100%; background: rgba(150, 175, 110, 0.6); }56905691.peach-strength-label {5692  font-family: "IBM Plex Mono", monospace;5693  font-style: italic;5694  font-size: 0.5625rem;5695  font-weight: 300;5696  letter-spacing: 0.06em;5697  color: var(--peach-t2);5698  min-width: 36px;5699  text-align: right;5700}57015702.peach-strength-bar--weak   + .peach-strength-label { color: rgba(220, 80, 60, 0.65); }5703.peach-strength-bar--fair   + .peach-strength-label { color: rgba(200, 140, 60, 0.6); }5704.peach-strength-bar--good   + .peach-strength-label { color: rgba(180, 162, 100, 0.55); }5705.peach-strength-bar--strong + .peach-strength-label { color: rgba(150, 175, 110, 0.6); }57065707/* Duress form */5708.peach-duress-status {5709  padding: 2px 8px;5710  border-radius: 999px;5711  border: 1px solid var(--peach-t3);5712  font-family: "IBM Plex Mono", monospace;5713  font-size: 0.5625rem;5714  letter-spacing: 0.07em;5715  text-transform: uppercase;5716  color: var(--peach-t2);5717  flex-shrink: 0;5718}57195720.peach-duress-status.is-active {5721  border-color: color-mix(in srgb, var(--peach-accent) 45%, transparent);5722  background: color-mix(in srgb, var(--peach-accent) 10%, transparent);5723  color: var(--peach-t0);5724}57255726.peach-duress-form {5727  padding: 8px 0 4px;5728  display: flex;5729  flex-direction: column;5730  gap: 6px;5731}57325733.peach-duress-form .peach-label {5734  margin-top: 4px;5735}57365737.peach-duress-actions {5738  display: flex;5739  gap: 6px;5740  align-items: center;5741  margin-top: 4px;5742}57435744.peach-duress-actions .peach-btn:first-child {5745  margin-right: auto;5746}57475748/* Improved overlay spring entrance */5749.peach-overlay-view.ov-enter-up {5750  animation: ov-enter-up-spring 300ms cubic-bezier(0.34, 1.56, 0.64, 1) both;5751}57525753@keyframes ov-enter-up-spring {5754  from { opacity: 0; transform: translateY(16px) scale(0.98); }5755  to   { opacity: 1; transform: translateY(0) scale(1); }5756}57575758.peach-overlay-view.ov-enter-right {5759  animation: ov-enter-right-spring 280ms cubic-bezier(0.34, 1.56, 0.64, 1) both;5760}57615762@keyframes ov-enter-right-spring {5763  from { opacity: 0; transform: translateX(18px) scale(0.98); }5764  to   { opacity: 1; transform: translateX(0) scale(1); }5765}57665767/* ── Onboarding-mode restore screens (file import) ── */5768/* Used when MainImportView renders during onboarding (no vault yet).5769   Animates like a lock-screen transition. */5770.peach-lock-view {5771  position: absolute;5772  inset: 0;5773  display: flex;5774  flex-direction: column;5775  background:5776    radial-gradient(120% 80% at 0% 0%, var(--shell-accent-a) 0%, transparent 65%),5777    radial-gradient(85% 100% at 100% 100%, var(--shell-accent-b) 0%, transparent 70%),5778    var(--peach-bg);5779  z-index: 2;5780  overflow: hidden;5781  animation: peach-screen-enter 280ms cubic-bezier(0.16, 1, 0.3, 1) both;5782}57835784.peach-lock-view-header {5785  display: flex;5786  align-items: center;5787  justify-content: space-between;5788  padding: 16px 18px 12px;5789  flex-shrink: 0;5790}57915792/* ───────── Settings: auto-lock select ───────── */5793.peach-settings-select {5794  font-family: "IBM Plex Mono", monospace;5795  font-size: 0.6875rem;5796  background: transparent;5797  border: 1px solid var(--peach-t3);5798  border-radius: 4px;5799  color: var(--peach-t1);5800  padding: 3px 6px;5801  cursor: pointer;5802  outline: none;5803}5804.peach-settings-select:focus {5805  border-color: var(--peach-accent);5806}58075808/* ───────── Duress status pill (new polished) ───────── */5809.peach-duress-status-pill {5810  font-family: "IBM Plex Mono", monospace;5811  font-size: 0.5625rem;5812  text-transform: uppercase;5813  letter-spacing: 0.12em;5814  padding: 2px 8px;5815  border-radius: 12px;5816  background: var(--peach-t3);5817  color: var(--peach-t2);5818  flex-shrink: 0;5819}5820.peach-duress-status-pill.is-active {5821  background: color-mix(in srgb, var(--peach-accent) 15%, transparent);5822  color: var(--peach-accent);5823}58245825/* ───────── Entry advanced disclosure (canary) ───────── */5826.peach-entry-advanced {5827  margin-top: 12px;5828  border-top: 1px solid var(--peach-t3);5829  padding-top: 10px;5830  position: relative;5831  z-index: 1;5832}5833.peach-entry-advanced-toggle {5834  display: flex;5835  align-items: center;5836  justify-content: space-between;5837  width: 100%;5838  background: transparent;5839  border: none;5840  cursor: pointer;5841  padding: 0;5842  color: var(--peach-t2);5843}5844.peach-canary-section {5845  margin-top: 10px;5846  display: grid;5847  gap: 6px;5848}58495850/* ───────── Import: merge/replace radio choices ───────── */5851.peach-import-choice {5852  display: flex;5853  align-items: flex-start;5854  gap: 10px;5855  padding: 8px 10px;5856  border: 1px solid var(--peach-t3);5857  border-radius: 10px;5858  cursor: pointer;5859  margin-bottom: 6px;5860  transition: border-color 120ms ease, background 120ms ease;5861}5862.peach-import-choice:hover {5863  border-color: var(--peach-accent);5864}5865.peach-import-choice input[type="radio"] {5866  margin-top: 3px;5867  accent-color: var(--peach-accent);5868  flex-shrink: 0;5869}5870.peach-import-choice-main {5871  display: flex;5872  flex-direction: column;5873  gap: 2px;5874  min-width: 0;5875}5876.peach-import-choice-label {5877  font-size: 0.75rem;5878  color: var(--peach-t0);5879}5880.peach-import-choice-sub {5881  font-size: 0.6875rem;5882  color: var(--peach-t2);5883  line-height: 1.5;5884}58855886/* ───────── Export: success confirmation strip ───────── */5887.peach-export-success {5888  display: flex;5889  align-items: flex-start;5890  gap: 10px;5891  padding: 12px;5892  border-radius: 12px;5893  border: 1px solid rgba(150, 175, 110, 0.3);5894  background: rgba(150, 175, 110, 0.08);5895  color: var(--peach-t0);5896  font-size: 0.75rem;5897  line-height: 1.55;5898}5899.peach-export-success-check {5900  color: rgba(150, 175, 110, 0.9);5901  font-size: 0.875rem;5902  flex-shrink: 0;5903}59045905/* ── Trash view ──────────────────────────────────────────────────────── */5906.peach-trash-entry-row {5907  display: flex;5908  align-items: center;5909  justify-content: space-between;5910  gap: 8px;5911  padding: 8px 0;5912  border-bottom: 1px solid var(--peach-border);5913}5914.peach-trash-entry-info {5915  flex: 1;5916  min-width: 0;5917  display: flex;5918  flex-direction: column;5919  gap: 2px;5920}5921.peach-trash-entry-title {5922  font-size: 0.8125rem;5923  color: var(--peach-t0);5924  overflow: hidden;5925  text-overflow: ellipsis;5926  white-space: nowrap;5927}5928.peach-trash-entry-meta {5929  font-family: var(--font-mono);5930  font-size: 0.5625rem;5931  color: var(--peach-t2);5932  letter-spacing: 0.04em;5933}5934.peach-trash-entry-actions {5935  display: flex;5936  align-items: center;5937  gap: 4px;5938  flex-shrink: 0;5939}5940.peach-trash-delete-btn {5941  background: transparent;5942  border: 0;5943  color: var(--peach-t3);5944  font-size: 1rem;5945  line-height: 1;5946  cursor: pointer;5947  padding: 2px 5px;5948  transition: color 0.15s;5949}5950.peach-trash-delete-btn:hover { color: var(--peach-breach); }5951.peach-trash-list {5952  overflow-y: auto;5953}5954.peach-trash-footer {5955  display: flex;5956  align-items: center;5957  gap: 8px;5958  padding: 8px 0 0;5959  border-top: 1px solid var(--peach-border);5960  margin-top: 4px;5961}5962.peach-trash-purge-all {5963  background: transparent;5964  border: 0;5965  color: var(--peach-t3);5966  font-size: 0.625rem;5967  cursor: pointer;5968  padding: 4px 0;5969  letter-spacing: 0.03em;5970  transition: color 0.2s;5971}5972.peach-trash-purge-all:hover { color: var(--peach-breach); }5973.peach-trash-purge-confirm-label {5974  font-size: 0.625rem;5975  color: var(--peach-t1);5976  flex: 1;5977}59785979/* ── Settings shortcuts grid ─────────────────────────────────────────── */5980.peach-shortcuts-grid {5981  display: grid;5982  grid-template-columns: auto 1fr;5983  gap: 6px 12px;5984  align-items: center;5985  padding: 4px 0;5986}5987.peach-shortcut-key {5988  font-family: var(--font-mono);5989  font-size: 0.625rem;5990  color: var(--peach-t0);5991  background: var(--peach-t3);5992  border-radius: 4px;5993  padding: 2px 6px;5994  white-space: nowrap;5995  text-align: center;5996}5997.peach-shortcut-desc {5998  font-size: 0.6875rem;5999  color: var(--peach-t1);6000}60016002/* ── Sort bar trash button ───────────────────────────────────────────── */6003.peach-sort-trash-btn {6004  display: flex;6005  align-items: center;6006  justify-content: center;6007  padding: 3px 5px;6008  background: transparent;6009  border: none;6010  cursor: pointer;6011  color: var(--peach-t2);6012  border-radius: 4px;6013  transition: color 140ms ease, background 140ms ease;6014}6015.peach-sort-trash-btn:hover {6016  color: var(--peach-t1);6017  background: var(--peach-t3);6018}6019.peach-sort-trash-btn.is-active {6020  color: var(--peach-accent);6021}60226023/* Accent color picker */6024.peach-settings-row--accent { align-items: flex-start; padding-top: 10px; }6025.peach-accent-picker {6026  display: flex;6027  flex-wrap: wrap;6028  gap: 7px;6029  padding: 2px 0;6030}6031.peach-accent-swatch {6032  width: 22px;6033  height: 22px;6034  border-radius: 50%;6035  border: 2px solid transparent;6036  cursor: pointer;6037  padding: 0;6038  transition: transform 100ms;6039  outline-offset: 2px;6040}6041.peach-accent-swatch:hover { transform: scale(1.15); }6042.peach-accent-swatch.is-active {6043  border-color: var(--peach-t0);6044  transform: scale(1.1);6045}60466047.peach-pill-group {6048  display: flex;6049  gap: 6px;6050}6051.peach-pill-group .peach-btn.is-active {6052  background: color-mix(in srgb, var(--peach-accent) 14%, transparent);6053  border-color: var(--peach-accent);6054  color: var(--peach-t0);6055}60566057/* ── Card entry styles ───────────────────────────────────────── */6058.peach-card-number {6059  font-family: var(--peach-mono);6060  letter-spacing: 0.08em;6061}60626063.peach-card-network-badge {6064  font-size: 0.625rem;6065  padding: 1px 5px;6066  border-radius: 4px;6067  border: 0.5px solid var(--peach-border);6068  color: var(--peach-text-dim);6069  margin-left: 6px;6070  vertical-align: middle;6071}60726073.peach-card-expiry-row {6074  display: flex;6075  align-items: center;6076  gap: 8px;6077}60786079.peach-card-expiry-sep {6080  color: var(--peach-text-dim);6081}60826083/* ── Pro tier — upgrade screen ──────────────────────────────── */6084.peach-pro-mark {6085  font-size: 0.5625rem;6086  color: var(--peach-accent);6087  margin-left: 6px;6088  vertical-align: super;6089  opacity: 0.7;6090}60916092.peach-pro-mini-badge {6093  display: block;6094  font-size: 0.625rem;6095  font-style: italic;6096  color: var(--peach-accent);6097  letter-spacing: 0.04em;6098  margin-top: -2px;6099  padding-left: 2px;6100  opacity: 0.85;6101  text-align: center;6102}61036104.peach-wordmark-stack {6105  display: inline-flex;6106  flex-direction: column;6107  align-items: center;6108}61096110/* ── Pro tier — upgrade page ─────────────────────────────────── */6111/* ── Pro upgrade — redesigned editorial layout ─────────────────── */61126113.peach-pro-upgrade {6114  display: flex;6115  flex-direction: column;6116  align-items: stretch;6117  gap: 10px;6118  padding: 2px 2px 12px;6119}61206121.peach-pro-eyebrow {6122  margin: 0;6123  font-family: var(--font-ui);6124  font-size: 0.625rem;6125  font-weight: 500;6126  letter-spacing: 0.12em;6127  color: var(--peach-accent);6128}61296130.peach-pro-headline {6131  margin: 0;6132  font-family: var(--font-display, "Cormorant Garamond", serif);6133  font-size: 30px;6134  font-weight: 700;6135  font-style: normal;6136  line-height: 1.05;6137  color: var(--peach-t0);6138  letter-spacing: -0.01em;6139}6140.peach-pro-headline em {6141  font-style: italic;6142  font-weight: 400;6143  color: var(--peach-accent);6144}61456146.peach-pro-subtitle {6147  margin: 0;6148  font-size: 0.6875rem;6149  line-height: 1.5;6150  color: var(--peach-t1);6151}61526153/* Group header for the Pro feature grid (e.g. "ADVANCED SECURITY"). */6154.peach-pro-section-label {6155  margin: 6px 0 0;6156  font-family: var(--font-ui);6157  font-size: 0.5625rem;6158  font-weight: 500;6159  letter-spacing: 0.12em;6160  text-transform: uppercase;6161  color: var(--peach-t2);6162}61636164/* 2-column numbered feature grid */6165.peach-pro-grid {6166  display: grid;6167  grid-template-columns: 1fr 1fr;6168  border-top: 1px solid var(--peach-border);6169  border-left: 1px solid var(--peach-border);6170}61716172.peach-pro-grid-item {6173  display: flex;6174  flex-direction: column;6175  gap: 2px;6176  padding: 8px 9px;6177  border-right: 1px solid var(--peach-border);6178  border-bottom: 1px solid var(--peach-border);6179}61806181.peach-pro-grid-item--wide {6182  grid-column: 1 / -1;6183}61846185.peach-pro-grid-num {6186  font-family: var(--font-mono);6187  font-size: 0.5625rem;6188  color: var(--peach-accent);6189  letter-spacing: 0.06em;6190  opacity: 0.85;6191}61926193.peach-pro-grid-name {6194  font-size: 0.8125rem;6195  font-weight: 500;6196  color: var(--peach-t0);6197  line-height: 1.2;6198}61996200.peach-pro-grid-desc {6201  font-size: 0.625rem;6202  color: var(--peach-t1);6203  line-height: 1.4;6204}62056206.peach-pro-grid-item.is-highlighted .peach-pro-grid-num {6207  animation: peach-pulse-accent 600ms ease-out forwards;6208}62096210@keyframes peach-pulse-accent {6211  0%   { opacity: 1; transform: scale(1.2); }6212  100% { opacity: 0.85; transform: scale(1); }6213}62146215/* Actions */6216.peach-pro-upgrade-actions {6217  display: flex;6218  flex-direction: column;6219  align-items: stretch;6220  gap: 10px;6221}62226223.peach-pro-pricing {6224  margin: 0;6225  font-size: 1rem;6226  font-weight: 600;6227  color: var(--peach-t0);6228  letter-spacing: 0.01em;6229}6230.peach-pro-pricing-sub {6231  font-size: 0.75rem;6232  font-weight: 400;6233  color: var(--peach-t1);6234  letter-spacing: 0.02em;6235}62366237.peach-pro-upgrade-cta {6238  display: flex;6239  align-items: center;6240  justify-content: center;6241  text-decoration: none;6242  background: color-mix(in srgb, var(--peach-accent) 18%, transparent);6243  border: 1px solid var(--peach-accent);6244  border-radius: 10px;6245  color: var(--peach-accent);6246  font-family: var(--font-ui);6247  font-size: 0.8125rem;6248  font-weight: 600;6249  letter-spacing: 0.06em;6250  padding: 11px 16px;6251  transition: background 0.15s ease, color 0.15s ease;6252}6253.peach-pro-upgrade-cta:hover {6254  background: color-mix(in srgb, var(--peach-accent) 28%, transparent);6255}62566257/* Pairing's terminal entitlement fallback reuses the Peach Pro card's6258   editorial hierarchy without embedding the settings deck itself. */6259.peach-pair-pro-required {6260  width: 100%;6261  display: flex;6262  flex-direction: column;6263  align-items: stretch;6264  gap: 10px;6265  text-align: left;6266}6267.peach-pair-pro-required .peach-pro-headline {6268  font-size: 1.75rem;6269}6270.peach-pair-pro-required .peach-pro-subtitle {6271  font-size: 0.6875rem;6272}6273.peach-pair-pro-grid {6274  grid-template-columns: 1fr;6275}6276.peach-pair-pro-button {6277  width: 100%;6278  cursor: pointer;6279}6280.peach-desktop-error--pro {6281  width: min(100%, 320px);6282  overflow-y: auto;6283}62846285.peach-pro-key-divider {6286  display: flex;6287  align-items: center;6288  gap: 8px;6289  color: var(--peach-t2);6290  font-size: 0.5625rem;6291  letter-spacing: 0.1em;6292}6293.peach-pro-key-divider::before,6294.peach-pro-key-divider::after {6295  content: "";6296  flex: 1;6297  height: 1px;6298  background: var(--peach-border);6299}63006301/* Inline key entry row */6302.peach-pro-key-inline {6303  display: flex;6304  align-items: center;6305  background: color-mix(in srgb, var(--peach-t0) 4%, transparent);6306  border: 1px solid var(--peach-border);6307  border-radius: 8px;6308  overflow: hidden;6309}6310.peach-pro-key-inline-input {6311  flex: 1;6312  background: transparent;6313  border: none;6314  outline: none;6315  color: var(--peach-t1);6316  font-family: var(--font-mono);6317  font-size: 0.625rem;6318  letter-spacing: 0.06em;6319  padding: 9px 10px;6320}6321.peach-pro-key-inline-input::placeholder {6322  color: var(--peach-t2);6323}6324.peach-pro-key-apply {6325  background: transparent;6326  border: none;6327  border-left: 1px solid var(--peach-border);6328  color: var(--peach-t2);6329  font-family: var(--font-ui);6330  font-size: 0.5625rem;6331  font-weight: 600;6332  letter-spacing: 0.08em;6333  padding: 9px 10px;6334  cursor: pointer;6335  transition: color 0.15s ease;6336  flex-shrink: 0;6337}6338.peach-pro-key-apply:not(:disabled):hover {6339  color: var(--peach-accent);6340}6341.peach-pro-key-apply:disabled {6342  opacity: 0.35;6343  cursor: not-allowed;6344}63456346/* ── Pro tier — key ceremony ─────────────────────────────────── */6347.peach-pro-key-ceremony {6348  display: flex;6349  flex-direction: column;6350  align-items: center;6351  gap: 12px;6352  padding: 20px 4px 16px;6353}63546355.peach-pro-key-ceremony .peach-lock-rune-string {6356  font-size: 1rem;6357  gap: 12px;6358  flex: 0;6359  justify-content: center;6360}63616362.peach-pro-key-ceremony-label {6363  margin: 0;6364  font-size: 0.6875rem;6365  color: var(--peach-t2);6366  font-style: italic;6367  letter-spacing: 0.04em;6368}63696370.peach-pro-key-input {6371  font-family: var(--font-mono, monospace);6372  letter-spacing: 0.06em;6373  text-align: center;6374  width: 100%;6375  box-sizing: border-box;6376}63776378.peach-pro-key-error {6379  margin: 0;6380  font-size: 0.75rem;6381  text-align: center;6382  color: var(--peach-breach, #e55);6383  padding: 0;6384}63856386.peach-pro-key-activate {6387  width: 100%;6388  text-align: center;6389  box-sizing: border-box;6390  padding: 10px 20px;6391  font-size: 0.8125rem;6392}63936394.peach-pro-key-cancel {6395  background: transparent;6396  border: 0;6397  color: var(--peach-t2);6398  font-size: 0.6875rem;6399  cursor: pointer;6400  padding: 2px 8px;6401  transition: color 0.2s;6402}64036404.peach-pro-key-cancel:hover { color: var(--peach-accent); }64056406/* ── Pro tier — active state ─────────────────────────────────── */6407.peach-pro-active {6408  display: flex;6409  flex-direction: column;6410  align-items: center;6411  gap: 0;6412  padding: 8px 4px 16px;6413  min-height: 280px;6414}64156416.peach-pro-active-hero {6417  display: flex;6418  flex-direction: column;6419  align-items: center;6420  gap: 6px;6421  padding: 20px 0 8px;6422}64236424.peach-pro-active-mark-wrap {6425  display: flex;6426  align-items: center;6427  justify-content: center;6428  margin-bottom: 4px;6429}64306431.peach-pro-active-mark {6432  width: 60px;6433  height: 60px;6434}64356436.peach-pro-active-title {6437  font-family: var(--font-display, var(--font-ui));6438  font-size: 26px;6439  margin: 0;6440  color: var(--peach-t0);6441  letter-spacing: 0.01em;6442}64436444.peach-pro-active-since {6445  margin: 0;6446  font-size: 0.6875rem;6447  color: var(--peach-t2);6448  font-style: italic;6449}64506451.peach-pro-active-features {6452  display: flex;6453  flex-direction: column;6454  gap: 8px;6455  width: 100%;6456  padding: 14px 8px 0;6457  border-top: 1px solid var(--peach-border);6458  flex: 1;6459}64606461.peach-pro-active-feature {6462  display: flex;6463  align-items: center;6464  gap: 9px;6465}64666467.peach-pro-active-feature-mark {6468  color: var(--peach-accent);6469  font-size: 0.625rem;6470  opacity: 0.65;6471  flex-shrink: 0;6472}64736474.peach-pro-active-feature-name {6475  font-size: 0.75rem;6476  color: var(--peach-t1);6477}64786479.peach-pro-deactivate {6480  align-self: center;6481  background: transparent;6482  border: 0;6483  color: var(--peach-t3);6484  font-size: 0.625rem;6485  cursor: pointer;6486  padding: 8px 0 0;6487  margin-top: 16px;6488  letter-spacing: 0.03em;6489  transition: color 0.2s;6490}64916492.peach-pro-deactivate:hover { color: var(--peach-t2); }64936494.peach-pro-deactivate:disabled {6495  opacity: 0.5;6496  cursor: default;6497}64986499/* ── Pro card activation sparkles & thank-you ── */6500button.peach-pro-active-mark-wrap {6501  background: transparent;6502  border: 0;6503  padding: 0;6504  cursor: pointer;6505  position: relative;6506  overflow: visible;6507}65086509.peach-pro-sparks {6510  position: absolute;6511  inset: 0;6512  pointer-events: none;6513  overflow: visible;6514}65156516.peach-pro-spark {6517  position: absolute;6518  top: 50%;6519  left: 50%;6520  font-size: 9px;6521  line-height: 1;6522  opacity: 0;6523  transform: translate(-50%, -50%);6524  animation: peach-pro-spark-fly 1.4s ease-out var(--spark-delay, 0ms) both;6525}65266527@keyframes peach-pro-spark-fly {6528  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0.5); }6529  25%  { opacity: 1; }6530  100% {6531    opacity: 0;6532    transform: translate(6533      calc(-50% + var(--spark-x, 0px)),6534      calc(-50% + var(--spark-y, -40px))6535    ) scale(0.8);6536  }6537}65386539.peach-pro-thankyou-text {6540  margin: 4px 0 0;6541  font-size: 0.6875rem;6542  font-style: italic;6543  color: currentColor;6544  opacity: 0;6545  animation: peach-pro-thankyou-flash 2.5s ease both;6546}65476548@keyframes peach-pro-thankyou-flash {6549  0%   { opacity: 0; transform: translateY(4px); }6550  15%  { opacity: 0.75; transform: translateY(0); }6551  75%  { opacity: 0.75; }6552  100% { opacity: 0; }6553}65546555/* ── Pro advanced health remediation queue ──────────────────── */6556.peach-health-pro-queue {6557  display: flex;6558  flex-direction: column;6559  gap: 10px;6560  padding: 12px;6561  margin: 0 0 12px;6562  background: color-mix(in srgb, var(--peach-accent) 4%, transparent);6563  border: 1px solid color-mix(in srgb, var(--peach-accent) 18%, transparent);6564  border-radius: 10px;6565}65666567.peach-health-pro-queue-head {6568  display: flex;6569  justify-content: space-between;6570  align-items: baseline;6571}65726573.peach-health-pro-queue-title {6574  font-size: 0.75rem;6575  font-weight: 500;6576  letter-spacing: 0.04em;6577  text-transform: uppercase;6578  color: var(--peach-accent);6579}65806581.peach-health-pro-queue-score {6582  font-size: 0.6875rem;6583  color: var(--peach-t2);6584}65856586.peach-health-pro-row {6587  display: flex;6588  gap: 10px;6589  align-items: center;6590  padding: 8px 0;6591  border-top: 1px solid var(--peach-border);6592}65936594.peach-health-pro-row-info {6595  flex: 1;6596  display: flex;6597  flex-direction: column;6598  gap: 4px;6599  min-width: 0;6600}66016602.peach-health-pro-action {6603  flex: 0 0 auto;6604  padding: 4px 8px;6605  font-size: 0.5625rem;6606  letter-spacing: 0.08em;6607  text-transform: uppercase;6608}66096610.peach-health-pro-row-name {6611  font-size: 0.8125rem;6612  color: var(--peach-t0);6613  overflow: hidden;6614  text-overflow: ellipsis;6615  white-space: nowrap;6616}66176618.peach-health-pro-row-meta {6619  font-size: 0.6875rem;6620  color: var(--peach-t2);6621}66226623.peach-health-pro-bar {6624  height: 2px;6625  background: var(--peach-border);6626  border-radius: 2px;6627  overflow: hidden;6628  margin-top: 2px;6629}66306631.peach-health-pro-bar-fill {6632  height: 100%;6633  background: var(--peach-accent);6634  transition: width 200ms ease-out;6635}66366637/* ── Pro activation celebration ── */6638@keyframes peach-pro-bloom {6639  0%   { filter: drop-shadow(0 0 0px var(--peach-glow)); }6640  40%  { filter: drop-shadow(0 0 24px var(--peach-accent))6641                 drop-shadow(0 0 48px var(--peach-glow)); }6642  100% { filter: drop-shadow(0 0 0px var(--peach-glow)); }6643}66446645@keyframes peach-pro-wordmark-in {6646  from { opacity: 0; transform: translateY(4px); }6647  to   { opacity: 1; transform: translateY(0); }6648}66496650@keyframes peach-pro-fade-out {6651  from { opacity: 1; }6652  to   { opacity: 0; }6653}66546655.peach-pro-celebration {6656  background:6657    radial-gradient(120% 80% at 0% 0%, var(--shell-accent-a) 0%, transparent 65%),6658    radial-gradient(85% 100% at 100% 100%, var(--shell-accent-b) 0%, transparent 70%),6659    var(--peach-bg);6660  border: 1px solid var(--peach-t3);6661  box-shadow:6662    0 2px 8px rgba(0,0,0,0.55),6663    0 14px 48px rgba(0,0,0,0.7),6664    0 0 0 1px rgba(240,232,216,0.04);6665  overflow: hidden;6666  width: 320px;6667  height: 520px;6668  display: flex;6669  flex-direction: column;6670  align-items: center;6671  justify-content: center;6672  gap: 8px;6673  padding: 32px 24px;6674  text-align: center;6675}66766677.peach-pro-celebration.is-leaving {6678  animation: peach-pro-fade-out 400ms ease forwards;6679}66806681.peach-pro-bloom-target {6682  display: flex;6683  align-items: center;6684  justify-content: center;6685  animation: peach-pro-bloom 600ms cubic-bezier(0.16, 1, 0.3, 1) forwards;6686  margin-bottom: 12px;6687}66886689.peach-pro-bloom-icon {6690  width: 48px;6691  height: 48px;6692}66936694.peach-pro-wordmark {6695  font-family: var(--font-display);6696  font-size: 22px;6697  font-style: italic;6698  font-weight: 400;6699  color: var(--peach-accent);6700  animation: peach-pro-wordmark-in 400ms cubic-bezier(0.16, 1, 0.3, 1) 500ms both;6701}67026703.peach-pro-thankyou {6704  font-size: 0.75rem;6705  font-style: italic;6706  color: var(--peach-t2);6707  animation: peach-pro-wordmark-in 400ms cubic-bezier(0.16, 1, 0.3, 1) 800ms both;6708}670967106711/* ── Pending Pro notice banner (shown after background sync gate fires) ── */6712.peach-pro-notice-banner {6713  display: flex;6714  align-items: center;6715  gap: 8px;6716  padding: 7px 12px;6717  background: color-mix(in srgb, var(--peach-accent) 12%, var(--peach-bg-card));6718  border-bottom: 1px solid color-mix(in srgb, var(--peach-accent) 25%, transparent);6719  font-size: 0.6875rem;6720  color: var(--peach-t2);6721  font-family: "IBM Plex Mono", monospace;6722  flex-shrink: 0;6723}67246725.peach-pro-notice-link {6726  background: none;6727  border: none;6728  padding: 0;6729  cursor: pointer;6730  font-size: 0.6875rem;6731  color: var(--peach-accent);6732  font-family: "IBM Plex Mono", monospace;6733  margin-left: auto;6734  white-space: nowrap;6735}67366737.peach-pro-notice-close {6738  background: none;6739  border: none;6740  padding: 0 0 0 4px;6741  cursor: pointer;6742  font-size: 0.625rem;6743  color: var(--peach-t3);6744  line-height: 1;6745}67466747/* ── Incoming pairing request overlay banner (Phase 7) ──────────────────6748   Renders over whatever view is showing. 60-second expiry; the popup ticks6749   the countdown each second and clears the banner when it hits zero. */6750.peach-pair-request-banner {6751  display: flex;6752  flex-direction: column;6753  gap: 8px;6754  padding: 10px 12px;6755  background: color-mix(in srgb, var(--peach-accent) 14%, var(--peach-bg-card));6756  border-bottom: 1px solid color-mix(in srgb, var(--peach-accent) 32%, transparent);6757  font-family: "IBM Plex Mono", monospace;6758  flex-shrink: 0;6759}67606761.peach-pair-toast {6762  padding: 8px 12px;6763  font-family: "IBM Plex Mono", monospace;6764  font-size: 0.75rem;6765  color: var(--peach-t1);6766  background: color-mix(in srgb, var(--peach-accent) 10%, var(--peach-bg-card));6767  border-bottom: 1px solid color-mix(in srgb, var(--peach-accent) 22%, transparent);6768  flex-shrink: 0;6769  text-align: center;6770}67716772.peach-pair-toast strong {6773  color: var(--peach-t0);6774  font-weight: 500;6775}67766777.peach-pair-request-header {6778  display: flex;6779  align-items: center;6780  gap: 8px;6781  font-size: 0.75rem;6782  color: var(--peach-t1);6783}67846785.peach-pair-request-mark {6786  font-size: 0.875rem;6787  display: inline-flex;6788  align-items: center;6789}67906791.peach-pair-request-icon {6792  width: 1em;6793  height: 1em;6794}67956796.peach-pair-request-title {6797  font-weight: 600;6798  color: var(--peach-t0);6799}68006801.peach-pair-request-countdown {6802  margin-left: auto;6803  font-variant-numeric: tabular-nums;6804  color: var(--peach-t2);6805  font-size: 0.6875rem;6806}68076808.peach-pair-request-body {6809  margin: 0;6810  font-size: 0.75rem;6811  color: var(--peach-t1);6812  line-height: 1.4;6813}68146815.peach-pair-request-body strong {6816  color: var(--peach-t0);6817  font-weight: 600;6818}68196820.peach-pair-request-actions {6821  display: flex;6822  gap: 8px;6823  justify-content: flex-end;6824}68256826/* ─── First-run onboarding ──────────────────────────────────────────────6827   Three-card welcome shown once before vault creation. The PeachScript6828   rune background drifts behind everything at very low opacity — it's6829   atmosphere, not focus. The cards themselves use the same panel6830   language as the rest of the popup so the transition into NewVault is6831   continuous, not a jarring switch of visual register. */68326833.peach-onboarding {6834  position: relative;6835  display: flex;6836  flex-direction: column;6837  width: 100%;6838  height: 100%;6839  padding: 16px 16px 18px;6840  box-sizing: border-box;6841  overflow: hidden;6842  animation: peach-onboard-enter 300ms cubic-bezier(0.16, 1, 0.3, 1) both;6843}68446845.peach-onboarding.is-completing {6846  animation: peach-onboard-exit 200ms ease-out forwards;6847}68486849.peach-rune-background {6850  position: absolute;6851  inset: 0;6852  width: 100%;6853  height: 100%;6854  pointer-events: none;6855  z-index: 0;6856  transition: opacity 500ms ease-out;6857}68586859.peach-onboarding.is-completing .peach-rune-background {6860  opacity: 0;6861}68626863.peach-onboarding-header {6864  position: relative;6865  z-index: 1;6866  display: flex;6867  align-items: center;6868  margin-bottom: 14px;6869}68706871.peach-onboarding-card {6872  position: relative;6873  z-index: 1;6874  flex: 1;6875  min-height: 0;6876  display: flex;6877  flex-direction: column;6878  gap: 10px;6879  padding: 22px 20px;6880  justify-content: center;6881  border-radius: 16px;6882  border: 1px solid var(--peach-t3);6883  background:6884    linear-gradient(180deg, rgba(240, 232, 216, 0.03), rgba(240, 232, 216, 0.015));6885  backdrop-filter: blur(3px);6886  -webkit-backdrop-filter: blur(3px);6887  box-shadow:6888    inset 0 1px 0 rgba(240, 232, 216, 0.04),6889    0 12px 28px rgba(0, 0, 0, 0.12);6890  cursor: pointer;6891  user-select: none;6892  overflow-y: auto;6893  scrollbar-width: none;6894  animation: peach-card-in 200ms cubic-bezier(0.16, 1, 0.3, 1) both;6895}68966897.peach-onboarding-card::-webkit-scrollbar {6898  display: none;6899}69006901.peach-onboarding-card.is-exiting {6902  animation: peach-card-out 120ms ease-in forwards;6903  pointer-events: none;6904}69056906/* The final card carries the choice rows on top of the full intro copy.6907 * The "Already using Peach?" block is a separate decision section — float it6908 * toward the bottom so the copy breathes and no dead gap pools under it6909 * (scroll stays available as a fallback on shorter viewports). */6910.peach-onboarding-card--final {6911  gap: 8px;6912  padding-top: 20px;6913  padding-bottom: 16px;6914  justify-content: flex-start;6915}69166917.peach-onboarding-card--final .peach-onboarding-body {6918  font-size: 0.75rem;6919  line-height: 1.5;6920}69216922.peach-onboarding-card--final .peach-onboarding-choice {6923  min-height: 40px;6924  padding: 6px 10px;6925}69266927.peach-onboarding-card--final .peach-onboarding-choice-row {6928  gap: 6px;6929}69306931.peach-onboarding-card--final .peach-onboarding-choice-heading {6932  margin: auto 0 -2px;6933}69346935.peach-onboarding-card-headline {6936  margin: 0;6937  font-family: var(--font-display);6938  font-style: italic;6939  font-weight: 400;6940  font-size: 22px;6941  line-height: 1.05;6942  color: var(--peach-t0);6943  white-space: pre-line;6944}69456946.peach-onboarding-divider {6947  margin: 4px 0 6px;6948  border: 0;6949  border-top: 1px solid var(--peach-t3);6950  width: 100%;6951}69526953.peach-onboarding-body {6954  margin: 0;6955  font-size: 0.8125rem;6956  line-height: 1.6;6957  color: var(--peach-t1);6958}69596960.peach-onboarding-warning {6961  display: flex;6962  align-items: flex-start;6963  gap: 8px;6964  margin: 6px 0 0;6965  padding-top: 8px;6966  border-top: 1px dashed var(--peach-t3);6967  font-size: 0.8125rem;6968  line-height: 1.5;6969  color: var(--peach-t1);6970}69716972.peach-onboarding-warning-icon {6973  color: var(--peach-accent);6974  font-size: 0.8125rem;6975  line-height: 1.5;6976  flex: 0 0 auto;6977}69786979.peach-onboarding-nav {6980  position: relative;6981  z-index: 1;6982  display: grid;6983  grid-template-columns: 1fr auto 1fr;6984  align-items: center;6985  margin-top: 12px;6986  padding: 0 4px;6987}69886989.peach-onboarding-next {6990  justify-self: end;6991}69926993.peach-onboarding-back {6994  justify-self: start;6995}69966997.peach-onboarding-dots {6998  display: flex;6999  align-items: center;7000  gap: 6px;7001}70027003.peach-onboarding-dot {7004  width: 6px;7005  height: 6px;7006  border-radius: 50%;7007  background: var(--peach-t2);7008  transition: width 200ms ease, height 200ms ease, background 200ms ease;7009}70107011.peach-onboarding-dot.is-active {7012  width: 8px;7013  height: 8px;7014  background: var(--peach-accent);7015}70167017.peach-onboarding-next {7018  background: none;7019  border: none;7020  padding: 4px 0;7021  cursor: pointer;7022  font-family: "IBM Plex Mono", monospace;7023  font-size: 0.6875rem;7024  letter-spacing: 0.04em;7025  color: var(--peach-t1);7026  transition: color 150ms ease;7027}70287029.peach-onboarding-next:hover {7030  color: var(--peach-t0);7031}70327033.peach-onboarding-next:disabled {7034  opacity: 0.5;7035  cursor: default;7036}70377038.peach-onboarding-back {7039  background: none;7040  border: none;7041  padding: 4px 0;7042  cursor: pointer;7043  font-family: "IBM Plex Mono", monospace;7044  font-size: 0.6875rem;7045  letter-spacing: 0.04em;7046  color: var(--peach-t2);7047  transition: color 150ms ease;7048}70497050.peach-onboarding-back:hover {7051  color: var(--peach-t0);7052}70537054.peach-onboarding-back:disabled {7055  opacity: 0.5;7056  cursor: default;7057}70587059/* Reserve back-button width on the first card so the dots stay centred */7060.peach-onboarding-back-spacer {7061  width: 44px;7062}70637064.peach-onboarding-choice-row {7065  display: grid;7066  grid-template-columns: 1fr;7067  gap: 8px;7068}70697070.peach-onboarding-choice-heading {7071  margin: 8px 0 -2px;7072  color: var(--peach-t1);7073  font-family: "IBM Plex Mono", monospace;7074  font-size: 0.6875rem;7075  letter-spacing: 0.04em;7076  text-transform: uppercase;7077}70787079.peach-onboarding-choice {7080  min-height: 48px;7081  border: 1px solid color-mix(in srgb, var(--peach-t0) 16%, transparent);7082  border-radius: 8px;7083  padding: 8px 10px;7084  background: color-mix(in srgb, var(--peach-t0) 7%, transparent);7085  color: var(--peach-t0);7086  font-size: 0.76rem;7087  font-weight: 700;7088  text-align: left;7089}70907091.peach-onboarding-choice-label {7092  display: flex;7093  align-items: center;7094  gap: 6px;7095}70967097.peach-onboarding-choice-detail {7098  display: block;7099}71007101.peach-onboarding-choice-detail {7102  margin-top: 2px;7103  color: var(--peach-t1);7104  font-size: 0.625rem;7105  font-weight: 400;7106  line-height: 1.35;7107}71087109.peach-onboarding-choice--adopt {7110  border-color: color-mix(in srgb, var(--peach-accent) 34%, transparent);7111  background: color-mix(in srgb, var(--peach-accent) 13%, transparent);7112}71137114.peach-adopt-vault {7115  position: relative;7116  min-height: 100%;7117  padding: 22px;7118  display: grid;7119  place-items: center;7120}71217122.peach-adopt-vault--pair {7123  padding: 10px;7124  overflow-y: auto;7125  scrollbar-width: none;7126}71277128.peach-adopt-vault--pair::-webkit-scrollbar {7129  display: none;7130}71317132.peach-adopt-card {7133  position: relative;7134  z-index: 1;7135  width: min(100%, 330px);7136  padding: 20px;7137  border-radius: 8px;7138  border: 1px solid color-mix(in srgb, var(--peach-t0) 13%, transparent);7139  background: color-mix(in srgb, var(--peach-surface) 90%, transparent);7140  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.28);7141}71427143.peach-adopt-card--pair {7144  width: 100%;7145  max-height: 500px;7146  margin: auto;7147  padding: 14px 16px 12px;7148  overflow-y: auto;7149  scrollbar-width: none;7150  border: 0;7151  border-radius: 16px;7152  background:7153    radial-gradient(7154      circle at 50% -10%,7155      color-mix(in srgb, var(--peach-accent) 14%, transparent),7156      transparent 38%7157    ),7158    color-mix(in srgb, var(--peach-surface) 94%, transparent);7159}71607161.peach-adopt-card--pair::-webkit-scrollbar {7162  display: none;7163}71647165.peach-adopt-card h1 {7166  margin: 0 0 10px;7167  font-family: var(--font-display);7168  font-style: italic;7169  font-weight: 400;7170  font-size: 1.42rem;7171  line-height: 1.15;7172}71737174.peach-adopt-card p {7175  margin: 0 0 14px;7176  color: var(--peach-t1);7177  line-height: 1.35;7178}71797180.peach-adopt-card .peach-hint-relay {7181  margin: 12px 0 0;7182  font-size: 11px;7183  line-height: 1.4;7184  color: var(--peach-t2);7185  opacity: 0.85;7186}71877188.peach-adopt-input {7189  margin-bottom: 12px;7190}71917192.peach-adopt-card textarea.peach-adopt-input {7193  width: 100%;7194  resize: vertical;7195  overflow-wrap: anywhere;7196  font-family: "IBM Plex Mono", monospace;7197  font-size: 0.64rem;7198}71997200.peach-adopt-qr-video {7201  display: block;7202  width: 100%;7203  max-height: 220px;7204  margin: 0 0 12px;7205  border: 1px solid color-mix(in srgb, var(--peach-accent) 40%, transparent);7206  border-radius: 8px;7207  background: #000;7208  object-fit: cover;7209}72107211.peach-adoption-source-invitation {7212  display: flex;7213  flex-direction: column;7214  align-items: center;7215  gap: 10px;7216  padding: 4px 18px 16px;7217  text-align: center;7218}72197220.peach-pair-qr {7221  display: block;7222  margin-inline: auto;7223  max-width: min(224px, 100%);7224  height: auto;7225  padding: 8px;7226  border-radius: 10px;7227  background: #fff;7228}72297230.peach-adopt-card > .peach-btn + .peach-btn {7231  margin-top: 8px;7232}72337234.peach-adopt-actions {7235  display: flex;7236  gap: 10px;7237  margin-top: 14px;7238}72397240.peach-adopt-actions > button {7241  flex: 1;7242}72437244.peach-adopt-sas {7245  margin: 18px 0;7246  padding: 14px;7247  border-radius: 8px;7248  background: color-mix(in srgb, var(--peach-accent) 18%, transparent);7249  color: var(--peach-t0);7250  font-size: 1.35rem;7251  font-weight: 800;7252  font-variant-numeric: tabular-nums;7253  text-align: center;7254}72557256.peach-adopt-pairing {7257  text-align: center;7258}72597260.peach-adopt-pairing h1 {7261  max-width: 260px;7262  margin: 0 auto 6px;7263  color: var(--peach-t0);7264  font-family: var(--font-display, Georgia, serif);7265  font-size: 1.42rem;7266  font-style: italic;7267  font-weight: 500;7268  line-height: 1.12;7269  text-wrap: balance;7270}72717272.peach-adopt-pairing .peach-adopt-pair-lede {7273  max-width: 258px;7274  margin: 0 auto;7275  color: color-mix(in srgb, var(--peach-t0) 82%, var(--peach-bg));7276  font-size: 0.73rem;7277  line-height: 1.42;7278  text-wrap: pretty;7279}72807281.peach-pair-stage.peach-adopt-bird-stage {7282  width: min(100%, 260px);7283  height: 102px;7284  margin: -6px auto 2px;7285}72867287.peach-adopt-bird-stage .peach-pair-bird-slot,7288.peach-adopt-bird-stage .peach-pair-bird {7289  width: 90px;7290  height: 90px;7291}72927293.peach-adopt-bird-stage .peach-pair-bird-slot-desktop {7294  left: 12px;7295}72967297.peach-adopt-bird-stage .peach-pair-bird-slot-mobile {7298  right: 12px;7299}73007301.peach-pair-stage.peach-adopt-bird-stage.act-paired .peach-pair-bird-slot-desktop {7302  --bb-x: 12px;7303  transform: translateX(12px);7304}73057306.peach-pair-stage.peach-adopt-bird-stage.act-paired .peach-pair-bird-slot-mobile {7307  --bb-x: -12px;7308  transform: translateX(-12px);7309}73107311.peach-pair-stage.peach-adopt-bird-stage.act-paired .peach-pair-bird-slot {7312  animation: peach-adopt-happy-bob 0.8s ease-in-out infinite;7313}73147315.peach-pair-stage.peach-adopt-bird-stage.act-paired .peach-pair-bird-slot-mobile {7316  animation-delay: 0.18s;7317  animation-direction: reverse;7318}73197320.peach-adopt-pairing.is-complete .peach-pair-stage.peach-adopt-bird-stage {7321  width: 100%;7322  height: 135px;7323  margin: -8px auto 6px;7324}73257326.peach-adopt-pairing.is-complete .peach-adopt-bird-stage .peach-pair-bird-slot,7327.peach-adopt-pairing.is-complete .peach-adopt-bird-stage .peach-pair-bird {7328  width: 112px;7329  height: 112px;7330}73317332.peach-adopt-pairing.is-complete .peach-adopt-bird-stage .peach-pair-bird-slot-desktop {7333  left: 0;7334  --bb-x: 0;7335  transform: translateX(0);7336}73377338.peach-adopt-pairing.is-complete .peach-adopt-bird-stage .peach-pair-bird-slot-mobile {7339  right: 0;7340  --bb-x: 0;7341  transform: translateX(0);7342}73437344.peach-adopt-pairing.is-complete h1 {7345  font-size: 1.6rem;7346}73477348.peach-adopt-pairing.is-complete .peach-adopt-pair-lede {7349  font-size: 0.78rem;7350}73517352@keyframes peach-adopt-happy-bob {7353  0%, 100% {7354    transform: translateX(var(--bb-x, 0)) translateY(0) rotate(0deg);7355  }7356  35% {7357    transform: translateX(var(--bb-x, 0)) translateY(-8px) rotate(-3deg);7358  }7359  70% {7360    transform: translateX(var(--bb-x, 0)) translateY(-3px) rotate(2deg);7361  }7362}73637364.peach-adopt-connection {7365  position: absolute;7366  left: 50%;7367  bottom: 38px;7368  width: 78px;7369  height: 1px;7370  translate: -50% 0;7371  background: color-mix(in srgb, var(--peach-accent) 62%, transparent);7372  box-shadow: 0 0 10px color-mix(in srgb, var(--peach-accent) 56%, transparent);7373}73747375.peach-adopt-pairing.is-complete .peach-adopt-connection {7376  bottom: 49px;7377  width: 92px;7378}73797380.peach-adopt-connection::after {7381  content: "";7382  position: absolute;7383  left: 50%;7384  top: 50%;7385  width: 7px;7386  height: 7px;7387  border-radius: 50%;7388  translate: -50% -50%;7389  background: var(--peach-accent);7390  box-shadow:7391    0 0 0 4px color-mix(in srgb, var(--peach-accent) 17%, transparent),7392    0 0 14px color-mix(in srgb, var(--peach-accent) 74%, transparent);7393  animation: peach-adopt-connection-pulse 1.1s ease-in-out infinite;7394}73957396@keyframes peach-adopt-connection-pulse {7397  0%, 100% { scale: 0.8; opacity: 0.72; }7398  50% { scale: 1.14; opacity: 1; }7399}74007401.peach-adopt-qr-wrap {7402  min-height: 160px;7403  display: grid;7404  place-items: center;7405}74067407.peach-adopt-qr-wrap .peach-hint-error {7408  margin: 12px 0;7409}74107411.peach-adopt-pairing .peach-adopt-pair-status {7412  margin: 0;7413  color: var(--peach-t0);7414  font-size: 0.75rem;7415}74167417.peach-adopt-confirmation {7418  margin-top: 18px;7419  padding: 8px 0 4px;7420}74217422.peach-adopt-confirmation .peach-adopt-confirmation-label {7423  margin: 0 0 7px;7424  color: color-mix(in srgb, var(--peach-accent) 72%, var(--peach-t0));7425  font-family: var(--peach-mono, "IBM Plex Mono", monospace);7426  font-size: 0.625rem;7427  font-weight: 700;7428  letter-spacing: 0.14em;7429}74307431.peach-adopt-confirmation .peach-adoption-sas {7432  margin: 0 auto;7433  padding: 12px 14px;7434  border-color: color-mix(in srgb, var(--peach-accent) 36%, transparent);7435  background: color-mix(in srgb, var(--peach-accent) 13%, transparent);7436}74377438.peach-adopt-confirmation .peach-adoption-sas strong {7439  color: color-mix(in srgb, var(--peach-accent) 84%, var(--peach-t0));7440  font-size: 1.58rem;7441  text-shadow: 0 0 16px color-mix(in srgb, var(--peach-accent) 30%, transparent);7442}74437444.peach-adopt-confirmation .peach-adopt-confirmation-help {7445  max-width: 270px;7446  margin: 8px auto 0;7447  color: color-mix(in srgb, var(--peach-t0) 78%, var(--peach-bg));7448  font-size: 0.7rem;7449  line-height: 1.45;7450}74517452.peach-adopt-privacy {7453  display: flex;7454  align-items: flex-start;7455  gap: 9px;7456  margin-top: 10px;7457  padding: 8px 9px;7458  border: 1px solid color-mix(in srgb, var(--peach-t0) 13%, transparent);7459  border-radius: 10px;7460  background: color-mix(in srgb, var(--peach-t0) 6%, transparent);7461  text-align: left;7462}74637464.peach-adopt-privacy svg {7465  width: 16px;7466  height: 16px;7467  flex: 0 0 auto;7468  margin-top: 1px;7469  fill: none;7470  stroke: color-mix(in srgb, var(--peach-accent) 74%, var(--peach-t0));7471  stroke-linecap: round;7472  stroke-linejoin: round;7473  stroke-width: 1.7;7474}74757476.peach-adopt-pairing .peach-adopt-privacy p {7477  margin: 0;7478  color: color-mix(in srgb, var(--peach-t0) 76%, var(--peach-bg));7479  font-size: 0.62rem;7480  line-height: 1.4;7481}74827483.peach-adopt-privacy strong {7484  color: var(--peach-t0);7485  font-weight: 700;7486}74877488.peach-adopt-pair-actions {7489  margin-top: 9px;7490}74917492.peach-adopt-pair-actions > button {7493  width: 100%;7494}74957496.peach-adopt-paired-status {7497  display: inline-flex;7498  align-items: center;7499  gap: 8px;7500  margin: 22px auto 18px;7501  padding: 9px 13px;7502  border: 1px solid color-mix(in srgb, var(--peach-accent) 30%, transparent);7503  border-radius: 999px;7504  background: color-mix(in srgb, var(--peach-accent) 12%, transparent);7505  color: color-mix(in srgb, var(--peach-accent) 78%, var(--peach-t0));7506  font-family: var(--peach-mono, "IBM Plex Mono", monospace);7507  font-size: 0.66rem;7508  font-weight: 700;7509  letter-spacing: 0.04em;7510}75117512.peach-adopt-paired-status span {7513  width: 7px;7514  height: 7px;7515  border-radius: 50%;7516  background: var(--peach-accent);7517  box-shadow: 0 0 8px color-mix(in srgb, var(--peach-accent) 68%, transparent);7518}75197520@media (prefers-reduced-motion: reduce) {7521  .peach-adopt-connection::after {7522    animation: none;7523  }7524}75257526.peach-onboarding-mobile-card-buttons {7527  display: flex;7528  flex-direction: column;7529  gap: 8px;7530  margin-top: 16px;7531}75327533@keyframes peach-onboard-enter {7534  from { opacity: 0; transform: translateY(20px); }7535  to   { opacity: 1; transform: translateY(0); }7536}75377538@keyframes peach-onboard-exit {7539  from { opacity: 1; }7540  to   { opacity: 0; }7541}75427543@keyframes peach-card-in {7544  from { opacity: 0; transform: translateX(12px); }7545  to   { opacity: 1; transform: translateX(0); }7546}75477548@keyframes peach-card-out {7549  from { opacity: 1; transform: translateX(0); }7550  to   { opacity: 0; transform: translateX(-12px); }7551}75527553/* ─── New vault screen — matched to onboarding card language ─────────── */75547555/* Two classes so this beats the shared .peach-screen.lock-screen--vault-stage7556   rule (same element) without loosening the unlock/restore screens. The7557   create-vault screen is the only vault-stage view tall enough to overflow7558   the 520px popup, so its spacing is tuned to fit header → card → restore →7559   recovery warning with nothing clipped. */7560.peach-screen.peach-newvault {7561  position: relative;7562  display: flex;7563  flex-direction: column;7564  gap: 12px;7565  padding: 16px 16px 12px;7566  overflow: hidden;7567}75687569/* Suppress the warm-blob ambient art inherited from .lock-screen — the7570   new vault card now carries the visual weight. */7571.peach-newvault::before {7572  content: none;7573}75747575/* Wordmark sits in the exact same spot as on the onboarding cards; the7576   back button takes the right side so the wordmark never shifts. */7577.peach-newvault-header {7578  position: relative;7579  z-index: 2;7580  display: flex;7581  align-items: center;7582  justify-content: space-between;7583  gap: 10px;7584  margin-bottom: 2px;7585}75867587.peach-newvault-back {7588  display: inline-flex;7589  align-items: center;7590  gap: 4px;7591  background: transparent;7592  border: none;7593  color: var(--peach-t2);7594  font-family: "IBM Plex Mono", monospace;7595  font-size: 0.625rem;7596  letter-spacing: 0.06em;7597  cursor: pointer;7598  padding: 4px 6px;7599  border-radius: 6px;7600  transition: color 120ms ease, background 120ms ease;7601}76027603.peach-newvault-back:hover {7604  color: var(--peach-t0);7605  background: rgba(240, 232, 216, 0.04);7606}76077608.peach-newvault-mark {7609  position: absolute;7610  right: -12px;7611  top: 44px;7612  width: 110px;7613  height: 110px;7614  pointer-events: none;7615  opacity: 0.10;7616  filter: saturate(0.9);7617  z-index: 0;7618}7619.peach-newvault-mark-art {7620  width: 100%;7621  height: 100%;7622}7623.peach-newvault-mark-art path:nth-child(1) {7624  fill: rgba(123, 144, 96, 0.88);7625}7626.peach-newvault-mark-art path:nth-child(2) {7627  stroke: rgba(94, 122, 66, 0.95);7628}76297630.peach-newvault-card {7631  position: relative;7632  z-index: 1;7633  flex: 1;7634  display: flex;7635  flex-direction: column;7636  gap: 8px;7637  padding: 16px 20px 14px;7638  border-radius: 16px;7639  border: 1px solid var(--peach-t3);7640  background:7641    linear-gradient(180deg, rgba(240, 232, 216, 0.03), rgba(240, 232, 216, 0.015));7642  backdrop-filter: blur(3px);7643  -webkit-backdrop-filter: blur(3px);7644  box-shadow:7645    inset 0 1px 0 rgba(240, 232, 216, 0.04),7646    0 12px 28px rgba(0, 0, 0, 0.12);7647  animation: peach-onboard-enter 320ms cubic-bezier(0.16, 1, 0.3, 1) both;7648}76497650/* Create-vault card only (the restore card lays out differently — see7651   .peach-restore-card). The warning hugs the glass edge with a small7652   margin; leftover height distributes between elements so they breathe7653   instead of leaving one dead gap. Scroll stays available as a fallback7654   on shorter viewports. */7655.peach-newvault-card:not(.peach-restore-card) {7656  min-height: 0;7657  gap: 10px;7658  padding: 14px 22px 16px;7659  justify-content: space-between;7660  overflow-y: auto;7661  scrollbar-width: none;7662}76637664.peach-newvault-card:not(.peach-restore-card)::-webkit-scrollbar {7665  display: none;7666}76677668.peach-newvault-headline {7669  margin: 0;7670  font-family: var(--font-display);7671  font-style: italic;7672  font-weight: 400;7673  font-size: 24px;7674  line-height: 1.05;7675  color: var(--peach-t0);7676  white-space: pre-line;7677}76787679.peach-newvault-divider {7680  margin: 2px 0 4px;7681  border: 0;7682  border-top: 1px solid var(--peach-t3);7683  width: 100%;7684}76857686.peach-newvault-field {7687  display: flex;7688  flex-direction: column;7689  gap: 4px;7690}76917692.peach-newvault-label-row {7693  display: flex;7694  align-items: center;7695  justify-content: space-between;7696}76977698/* Monospace input scaled to the card. Replaces the 22px unlock-input7699   so the placeholder no longer overflows and the field reads as part7700   of the same surface as the body copy. */7701.peach-newvault-input {7702  font-size: 0.875rem;7703  letter-spacing: 0.18em;7704  padding: 8px 0;7705}7706.peach-newvault-input::placeholder {7707  letter-spacing: 0.18em;7708  color: var(--peach-t2);7709}77107711.peach-newvault-hint {7712  margin: 2px 0 0;7713  font-family: "IBM Plex Mono", monospace;7714  font-size: 0.625rem;7715  color: var(--peach-t2);7716  letter-spacing: 0.04em;7717}77187719.peach-newvault-submit {7720  margin-top: 4px;7721}77227723.peach-newvault-warning {7724  display: flex;7725  align-items: flex-start;7726  gap: 8px;7727  margin: 0;7728  padding-top: 8px;7729  border-top: 1px dashed var(--peach-t3);7730  font-size: 0.75rem;7731  line-height: 1.45;7732  color: var(--peach-t1);7733}77347735.peach-newvault-warning-icon {7736  color: var(--peach-accent);7737  font-size: 0.8125rem;7738  line-height: 1.4;7739  flex: 0 0 auto;7740}77417742/* Restore options sit inside the card, directly under "create vault", so7743   they are always reachable without scrolling. The top divider mirrors the7744   warning's so the choice reads as a deliberate fork, not a footnote. */7745.peach-newvault-restore {7746  position: relative;7747  z-index: 1;7748  display: flex;7749  flex-direction: column;7750  gap: 4px;7751  margin-top: 4px;7752  padding-top: 10px;7753  border-top: 1px dashed var(--peach-t3);7754}77557756/* Settings body — warm accent gradient gives the glass something to blur against */7757.peach-settings-body {7758  background:7759    radial-gradient(7760      ellipse at 30% 20%,7761      color-mix(in srgb, var(--peach-accent) 8%, transparent) 0%,7762      transparent 60%7763    );7764}77657766/* ── Danger zone (Settings home → Panic flow) ──────────────────────────── */7767/* ── Danger cards (Replace + Destroy) ────────────────────────────────────7768 * Two severity levels: "warn" for actions that are dangerous-but-recoverable7769 * (replacing the vault from a backup file) and "hazard" for actions that7770 * are absolutely irreversible (Panic). Both use the same card scaffold so7771 * they read as a pair, but the colour family signals the severity at a7772 * glance — yellow for caution, red for don't.7773 */7774.peach-danger-card {7775  --danger-tint: 235, 158, 52; /* amber */7776  display: flex;7777  flex-direction: column;7778  gap: 8px;7779  padding: 14px;7780  margin-top: 10px;7781  border-radius: 12px;7782  border: 1px solid rgba(var(--danger-tint), 0.32);7783  background:7784    radial-gradient(120% 120% at 0% 0%, rgba(var(--danger-tint), 0.10) 0%, transparent 60%),7785    rgba(var(--danger-tint), 0.04);7786  box-shadow:7787    inset 0 1px 0 rgba(var(--danger-tint), 0.08),7788    0 0 24px rgba(var(--danger-tint), 0.04);7789  transition: box-shadow 220ms ease, border-color 220ms ease, transform 180ms ease;7790}77917792.peach-danger-card:hover {7793  border-color: rgba(var(--danger-tint), 0.55);7794  box-shadow:7795    inset 0 1px 0 rgba(var(--danger-tint), 0.12),7796    0 0 36px rgba(var(--danger-tint), 0.10);7797}77987799.peach-danger-card--hazard {7800  --danger-tint: 220, 38, 38; /* red */7801}78027803.peach-danger-card-head {7804  display: flex;7805  align-items: center;7806  gap: 10px;7807}78087809.peach-danger-card-glyph {7810  width: 28px;7811  height: 28px;7812  flex-shrink: 0;7813  display: flex;7814  align-items: center;7815  justify-content: center;7816  border-radius: 8px;7817  background: rgba(var(--danger-tint), 0.12);7818  color: rgba(var(--danger-tint), 0.95);7819  font-size: 1rem;7820  line-height: 1;7821}78227823.peach-danger-card-title {7824  margin: 0;7825  font-size: 0.8125rem;7826  font-weight: 600;7827  color: rgba(var(--danger-tint), 0.92);7828  letter-spacing: 0.01em;7829}78307831.peach-danger-card-copy {7832  margin: 0;7833  font-size: 0.6875rem;7834  line-height: 1.5;7835  color: var(--peach-t2);7836}78377838.peach-danger-card-button {7839  width: 100%;7840  padding: 9px;7841  margin-top: 4px;7842  background: transparent;7843  border: 1px solid rgba(var(--danger-tint), 0.45);7844  border-radius: 8px;7845  color: rgba(var(--danger-tint), 0.9);7846  font-size: 0.75rem;7847  font-weight: 500;7848  letter-spacing: 0.02em;7849  cursor: pointer;7850  transition: background 150ms ease, border-color 150ms ease, color 150ms ease;7851}78527853.peach-danger-card-button:hover {7854  background: rgba(var(--danger-tint), 0.10);7855  border-color: rgba(var(--danger-tint), 0.75);7856  color: rgb(var(--danger-tint));7857}78587859.peach-adoption-sas {7860  margin: 16px auto 0;7861  padding: 12px 16px;7862  border: 1px solid color-mix(in srgb, var(--peach-t0) 18%, transparent);7863  border-radius: 10px;7864  background: color-mix(in srgb, var(--peach-t0) 7%, transparent);7865  color: var(--peach-t0);7866  text-align: center;7867}78687869.peach-adoption-sas strong {7870  font-size: 1.65rem;7871  font-variant-numeric: tabular-nums;7872  letter-spacing: 0.18em;7873  white-space: nowrap;7874}78757876/* ── Panic flow (three-step destruction) ───────────────────────────────── */7877.peach-panic {7878  display: flex;7879  flex-direction: column;7880  flex: 1;7881  min-height: 0;7882  padding: 28px 20px 20px;7883  gap: 18px;7884  overflow-y: auto;7885  scrollbar-width: none;7886  -ms-overflow-style: none;7887}78887889.peach-panic::-webkit-scrollbar { display: none; }78907891.peach-panic-step2 {7892  background: rgba(220, 38, 38, 0.04);7893}78947895.peach-panic-step3 {7896  position: relative;7897  background: #0f0505;7898  color: #ffffff;7899  overflow: hidden;7900}79017902.peach-panic-rune-bg {7903  position: absolute;7904  inset: 0;7905  opacity: 0.22;7906  pointer-events: none;7907  overflow: hidden;7908}79097910.peach-panic-rune-bg canvas {7911  width: 100% !important;7912  height: 100% !important;7913}79147915.peach-panic-icon {7916  font-size: 32px;7917  color: rgb(220, 38, 38);7918  line-height: 1;7919}79207921.peach-panic-title {7922  margin: 0;7923  font-size: 18px;7924  font-weight: 500;7925  color: var(--peach-t1);7926}79277928.peach-panic-title--severe {7929  font-size: 20px;7930  font-weight: 700;7931  color: rgb(220, 38, 38);7932}79337934.peach-panic-body {7935  margin: 0;7936  font-size: 0.8125rem;7937  line-height: 1.55;7938  color: var(--peach-t2);7939}79407941.peach-panic-body--severe {7942  color: rgba(220, 38, 38, 0.85);7943}79447945.peach-panic-body--final {7946  font-size: 1rem;7947  font-weight: 700;7948  color: rgb(255, 80, 80);7949  line-height: 1.4;7950}79517952.peach-panic-body--final-intro {7953  font-size: 1rem;7954  color: #ffffff;7955  font-weight: 400;7956}79577958.peach-panic-divider {7959  height: 1px;7960  background: rgba(255, 255, 255, 0.08);7961  margin: 4px 0;7962}79637964.peach-panic-confirm-input {7965  width: 100%;7966  padding: 10px 12px;7967  background: rgba(255, 255, 255, 0.02);7968  border: 1px solid rgba(220, 38, 38, 0.4);7969  border-radius: 8px;7970  color: var(--peach-t1);7971  font-family: "IBM Plex Mono", monospace;7972  font-size: 0.875rem;7973  letter-spacing: 0.12em;7974  text-transform: uppercase;7975}79767977.peach-panic-confirm-input:focus {7978  outline: none;7979  border-color: rgb(220, 38, 38);7980}79817982.peach-panic-confirm-input--match {7983  border-color: rgb(220, 38, 38);7984  color: rgb(220, 38, 38);7985}79867987.peach-panic-confirm-label {7988  font-size: 0.6875rem;7989  color: var(--peach-t2);7990  margin: 0 0 -8px;7991  letter-spacing: 0.06em;7992}79937994.peach-panic-actions {7995  display: flex;7996  flex-direction: column;7997  gap: 10px;7998  margin-top: auto;7999}80008001.peach-panic-button {8002  width: 100%;8003  padding: 12px;8004  border-radius: 8px;8005  font-size: 0.8125rem;8006  cursor: pointer;8007  transition: background 150ms ease, border-color 150ms ease, color 150ms ease;8008}80098010.peach-panic-button--primary {8011  background: var(--peach-accent);8012  border: 1px solid var(--peach-accent);8013  color: #ffffff;8014  font-weight: 600;8015}80168017.peach-panic-button--primary:hover {8018  background: color-mix(in srgb, var(--peach-accent) 88%, white);8019}80208021.peach-panic-button--danger {8022  background: rgb(220, 38, 38);8023  border: 1px solid rgb(220, 38, 38);8024  color: #ffffff;8025  font-weight: 600;8026}80278028.peach-panic-button--danger:disabled {8029  opacity: 0.35;8030  cursor: not-allowed;8031}80328033.peach-panic-button--ghost {8034  background: transparent;8035  border: 1px solid rgba(255, 255, 255, 0.18);8036  color: var(--peach-t2);8037}80388039.peach-panic-button--ghost:hover {8040  border-color: rgba(255, 255, 255, 0.32);8041  color: var(--peach-t1);8042}80438044.peach-panic-link {8045  background: transparent;8046  border: none;8047  padding: 4px 0;8048  color: rgba(220, 38, 38, 0.65);8049  font-size: 0.75rem;8050  cursor: pointer;8051  text-align: left;8052  text-decoration: underline;8053  text-underline-offset: 3px;8054}80558056.peach-panic-link:hover {8057  color: rgb(220, 38, 38);8058}80598060.peach-panic-bar {8061  background: rgb(220, 38, 38);8062  padding: 16px 20px;8063  margin: -28px -20px 0;8064  text-align: center;8065  font-size: 0.8125rem;8066  font-weight: 700;8067  letter-spacing: 0.12em;8068  color: #ffffff;8069}80708071.peach-panic-final-button {8072  width: 100%;8073  padding: 14px;8074  background: rgb(220, 38, 38);8075  border: none;8076  border-radius: 8px;8077  color: #ffffff;8078  font-size: 0.875rem;8079  font-weight: 700;8080  letter-spacing: 0.08em;8081  text-transform: uppercase;8082  cursor: pointer;8083  animation: peach-panic-pulse 2s ease-in-out infinite;8084}80858086.peach-settings-license {8087  margin-top: 10px;8088  padding-top: 10px;8089  border-top: 1px solid var(--peach-t3);8090}80918092.peach-settings-label {8093  font-size: 0.625rem;8094  letter-spacing: 0.08em;8095  color: var(--peach-t2);8096  display: block;8097  margin-bottom: 6px;8098}80998100.peach-settings-license-row {8101  display: flex;8102  align-items: center;8103  justify-content: space-between;8104  gap: 8px;8105}81068107.peach-settings-license-key {8108  font-family: 'IBM Plex Mono', monospace;8109  font-size: 0.75rem;8110  color: var(--peach-t0);8111  letter-spacing: 0.04em;8112  word-break: break-all;8113  flex: 1;8114  min-width: 0;8115}81168117.peach-settings-license-key--masked {8118  font-family: 'IBM Plex Mono', monospace;8119  font-size: 0.6rem;8120  color: var(--peach-t1);8121  letter-spacing: 0.18em;8122  user-select: none;8123}81248125.peach-settings-license-actions {8126  display: flex;8127  align-items: center;8128  gap: 2px;8129  flex-shrink: 0;8130}81318132.peach-settings-license-copy {8133  font-size: 0.6875rem;8134  color: var(--peach-accent);8135  background: transparent;8136  border: none;8137  cursor: pointer;8138  padding: 4px 8px;8139  border-radius: 4px;8140  flex-shrink: 0;8141  transition: opacity 150ms ease;8142}81438144.peach-settings-license-copy:hover {8145  opacity: 0.75;8146}81478148.peach-settings-license-toggle {8149  display: flex;8150  align-items: center;8151  justify-content: center;8152  background: transparent;8153  border: none;8154  cursor: pointer;8155  padding: 4px 6px;8156  border-radius: 4px;8157  color: var(--peach-t2);8158  transition: color 150ms ease;8159}81608161.peach-settings-license-toggle:hover {8162  color: var(--peach-t1);8163}81648165@keyframes peach-panic-pulse {8166  0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, 0.4); }8167  50%      { box-shadow: 0 0 0 8px rgba(220, 38, 38, 0); }8168}81698170[data-motion="reduce"] .peach-panic-final-button {8171  animation: none;8172}81738174/* Vault History — Settings → Vault sub-view */81758176.peach-history-list {8177  border: 1px solid var(--peach-border);8178  border-radius: 8px;8179  overflow: hidden;8180  margin: 8px 0 4px;8181}81828183.peach-history-row {8184  display: flex;8185  align-items: center;8186  justify-content: space-between;8187  padding: 9px 12px;8188  gap: 10px;8189  border-bottom: 1px solid var(--peach-border);8190}81918192.peach-history-row:last-child {8193  border-bottom: none;8194}81958196.peach-history-meta {8197  display: flex;8198  flex-direction: column;8199  gap: 2px;8200  min-width: 0;8201  flex: 1;8202}82038204.peach-history-time {8205  font-size: 0.75rem;8206  font-family: 'IBM Plex Mono', ui-monospace, monospace;8207  color: var(--peach-t0);8208  white-space: nowrap;8209  overflow: hidden;8210  text-overflow: ellipsis;8211}82128213.peach-history-sub {8214  font-size: 0.625rem;8215  color: var(--peach-t2);8216  letter-spacing: 0.06em;8217  text-transform: uppercase;8218  white-space: nowrap;8219  overflow: hidden;8220  text-overflow: ellipsis;8221}82228223.peach-history-btn {8224  flex-shrink: 0;8225  white-space: nowrap;8226  min-width: 56px;8227  text-align: center;8228}82298230.peach-history-btn.is-busy {8231  opacity: 0.65;8232}82338234.peach-history-footer {8235  font-size: 0.625rem;8236  color: var(--peach-t3);8237  letter-spacing: 0.05em;8238  text-align: right;8239  margin: 0;8240  padding: 2px 0 0;8241}82428243/* ── Context menu + swipe-copy flash ─────────────────────── */8244.peach-context-menu-backdrop {8245  position: fixed;8246  inset: 0;8247  background: rgba(0, 0, 0, 0.45);8248  z-index: 100;8249  display: flex;8250  align-items: flex-end;8251  justify-content: center;8252  animation: peach-ctx-fade 140ms ease both;8253}8254.peach-context-menu {8255  width: min(360px, calc(100vw - 24px));8256  margin-bottom: max(env(safe-area-inset-bottom), 12px);8257  background: var(--peach-bg);8258  border: 1px solid var(--peach-t3);8259  border-radius: 14px;8260  padding: 6px;8261  display: flex;8262  flex-direction: column;8263  gap: 2px;8264  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.55);8265  animation: peach-ctx-rise 200ms cubic-bezier(0.16, 1, 0.3, 1) both;8266}8267@keyframes peach-ctx-fade { from { opacity: 0; } to { opacity: 1; } }8268@keyframes peach-ctx-rise {8269  from { transform: translateY(16px); opacity: 0; }8270  to   { transform: translateY(0);    opacity: 1; }8271}8272.peach-context-menu-item {8273  background: transparent;8274  color: var(--peach-t0);8275  border: 0;8276  border-radius: 10px;8277  padding: 12px 14px;8278  text-align: left;8279  font: inherit;8280  cursor: pointer;8281}8282.peach-context-menu-item:hover,8283.peach-context-menu-item:focus-visible {8284  background: var(--peach-t3);8285}8286.peach-context-menu-item--danger {8287  color: var(--peach-health-bad, #d96868);8288}8289.peach-context-menu-item--cancel {8290  color: var(--peach-t2);8291  margin-top: 4px;8292  border-top: 1px solid var(--peach-t3);8293  border-radius: 0 0 10px 10px;8294}82958296/* Swipe-to-copy flash */8297.peach-entry-row.is-copy-flash {8298  animation: peach-copy-flash 600ms ease both;8299}8300@keyframes peach-copy-flash {8301  0%   { background: transparent; }8302  20%  { background: rgba(217, 153, 51, 0.32); }8303  100% { background: transparent; }8304}83058306html { font-size: 16px; }83078308/* ── Recovery word entry ─────────────────────────────────────────── */8309.peach-lock-recover-link {8310  display: block;8311  width: 100%;8312  margin-top: 12px;8313  background: none;8314  border: none;8315  font-family: "IBM Plex Mono", monospace;8316  font-size: 0.625rem;8317  letter-spacing: 0.06em;8318  color: var(--peach-t2);8319  cursor: pointer;8320  text-align: center;8321  padding: 4px;8322  transition: color 120ms ease;8323}8324.peach-lock-recover-link:hover {8325  color: var(--peach-t0);8326}83278328.lock-screen--recovery {8329  display: flex;8330  flex-direction: column;8331  align-items: stretch;8332  padding: 12px 20px 24px;8333  overflow: hidden;8334}83358336.peach-recovery-nav {8337  display: flex;8338  align-items: center;8339  position: relative;8340  z-index: 1;8341  margin-bottom: 4px;8342}83438344/* Mask runes to the top decorative band only — keep inputs and the8345   bottom CTA button clear. The bottom of the popup is reserved for8346   submit buttons; rendering runes there overlaps the button glyph. */8347.peach-rune-background--recovery {8348  -webkit-mask-image: linear-gradient(8349    to bottom,8350    black 0px, black 85px,8351    transparent 110px,8352    transparent 100%8353  );8354  mask-image: linear-gradient(8355    to bottom,8356    black 0px, black 85px,8357    transparent 110px,8358    transparent 100%8359  );8360}83618362.peach-recovery-header {8363  text-align: center;8364  margin-bottom: 0;8365  margin-top: 2px;8366}8367.peach-recovery-header .peach-onboarding-headline {8368  font-size: 1.25rem;8369  font-weight: 300;8370  letter-spacing: 0.02em;8371  /* max-width:252px inherited above is narrower than the section — without8372     auto margins the text box sits left-of-center. */8373  margin: 0 auto 4px;8374}8375.peach-recovery-header .peach-hint {8376  font-family: "IBM Plex Mono", monospace;8377  font-size: 0.625rem;8378  color: var(--peach-t1);8379  letter-spacing: 0.04em;8380  margin: 0;8381}8382.peach-recovery-header .peach-hint--warning {8383  color: var(--peach-accent);8384}83858386/* 12-word grid: 2 columns × 6 rows */8387.peach-recovery-grid {8388  display: grid;8389  grid-template-columns: repeat(2, 1fr);8390  gap: 12px 20px;8391  width: 100%;8392  margin-bottom: 0;8393}83948395.peach-recovery-word-slot {8396  display: flex;8397  align-items: center;8398  gap: 6px;8399  min-width: 0;8400}84018402.peach-recovery-word-index {8403  font-family: "IBM Plex Mono", monospace;8404  font-size: 0.5rem;8405  color: rgba(255, 255, 255, 0.35);8406  min-width: 14px;8407  flex-shrink: 0;8408  text-align: right;8409  letter-spacing: 0.04em;8410}84118412.peach-recovery-word-input {8413  flex: 1;8414  min-width: 0;8415  background: transparent;8416  border: none;8417  border-bottom: 1px solid rgba(255, 255, 255, 0.22);8418  color: var(--peach-t0);8419  font-family: "IBM Plex Mono", monospace;8420  font-size: 0.6875rem;8421  letter-spacing: 0.06em;8422  padding: 5px 2px 4px;8423  outline: none;8424  text-transform: lowercase;8425  transition: border-color 120ms ease;8426}8427.peach-recovery-word-input::placeholder {8428  color: rgba(255, 255, 255, 0.18);8429}8430.peach-recovery-word-input:focus {8431  border-bottom-color: var(--peach-accent);8432}84338434.peach-recovery-submit {8435  width: 100%;8436  margin-top: auto;8437}84388439.peach-recovery-new-password-form {8440  width: 100%;8441  display: flex;8442  flex-direction: column;8443  gap: 16px;8444  margin-bottom: 8px;8445}8446.peach-recovery-new-password-form .peach-newvault-field {8447  display: flex;8448  flex-direction: column;8449  gap: 4px;8450}84518452/* ── Recovery words display (post-create) ──────────────────────────8453   Condensed so word list + confirmation fit the 520px popup with no8454   scroll — the confirm button must never be clipped. */8455.lock-screen--recovery-display {8456  display: flex;8457  flex-direction: column;8458  align-items: stretch;8459  padding: 10px 16px 12px;8460  gap: 8px;8461  min-height: 0;8462  overflow-y: auto;8463}84648465.peach-recovery-words-display {8466  width: 100%;8467  margin-bottom: 0;8468  border: 1px solid var(--peach-t3);8469  border-radius: 8px;8470  padding: 10px 14px;8471  background: rgba(245, 240, 234, 0.04);8472}84738474.peach-recovery-words-label {8475  font-family: "IBM Plex Mono", monospace;8476  font-size: 0.5rem;8477  letter-spacing: 0.08em;8478  color: var(--peach-t2);8479  text-transform: uppercase;8480  margin-bottom: 8px;8481  text-align: center;8482}84838484.peach-recovery-word-list {8485  list-style: none;8486  margin: 0;8487  padding: 0;8488  display: grid;8489  grid-template-columns: repeat(2, 1fr);8490  gap: 5px 16px;8491}84928493.peach-recovery-word-item {8494  display: flex;8495  align-items: baseline;8496  justify-content: center;8497  gap: 5px;8498}84998500.peach-recovery-word-num {8501  font-family: "IBM Plex Mono", monospace;8502  font-size: 0.5rem;8503  color: var(--peach-accent);8504  width: 14px;8505  flex: 0 0 14px;8506  text-align: right;8507  letter-spacing: 0.04em;8508  font-variant-numeric: tabular-nums;8509}85108511.peach-recovery-download-btn {8512  display: block;8513  margin: 8px auto 0;8514  padding: 4px 10px;8515  background: transparent;8516  border: 1px solid var(--peach-border);8517  border-radius: 6px;8518  color: var(--peach-t2);8519  font-family: "IBM Plex Mono", monospace;8520  font-size: 0.5625rem;8521  letter-spacing: 0.06em;8522  text-transform: lowercase;8523  cursor: pointer;8524  transition: border-color 0.15s, color 0.15s;8525}85268527.peach-recovery-download-btn:hover {8528  border-color: var(--peach-accent);8529  color: var(--peach-t0);8530}85318532.peach-recovery-word-text {8533  font-family: "IBM Plex Mono", monospace;8534  font-size: 0.6875rem;8535  letter-spacing: 0.06em;8536  color: var(--peach-t0);8537  text-transform: lowercase;8538}85398540.peach-hint--warning {8541  color: var(--peach-accent);8542  font-style: italic;8543}8544.peach-hint--success {8545  color: var(--peach-t2);8546  font-family: "IBM Plex Mono", monospace;8547  font-size: 0.625rem;8548  letter-spacing: 0.06em;8549}85508551/* Confirmation step */8552.peach-recovery-confirm {8553  width: 100%;8554  flex: 1;8555  display: flex;8556  flex-direction: column;8557}8558.peach-recovery-confirm-label {8559  font-family: "IBM Plex Mono", monospace;8560  font-size: 0.5625rem;8561  letter-spacing: 0.04em;8562  color: var(--peach-t1);8563  text-align: center;8564  margin: 0 0 8px;8565}8566.peach-recovery-confirm-fields {8567  flex: 1;8568  display: flex;8569  flex-direction: column;8570  /* Spread the three inputs through the available height instead of pooling8571     one dead gap under them. */8572  justify-content: space-evenly;8573  gap: 8px;8574  margin-bottom: 0;8575}8576.peach-recovery-confirm-field {8577  display: flex;8578  align-items: center;8579  gap: 8px;8580}8581.peach-recovery-confirm-num {8582  font-family: "IBM Plex Mono", monospace;8583  font-size: 0.5rem;8584  color: var(--peach-accent);8585  min-width: 44px;8586  letter-spacing: 0.04em;8587}8588.peach-recovery-confirm-input {8589  flex: 1;8590  background: transparent;8591  border: none;8592  border-bottom: 1px solid var(--peach-t3);8593  color: var(--peach-t0);8594  font-family: "IBM Plex Mono", monospace;8595  font-size: 0.6875rem;8596  letter-spacing: 0.06em;8597  padding: 4px 2px 3px;8598  outline: none;8599  text-transform: lowercase;8600  transition: border-color 120ms ease;8601}8602.peach-recovery-confirm-input:focus {8603  border-bottom-color: var(--peach-accent);8604}8605.peach-recovery-confirm-input:disabled {8606  opacity: 0.4;8607  cursor: not-allowed;8608}8609.peach-recovery-confirm-btn {8610  width: 100%;8611  margin-top: 12px;8612}86138614/* ============================================================8615   Sync info sheet8616   ============================================================ */86178618.peach-sync-info-backdrop {8619  position: fixed;8620  inset: 0;8621  z-index: 200;8622  background: rgba(0, 0, 0, 0.55);8623  display: flex;8624  align-items: flex-end;8625  animation: peach-fade-in 200ms ease forwards;8626}86278628@keyframes peach-fade-in {8629  from { opacity: 0; }8630  to   { opacity: 1; }8631}86328633.peach-sync-info-sheet {8634  width: 100%;8635  background: var(--peach-bg-card, var(--peach-bg));8636  border-top-left-radius: 20px;8637  border-top-right-radius: 20px;8638  padding: 12px 24px 32px;8639  display: flex;8640  flex-direction: column;8641  gap: 20px;8642  animation: peach-sheet-up 280ms cubic-bezier(0, 0, 0, 1) forwards;8643}86448645@keyframes peach-sheet-up {8646  from { transform: translateY(100%); }8647  to   { transform: translateY(0); }8648}86498650.peach-sync-info-handle {8651  width: 36px;8652  height: 4px;8653  border-radius: 2px;8654  background: var(--peach-border);8655  margin: 0 auto 4px;8656  flex-shrink: 0;8657}86588659.peach-sync-info-title {8660  font-family: 'Cormorant Garamond', serif;8661  font-style: italic;8662  font-size: 26px;8663  font-weight: 600;8664  color: var(--peach-t0);8665  margin: 0;8666  line-height: 1.2;8667}86688669.peach-sync-info-body {8670  display: flex;8671  flex-direction: column;8672  gap: 14px;8673}86748675.peach-sync-info-point {8676  display: flex;8677  gap: 12px;8678  align-items: flex-start;8679  font-size: 14px;8680  color: var(--peach-t2);8681  line-height: 1.6;8682  margin: 0;8683}86848685.peach-sync-info-icon {8686  color: var(--peach-accent);8687  font-size: 16px;8688  flex-shrink: 0;8689  margin-top: 1px;8690}86918692.peach-sync-info-actions {8693  display: flex;8694  flex-direction: column;8695  gap: 12px;8696  margin-top: 4px;8697}86988699.peach-sync-info-pro-link {8700  background: none;8701  border: none;8702  font-size: 13px;8703  color: var(--peach-t3);8704  cursor: pointer;8705  padding: 0;8706  font-family: inherit;8707  text-align: center;8708  transition: color 150ms ease;8709}87108711.peach-sync-info-pro-link:hover {8712  color: var(--peach-accent);8713}87148715.peach-btn--full {8716  width: 100%;8717}87188719/* ── Sync screen ── */87208721.peach-sync-coming-soon {8722  display: flex;8723  align-items: flex-start;8724  gap: 10px;8725  padding: 12px 14px;8726  background: var(--peach-s1);8727  border: 1px solid color-mix(in srgb, var(--peach-accent) 18%, transparent);8728  border-radius: 10px;8729}8730.peach-sync-coming-soon__icon {8731  flex-shrink: 0;8732  color: var(--peach-accent);8733  margin-top: 1px;8734  line-height: 0;8735}8736.peach-sync-coming-soon__title {8737  font-family: 'Cormorant Garamond', serif;8738  font-weight: 500;8739  font-size: 13px;8740  color: var(--peach-accent);8741  margin: 0 0 5px;8742  line-height: 1.3;8743}8744.peach-sync-coming-soon__body {8745  font-size: 12px;8746  color: var(--peach-t1);8747  line-height: 1.55;8748  margin: 0;8749}87508751.peach-sync-screen {8752  display: flex;8753  flex-direction: column;8754  height: 100%;8755}87568757.peach-sync-content {8758  flex: 1;8759  overflow-y: auto;8760  padding: 24px 20px 40px;8761  display: flex;8762  flex-direction: column;8763  gap: 24px;8764}87658766/* Intro (State A) */8767.peach-sync-headline {8768  font-family: 'Cormorant Garamond', serif;8769  font-style: italic;8770  font-size: 28px;8771  font-weight: 600;8772  color: var(--peach-t0);8773  margin: 0 0 10px;8774  line-height: 1.2;8775}87768777.peach-sync-intro-body {8778  font-size: 14px;8779  color: var(--peach-t1);8780  line-height: 1.6;8781  margin: 0;8782}87838784.peach-sync-pro-note {8785  display: flex;8786  flex-direction: column;8787  gap: 8px;8788  background: var(--peach-t3);8789  border-radius: 10px;8790  padding: 12px 14px;8791}87928793.peach-sync-pro-note-text {8794  font-size: 12px;8795  color: var(--peach-t2);8796  line-height: 1.5;8797  margin: 0;8798}87998800.peach-sync-pro-link {8801  background: none;8802  border: none;8803  font-size: 12px;8804  color: var(--peach-accent);8805  cursor: pointer;8806  padding: 0;8807  font-family: inherit;8808  text-align: left;8809}88108811/* Status (State C) */8812.peach-sync-status {8813  padding: 12px 0;8814  border-bottom: 1px solid var(--peach-border);8815}88168817.peach-sync-status-row {8818  display: flex;8819  align-items: center;8820  gap: 8px;8821}88228823.peach-sync-dot {8824  width: 7px;8825  height: 7px;8826  border-radius: 50%;8827  flex-shrink: 0;8828}88298830.peach-sync-dot--green { background: var(--peach-health-ok); }8831.peach-sync-dot--amber { background: var(--peach-accent); }88328833.peach-sync-status-text {8834  font-family: 'IBM Plex Mono', monospace;8835  font-size: 11px;8836  color: var(--peach-t2);8837}88388839/* Paired devices */8840.peach-sync-section {8841  display: flex;8842  flex-direction: column;8843  gap: 2px;8844}88458846.peach-sync-section-label {8847  font-family: 'IBM Plex Mono', monospace;8848  font-size: 10px;8849  letter-spacing: 0.1em;8850  color: var(--peach-t3);8851  margin: 0 0 10px;8852}88538854.peach-sync-device-row {8855  display: flex;8856  justify-content: space-between;8857  align-items: baseline;8858  padding: 10px 0;8859  border-bottom: 1px solid var(--peach-border);8860  gap: 12px;8861}88628863.peach-sync-device-name {8864  font-size: 14px;8865  color: var(--peach-t1);8866}88678868.peach-sync-device-meta {8869  font-family: 'IBM Plex Mono', monospace;8870  font-size: 11px;8871  color: var(--peach-t3);8872  white-space: nowrap;8873}88748875.peach-sync-hub-note {8876  padding: 14px 16px;8877  border: 1px solid var(--peach-border);8878  border-radius: 10px;8879  display: flex;8880  flex-direction: column;8881  gap: 6px;8882  background: rgba(var(--peach-accent-rgb, 201, 137, 58), 0.04);8883}88848885.peach-sync-hub-note-title {8886  font-size: 13px;8887  font-weight: 600;8888  color: var(--peach-t0);8889  margin: 0;8890}88918892.peach-sync-hub-note-body {8893  font-size: 12px;8894  color: var(--peach-t2);8895  line-height: 1.6;8896  margin: 0;8897}88988899/* Action buttons */8900.peach-sync-actions {8901  display: flex;8902  gap: 10px;8903  flex-wrap: wrap;8904}89058906/* Upgrade prompt (State B) */8907.peach-sync-upgrade {8908  display: flex;8909  flex-direction: column;8910  gap: 12px;8911  padding: 16px;8912  border: 1px solid var(--peach-border);8913  border-radius: 10px;8914}89158916.peach-sync-upgrade-text {8917  font-size: 13px;8918  color: var(--peach-t2);8919  line-height: 1.6;8920  margin: 0;8921}89228923/* Network note */8924.peach-sync-network-note {8925  font-size: 12px;8926  color: var(--peach-t3);8927  line-height: 1.6;8928  margin: 0;8929}89308931/* Advanced */8932.peach-sync-advanced {8933  margin-top: auto;8934  padding-top: 16px;8935  border-top: 1px solid var(--peach-border);8936}89378938.peach-sync-advanced-toggle {8939  display: flex;8940  align-items: center;8941  gap: 8px;8942  background: none;8943  border: none;8944  font-family: 'IBM Plex Mono', monospace;8945  font-size: 11px;8946  letter-spacing: 0.08em;8947  color: var(--peach-t3);8948  cursor: pointer;8949  padding: 0;8950  text-transform: uppercase;8951}89528953.peach-sync-advanced-chevron {8954  display: inline-block;8955  transition: transform 200ms ease;8956  font-size: 10px;8957}89588959.peach-sync-advanced-chevron.is-open {8960  transform: rotate(90deg);8961}89628963.peach-sync-advanced-content {8964  margin-top: 14px;8965}89668967.peach-sync-advanced-row {8968  display: flex;8969  justify-content: space-between;8970  align-items: center;8971  gap: 16px;8972}89738974.peach-sync-advanced-title {8975  font-size: 14px;8976  color: var(--peach-t1);8977  margin: 0 0 2px;8978}89798980.peach-sync-advanced-subtitle {8981  font-size: 12px;8982  color: var(--peach-t3);8983  margin: 0;8984  line-height: 1.5;8985}89868987/* ── Notes Mode ── */89888989/* Overlay that crossfades over the vault */8990.peach-notes-overlay {8991  position: fixed;8992  inset: 0;8993  z-index: 90;8994  opacity: 0;8995  pointer-events: none;8996  animation: peach-mode-in 220ms ease-in forwards;8997}89988999.peach-notes-overlay.is-visible {9000  opacity: 1;9001  pointer-events: auto;9002}90039004@keyframes peach-mode-in {9005  from { opacity: 0; }9006  to   { opacity: 1; }9007}90089009/* Top-level notes surface */9010.peach-notes-mode {9011  position: absolute;9012  inset: 0;9013  background:9014    radial-gradient(120% 80% at 0% 0%, color-mix(in srgb, var(--peach-accent) 5%, transparent) 0%, transparent 62%),9015    var(--peach-bg);9016  display: flex;9017  flex-direction: column;9018}90199020/* Rune canvas positioned behind content */9021.peach-note-rune-canvas {9022  position: absolute;9023  inset: 0;9024  width: 100%;9025  height: 100%;9026  pointer-events: none;9027  z-index: 0;9028}90299030/* TOC wrapper */9031.peach-notes-toc-wrapper {9032  position: absolute;9033  inset: 0;9034  z-index: 1;9035  opacity: 1;9036  pointer-events: auto;9037  transition: opacity 200ms ease;9038}90399040.peach-notes-toc-wrapper.is-hidden {9041  opacity: 0;9042  pointer-events: none;9043}90449045/* Editor wrapper */9046.peach-notes-editor-wrapper {9047  position: absolute;9048  inset: 0;9049  z-index: 2;9050  opacity: 0;9051  pointer-events: none;9052  transition: opacity 200ms ease;9053}90549055.peach-notes-editor-wrapper.is-visible {9056  opacity: 1;9057  pointer-events: auto;9058}90599060/* TOC inner */9061.peach-notes-toc {9062  position: relative;9063  display: flex;9064  flex-direction: column;9065  height: 100%;9066  padding-top: env(safe-area-inset-top, 0px);9067  padding-bottom: env(safe-area-inset-bottom, 0px);9068}90699070/* Shared header */9071.peach-notes-header {9072  display: flex;9073  align-items: center;9074  padding: 12px 16px;9075  gap: 12px;9076  flex-shrink: 0;9077  min-height: 52px;9078  position: relative;9079  z-index: 2;9080}90819082.peach-notes-back {9083  font-size: 22px;9084  color: var(--peach-t2);9085  background: none;9086  border: none;9087  padding: 4px;9088  cursor: pointer;9089  line-height: 1;9090  flex-shrink: 0;9091  transition: color 150ms ease;9092  -webkit-tap-highlight-color: transparent;9093}90949095.peach-notes-back:active { color: var(--peach-t0); }90969097.peach-notes-header-title {9098  flex: 1;9099  font-family: 'Cormorant Garamond', serif;9100  font-style: italic;9101  font-size: 22px;9102  color: var(--peach-t0);9103  text-align: center;9104}91059106.peach-notes-header--editor {9107  display: grid;9108  grid-template-columns: 36px minmax(0, 1fr) 36px;9109}91109111.peach-notes-header--editor .peach-notes-back,9112.peach-notes-header--editor .peach-notes-header-actions {9113  width: 36px;9114}91159116.peach-notes-header--editor .peach-notes-header-title {9117  cursor: pointer;9118}91199120.peach-notes-header-actions {9121  display: flex;9122  gap: 8px;9123  flex-shrink: 0;9124}91259126.peach-notes-header-btn {9127  width: 36px;9128  height: 36px;9129  display: flex;9130  align-items: center;9131  justify-content: center;9132  background: none;9133  border: none;9134  color: var(--peach-t2);9135  cursor: pointer;9136  border-radius: 8px;9137  font-size: 16px;9138  transition: color 150ms ease, background 150ms ease;9139  -webkit-tap-highlight-color: transparent;9140}91419142.peach-notes-header-btn:active {9143  background: rgba(255,255,255,0.06);9144  color: var(--peach-t0);9145}91469147/* The header + glyph is larger than the search svg so the two right-side9148 * buttons feel visually balanced. The base .peach-notes-header-btn caps font9149 * at 16px which would render the + too small. */9150.peach-notes-new-btn-icon {9151  font-size: 22px;9152  font-weight: 300;9153  line-height: 1;9154}91559156.peach-notes-search-btn svg {9157  display: block;9158  transform: translate(0.5px, 2.5px);9159}91609161/* Inline search bar */9162.peach-notes-search-input {9163  flex: 1;9164  background: none;9165  border: none;9166  outline: none;9167  font-family: 'IBM Plex Mono', monospace;9168  font-size: 13px;9169  color: var(--peach-t0);9170  padding: 4px 0;9171  letter-spacing: 0.02em;9172}91739174.peach-notes-search-input::placeholder {9175  color: var(--peach-t3);9176}91779178/* TOC list */9179.peach-notes-list-container {9180  flex: 1;9181  overflow-y: auto;9182  overflow-x: hidden;9183  scrollbar-width: none;9184  -webkit-overflow-scrolling: touch;9185  overscroll-behavior: contain;9186  position: relative;9187  z-index: 1;9188}91899190.peach-notes-list-container::-webkit-scrollbar { display: none; }91919192/* Note row */9193.peach-note-row {9194  position: relative;9195  display: grid;9196  grid-template-columns: 44px 8px 1fr 8px auto;9197  align-items: center;9198  min-height: 72px;9199  padding: 16px 20px;9200  border-bottom: 0.5px solid var(--peach-border);9201  cursor: pointer;9202  overflow: hidden;9203  touch-action: pan-y;9204  user-select: none;9205  -webkit-user-select: none;9206  -webkit-tap-highlight-color: transparent;9207}92089209.peach-note-row:first-child {9210  border-top: 0.5px solid var(--peach-border);9211}92129213.peach-note-row:active {9214  background: rgba(255,255,255,0.02);9215}92169217.peach-note-numeral {9218  font-family: 'Cormorant Garamond', serif;9219  font-style: italic;9220  font-size: 15px;9221  color: var(--peach-accent);9222  text-align: right;9223  line-height: 1;9224  flex-shrink: 0;9225}92269227.peach-note-title-gap { /* grid spacer */ }92289229.peach-note-title {9230  font-family: 'Cormorant Garamond', serif;9231  font-style: italic;9232  font-size: 18px;9233  color: var(--peach-t0);9234  line-height: 1.3;9235  min-width: 0;9236  overflow-wrap: break-word;9237}92389239.peach-note-title-match {9240  color: var(--peach-accent);9241}92429243.peach-note-date {9244  font-family: 'IBM Plex Mono', monospace;9245  font-size: 11px;9246  color: var(--peach-t1);9247  opacity: 0.62;9248  white-space: nowrap;9249  text-align: right;9250  flex-shrink: 0;9251  grid-column: 5;9252}92539254/* Swipe underlays */9255.peach-note-row-underlay {9256  position: absolute;9257  inset: 0;9258  display: flex;9259  align-items: center;9260  padding: 0 24px;9261  font-family: 'IBM Plex Mono', monospace;9262  font-size: 11px;9263  letter-spacing: 0.1em;9264  pointer-events: none;9265  z-index: 0;9266}92679268.peach-note-row-underlay--delete {9269  background: #8B2020;9270  color: rgba(255,255,255,0.9);9271  justify-content: flex-end;9272}92739274.peach-note-row-underlay--archive {9275  background: var(--peach-accent);9276  color: #0C0A06;9277  justify-content: flex-start;9278}92799280/* Delete confirm strip */9281.peach-note-delete-confirm {9282  position: absolute;9283  inset: 0;9284  background: var(--peach-bg);9285  display: flex;9286  align-items: center;9287  gap: 12px;9288  padding: 0 20px;9289  font-family: 'IBM Plex Mono', monospace;9290  font-size: 11px;9291  color: var(--peach-t1);9292  letter-spacing: 0.04em;9293  animation: peach-delete-confirm-in 150ms ease both;9294  z-index: 10;9295}92969297@keyframes peach-delete-confirm-in {9298  from { opacity: 0; }9299  to   { opacity: 1; }9300}93019302.peach-note-delete-confirm-btn {9303  background: #8B2020;9304  color: rgba(255,255,255,0.9);9305  border: none;9306  border-radius: 6px;9307  padding: 4px 10px;9308  font-family: 'IBM Plex Mono', monospace;9309  font-size: 10px;9310  cursor: pointer;9311  letter-spacing: 0.06em;9312}93139314.peach-note-delete-cancel-btn {9315  background: none;9316  border: none;9317  color: var(--peach-t3);9318  font-family: 'IBM Plex Mono', monospace;9319  font-size: 10px;9320  cursor: pointer;9321  letter-spacing: 0.06em;9322  padding: 4px 6px;9323}93249325/* + New note button */9326.peach-notes-new-btn {9327  font-family: 'IBM Plex Mono', monospace;9328  font-size: 12px;9329  color: var(--peach-t3);9330  text-align: center;9331  padding: 28px 20px calc(28px + env(safe-area-inset-bottom, 0px));9332  background: none;9333  border: none;9334  width: 100%;9335  cursor: pointer;9336  letter-spacing: 0.04em;9337  transition: color 150ms ease;9338  -webkit-tap-highlight-color: transparent;9339}93409341.peach-notes-new-btn:active { color: var(--peach-accent); }93429343/* Empty state */9344.peach-notes-empty {9345  display: flex;9346  flex-direction: column;9347  align-items: center;9348  justify-content: center;9349  flex: 1;9350  padding: 48px 32px;9351  gap: 16px;9352}93539354.peach-notes-empty-text {9355  font-family: 'Cormorant Garamond', serif;9356  font-style: italic;9357  font-size: 20px;9358  color: var(--peach-t3);9359  text-align: center;9360  margin: 0;9361  line-height: 1.4;9362  white-space: pre-line;9363}93649365/* ── Editor surface ── */93669367.peach-note-editor-surface {9368  position: absolute;9369  inset: 0;9370  background:9371    radial-gradient(120% 80% at 0% 0%, color-mix(in srgb, var(--peach-accent) 5%, transparent) 0%, transparent 62%),9372    var(--peach-bg);9373  display: flex;9374  flex-direction: column;9375  padding-top: env(safe-area-inset-top, 0px);9376}93779378.peach-note-editor-scroll {9379  flex: 1;9380  overflow-y: auto;9381  overflow-x: hidden;9382  scrollbar-width: none;9383  -webkit-overflow-scrolling: touch;9384  padding: 0 20px 120px;9385  position: relative;9386  z-index: 1;9387}93889389.peach-note-editor-scroll::-webkit-scrollbar { display: none; }93909391/* Desktop toolbar (always visible above body) */9392.peach-note-toolbar-desktop-inline {9393  display: grid;9394  grid-template-columns: repeat(4, minmax(0, 1fr)) auto repeat(5, minmax(0, 1fr));9395  align-items: center;9396  gap: 0;9397  padding: 5px 0 10px;9398  margin-bottom: 10px;9399  border-bottom: 0.5px solid var(--peach-border);9400}94019402/* Title field */9403.peach-note-title-field {9404  font-family: var(--font-display);9405  font-style: italic;9406  font-size: clamp(34px, 13vw, 44px);9407  font-weight: 400;9408  color: var(--peach-t0);9409  line-height: 0.98;9410  letter-spacing: -0.015em;9411  padding: 10px 0 2px;9412  outline: none;9413  min-height: 52px;9414  word-break: break-word;9415  position: relative;9416  z-index: 1;9417}94189419.peach-note-title-field:empty::before {9420  content: attr(data-placeholder);9421  color: var(--peach-t1);9422  opacity: 0.58;9423  pointer-events: none;9424}94259426/* Hairline separator */9427.peach-note-hairline {9428  height: 0.5px;9429  background: var(--peach-border);9430  margin: 14px 0 18px;9431  position: relative;9432  z-index: 1;9433}94349435/* Body field */9436.peach-note-body-field {9437  font-family: var(--font-display);9438  font-size: 17px;9439  color: var(--peach-t1);9440  line-height: 1.72;9441  padding: 0;9442  outline: none;9443  min-height: 240px;9444  word-break: break-word;9445  position: relative;9446  z-index: 1;9447}94489449.peach-note-body-field:empty::before {9450  content: attr(data-placeholder);9451  color: var(--peach-t1);9452  opacity: 0.56;9453  font-style: italic;9454  pointer-events: none;9455}94569457.peach-note-body-field h2 {9458  font-family: var(--font-display);9459  font-style: italic;9460  font-size: 22px;9461  font-weight: 600;9462  color: var(--peach-t0);9463  margin: 20px 0 8px;9464}94659466.peach-note-body-field blockquote {9467  border-left: 2px solid var(--peach-accent);9468  margin: 12px 0;9469  padding-left: 16px;9470  color: var(--peach-t1);9471  font-style: italic;9472}94739474.peach-note-body-field ul,9475.peach-note-body-field ol {9476  padding-left: 20px;9477  margin: 8px 0;9478}94799480.peach-note-body-field li {9481  margin: 4px 0;9482}94839484.peach-note-body-field hr {9485  border: none;9486  border-top: 0.5px solid var(--peach-border);9487  margin: 16px 0;9488}94899490/* Saved indicator */9491.peach-note-saved-indicator {9492  font-family: var(--font-mono);9493  font-size: 11px;9494  color: var(--peach-t3);9495  letter-spacing: 0.04em;9496  text-align: right;9497  padding: 6px 24px;9498  flex-shrink: 0;9499  transition: opacity 300ms ease;9500  pointer-events: none;9501  position: relative;9502  z-index: 1;9503}95049505/* Mobile keyboard toolbar */9506.peach-note-toolbar-mobile {9507  display: flex;9508  align-items: center;9509  padding: 8px 16px;9510  padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px));9511  background: var(--peach-bg);9512  border-top: 0.5px solid var(--peach-border);9513  gap: 0;9514  flex-shrink: 0;9515  position: relative;9516  z-index: 10;9517}95189519.peach-note-toolbar-btn {9520  min-width: 0;9521  width: auto;9522  height: 30px;9523  display: flex;9524  align-items: center;9525  justify-content: center;9526  background: none;9527  border: none;9528  border-radius: 4px;9529  cursor: pointer;9530  color: var(--peach-t1);9531  transition: background 100ms ease, color 100ms ease;9532  -webkit-tap-highlight-color: transparent;9533}95349535.peach-note-toolbar-btn svg {9536  width: 14px;9537  height: 14px;9538  fill: none;9539  stroke: currentColor;9540  stroke-width: 1.15;9541  stroke-linecap: round;9542  stroke-linejoin: round;9543  pointer-events: none;9544}95459546.peach-note-toolbar-mobile .peach-note-toolbar-btn {9547  flex: 1 1 0;9548  height: 36px;9549}95509551.peach-note-toolbar-btn.is-active { color: var(--peach-accent); }9552.peach-note-toolbar-btn:hover,9553.peach-note-toolbar-btn:active {9554  background: var(--peach-t4);9555  color: var(--peach-t0);9556}95579558.peach-note-toolbar-divider {9559  width: 0.5px;9560  height: 20px;9561  background: var(--peach-border);9562  margin: 0 4px;9563  flex-shrink: 0;9564}95659566.peach-note-toolbar-spacer { display: none; }95679568/* Desktop: larger headline in TOC */9569@media (min-width: 400px) {9570  .peach-notes-header-title:not(.is-breadcrumb) {9571    font-size: 32px;9572  }95739574  .peach-note-row {9575    min-height: 64px;9576    padding: 14px 16px;9577  }9578}95799580/* Flying title — shared element during expansion/collapse */95819582/* ─── Light theme overrides ───────────────────────────────────────────────9583   Tokens that cannot be expressed as variable substitutions — hardcoded9584   context-specific values that need separate light-mode rules. */95859586/* Settings section headers: use text-label (#79766F) per restoration brief —9587   muted gray-warm gives ENTRIES / MAINTENANCE / DATA / VAULT HISTORY9588   presence without fighting the light parchment background. */9589.light .peach-settings-sub-label,9590[data-theme="light"] .peach-settings-sub-label,9591.light .peach-settings-nav-label,9592[data-theme="light"] .peach-settings-nav-label {9593  color: #79766F;9594}95959596/* Secondary action buttons (ghost / subtle): filled with input-well surface9597   so they read as recessed against the parchment card background. */9598.light .peach-btn--ghost:not(.peach-icon-btn),9599[data-theme="light"] .peach-btn--ghost:not(.peach-icon-btn) {9600  background: #EEE7DD;9601  border-color: #DDD5CB;9602  color: #1A1208;9603}9604.light .peach-icon-btn,9605[data-theme="light"] .peach-icon-btn {9606  background: transparent;9607  border-color: transparent;9608}9609.light .peach-btn--subtle,9610[data-theme="light"] .peach-btn--subtle {9611  background: #EEE7DD;9612  border-color: #DDD5CB;9613}96149615/* Wide secondary action button on the lock screen — override the9616   hardcoded dark-mode rgba values with warm parchment equivalents. */9617.light .peach-lock-secondary,9618[data-theme="light"] .peach-lock-secondary {9619  background: #EEE7DD;9620  border-color: #DDD5CB;9621  color: #1A1208;9622}9623.light .peach-lock-secondary:hover,9624[data-theme="light"] .peach-lock-secondary:hover {9625  background: #F0E9DF;9626}96279628/* Entry row hover: bg-row lifts the row above the card surface. */9629.light .peach-entry-row:hover,9630[data-theme="light"] .peach-entry-row:hover {9631  background: #F2EBE1;9632}9633.light .peach-entry-row.is-active,9634[data-theme="light"] .peach-entry-row.is-active {9635  background: #F2EBE1;9636}9637.light .peach-entry-row.is-selected,9638[data-theme="light"] .peach-entry-row.is-selected {9639  background: #F5EDE2;9640}96419642/* ──────────────────────────────────────────────────────────────────────────9643   Pair-device flow — bird-stage animation (Phase 1)9644   See src/popup/components/PairingBirds.tsx and the brief §6.2.9645   Three-act animation gated on the [data-phase] attribute of9646   .peach-pair-pair; child layers (birds, sound arcs, flight wave, dot)9647   each react via either pose class or visibility flag.9648   Tokens: accent surfaces use var(--peach-accent); bird illustration9649   colours are baked into the SVG per the brand-peach exception in §3.1.9650   ────────────────────────────────────────────────────────────────────── */96519652.peach-pair-pair {9653  position: absolute;9654  inset: 0;9655  z-index: 3;9656  display: flex;9657  flex-direction: column;9658  padding: 14px 12px 12px;9659  width: 100%;9660  box-sizing: border-box;9661  gap: 0;9662  background:9663    radial-gradient(ellipse 70% 50% at 30% 0%, color-mix(in srgb, var(--peach-accent) 10%, transparent), transparent 70%),9664    var(--peach-bg);9665  color: var(--peach-t0);9666  overflow-y: auto;9667  overflow-x: hidden;9668  scrollbar-width: none;9669  isolation: isolate;9670  animation: peach-pair-overlay-in 180ms cubic-bezier(0.4, 0, 0.2, 1) both;9671}9672@keyframes peach-pair-overlay-in {9673  from { opacity: 0; transform: translateY(8px); }9674  to   { opacity: 1; transform: translateY(0); }9675}9676.peach-pair-pair::-webkit-scrollbar { width: 0; height: 0; display: none; }9677.peach-pair-pair::before {9678  content: '';9679  position: absolute;9680  inset: 0;9681  border-radius: inherit;9682  pointer-events: none;9683  background: radial-gradient(ellipse 90% 30% at 50% 0%, color-mix(in srgb, var(--peach-accent) 6%, transparent), transparent 70%);9684  z-index: 0;9685}9686.peach-pair-pair > * { position: relative; z-index: 1; }96879688/* Header --------------------------------------------------------------- */9689.peach-pair-head {9690  display: flex; align-items: center; gap: 10px;9691}9692.peach-pair-back {9693  width: 32px; height: 32px;9694  display: inline-flex; align-items: center; justify-content: center;9695  background: transparent;9696  border: none;9697  border-radius: 8px;9698  color: var(--peach-t1);9699  cursor: pointer;9700  transition: color 0.15s ease, box-shadow 0.15s ease;9701}9702.peach-pair-back:hover {9703  color: var(--peach-accent);9704  box-shadow: 0 0 10px color-mix(in srgb, var(--peach-accent) 24%, transparent);9705}9706.peach-pair-title {9707  font-family: var(--font-display, Georgia, serif);9708  font-style: italic;9709  font-size: 24px;9710  font-weight: 500;9711  letter-spacing: 0.005em;9712  color: var(--peach-t0);9713  line-height: 1;9714}9715.peach-pair-head-spacer { flex: 1; }97169717/* Chip row ------------------------------------------------------------- */9718.peach-pair-chip-row {9719  display: flex;9720  align-items: center;9721  justify-content: flex-start;9722  margin-top: 12px;9723}9724.peach-pair-chip {9725  display: inline-flex; align-items: center; gap: 8px;9726  padding: 5px 10px 5px 8px;9727  background: color-mix(in srgb, var(--peach-accent) 16%, transparent);9728  border: 1px solid color-mix(in srgb, var(--peach-accent) 32%, transparent);9729  border-radius: 999px;9730  font-family: var(--peach-mono, ui-monospace, monospace);9731  font-size: 11px;9732  letter-spacing: 0.04em;9733  color: color-mix(in srgb, var(--peach-accent) 70%, var(--peach-t0));9734}9735.peach-pair-chip-dot {9736  width: 6px; height: 6px; border-radius: 50%;9737  background: var(--peach-accent);9738  box-shadow: 0 0 6px color-mix(in srgb, var(--peach-accent) 50%, transparent);9739}9740.peach-pair-chip[data-phase="paired"] {9741  background: color-mix(in srgb, #4f9eda 12%, transparent);9742  border-color: color-mix(in srgb, #4f9eda 28%, transparent);9743  color: #76b6e8;9744}9745.peach-pair-chip[data-phase="paired"] .peach-pair-chip-dot {9746  background: #76b6e8;9747  box-shadow: 0 0 6px rgba(118, 182, 232, 0.55);9748}9749.peach-pair-chip[data-phase="timeout"],9750.peach-pair-chip[data-phase="mic_denied"],9751.peach-pair-chip[data-phase="version_mismatch"],9752.peach-pair-chip[data-phase="handshake_failed"] {9753  background: color-mix(in srgb, var(--peach-warn, #d29257) 14%, transparent);9754  border-color: color-mix(in srgb, var(--peach-warn, #d29257) 28%, transparent);9755  color: var(--peach-warn, #d29257);9756}9757.peach-pair-chip[data-phase="timeout"] .peach-pair-chip-dot,9758.peach-pair-chip[data-phase="mic_denied"] .peach-pair-chip-dot,9759.peach-pair-chip[data-phase="version_mismatch"] .peach-pair-chip-dot,9760.peach-pair-chip[data-phase="handshake_failed"] .peach-pair-chip-dot {9761  background: var(--peach-warn, #d29257);9762  box-shadow: 0 0 6px color-mix(in srgb, var(--peach-warn, #d29257) 55%, transparent);9763}976497659766/* Bird stage ----------------------------------------------------------- */9767.peach-pair-stage {9768  position: relative;9769  height: 180px;9770  margin: 8px auto 18px;9771  width: 300px;9772  display: flex;9773  align-items: flex-end;9774  justify-content: center;9775}9776.peach-pair-bird-slot {9777  position: absolute;9778  bottom: 0;9779  width: 108px;9780  height: 108px;9781  transform-origin: 50% 95%;9782}9783.peach-pair-bird-slot-desktop { left: 12px; }9784.peach-pair-bird-slot-mobile { right: 12px; }9785.peach-pair-stage.act-handshake .peach-pair-bird-slot-desktop,9786.peach-pair-stage.act-paired .peach-pair-bird-slot-desktop {9787  transform: translateX(6px);9788  transition: transform 0.5s cubic-bezier(.4, 1.4, .4, 1);9789}9790.peach-pair-stage.act-paired .peach-pair-bird-slot-desktop { --bb-x: 6px; }9791.peach-pair-stage.act-paired .peach-pair-bird-slot-mobile { --bb-x: -6px; }9792.peach-pair-stage.act-paired .peach-pair-bird-slot {9793  animation: peach-pair-happy-bob 1.2s ease-in-out infinite;9794}9795.peach-pair-stage.act-paired .peach-pair-bird-slot-mobile { animation-delay: 0.2s; }9796@keyframes peach-pair-happy-bob {9797  0%, 100% { transform: translateX(var(--bb-x, 0)) translateY(0); }9798  50%      { transform: translateX(var(--bb-x, 0)) translateY(-3px); }9799}98009801/* Bird internal -------------------------------------------------------- */9802.peach-pair-bird {9803  width: 108px;9804  height: 108px;9805  transform-origin: 50% 95%;9806}9807.peach-pair-bird svg { width: 100%; height: 100%; overflow: visible; }98089809.peach-pair-bird-body {9810  transform-origin: 50% 80%;9811  animation: peach-pair-bird-bob 2.4s ease-in-out infinite;9812}9813.peach-pair-bird-pose-chirping .peach-pair-bird-body { animation-duration: 1.4s; }9814.peach-pair-bird-pose-happy .peach-pair-bird-body   { animation: peach-pair-bird-celebrate 0.9s ease-in-out infinite; }9815.peach-pair-bird-pose-attentive .peach-pair-bird-body { animation-duration: 2.0s; }98169817@keyframes peach-pair-bird-bob {9818  0%, 100% { transform: translateY(0) rotate(0deg); }9819  50%      { transform: translateY(-2px) rotate(-1deg); }9820}9821@keyframes peach-pair-bird-celebrate {9822  0%, 100% { transform: translateY(0) rotate(0deg); }9823  25%      { transform: translateY(-4px) rotate(-2deg); }9824  75%      { transform: translateY(-4px) rotate(2deg); }9825}98269827.peach-pair-bird-wing {9828  transform-origin: 50% 50%;9829  animation: peach-pair-bird-flap 0.9s ease-in-out infinite;9830}9831.peach-pair-bird-pose-happy .peach-pair-bird-wing { animation-duration: 0.35s; }9832.peach-pair-bird-pose-attentive .peach-pair-bird-wing { animation-duration: 1.4s; }9833@keyframes peach-pair-bird-flap {9834  0%, 100% { transform: scaleY(1); }9835  50%      { transform: scaleY(0.85); }9836}98379838.peach-pair-bird-head-group {9839  transform-origin: 95px 52px;9840  animation: peach-pair-bird-bob-head 2.6s ease-in-out infinite;9841}9842.peach-pair-bird-pose-chirping .peach-pair-bird-head-group { animation-duration: 0.45s; }9843.peach-pair-bird-pose-attentive .peach-pair-bird-head-group { animation: none; }9844@keyframes peach-pair-bird-bob-head {9845  0%, 100% { transform: rotate(0deg); }9846  50%      { transform: rotate(3deg); }9847}98489849.peach-pair-bird-eye-group { transform-origin: center; }9850.peach-pair-bird-blink { animation: peach-pair-bird-blink 4s ease-in-out infinite; }9851@keyframes peach-pair-bird-blink {9852  0%, 92%, 100% { transform: scaleY(1); }9853  95%           { transform: scaleY(0.1); }9854}98559856.peach-pair-bird-aura {9857  animation: peach-pair-bird-aura 2.6s ease-in-out infinite;9858}9859.peach-pair-bird-pose-happy .peach-pair-bird-aura { animation-duration: 1.4s; }9860@keyframes peach-pair-bird-aura {9861  0%, 100% { opacity: 0; }9862  50%      { opacity: 0.18; }9863}98649865.peach-pair-bird-tail {9866  transform-origin: 50% 100%;9867  animation: peach-pair-bird-tail-wag 3s ease-in-out infinite;9868}9869@keyframes peach-pair-bird-tail-wag {9870  0%, 100% { transform: rotate(0deg); }9871  50%      { transform: rotate(2deg); }9872}98739874.peach-pair-bird-pose-happy .peach-pair-bird-shadow { animation: peach-pair-bird-shadow-pulse 0.9s ease-in-out infinite; }9875@keyframes peach-pair-bird-shadow-pulse {9876  0%, 100% { transform: scaleX(1); opacity: 0.45; }9877  50%      { transform: scaleX(0.92); opacity: 0.3; }9878}98799880/* Per-pose variants --------------------------------------------------- */9881.peach-pair-bird-pose-sad .peach-pair-bird-head-group { transform: translateY(4px) rotate(8deg); }9882.peach-pair-bird-pose-sad .peach-pair-bird-tuft { transform: rotate(15deg) translateY(2px); }9883.peach-pair-bird-pose-sad .peach-pair-bird-tail { transform: rotate(8deg) translateY(2px); }9884.peach-pair-bird-pose-hidden { opacity: 0; }98859886/* Rest state — bird stage at idle pose, primary CTA + paired list */9887.peach-pair-pair[data-phase="idle"] .peach-pair-stage {9888  height: 160px;9889}98909891/* Sound arcs ----------------------------------------------------------- */9892.peach-pair-arcs {9893  position: absolute;9894  top: 18px;9895  width: 96px;9896  height: 70px;9897  pointer-events: none;9898}9899.peach-pair-arcs-right { right: -60px; }9900.peach-pair-arcs-left  { left: -60px; transform: scaleX(-1); }9901.peach-pair-arc {9902  position: absolute;9903  top: 50%;9904  left: 0;9905  width: 40px;9906  height: 40px;9907  margin-top: -20px;9908  border: 1.2px solid #f4d5a8;9909  border-color: transparent #f4d5a8 transparent transparent;9910  border-radius: 50%;9911  opacity: 0;9912  animation: peach-pair-arc-expand 1.7s cubic-bezier(.2, .6, .2, 1) infinite;9913}9914@keyframes peach-pair-arc-expand {9915  0%   { transform: scale(0.4); opacity: 0; }9916  20%  { opacity: 0.9; }9917  100% { transform: scale(1.6); opacity: 0; }9918}99199920/* Flight wave ---------------------------------------------------------- */9921.peach-pair-flight-track {9922  position: absolute;9923  inset: 32px 36px 38px 36px;9924  pointer-events: none;9925}9926.peach-pair-flight-wave {9927  position: absolute;9928  top: 8px;9929  left: 76px;9930  right: 76px;9931  height: 60px;9932  width: auto;9933  opacity: 0;9934  transition: opacity 0.15s ease;9935  stroke: #f4d5a8;9936  fill: none;9937}9938.peach-pair-flight-wave[data-from="mobile"] { transform: scaleX(-1); }9939.peach-pair-flight-wave.is-visible { opacity: 1; }9940.peach-pair-flight-path,9941.peach-pair-flight-path-2 {9942  stroke-dasharray: 240;9943  stroke-dashoffset: 240;9944  stroke-linecap: round;9945  fill: none;9946}9947.peach-pair-flight-path   { stroke-width: 1.6; stroke: #f4d5a8; }9948.peach-pair-flight-path-2 { stroke-width: 1; stroke: #f4d5a8; opacity: 0.55; }9949.peach-pair-flight-wave.is-visible .peach-pair-flight-path {9950  animation: peach-pair-fly 700ms cubic-bezier(.2,.6,.2,1) forwards;9951}9952.peach-pair-flight-wave.is-visible .peach-pair-flight-path-2 {9953  animation: peach-pair-fly 700ms cubic-bezier(.2,.6,.2,1) 80ms forwards;9954}9955@keyframes peach-pair-fly {9956  0%   { stroke-dashoffset: 240; opacity: 0; }9957  20%  { opacity: 1; }9958  100% { stroke-dashoffset: -120; opacity: 0; }9959}99609961/* Connection dot ------------------------------------------------------- */9962.peach-pair-dot {9963  position: absolute;9964  top: 50%; left: 50%;9965  transform: translate(-50%, -50%);9966  width: 40px; height: 40px;9967  opacity: 0;9968  pointer-events: none;9969  transition: opacity 0.3s ease;9970  color: var(--peach-accent);9971}9972.peach-pair-dot.is-visible { opacity: 1; }9973.peach-pair-dot-glow {9974  position: absolute; top: 50%; left: 50%;9975  transform: translate(-50%, -50%);9976  width: 38px; height: 38px;9977  border-radius: 50%;9978  filter: blur(10px);9979  opacity: 0.55;9980  background: var(--peach-accent);9981  animation: peach-pair-dot-bloom 1.4s ease-out;9982}9983.peach-pair-dot-core {9984  position: absolute; top: 50%; left: 50%;9985  transform: translate(-50%, -50%);9986  width: 8px; height: 8px;9987  border-radius: 50%;9988  background: var(--peach-accent);9989  box-shadow: 0 0 12px currentColor;9990  animation: peach-pair-dot-core 1.4s ease-out;9991}9992.peach-pair-dot-ring {9993  position: absolute; top: 50%; left: 50%;9994  width: 60px; height: 60px;9995  transform: translate(-50%, -50%);9996  animation: peach-pair-dot-ring 1.4s linear;9997  stroke: var(--peach-accent);9998}9999@keyframes peach-pair-dot-bloom {10000  0%   { width: 4px; height: 4px; opacity: 0; }10001  35%  { width: 60px; height: 60px; opacity: 0.7; }10002  100% { width: 38px; height: 38px; opacity: 0.55; }10003}10004@keyframes peach-pair-dot-core {10005  0%   { width: 0; height: 0; }10006  35%  { width: 12px; height: 12px; }10007  100% { width: 8px; height: 8px; }10008}10009@keyframes peach-pair-dot-ring {10010  0%   { transform: translate(-50%, -50%) scale(0.4); opacity: 0; }10011  35%  { transform: translate(-50%, -50%) scale(1.0); opacity: 0.6; }10012  100% { transform: translate(-50%, -50%) scale(1.4); opacity: 0; }10013}1001410015/* Motes — drift upward across the stage */10016.peach-pair-motes {10017  position: absolute;10018  inset: 0;10019  pointer-events: none;10020}10021.peach-pair-mote {10022  position: absolute;10023  width: 2px; height: 2px;10024  background: color-mix(in srgb, var(--peach-text) 35%, transparent);10025  border-radius: 50%;10026  bottom: 32px;10027  left: calc(50% + (var(--mote-i, 0) - 4) * 24px);10028  opacity: 0;10029  animation: peach-pair-mote-drift 6s linear infinite;10030  animation-delay: calc(var(--mote-i, 0) * 0.7s);10031}10032@keyframes peach-pair-mote-drift {10033  0%   { transform: translateY(0); opacity: 0; }10034  10%  { opacity: 0.6; }10035  90%  { opacity: 0.1; }10036  100% { transform: translateY(-120px) translateX(8px); opacity: 0; }10037}1003810039/* Status copy ---------------------------------------------------------- */10040.peach-pair-copy-host {10041  margin: 4px 4px 10px;10042  text-align: center;10043  min-height: 50px;10044}10045.peach-pair-copy {10046  animation: peach-pair-copy-in 0.35s ease both;10047}10048@keyframes peach-pair-copy-in {10049  from { opacity: 0; transform: translateY(4px); }10050  to   { opacity: 1; transform: translateY(0); }10051}10052.peach-pair-headline {10053  font-family: var(--font-display, Georgia, serif);10054  font-style: italic;10055  font-size: 20px;10056  font-weight: 500;10057  line-height: 1.2;10058  letter-spacing: 0.005em;10059  color: var(--peach-t0);10060  margin-bottom: 6px;10061}10062.peach-pair-copy-listening .peach-pair-headline,10063.peach-pair-copy-chirping .peach-pair-headline,10064.peach-pair-copy-idle .peach-pair-headline {10065  font-family: inherit;10066  font-style: normal;10067  font-weight: 500;10068  font-size: 15px;10069  color: var(--peach-t0);10070  letter-spacing: 0;10071}10072.peach-pair-copy-paired .peach-pair-headline {10073  color: var(--peach-t0);10074  font-weight: 600;10075}10076.peach-pair-sub {10077  font-size: 12.5px;10078  line-height: 1.45;10079  color: var(--peach-t1);10080  max-width: 280px;10081  margin: 0 auto;10082  text-wrap: pretty;10083}1008410085/* Status action -------------------------------------------------------- */10086.peach-pair-action {10087  margin: 2px 4px 10px;10088  margin-top: auto;10089  display: flex;10090  flex-direction: column;10091  gap: 8px;10092}10093.peach-pair-action-waiting {10094  display: flex;10095  align-items: center;10096  justify-content: space-between;10097  gap: 12px;10098}10099.peach-pair-cancel {10100  min-width: 96px;10101}10102.peach-pair-listening {10103  display: inline-flex; align-items: center; gap: 4px;10104  font-family: var(--peach-mono, ui-monospace, monospace);10105  font-size: 9.5px;10106  text-transform: uppercase;10107  letter-spacing: 0.12em;10108  color: var(--peach-t1);10109  padding: 8px 10px;10110}10111.peach-pair-listen-dot {10112  width: 4px; height: 4px;10113  border-radius: 50%;10114  background: color-mix(in srgb, var(--peach-accent) 55%, transparent);10115  animation: peach-pair-listen-pulse 1.2s ease-in-out infinite;10116}10117.peach-pair-listen-dot:nth-child(2) { animation-delay: 0.2s; }10118.peach-pair-listen-dot:nth-child(3) { animation-delay: 0.4s; }10119.peach-pair-listen-label { margin-left: 6px; }10120@keyframes peach-pair-listen-pulse {10121  0%, 100% { opacity: 0.25; transform: scale(0.9); }10122  50%      { opacity: 1;     transform: scale(1.15); }10123}1012410125.peach-pair-action-handshake {10126  display: flex;10127  flex-direction: column;10128  align-items: center;10129  gap: 8px;10130  padding: 8px 4px;10131}10132.peach-pair-meter {10133  width: 100%;10134  max-width: 280px;10135  height: 2px;10136  background: color-mix(in srgb, var(--peach-t0) 10%, transparent);10137  border-radius: 2px;10138  position: relative;10139  overflow: hidden;10140}10141.peach-pair-meter-bar {10142  position: absolute;10143  top: 0; bottom: 0;10144  width: 30%;10145  left: -30%;10146  background: linear-gradient(90deg, transparent, var(--peach-accent), transparent);10147  animation: peach-pair-meter-sweep 1.4s ease-in-out infinite;10148}10149@keyframes peach-pair-meter-sweep {10150  0%   { left: -30%; }10151  100% { left: 100%; }10152}10153.peach-pair-meter-label {10154  font-family: var(--peach-mono, ui-monospace, monospace);10155  font-size: 9.5px;10156  text-transform: uppercase;10157  letter-spacing: 0.14em;10158  color: var(--peach-t1);10159}1016010161.peach-pair-action-paired {10162  display: flex;10163  align-items: center;10164  gap: 10px;10165}10166.peach-pair-device-confirm {10167  flex: 1;10168  display: inline-flex;10169  align-items: center;10170  gap: 8px;10171  padding: 9px 10px 9px 12px;10172  border-radius: 10px;10173  background: color-mix(in srgb, #76b6e8 12%, transparent);10174  border: 1px solid color-mix(in srgb, #76b6e8 30%, transparent);10175  font-size: 12.5px;10176  color: var(--peach-t0);10177  min-width: 0;10178}10179.peach-pair-device-confirm-glyph {10180  display: inline-flex;10181  color: #76b6e8;10182}10183.peach-pair-device-confirm-name {10184  flex: 1;10185  overflow: hidden;10186  text-overflow: ellipsis;10187  white-space: nowrap;10188}10189.peach-pair-device-confirm-trust {10190  font-family: var(--peach-mono, ui-monospace, monospace);10191  font-size: 9.5px;10192  text-transform: uppercase;10193  letter-spacing: 0.1em;10194  color: #76b6e8;10195  padding: 2px 6px;10196  border-radius: 4px;10197  background: color-mix(in srgb, #76b6e8 14%, transparent);10198}10199.peach-pair-done {10200  min-width: 80px;10201}10202.peach-pair-retry {10203  align-self: center;10204  display: block;10205  margin: 6px auto 0;10206  min-width: 120px;10207}10208.peach-pair-mic-help {10209  font-size: 12px;10210  color: var(--peach-t1);10211  text-align: center;10212  max-width: 320px;10213  margin: 0 auto;10214}1021510216/* Rest state — bird stage at idle pose, primary CTA + paired list */10217.peach-pair-pair[data-phase="idle"] .peach-pair-stage {10218  /* Slightly shorter stage when at rest — no flight wave or motes to fill it */10219  height: 160px;10220}10221.peach-pair-pair-start {10222  width: 100%;10223  display: inline-flex;10224  align-items: center;10225  justify-content: center;10226  gap: 8px;10227  padding: 11px 14px;10228  border-radius: 10px;10229  background: var(--peach-accent);10230  border: 1px solid color-mix(in srgb, var(--peach-accent) 80%, #000);10231  color: #1a0905;10232  font-family: inherit;10233  font-size: 13px;10234  font-weight: 600;10235  letter-spacing: 0.01em;10236  cursor: pointer;10237  transition: filter 0.15s ease, transform 0.1s ease;10238}10239.peach-pair-pair-start:hover { filter: brightness(1.08); }10240.peach-pair-pair-start:active { transform: translateY(1px); }1024110242.peach-pair-paired-section {10243  margin-top: 14px;10244  display: flex;10245  flex-direction: column;10246  gap: 8px;10247}10248.peach-pair-paired-heading {10249  margin: 0;10250  font-family: var(--peach-mono, ui-monospace, monospace);10251  font-size: 10px;10252  font-weight: 500;10253  letter-spacing: 0.14em;10254  text-transform: uppercase;10255  color: var(--peach-t1);10256}1025710258/* Footer --------------------------------------------------------------- */10259.peach-pair-foot {10260  margin: 10px -4px -2px;10261  margin-top: auto;10262}10263.peach-pair-foot-divider {10264  height: 1px;10265  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--peach-t0) 18%, transparent), transparent);10266  margin-bottom: 10px;10267}10268.peach-pair-foot-text {10269  font-size: 11px;10270  line-height: 1.5;10271  color: var(--peach-t1);10272  text-align: center;10273  padding: 0 4px;10274  text-wrap: pretty;10275}1027610277/* Screen-reader-only live region. Kept off the visual flow but read by10278   assistive tech as the pairing phase advances. */10279.peach-sr-only {10280  position: absolute;10281  width: 1px; height: 1px;10282  padding: 0; margin: -1px;10283  overflow: hidden;10284  clip: rect(0, 0, 0, 0);10285  white-space: nowrap;10286  border: 0;10287}1028810289/* Reduced motion — stage simplifies to opacity transitions only */10290@media (prefers-reduced-motion: reduce) {10291  .peach-pair-bird-body,10292  .peach-pair-bird-head-group,10293  .peach-pair-bird-beak,10294  .peach-pair-bird-wing,10295  .peach-pair-bird-tuft,10296  .peach-pair-bird-tail,10297  .peach-pair-bird-eye-group,10298  .peach-pair-bird-aura,10299  .peach-pair-arc,10300  .peach-pair-flight-path,10301  .peach-pair-flight-path-2,10302  .peach-pair-dot-glow,10303  .peach-pair-dot-core,10304  .peach-pair-dot-ring,10305  .peach-pair-mote,10306  .peach-pair-meter-bar,10307  .peach-pair-listen-dot,10308  .peach-pair-bird-slot,10309  .peach-pair-bird-slot-mobile {10310    animation: none !important;10311    transition: opacity 0.2s linear !important;10312  }10313}1031410315/* ─────────────────────────────────────────────────────────────────10316   Settings → Sync surface. Wraps the same bird10317   animation used by the pairing flow with a paired-devices list and10318   the "Pair a device" CTA.10319   ───────────────────────────────────────────────────────────────── */10320.peach-pair-settings {10321  position: absolute;10322  inset: 0;10323  z-index: 3;10324  display: flex;10325  flex-direction: column;10326  gap: 18px;10327  padding: 14px 12px 12px;10328  width: 100%;10329  box-sizing: border-box;10330  overflow-y: auto;10331  overflow-x: hidden;10332  /* Same warm surface as the pairing screen — unifies the two views. */10333  background:10334    radial-gradient(ellipse 70% 50% at 30% 0%, color-mix(in srgb, var(--peach-accent) 10%, transparent), transparent 70%),10335    var(--peach-bg);10336  color: var(--peach-t0);10337  isolation: isolate;10338  /* Hide native scrollbar — content fits 99% of the time and a chunky10339     gutter ruins the surface. */10340  scrollbar-width: none;10341  animation: peach-pair-overlay-in 180ms cubic-bezier(0.4, 0, 0.2, 1) both;10342}10343.peach-pair-settings::-webkit-scrollbar { width: 0; height: 0; display: none; }10344.peach-pair-settings::before {10345  content: '';10346  position: absolute;10347  inset: 0;10348  pointer-events: none;10349  background: radial-gradient(ellipse 90% 30% at 50% 0%, color-mix(in srgb, var(--peach-accent) 6%, transparent), transparent 70%);10350  z-index: 0;10351}10352.peach-pair-settings > * { position: relative; z-index: 1; }1035310354.peach-pair-settings--pairing {10355  padding: 0;10356  align-items: stretch;10357  justify-content: stretch;10358  background: none;10359  isolation: auto;10360}10361.peach-pair-settings--pairing::before { display: none; }1036210363.peach-pair-settings-header {10364  display: flex;10365  align-items: center;10366  gap: 10px;10367}10368.peach-pair-settings-title {10369  margin: 0;10370  font-family: var(--font-display, Georgia, serif);10371  font-style: italic;10372  font-size: 24px;10373  font-weight: 500;10374  line-height: 1;10375  color: var(--peach-t0);10376  letter-spacing: 0.005em;10377}10378.peach-pair-settings-section {10379  margin: 6px 0 -4px;10380  font-size: 11px;10381  font-weight: 600;10382  letter-spacing: 0.08em;10383  text-transform: uppercase;10384  color: var(--peach-text-muted);10385}10386.peach-pair-settings-error {10387  font-size: 12px;10388  padding: 8px 10px;10389  border-radius: 8px;10390  background: color-mix(in srgb, var(--peach-danger, #c25b4a) 18%, transparent);10391  color: var(--peach-text);10392}10393.peach-pair-settings-footer {10394  margin-top: auto;10395  padding-top: 18px;10396  font-size: 11.5px;10397  line-height: 1.5;10398  color: var(--peach-text-muted);10399  text-align: center;10400}1040110402/* Hero card shown when no devices are paired yet. */10403.peach-pair-hero {10404  display: flex;10405  flex-direction: column;10406  align-items: center;10407  gap: 12px;10408  padding: 20px 12px 8px;10409  text-align: center;10410}10411.peach-pair-hero-svg {10412  display: block;10413  max-width: 100%;10414  filter: drop-shadow(0 4px 12px color-mix(in srgb, var(--peach-accent) 25%, transparent));10415}10416.peach-pair-hero-headline {10417  margin: 0;10418  font-family: var(--font-display, Georgia, serif);10419  font-style: italic;10420  font-size: 20px;10421  font-weight: 500;10422  line-height: 1.2;10423  letter-spacing: 0.005em;10424  color: var(--peach-t0);10425}10426.peach-pair-hero-sub {10427  margin: 0;10428  font-size: 13px;10429  line-height: 1.5;10430  color: var(--peach-t1);10431  max-width: 320px;10432  text-wrap: pretty;10433}1043410435.peach-pair-pair-cta {10436  display: flex;10437  justify-content: center;10438  padding: 4px 0 6px;10439}10440.peach-pair-pair-button {10441  display: inline-flex;10442  align-items: center;10443  gap: 8px;10444  min-width: 220px;10445  justify-content: center;10446}10447.peach-pair-pair-button-icon {10448  flex: 0 0 auto;10449}1045010451/* Paired devices list. Roomy rows that look at home next to the rest10452   of Settings; stale rows get a soft warm-warning border tint. */10453.peach-pair-device-list {10454  list-style: none;10455  margin: 0;10456  padding: 0;10457  display: flex;10458  flex-direction: column;10459  gap: 8px;10460}10461.peach-pair-device-row {10462  display: flex;10463  align-items: center;10464  gap: 12px;10465  padding: 12px;10466  border-radius: 10px;10467  background: color-mix(in srgb, var(--peach-bg-elevated, var(--peach-bg)) 88%, var(--peach-accent) 12%);10468  border: 1px solid color-mix(in srgb, var(--peach-accent) 12%, transparent);10469}10470.peach-pair-device-row[data-stale="true"] {10471  border-color: color-mix(in srgb, var(--peach-warn, #d29257) 36%, transparent);10472}10473.peach-pair-device-icon {10474  width: 32px;10475  height: 32px;10476  display: flex;10477  align-items: center;10478  justify-content: center;10479  border-radius: 8px;10480  color: var(--peach-text);10481  background: color-mix(in srgb, var(--peach-accent) 18%, transparent);10482}10483.peach-pair-device-info {10484  flex: 1;10485  display: flex;10486  flex-direction: column;10487  gap: 2px;10488  min-width: 0;10489}10490.peach-pair-device-name {10491  font-size: 14px;10492  font-weight: 600;10493  color: var(--peach-text);10494  overflow: hidden;10495  text-overflow: ellipsis;10496  white-space: nowrap;10497}10498.peach-pair-device-meta {10499  font-size: 11.5px;10500  color: var(--peach-text-muted);10501  display: flex;10502  flex-wrap: wrap;10503  align-items: center;10504  gap: 8px;10505}10506.peach-pair-device-badge {10507  font-size: 10.5px;10508  font-weight: 500;10509  letter-spacing: 0.02em;10510  padding: 2px 6px;10511  border-radius: 999px;10512  background: color-mix(in srgb, var(--peach-accent) 22%, transparent);10513  color: var(--peach-text);10514}10515.peach-pair-device-stale {10516  font-size: 10.5px;10517  font-weight: 500;10518  color: var(--peach-warn, #d29257);10519}10520.peach-pair-device-remove {10521  flex: 0 0 auto;10522  color: var(--peach-text-muted);10523}10524.peach-pair-device-remove:hover {10525  color: var(--peach-danger, #c25b4a);10526}10527.peach-pair-unpair-confirm {10528  display: flex;10529  gap: 6px;10530  align-items: center;10531}1053210533/* Pro-gate card — soft upsell with the mobile bird perched, chirping. */10534.peach-pair-pro-card {10535  position: relative;10536  margin: 18px 12px;10537  padding: 18px 20px 22px;10538  border-radius: 22px;10539  background:10540    radial-gradient(140% 90% at 50% 0%,10541      color-mix(in srgb, var(--peach-accent) 18%, transparent) 0%,10542      transparent 60%),10543    color-mix(in srgb, var(--peach-bg-elevated, var(--peach-bg)) 88%, var(--peach-accent) 12%);10544  border: 1px solid color-mix(in srgb, var(--peach-accent) 22%, transparent);10545  box-shadow:10546    0 1px 0 color-mix(in srgb, var(--peach-accent) 8%, transparent) inset,10547    0 18px 40px -24px rgba(0, 0, 0, 0.45);10548  display: flex;10549  flex-direction: column;10550  align-items: center;10551  gap: 10px;10552  text-align: center;10553  overflow: hidden;10554}10555.peach-pair-pro-stage {10556  position: relative;10557  width: 220px;10558  height: 140px;10559  display: flex;10560  align-items: flex-end;10561  justify-content: center;10562  margin-bottom: 2px;10563}10564.peach-pair-pro-bird-slot {10565  width: 140px;10566  height: 132px;10567  display: flex;10568  align-items: flex-end;10569  justify-content: center;10570  filter: drop-shadow(0 6px 14px rgba(0, 0, 0, 0.35));10571}10572.peach-pair-pro-bird-slot .peach-pair-bird {10573  width: 100%;10574  height: 100%;10575}10576.peach-pair-pro-bird-slot .peach-pair-bird svg {10577  width: 100%;10578  height: 100%;10579  overflow: visible;10580}10581.peach-pair-pro-headline {10582  margin: 4px 0 0;10583  font-family: var(--font-display, "Cormorant Garamond", serif);10584  font-style: italic;10585  font-size: 19px;10586  font-weight: 500;10587  letter-spacing: 0.01em;10588  color: var(--peach-t0);10589  max-width: 280px;10590  line-height: 1.25;10591}10592.peach-pair-pro-body {10593  margin: 0;10594  font-size: 13px;10595  line-height: 1.55;10596  color: var(--peach-t1);10597  max-width: 300px;10598}10599.peach-pair-pro-cta {10600  margin-top: 4px;10601}10602.peach-pair-pro-foot {10603  margin: 2px 0 0;10604  font-family: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;10605  font-size: 0.625rem;10606  letter-spacing: 0.08em;10607  text-transform: uppercase;10608  color: var(--peach-t2);10609  opacity: 0.75;10610}1061110612/* Shell border and shadow in light mode: match dark mode's near-invisible10613   border weight so the popup frame looks the same in both themes. */10614.light .peach-shell,10615.light .peach-screen {10616  border-color: rgba(26, 18, 8, 0.07);10617  box-shadow:10618    0 2px 8px rgba(80, 56, 32, 0.08),10619    0 14px 48px rgba(80, 56, 32, 0.10),10620    0 0 0 1px rgba(26, 18, 8, 0.04);10621}1062210623/* HOLE 4: the revoke confirmation carries its own disclosure, so it needs the10624   full row width rather than sitting inline beside the device name. */10625.peach-settings-row:has(> .peach-unpair-confirm) { flex-wrap: wrap; }10626.peach-unpair-confirm {10627  display: flex;10628  flex-direction: column;10629  gap: 8px;10630  width: 100%;10631}10632.peach-unpair-confirm-note {10633  margin: 0;10634  font-size: 0.6875rem;10635  line-height: 1.5;10636  color: var(--peach-t2);10637}1063810639/* Sync mode selector — three named choices (public / private / off). Replaces10640   the old binary "local network only" toggle; see docs/sync-lan-retirement.md. */10641.peach-sync-mode {10642  display: flex;10643  align-items: flex-start;10644  gap: 10px;10645  width: 100%;10646  text-align: left;10647  padding: 10px 12px;10648  margin-top: 8px;10649  border-radius: 10px;10650  border: 1px solid var(--peach-border);10651  background: color-mix(in srgb, var(--peach-t0) 3%, transparent);10652  color: var(--peach-t1);10653  cursor: pointer;10654  transition: border-color var(--peach-dur-80) var(--peach-curve-arrival),10655              background-color var(--peach-dur-80) var(--peach-curve-arrival);10656}10657.peach-sync-mode:hover:not(:disabled) {10658  border-color: color-mix(in srgb, var(--peach-accent) 40%, transparent);10659}10660.peach-sync-mode.is-active {10661  border-color: var(--peach-accent);10662  background: color-mix(in srgb, var(--peach-accent) 8%, transparent);10663}10664.peach-sync-mode:disabled { opacity: 0.6; cursor: default; }10665.peach-sync-mode-main { display: flex; flex-direction: column; gap: 3px; flex: 1; }10666.peach-sync-mode-title { font-size: 12px; }10667.peach-sync-mode-sub {10668  font-size: 11px;10669  line-height: 1.5;10670  color: var(--peach-t2);10671}10672.peach-sync-mode-pip {10673  flex: none;10674  margin-top: 3px;10675  width: 12px; height: 12px;10676  border-radius: 50%;10677  border: 1px solid var(--peach-t3);10678}10679.peach-sync-mode.is-active .peach-sync-mode-pip {10680  border-color: var(--peach-accent);10681  background:10682    radial-gradient(circle at 50% 50%, var(--peach-accent) 0 42%, transparent 44%);10683}10684.peach-sync-mode-disclosure {10685  margin: 10px 2px 0;10686  font-size: 11px;10687  line-height: 1.5;10688  color: var(--peach-t2);10689}10690.peach-sync-mode-warn { color: var(--peach-breach); }1069110692/* Compact form, used mid-pairing: a quiet line, not a decision to make. */10693.peach-sync-mode-summary {10694  margin: 8px 2px 0;10695  font-size: 11px;10696  color: var(--peach-t2);10697  text-align: center;10698}10699.peach-sync-mode-change {10700  background: none;10701  border: none;10702  padding: 0;10703  font: inherit;10704  color: var(--peach-accent);10705  text-decoration: underline;10706  cursor: pointer;10707}