/* Settings Stack — layered category deck for the full settings surface. */ .stk-shell { flex: 1; min-height: 0; position: relative; overflow: hidden; padding: 10px 12px 28px; } .stk-mast { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 0 8px; } .stk-back { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; border: 1px solid var(--peach-border); border-radius: 999px; background: color-mix(in srgb, var(--peach-t0) 4%, transparent); color: var(--peach-t1); cursor: pointer; } .stk-back:hover { color: var(--peach-t0); border-color: color-mix(in srgb, var(--peach-accent) 34%, transparent); background: color-mix(in srgb, var(--peach-accent) 10%, transparent); } .stk-mast-title { flex: 1; font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 22px; line-height: 1; color: var(--peach-t0); } .stk-mast-meta { display: flex; align-items: baseline; gap: 6px; font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--peach-t2); } .stk-version-corner { position: absolute; bottom: 7px; left: 0; right: 0; font-family: var(--font-mono); font-size: 7px; letter-spacing: 0; text-align: center; color: color-mix(in srgb, var(--peach-t0) 66%, transparent); pointer-events: none; white-space: nowrap; z-index: 1; } .stk-deck { position: relative; height: min(462px, calc(100% - 36px)); min-height: 462px; margin-top: 0; } .stk-card { position: absolute; left: 0; right: 0; border-radius: var(--stack-card-radius); padding: 18px 18px 16px; overflow: hidden; cursor: pointer; transition: transform 380ms var(--stack-spring), height 380ms var(--stack-spring), box-shadow 280ms ease, opacity 220ms ease; box-shadow: 0 1px 0 color-mix(in srgb, var(--peach-t0) 5%, transparent) inset, 0 8px 20px rgba(0, 0, 0, 0.25); border: 1px solid color-mix(in srgb, var(--peach-t0) 6%, transparent); will-change: transform; } .stk-card::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: radial-gradient( 120% 80% at 0% 0%, color-mix(in srgb, #fff 12%, transparent), transparent 50% ); } .stk-card.is-active { box-shadow: 0 1px 0 color-mix(in srgb, var(--peach-t0) 8%, transparent) inset, 0 18px 36px rgba(0, 0, 0, 0.42); cursor: default; } .stk-card.is-focused { cursor: default; } .stk-card.is-tab:hover { transform: translateY(calc(var(--stk-card-top) - 7px)); box-shadow: 0 1px 0 color-mix(in srgb, #fff 9%, transparent) inset, 0 16px 32px rgba(0, 0, 0, 0.36), 0 0 0 1px color-mix(in srgb, #fff 10%, transparent); transition: transform 90ms ease-out, box-shadow 90ms ease-out; } .stk-card.is-concealed { opacity: 0; pointer-events: none; } .stk-card-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; position: relative; z-index: 1; } .stk-card-num { font-family: var(--font-mono); font-size: 8.5px; letter-spacing: 0.26em; text-transform: uppercase; opacity: 0.7; } .stk-card-icon { opacity: 0.85; } .stk-card-title { position: relative; z-index: 1; margin: 6px 0 0; font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 26px; line-height: 1.2; } .stk-card-lede { position: relative; z-index: 1; margin: 4px 0 0; font-family: var(--font-display); font-style: italic; font-size: 12.5px; line-height: 1.4; opacity: 0.72; } .stk-card-body { position: relative; z-index: 1; height: calc(100% - 76px); margin-top: 14px; margin-right: -18px; padding-right: 18px; overflow-y: auto; overflow-x: hidden; padding-bottom: 16px; opacity: 0; scrollbar-width: thin; scrollbar-color: color-mix(in srgb, currentColor 28%, transparent) transparent; transition: opacity 200ms 100ms ease; } .stk-card-body::-webkit-scrollbar { width: 3px; } .stk-card-body::-webkit-scrollbar-thumb { background: color-mix(in srgb, currentColor 28%, transparent); border-radius: 2px; } .stk-card-body::-webkit-scrollbar-track { background: transparent; } .stk-card.is-active .stk-card-body { opacity: 1; } .stk-card.is-tab .stk-card-top { display: none; } .stk-card.is-tab { padding: 10px 16px 8px; } .stk-card.is-tab .stk-card-title { font-size: 19px; line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .stk-card.is-tab .stk-card-lede, .stk-card.is-tab .stk-card-body { display: none; } .stk-card *:focus-visible { outline: 1px solid currentColor; outline-offset: 2px; } .stk-pip { display: inline-block; width: 18px; height: 18px; border-radius: 50%; background: rgba(0, 0, 0, 0.18); border: 1px solid color-mix(in srgb, currentColor 24%, transparent); } .stk-pip.is-on { background: var(--peach-health-ok); box-shadow: 0 0 6px color-mix(in srgb, var(--peach-health-ok) 55%, transparent); } /* Sync indicator light. Solid green = healthy pair, pulsing green = a sync is running, red = sync is not working. `is-idle` deliberately stays unlit rather than green: nothing has happened yet is not the same as fine. */ .stk-pip--sync { width: 10px; height: 10px; flex-shrink: 0; } .stk-pip--sync.is-busy { background: var(--peach-health-ok); box-shadow: 0 0 6px color-mix(in srgb, var(--peach-health-ok) 55%, transparent); animation: stk-pip-pulse 1600ms ease-in-out infinite; } .stk-pip--sync.is-error { background: var(--peach-breach); box-shadow: 0 0 6px color-mix(in srgb, var(--peach-breach) 55%, transparent); } @keyframes stk-pip-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } } @media (prefers-reduced-motion: reduce) { .stk-pip--sync.is-busy { animation: none; } } .stk-card .peach-settings-body { display: block; flex: none; min-height: 0; overflow: visible; padding: 0; background: transparent; } .stk-card .peach-settings-group { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; } .stk-card .peach-settings-group + .peach-settings-group { margin-top: 0; } .stk-card .peach-settings-sub-label, .stk-card .peach-settings-label { margin: 12px 0 4px; color: color-mix(in srgb, currentColor 58%, transparent); } .stk-card .peach-settings-sub-label:first-child, .stk-card .peach-settings-label:first-child { margin-top: 0; } .stk-card .peach-settings-row, .stk-card .peach-shortcut-row, .stk-card .peach-history-row { border-bottom: 1px solid color-mix(in srgb, currentColor 12%, transparent); color: currentColor; } .stk-card .peach-settings-row--meta, .stk-card .peach-settings-value, .stk-card .peach-hint, .stk-card .peach-settings-hint, .stk-card .peach-feedback-meta, .stk-card .peach-feedback-anon, .stk-card .peach-feedback-intro, .stk-card .peach-history-sub, .stk-card .peach-history-footer, .stk-card .peach-danger-card-copy { color: color-mix(in srgb, currentColor 70%, transparent); } .stk-card .peach-toggle { --peach-accent: currentColor; border-color: color-mix(in srgb, currentColor 32%, transparent); background: color-mix(in srgb, currentColor 8%, transparent); } .stk-card .peach-toggle.is-on { background: color-mix(in srgb, currentColor 28%, transparent); border-color: color-mix(in srgb, currentColor 50%, transparent); } .stk-card .peach-toggle-knob { background: color-mix(in srgb, currentColor 58%, transparent); } .stk-card .peach-toggle.is-on .peach-toggle-knob { background: currentColor; } .stk-card .peach-btn--subtle, .stk-card .peach-btn--ghost, .stk-card .peach-btn--accent, .stk-card .peach-shortcut-chip, .stk-card .peach-shortcut-reset, .stk-card .peach-feedback-chip, .stk-card .peach-settings-license-copy, .stk-card .peach-settings-license-toggle { color: currentColor; border-color: color-mix(in srgb, currentColor 28%, transparent); background: color-mix(in srgb, currentColor 8%, transparent); } .stk-card .peach-btn--subtle:hover, .stk-card .peach-btn--ghost:hover, .stk-card .peach-btn--accent:hover, .stk-card .peach-shortcut-chip:hover, .stk-card .peach-feedback-chip:hover, .stk-card .peach-feedback-chip.is-active { background: color-mix(in srgb, currentColor 16%, transparent); } .stk-card .peach-feedback-chip.is-active { color: #221427; border-color: #f0daf8; background: #e8d4f0; box-shadow: 0 0 0 1px color-mix(in srgb, #f0daf8 64%, transparent), 0 0 16px color-mix(in srgb, #f0daf8 24%, transparent); font-weight: 700; } .stk-card .peach-feedback-thanks { color: currentColor; border-color: color-mix(in srgb, currentColor 32%, transparent); background: linear-gradient(180deg, color-mix(in srgb, currentColor 12%, transparent), transparent), rgba(0, 0, 0, 0.18); } .stk-card .peach-feedback-thanks-title { color: currentColor; } .stk-card .peach-settings-input, .stk-card .peach-settings-select, .stk-card .peach-pro-key-inline-input, .stk-card .peach-feedback-textarea { color: currentColor; border-color: color-mix(in srgb, currentColor 22%, transparent); background: rgba(0, 0, 0, 0.18); } .stk-card .peach-settings-input::placeholder, .stk-card .peach-pro-key-inline-input::placeholder, .stk-card .peach-feedback-textarea::placeholder { color: color-mix(in srgb, currentColor 42%, transparent); } .stk-card .peach-accent-picker { justify-content: flex-end; max-width: 160px; } .stk-card .peach-accent-swatch { width: 20px; height: 20px; } .stk-card .peach-accent-swatch.is-active { border-color: currentColor; } .stk-card .peach-history-list { border-color: color-mix(in srgb, currentColor 18%, transparent); } .stk-card .peach-danger-card { background: rgba(0, 0, 0, 0.18); border-color: color-mix(in srgb, currentColor 20%, transparent); } .stk-card .peach-pro-upgrade, .stk-card .peach-pro-active, .stk-card .peach-pro-active-hero, .stk-card .peach-pro-grid-item { background: transparent; border-color: color-mix(in srgb, currentColor 14%, transparent); box-shadow: none; } .stk-card .peach-pro-grid { gap: 6px; } .stk-card .peach-pro-grid-item { padding: 7px 0; } .stk-card .peach-pro-headline, .stk-card .peach-pro-active-title { color: currentColor; } .stk-deck.is-open .stk-card.is-active .peach-pro-active { min-height: 0; padding: 0 4px 10px; } .stk-deck.is-open .stk-card.is-active .peach-pro-active-hero { gap: 4px; padding: 8px 0 12px; } .stk-deck.is-open .stk-card.is-active .peach-pro-active-mark-wrap { margin-bottom: 0; overflow: visible; } .stk-deck.is-open .stk-card.is-active .peach-pro-active-mark { width: 50px; height: 50px; } .stk-deck.is-open .stk-card.is-active .peach-pro-active-title { font-size: 25px; line-height: 1; } .stk-deck.is-open .stk-card.is-active .peach-pro-active-since { line-height: 1.2; } .stk-deck.is-open .stk-card.is-active .peach-settings-license, .stk-deck.is-open .stk-card.is-active .peach-pro-active-features, .stk-deck.is-open .stk-card.is-active .peach-pro-deactivate { display: none; } .stk-card .peach-feedback-textarea { min-height: 116px; } .peach-settings-overlay { --bg: #0C0A06; --s1: #131109; --s2: #1A1710; --t0: #F0E8D8; --t1: rgba(240, 232, 216, 0.50); --t2: rgba(240, 232, 216, 0.20); --t3: rgba(240, 232, 216, 0.07); --t4: rgba(240, 232, 216, 0.04); --surface-card: rgba(240, 232, 216, 0.02); --shell-accent-a: color-mix(in srgb, var(--peach-accent) 8%, transparent); --shell-accent-b: color-mix(in srgb, var(--peach-accent) 6%, transparent); --peach-bg: var(--bg); --peach-s1: var(--s1); --peach-s2: var(--s2); --peach-t0: var(--t0); --peach-t1: var(--t1); --peach-t2: var(--t2); --peach-t3: var(--t3); --peach-t4: var(--t4); --peach-bg-card: var(--surface-card); --peach-border: var(--peach-t3); --peach-text-dim: var(--peach-t1); background: var(--peach-bg); color: var(--peach-t0); } /* Force html/body backgrounds dark when Settings is mounted so the popup frame chrome doesn't go white in light theme. */ html:has(.peach-settings-overlay), html:has(.peach-settings-overlay) body { background: #0C0A06; } /* Beat the .light .peach-btn--ghost rule in popup.css which would otherwise paint Settings buttons with the light-theme surface color. */ .peach-settings-overlay .stk-card .peach-btn--ghost:not(.peach-icon-btn) { background: color-mix(in srgb, var(--peach-t0) 8%, transparent); border-color: color-mix(in srgb, var(--peach-t0) 22%, transparent); color: var(--peach-t0); } .peach-settings-overlay .stk-card .peach-btn--ghost:not(.peach-icon-btn):hover { background: color-mix(in srgb, var(--peach-t0) 16%, transparent); } .peach-settings-overlay .stk-shell { background: var(--peach-bg); } .peach-settings-overlay .stk-card { box-shadow: 0 1px 0 color-mix(in srgb, var(--peach-t0) 5%, transparent) inset, 0 8px 20px rgba(0, 0, 0, 0.25); } .peach-settings-overlay .stk-card.is-active { box-shadow: 0 1px 0 color-mix(in srgb, var(--peach-t0) 8%, transparent) inset, 0 18px 36px rgba(0, 0, 0, 0.42); } [data-motion="reduce"] .stk-card, [data-motion="reduce"] .stk-card-body { transition: none !important; } /* ── Fan animation: measured card transitions during the Pro replay cycle ── */ .stk-deck.is-fanning .stk-card { transition: transform 140ms cubic-bezier(0.22, 1, 0.36, 1), height 140ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 140ms ease, opacity 140ms ease; } /* ── Card shake when the pro card lands after the fan ── */ .stk-card.is-celebrating { transition: none !important; animation: stk-card-celebrate 880ms cubic-bezier(0.22, 1, 0.36, 1) both; } @keyframes stk-card-celebrate { 0% { transform: translateY(var(--stk-card-top)); } 24% { transform: translateY(calc(var(--stk-card-top) - 10px)) rotate(-1.3deg); } 48% { transform: translateY(calc(var(--stk-card-top) + 5px)) rotate(0.9deg); } 70% { transform: translateY(calc(var(--stk-card-top) - 4px)) rotate(-0.45deg); } 86% { transform: translateY(calc(var(--stk-card-top) + 2px)); } 100% { transform: translateY(var(--stk-card-top)); } } /* ── Ambient sparkle dust on the Pro card when user is Pro ── */ .stk-deck.is-pro .stk-card[data-settings-card-id="pro"]::before { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background-image: radial-gradient(circle, rgba(255, 248, 220, 0.9) 0.5px, transparent 0.5px), radial-gradient(circle, rgba(255, 255, 255, 0.7) 0.5px, transparent 0.5px), radial-gradient(circle, rgba(255, 238, 170, 0.6) 1px, transparent 1px); background-size: 38px 38px, 53px 47px, 71px 63px; background-position: 0 0, 19px 15px, 9px 30px; animation: stk-pro-dust 14s linear infinite; opacity: 0.11; z-index: 0; mix-blend-mode: screen; } @keyframes stk-pro-dust { 0% { transform: translate(0, 0); } 100% { transform: translate(53px, 47px); } } [data-motion="reduce"] .stk-deck.is-pro .stk-card[data-settings-card-id="pro"]::before, [data-motion="reduce"] .stk-card.is-celebrating { animation: none; } /* ── Clickable card icon (easter egg trigger) ── */ .stk-card-icon--btn { background: transparent; border: 0; color: inherit; padding: 0; cursor: pointer; opacity: 0.85; display: inline-flex; align-items: center; justify-content: center; } .stk-card-icon--btn:hover { opacity: 1; } /* ── Chip highlight clipping fix ── */ /* .stk-card-body has overflow-x: hidden which clips the active chip's glow */ .stk-card .peach-feedback-chips { padding-left: 3px; }