Files
emoji-chrome-extension/styles.css
2025-09-06 23:58:42 +07:00

270 lines
9.0 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:root {
color-scheme: light dark;
--bg:#fff; --fg:#111; --mut:#6b7280; --dim:#f3f4f6; --br:#e5e7eb;
}
@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 doesnt 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;
}