@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap'); :root { --pastel-pink: #FFB3BA; --pastel-peach: #FFDFBA; --pastel-yellow: #FFFFD1; --pastel-mint: #B4F8C8; --pastel-sky: #BAE1FF; --pastel-lavender: #E0BBE4; --pastel-lilac: #C5B3E6; --pastel-coral: #FFB7B2; --pastel-lime: #C5E1A5; --pastel-blue: #A8D8EA; --bg-primary: #FFFEF9; --bg-secondary: #FFFEFA; --bg-tertiary: #FFF8F0; --bg-elevated: #FFFFFF; --text-primary: #1a1a1e; --text-secondary: #3a3a4a; --text-muted: #6a6a7a; --border-color: #D8D0C8; --border-light: #C8C4BC; --accent-primary: #C5B3E6; --accent-secondary: #BAE1FF; --accent-solid: #FFB3BA; --accent-glow: rgba(197, 179, 230, 0.3); --accent-light: rgba(197, 179, 230, 0.2); --success: #B4F8C8; --warning: #FFDFBA; --error: #FFB7B2; --text-dark: #3a3a4a; --text-darker: #2a2a3a; --text-accent: #7a6aaa; --text-code: #6a5a9a; --text-success: #2a3a2a; --text-warm: #3a2a1a; --text-selection: #9a8aba; --bg-selection: #f5f3fa; --border-slider: #D8D0C8; --overlay-dark: rgba(0, 0, 0, 0.85); --overlay-light: rgba(0, 0, 0, 0.4); --scrollbar-thumb: #9a8aba; --scrollbar-thumb-hover: #7a6a9a; --scrollbar-track: rgba(0, 0, 0, 0.05); --glow-pink: rgba(255, 179, 186, 0.3); --glow-sky: rgba(186, 225, 255, 0.3); --glow-mint: rgba(180, 248, 200, 0.3); --glow-lavender: rgba(224, 187, 228, 0.3); --glow-peach: rgba(255, 223, 186, 0.3); --shadow-sm: 0 2px 8px rgba(150, 140, 180, 0.15); --shadow-md: 0 8px 24px rgba(150, 140, 180, 0.2); --shadow-lg: 0 16px 48px rgba(150, 140, 180, 0.25); --shadow-glow: 0 0 30px rgba(197, 179, 230, 0.25); --radius-sm: 8px; --radius-md: 12px; --radius-lg: 20px; --radius-xl: 28px; --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); /* Dark mode overrides */ --modal-icon-bg: var(--pastel-pink); --modal-code-color: var(--text-code); --copy-btn-bg: var(--pastel-peach); --copy-btn-text: var(--text-warm); --modal-primary-bg: var(--pastel-lilac); --modal-primary-text: var(--text-darker); --toast-bg: var(--success); --toast-text: var(--text-success); --logo-bg: var(--pastel-lilac); --logo-text: var(--text-dark); --header-gradient-1: var(--pastel-lilac); --header-gradient-2: var(--pastel-lilac); /* Filter button active colors */ --filter-regular-active: var(--pastel-lilac); --filter-bold-active: var(--pastel-pink); --filter-solid-active: var(--pastel-coral); --filter-thin-active: var(--pastel-sky); --filter-duotone-active: var(--pastel-lavender); --corner-straight-active: var(--pastel-lime); --corner-rounded-active: var(--pastel-mint); --corner-chubby-active: var(--pastel-peach); --type-interface-active: var(--pastel-blue); --type-brands-active: var(--pastel-yellow); /* Filter label icon colors */ --filter-weight-icon: var(--pastel-pink); --filter-corner-icon: var(--pastel-mint); --filter-type-icon: var(--pastel-lavender); /* Icon card border colors */ --card-border-1: var(--pastel-pink); --card-border-2: var(--pastel-sky); --card-border-3: var(--pastel-mint); --card-border-4: var(--pastel-lavender); --card-border-5: var(--pastel-peach); /* Modal variation active */ --modal-var-active-bg: var(--bg-selection); --modal-var-active-border: var(--text-selection); } [data-theme="light"] { --bg-primary: #FFFEF9; --bg-secondary: #FFFEFA; --bg-tertiary: #FFF8F0; --bg-elevated: #FFFFFF; --text-primary: #1a1a1e; --text-secondary: #3a3a4a; --text-muted: #6a6a7a; --border-color: #D8D0C8; --border-light: #C8C4BC; } [data-theme="dark"] { --bg-primary: #1a1a1e; --bg-secondary: #1e1e24; --bg-tertiary: #25252d; --bg-elevated: #2a2a34; --text-primary: #f5f5f7; --text-secondary: #d4d4d8; --text-muted: #a1a1aa; --border-color: #3a3a4a; --border-light: #4a4a5a; --scrollbar-thumb: #5a5a6a; --scrollbar-thumb-hover: #6a6a7a; --scrollbar-track: rgba(255, 255, 255, 0.05); /* Dark mode override values */ --modal-icon-bg: #5a3a4a; --modal-code-color: #c5b3e6; --copy-btn-bg: #4a3a2a; --copy-btn-text: #f5d4a0; --modal-primary-bg: #5a4a7a; --modal-primary-text: #f5f5f7; --toast-bg: #3a5a4a; --toast-text: #b4f8c8; --logo-bg: #5a4a7a; --logo-text: #f5f5f7; --header-gradient-1: #c5a5e6; --header-gradient-2: #a5c5f5; /* Filter button active colors */ --filter-regular-active: #6a5a8a; --filter-bold-active: #8a5a6a; --filter-solid-active: #8a5a5a; --filter-thin-active: #5a7a9a; --filter-duotone-active: #7a6a9a; --corner-straight-active: #6a8a5a; --corner-rounded-active: #5a9a7a; --corner-chubby-active: #8a7a5a; --type-interface-active: #5a8a9a; --type-brands-active: #9a9a5a; /* Filter label icon colors */ --filter-weight-icon: #e5a5b5; --filter-corner-icon: #a5e5c5; --filter-type-icon: #d5b5e5; /* Icon card border colors */ --card-border-1: #7a5a6a; --card-border-2: #5a6a8a; --card-border-3: #5a8a6a; --card-border-4: #7a6a9a; --card-border-5: #8a7a5a; /* Modal variation active */ --modal-var-active-bg: #3a3a5a; --modal-var-active-border: #6a6a9a; /* Glow colors for hover states */ --glow-pink: rgba(180, 100, 120, 0.3); --glow-sky: rgba(100, 140, 180, 0.3); --glow-mint: rgba(100, 180, 140, 0.3); --glow-lavender: rgba(140, 120, 180, 0.3); --glow-peach: rgba(180, 160, 100, 0.3); & .header h1 a { background: linear-gradient(135deg, var(--header-gradient-1), var(--header-gradient-2)); -webkit-background-clip: text; background-clip: text; } & #weightFilter .filter-btn.active, & #cornerFilter .filter-btn.active, & #typeFilter .filter-btn.active { color: var(--text-primary); } & .modal-var.active { & .var-icon { color: var(--text-primary); } & .var-label { color: var(--text-secondary); } } & .modal-overlay { background: var(--overlay-dark); } } [data-theme="light"] .modal-overlay { background: var(--overlay-light); } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg-primary); color: var(--text-primary); min-height: 100vh; transition: background 0.4s ease, color 0.4s ease; position: relative; overflow-x: hidden; line-height: 1.5; &::before { content: ''; position: fixed; inset: 0; background: radial-gradient(circle at 20% 10%, var(--pastel-pink) 0%, transparent 30%), radial-gradient(circle at 80% 20%, var(--pastel-sky) 0%, transparent 30%), radial-gradient(circle at 50% 80%, var(--pastel-mint) 0%, transparent 30%), radial-gradient(circle at 10% 70%, var(--pastel-yellow) 0%, transparent 25%), radial-gradient(circle at 90% 60%, var(--pastel-lavender) 0%, transparent 25%); pointer-events: none; z-index: -1; opacity: 0.6; transition: opacity 0.4s ease; } &::after { content: ''; position: fixed; inset: 0; background-image: radial-gradient(var(--border-color) 1px, transparent 1px); background-size: 30px 30px; opacity: 0.3; pointer-events: none; z-index: -1; } } [data-theme="dark"] body { &::before { opacity: 0.08; } &::after { opacity: 0.15; } } .header { background: color-mix(in srgb, var(--bg-secondary) 85%, transparent); border-bottom: 1px solid var(--border-color); padding: 20px 24px 24px; position: sticky; top: 0; z-index: 100; backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); & h1 { font-size: 1.5rem; font-weight: 800; letter-spacing: -0.03em; display: flex; align-items: center; gap: 10px; & a { color: inherit; text-decoration: none; background: var(--header-gradient-1); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } } } .header-inner { max-width: 1600px; margin: 0 auto; } .header-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; } .logo-section { display: flex; align-items: center; gap: 16px; } .logo-icon { width: 48px; height: 48px; background: var(--logo-bg); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 24px; color: var(--logo-text); box-shadow: var(--shadow-glow); } .header-subtitle { font-size: 13px; color: var(--text-muted); margin-top: 2px; font-weight: 500; } .header-actions { display: flex; align-items: center; gap: 12px; } .theme-toggle { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: var(--radius-sm); color: var(--text-secondary); cursor: pointer; transition: var(--transition); font-size: 18px; &:hover { background: var(--bg-elevated); border-color: var(--border-light); color: var(--text-primary); transform: translateY(-1px); } } .search-container { flex: 1; min-width: 200px; max-width: 400px; } .search-box { display: flex; align-items: center; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: var(--radius-sm); padding: 0 12px; transition: var(--transition); height: 38px; &:focus-within { background: var(--bg-elevated); border-color: var(--accent-primary); box-shadow: 0 0 0 3px var(--accent-light); } & .search-icon { color: var(--text-muted); font-size: 16px; margin-right: 12px; } } .search-input { flex: 1; border: none; background: none; padding: 0; font-size: 13px; outline: none; color: var(--text-primary); font-weight: 500; &::placeholder { color: var(--text-muted); } } .search-shortcut { background: var(--bg-elevated); border: 1px solid var(--border-color); border-radius: 6px; padding: 6px 10px; font-size: 12px; color: var(--text-muted); font-family: 'SF Mono', Monaco, 'Consolas', monospace; font-weight: 600; } .filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; } .filter-section { display: flex; align-items: center; gap: 8px; flex-shrink: 0; transition: opacity 0.3s ease; &.disabled-section { opacity: 0.45; pointer-events: none; } } .filter-label { font-size: 10px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.6px; display: inline-flex; align-items: center; gap: 4px; & .fi { font-size: 12px; color: var(--accent-primary); } } .filter-btn { padding: 7px 12px; font-size: 12px; font-weight: 600; background: transparent; border: none; border-radius: 5px; color: var(--text-secondary); cursor: pointer; transition: var(--transition); white-space: nowrap; position: relative; &:hover { background: var(--bg-elevated); color: var(--text-primary); } &.active { background: var(--pastel-lilac); color: var(--text-darker); box-shadow: 0 2px 8px var(--accent-glow); } &.disabled { opacity: 0.35; pointer-events: none; } } .size-control { display: flex; align-items: center; gap: 10px; background: var(--bg-tertiary); padding: 6px 12px; border-radius: var(--radius-sm); border: 1px solid var(--border-color); flex-shrink: 0; min-height: 38px; box-sizing: border-box; } .filter-group { display: flex; gap: 1px; background: var(--bg-tertiary); padding: 3px; border-radius: var(--radius-sm); border: 1px solid var(--border-color); min-height: 38px; box-sizing: border-box; } .size-slider { width: 80px; height: 5px; -webkit-appearance: none; background: var(--border-slider); border-radius: 3px; outline: none; cursor: pointer; &::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; background: var(--pastel-sky); border-radius: 50%; cursor: pointer; box-shadow: 0 2px 8px var(--accent-glow); transition: transform 0.2s; &:hover { transform: scale(1.1); } } &::-moz-range-thumb { width: 16px; height: 16px; background: var(--pastel-sky); border: none; border-radius: 50%; cursor: pointer; box-shadow: 0 2px 8px var(--accent-glow); transition: transform 0.2s; &:hover { transform: scale(1.1); } } &::-moz-range-track { background: var(--border-slider); border-radius: 3px; height: 5px; } } .size-value { font-size: 12px; font-weight: 600; color: var(--text-secondary); min-width: 38px; text-align: center; } .stats { position: fixed; bottom: 24px; left: 24px; font-size: 12px; color: var(--text-muted); display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: var(--bg-secondary); border-radius: var(--radius-md); border: 1px solid var(--border-color); box-shadow: var(--shadow-md); z-index: 50; transition: background 0.4s ease, border-color 0.4s ease, color 0.4s ease; & strong { color: var(--text-accent); font-weight: 700; } } .loading-indicator { display: inline-block; width: 16px; height: 16px; border: 2px solid var(--border-color); border-top-color: var(--text-accent); border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .main { max-width: 1600px; margin: 0 auto; padding: 32px 24px; } .icon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--icon-card-size, 120px), 1fr)); gap: 16px; } .icon-card { background: var(--bg-secondary); border-radius: var(--radius-md); padding: 24px 12px 16px; text-align: center; cursor: pointer; transition: var(--transition), background 0.4s ease, border-color 0.4s ease, box-shadow 0.4s ease; border: 1px solid var(--border-color); position: relative; overflow: hidden; &::before { content: ''; position: absolute; inset: 0; background: var(--pastel-sky); opacity: 0; transition: var(--transition); } &:hover { border-color: var(--accent-primary); transform: translateY(-4px); box-shadow: var(--shadow-lg), var(--shadow-glow); &::before { opacity: 0.05; } & .icon { transform: scale(1.1); color: var(--accent-primary); } } & .icon { font-size: var(--icon-size, 32px); color: var(--text-primary); display: block; margin-bottom: 12px; transition: var(--transition); position: relative; z-index: 1; } & .name { font-size: 11px; color: var(--text-muted); word-break: break-all; line-height: 1.4; max-height: 2.8em; overflow: hidden; font-weight: 500; position: relative; z-index: 1; } &:nth-child(5n+1) { border-color: var(--card-border-1); &:hover { border-color: var(--card-border-1); box-shadow: 0 8px 24px var(--glow-pink); } } &:nth-child(5n+2) { border-color: var(--card-border-2); &:hover { border-color: var(--card-border-2); box-shadow: 0 8px 24px var(--glow-sky); } } &:nth-child(5n+3) { border-color: var(--card-border-3); &:hover { border-color: var(--card-border-3); box-shadow: 0 8px 24px var(--glow-mint); } } &:nth-child(5n+4) { border-color: var(--card-border-4); &:hover { border-color: var(--card-border-4); box-shadow: 0 8px 24px var(--glow-lavender); } } &:nth-child(5n+5) { border-color: var(--card-border-5); &:hover { border-color: var(--card-border-5); box-shadow: 0 8px 24px var(--glow-peach); } } } .empty { text-align: center; padding: 100px 20px; color: var(--text-muted); &-icon { font-size: 80px; margin-bottom: 24px; opacity: 0.2; } & h3 { font-size: 1.5rem; margin-bottom: 8px; color: var(--text-secondary); font-weight: 700; } & p { font-size: 14px; color: var(--text-muted); } } .loading { text-align: center; padding: 100px 20px; color: var(--text-muted); max-width: 520px; margin: 0 auto; &-spinner { width: 56px; height: 56px; border: 4px solid var(--border-color); border-top-color: var(--text-accent); border-radius: 50%; animation: spin 0.8s linear infinite; margin: 0 auto 24px; } & p { font-size: 16px; color: var(--text-secondary); } } .pagination { display: flex; justify-content: center; align-items: center; gap: 10px; margin-top: 40px; padding: 8px 12px; background: var(--bg-tertiary); border-radius: var(--radius-sm); border: 1px solid var(--border-color); max-width: fit-content; margin-left: auto; margin-right: auto; transition: background 0.4s ease, border-color 0.4s ease; } .page-btn { padding: 6px 12px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 5px; font-size: 12px; font-weight: 600; color: var(--text-primary); cursor: pointer; transition: var(--transition); display: flex; align-items: center; gap: 6px; &:hover:not(:disabled) { background: var(--pastel-lilac); border-color: transparent; color: var(--text-darker); transform: translateY(-1px); box-shadow: var(--shadow-glow); } &:disabled { opacity: 0.4; cursor: not-allowed; } } .page-info { color: var(--text-muted); font-size: 12px; font-weight: 500; padding: 0 6px; } .page-jump { display: flex; align-items: center; gap: 6px; } .page-input { width: 50px; padding: 6px 8px; text-align: center; border: 1px solid var(--border-color); border-radius: 5px; background: var(--bg-secondary); color: var(--text-primary); font-size: 12px; font-weight: 600; transition: var(--transition); &:focus { outline: none; border-color: var(--accent-primary); background: var(--bg-elevated); box-shadow: 0 0 0 3px var(--accent-light); } } .toast { position: fixed; bottom: 32px; left: 50%; transform: translateX(-50%) translateY(100px); background: var(--toast-bg); color: var(--toast-text); padding: 14px 28px; border-radius: var(--radius-md); font-size: 14px; font-weight: 600; transition: var(--transition); z-index: 1000; display: flex; align-items: center; gap: 10px; box-shadow: var(--shadow-lg), var(--shadow-glow); &.show { transform: translateX(-50%) translateY(0); } & .fi { font-size: 18px; } } .modal-overlay { position: fixed; inset: 0; background: color-mix(in srgb, var(--bg-primary) 85%, black); display: flex; align-items: center; justify-content: center; z-index: 200; opacity: 0; visibility: hidden; transition: var(--transition); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); padding: 20px; &.show { opacity: 1; visibility: visible; & .modal { transform: scale(1) translateY(0); } } } .modal { background: var(--bg-secondary); border-radius: var(--radius-lg); padding: 20px; max-width: 560px; width: 100%; max-height: 90vh; overflow-y: auto; transform: scale(0.92) translateY(20px); transition: var(--transition), background 0.4s ease, border-color 0.4s ease; border: 1px solid var(--border-color); box-shadow: var(--shadow-lg); } .modal-content { display: flex; flex-direction: column; } .modal-footer { display: flex; justify-content: flex-end; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border-color); } .modal-header { display: flex; align-items: flex-start; gap: 16px; margin-bottom: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--border-color); flex-wrap: wrap; } .modal-actions-inline { display: flex; gap: 6px; margin-left: auto; align-self: center; } .copy-btn-inline { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 6px 10px; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: var(--radius-sm); cursor: pointer; transition: var(--transition); min-width: 50px; & .fi { font-size: 16px; color: var(--text-secondary); transition: var(--transition); } & .copy-label { font-size: 9px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.3px; } &:hover { background: var(--bg-elevated); border-color: var(--accent-primary); transform: translateY(-1px); & .fi { color: var(--accent-primary); } & .copy-label { color: var(--text-secondary); } } &:active { transform: translateY(0); } } .modal-icon-wrapper { width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background: var(--modal-icon-bg); border-radius: var(--radius-md); flex-shrink: 0; box-shadow: var(--shadow-glow); } .modal-icon { font-size: 32px; color: var(--logo-text); } .modal-info { flex: 1; padding-top: 4px; } .modal-title { font-size: 1.1rem; font-weight: 700; margin-bottom: 4px; letter-spacing: -0.02em; } .modal-subtitle { font-size: 12px; color: var(--text-muted); font-weight: 500; } .modal-section { margin-bottom: 16px; } .modal-label { font-size: 10px; text-transform: uppercase; color: var(--text-muted); font-weight: 700; margin-bottom: 8px; letter-spacing: 0.6px; } .modal-variations { display: grid; grid-template-columns: repeat(auto-fill, minmax(60px, 1fr)); gap: 8px; } .modal-var { text-align: center; padding: 10px 6px; background: var(--bg-tertiary); border-radius: var(--radius-sm); cursor: pointer; border: 2px solid transparent; transition: var(--transition); &:hover { background: var(--bg-elevated); transform: translateY(-1px); } &.active { border-color: var(--modal-var-active-border); background: var(--modal-var-active-bg); } &.unavailable { opacity: 0.4; pointer-events: none; background: var(--bg-secondary); border: 1px dashed var(--border-color); & .var-icon { font-size: 10px; font-weight: 700; letter-spacing: 0.5px; color: var(--text-muted); text-transform: uppercase; } } & .var-icon { font-size: 20px; display: block; margin-bottom: 4px; color: var(--text-primary); } & .var-label { font-size: 9px; color: var(--text-muted); font-weight: 600; } } .modal-code { background: var(--bg-tertiary); border-radius: var(--radius-sm); padding: 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; border: 1px solid var(--border-color); & code { font-family: 'SF Mono', Monaco, 'Consolas', monospace; font-size: 13px; color: var(--modal-code-color); word-break: break-all; font-weight: 500; } } .copy-btn { background: var(--copy-btn-bg); color: var(--copy-btn-text); border: none; padding: 10px 16px; border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; display: flex; align-items: center; gap: 6px; transition: var(--transition); flex-shrink: 0; &:hover { transform: translateY(-1px); box-shadow: var(--shadow-glow); } } .modal-btn { padding: 8px 16px; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: var(--radius-sm); font-size: 13px; font-weight: 600; color: var(--text-secondary); cursor: pointer; transition: var(--transition); display: flex; align-items: center; justify-content: center; gap: 6px; &:hover { background: var(--bg-elevated); border-color: var(--border-light); color: var(--text-primary); } & .btn-key { background: var(--bg-elevated); border: 1px solid var(--border-color); border-radius: 4px; padding: 3px 8px; font-size: 11px; font-weight: 700; color: var(--text-muted); margin-left: 6px; } &.primary { background: var(--modal-primary-bg); border-color: transparent; color: var(--modal-primary-text); &:hover { transform: translateY(-1px); box-shadow: var(--shadow-glow); } } } .shortcuts-help { position: fixed; bottom: 24px; right: 24px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: var(--radius-md); padding: 12px 16px; font-size: 12px; color: var(--text-muted); box-shadow: var(--shadow-md); z-index: 50; transition: background 0.4s ease, border-color 0.4s ease, color 0.4s ease; & kbd { background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 6px; padding: 4px 10px; font-family: 'SF Mono', Monaco, 'Consolas', monospace; font-size: 11px; font-weight: 600; margin: 0 2px; transition: background 0.4s ease, border-color 0.4s ease; } & span { margin: 0 8px; } } /* Scrollbar - Light mode */ ::-webkit-scrollbar { width: 14px; height: 14px; } ::-webkit-scrollbar-track { background: #e8e4dc; border-radius: 0; } ::-webkit-scrollbar-thumb { background: #7a6a9a; border-radius: 7px; border: 3px solid #e8e4dc; } ::-webkit-scrollbar-thumb:hover { background: #5a4a7a; } /* Dark mode scrollbar overrides */ [data-theme="dark"] ::-webkit-scrollbar-track { background: #2a2a34; } [data-theme="dark"] ::-webkit-scrollbar-thumb { background: #6a6a7a; border-color: #2a2a34; } [data-theme="dark"] ::-webkit-scrollbar-thumb:hover { background: #8a8a9a; } /* Firefox scrollbar */ * { scrollbar-width: auto; scrollbar-color: #7a6a9a #e8e4dc; } [data-theme="dark"] * { scrollbar-color: #6a6a7a #2a2a34; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes scaleIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } .animate-in { animation: fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards; opacity: 0; } /* Filter specific active states */ #weightFilter { & .filter-btn[data-weight="regular"].active { background: var(--filter-regular-active); } & .filter-btn[data-weight="bold"].active { background: var(--filter-bold-active); } & .filter-btn[data-weight="solid"].active { background: var(--filter-solid-active); } & .filter-btn[data-weight="thin"].active { background: var(--filter-thin-active); } & .filter-btn[data-weight="duotone"].active { background: var(--filter-duotone-active); } & .filter-label .fi { color: var(--filter-weight-icon); } } #cornerFilter { & .filter-btn[data-corner="straight"].active { background: var(--corner-straight-active); } & .filter-btn[data-corner="rounded"].active { background: var(--corner-rounded-active); } & .filter-btn[data-corner="chubby"].active { background: var(--corner-chubby-active); } & .filter-label .fi { color: var(--filter-corner-icon); } } #typeFilter { & .filter-btn[data-type="interface"].active { background: var(--type-interface-active); } & .filter-btn[data-type="brands"].active { background: var(--type-brands-active); } & .filter-label .fi { color: var(--filter-type-icon); } } /* Media Queries */ @media (max-width: 900px) { .header-top { flex-direction: column; align-items: stretch; gap: 16px; } .header-actions { justify-content: flex-end; } .filters { flex-wrap: nowrap; gap: 10px; } .filter-section { flex-direction: row; align-items: center; } .filter-group { overflow-x: auto; } .stats { margin-left: 0; margin-top: 0; display: none; } .icon-grid { grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); } .modal-variations { grid-template-columns: repeat(4, 1fr); } .modal-actions-inline { margin-left: 0; width: 100%; } .copy-btn-inline { flex: 1; } .shortcuts-help { display: none; } .pagination { flex-wrap: wrap; } } @media (max-width: 600px) { .header { padding: 16px 16px 20px; } .main { padding: 24px 16px; } .icon-grid { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 12px; } .modal { padding: 24px; border-radius: var(--radius-lg); } .logo-icon { width: 42px; height: 42px; font-size: 20px; } .header h1 { font-size: 1.2rem; } .modal-actions-inline { width: 100%; margin-left: 0; } .copy-btn-inline { flex: 1; padding: 8px 10px; min-width: unset; } }