:root { color-scheme: light dark; --bg:#fff; --fg:#111; --mut:#6b7280; --dim:#f3f4f6; --br:#e5e7eb; --active: #60a5fa2b; } @media (prefers-color-scheme: dark){ :root { --bg:#0b1220; --fg:#e5e7eb; --mut:#9ca3af; --dim:#111827; --br:#374151; } } /* explicit override by class */ .theme-light { color-scheme: light; --bg:#fff; --fg:#111; --mut:#6b7280; --dim:#f3f4f6; --br:#e5e7eb; } .theme-dark { color-scheme: dark; --bg:#0b1220; --fg:#e5e7eb; --mut:#9ca3af; --dim:#111827; --br:#374151; } html, body { margin:0; padding:0; background:var(--bg); color:var(--fg); font:14px/1.4 system-ui, -apple-system, Segoe UI, Roboto, Inter, sans-serif; } .hdr { position:sticky; top:0; background:var(--bg); padding:10px 10px 6px; border-bottom:1px solid var(--br); z-index: 9;} .ttl { margin:0 0 8px; font-size:16px; font-weight:700; } .bar { display:flex; gap:6px; } .inp { flex:1; padding:8px 8px; border:1px solid var(--br); border-radius:8px; background:var(--bg); color:var(--fg); } /* buttons */ .btn { padding:8px 10px; border:1px solid var(--br); border-radius:8px; background:var(--dim); cursor:pointer; } .btn:hover { filter: brightness(0.98); } .btn.icon { width:36px; height:36px; display:grid; place-items:center; padding:0; } /* disabled buttons (e.g., Load more) */ .btn[disabled] { opacity:.55; cursor:not-allowed; } .filters { display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:8px 10px; border-bottom:1px solid var(--br); } .grid { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:8px; padding:10px; } .card { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; padding:10px; border:1px solid var(--br); border-radius:12px; background:var(--bg); cursor: pointer; } .card .emo { font-size:28px; line-height:1; } .card .nm { font-size:12px; color:var(--mut); text-align:center; max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .ft { display:flex; align-items:center; justify-content: space-between; gap:8px; padding:10px; border-top:1px solid var(--br); position:sticky; bottom:0; background:var(--bg); } .muted { color:var(--mut); } .nowrap { white-space: nowrap; } /* Toast */ .toast { position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%); background: var(--dim); color: var(--fg); padding: 8px 12px; border-radius: 8px; border:1px solid var(--br); opacity: 0; pointer-events:none; transition: opacity .18s ease; } .toast.show { opacity: 1; } .sel { padding: 8px 10px; border: 1px solid var(--br); border-radius: 8px; background: var(--bg); color: var(--fg); appearance: none; /* cleaner look */ background-image: linear-gradient(45deg, transparent 50%, var(--mut) 50%), linear-gradient(135deg, var(--mut) 50%, transparent 50%); background-position: calc(100% - 18px) calc(50% - 3px), calc(100% - 12px) calc(50% - 3px); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; } .sel:disabled { opacity: .6; } .badge { padding:2px 8px; border-radius:9999px; font-size:11px; line-height:1.6; background: var(--dim); color: var(--fg); border:1px solid var(--br); } /* Backdrop + Sheet (modal) */ .backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 80; opacity: 0; transition: opacity .18s ease; } .backdrop.show { opacity: 1; } .sheet { position: fixed; right: 12px; bottom: 12px; left: 12px; max-width: 520px; margin: 0 auto; z-index: 81; background: var(--bg); color: var(--fg); border: 1px solid var(--br); border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.25); transform: translateY(8px); opacity: 0; transition: transform .18s ease, opacity .18s ease; } .sheet.show { transform: translateY(0); opacity: 1; } .sheet-head { display:flex; align-items:center; justify-content:space-between; padding:12px; border-bottom:1px solid var(--br); border-radius: inherit} .sheet-body { padding:12px; display:grid; gap:14px; } .field .lbl { display:block; font-weight:600; margin-bottom:6px; } .field .hint { margin-top:6px; font-size:12px; } .row { display:flex; gap:8px; } /* Radios */ .radios { display:grid; gap:8px; } .radio { display:flex; align-items:center; gap:8px; padding:8px; border:1px solid var(--br); border-radius:8px; background: var(--bg); } .radio input[type="radio"] { accent-color: #3b82f6; } .radio[aria-disabled="true"] { opacity:.55; } .tag { margin-left:auto; font-size:11px; padding:2px 8px; border-radius:9999px; border:1px solid var(--br); background: var(--dim); color: var(--fg); } /* Badge (version) already exists — keep it; this is just a reminder */ .badge { padding:2px 8px; border-radius:9999px; font-size:11px; line-height:1.6; background: var(--dim); color: var(--fg); border:1px solid var(--br); } /* Buttons & inputs already set; ensure icon buttons look good */ .btn.icon { width:36px; height:36px; display:grid; place-items:center; padding:0; } .btn[disabled] { opacity:.55; cursor:not-allowed; } .diagbox { margin-top: 8px; padding: 10px; border: 1px dashed var(--br); border-radius: 8px; background: var(--dim); color: var(--fg); font-size: 12px; white-space: pre-wrap; word-break: break-word; } /* apply to the glyph container you use */ .emo, .emo * { font-family: "Segoe UI Emoji", "Noto Color Emoji", "Apple Color Emoji", "Twemoji Mozilla", "EmojiOne Color", "Segoe UI Symbol", system-ui, sans-serif !important; font-variant-emoji: emoji; line-height: 1; } .emo img { width: 28px; height: 28px; display: block; } #dewemoji-status { float: right; } /* Settings tabs */ .tabs { display: flex; border-bottom: 1px solid var(--br); margin-bottom: 12px; } .tab { flex: 1; padding: 8px; text-align: center; cursor: pointer; background: var(--dim); border: 1px solid var(--br); border-bottom: none; border-radius: 8px 8px 0 0; font-weight: 600; } .tab:not(.active) { opacity: 0.6; } .tab.active { background: var(--bg); color: var(--fg); opacity: 1; } .tabpane { display: none; } .tabpane.active { display: block; } /* Tone palette theming */ .theme-light, :root.theme-light { --c-bg: var(--bg, #ffffff); --c-chip: var(--dim, #f3f4f6); --c-border: var(--br, #e5e7eb); } .theme-dark, :root.theme-dark { --c-bg: var(--bg, #0f172a); --c-chip: var(--dim, #111827); --c-border: var(--br, #374151); } /* Accent color for focus/selection rings */ .theme-light, :root.theme-light { --accent: #3b82f6; } .theme-dark, :root.theme-dark { --accent: #60a5fa; } /* Tone palette buttons (popover + settings) */ .tone-btn, .tone-chip { border: 1px solid var(--c-border); background: var(--c-chip); } .tone-btn.selected, .tone-chip.selected { border-color: var(--accent) !important; box-shadow: 0 0 0 2px var(--accent) !important; } .tone-btn:focus-visible, .tone-chip:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } /* ===== Settings sheet polish ===== */ .sheet { max-width: 540px; } .sheet-head { position: sticky; top: 0; background: var(--bg); z-index: 2; border-bottom: 1px solid var(--br); } .sheet-head h3 { margin: 0; } .sheet-body { padding-top: 10px; } .field { margin: 12px 0 16px; } .field .lbl { display: block; font-weight: 600; margin-bottom: 6px; } /* Compact rows */ .row { display: grid; grid-template-columns: 1fr auto auto; /* input | Activate | Deactivate */ gap: 8px; align-items: center; } .row + .row { margin-top: 6px; } /* Inputs and small buttons */ .inp { padding: 6px 10px; } .btn.sm { padding: 6px 10px; font-size: 12px; line-height: 1; } .btn.ghost { background: transparent; border: 1px solid var(--br); } .link { background: none; border: 0; color: var(--accent); cursor: pointer; padding: 0; } .link:hover { text-decoration: underline; } /* Tabs = segmented control */ .tabs { background: var(--dim); padding: 4px; border-radius: 10px; display: inline-flex; gap: 4px; border: 1px solid var(--br); margin-bottom: 12px; } .tab { border: 0; background: transparent; padding: 6px 12px; border-radius: 8px; font-weight: 600; } .tab.active { background: var(--bg); box-shadow: inset 0 0 0 1px var(--br); } /* License subtext wraps neatly */ #license-status { display: inline-block; margin-left: 8px; } /* Tone palette spacin.g + buttons */ .tone-palette { display: flex; gap: 8px; flex-wrap: wrap; } .tone-chip { min-width: 40px; height: 36px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid var(--c-border); background: var(--c-chip); } .tone-chip.selected { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent); } /* Toast a tad higher so it doesn’t overlap sheet */ .toast { bottom: 18px; } /* Make the top controls a proper stacking context above the grid */ .topbar, .filters-row { position: sticky; /* or relative if not sticky */ z-index: 5; background: var(--c-bg, #0f172a); /* ensure it has a solid bg in dark & light */ } /* Or ensure the select dropdown sits above adjacent icons */ select#sub { position: relative; z-index: 6; } div.card.active { background-color: var(--active)!important; } .tone-row { grid-column: 1 / -1; background-color: var(--active); border: 1px solid var(--c-border, rgba(0, 0, 0, .12)); border-radius: 12px; padding: 12px; display: grid; grid-template-columns: repeat(5, minmax(0px, 1fr)); gap: 6px; align-items: center; } .tone-option { height: 56px; border-radius: 10px; border: 1px solid var(--c-border, rgba(0, 0, 0, .12)); background: var(--c-bg, #f3f4f6); display: flex; align-items: center; justify-content: center; font-size: x-large; }