diff --git a/list-manager/list-manager.css b/list-manager/list-manager.css new file mode 100644 index 0000000..dcb327d --- /dev/null +++ b/list-manager/list-manager.css @@ -0,0 +1,406 @@ +:root { + --bg-color: #12100e; + --text-color: #f4ede6; + --input-bg: #1a1714; + --input-border: #3a2e26; + --button-bg: #2b211b; + --button-hover: #3a2c24; + --button-text: #f7efe9; + --accent: #f2a865; + --accent-hover: #f7c38a; + --accent-text: #1b120b; + --danger: #f87171; + --success: #4ade80; + --shadow: 0 12px 24px rgba(0, 0, 0, 0.4); + --border-radius: 14px; + --panel-bg: #17130f; +} + +* { + box-sizing: border-box; +} + +body { + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + margin: 0; + background: radial-gradient(120% 120% at 10% 0%, rgba(242, 168, 101, 0.08) 0%, transparent 45%), + linear-gradient(180deg, var(--bg-color) 0%, #0f0d0b 100%); + color: var(--text-color); + min-width: 800px; + min-height: 600px; +} + +.app { + display: flex; + flex-direction: column; + height: 100vh; +} + +.topbar { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 20px; + background: linear-gradient(145deg, #1a1511 0%, #0f0b08 100%); + border-bottom: 1px solid var(--input-border); + box-shadow: var(--shadow); +} + +.title { + display: flex; + align-items: center; + gap: 12px; +} + +.title img { + height: 36px; + width: 36px; +} + +.name { + font-weight: 600; + font-size: 1.05rem; +} + +.subtitle { + font-size: 0.85rem; + opacity: 0.7; +} + +.topbar-actions { + display: flex; + gap: 10px; +} + +.layout { + display: grid; + grid-template-columns: 320px 1fr; + gap: 16px; + padding: 16px; + height: calc(100vh - 72px); +} + +.panel { + background: var(--panel-bg); + border: 1px solid var(--input-border); + border-radius: var(--border-radius); + padding: 14px; + display: flex; + flex-direction: column; + gap: 12px; + overflow: hidden; +} + +.panel-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; +} + +.lists-panel .panel-header { + flex-direction: column; + align-items: flex-start; + gap: 8px; +} + +.lists-panel .panel-header h2 { + margin-top: 0; +} + +.panel-header h2 { + margin: 0; + font-size: 1rem; +} + +.panel-actions { + display: flex; + gap: 8px; + flex-wrap: wrap; +} + +.lists-panel .panel-actions { + justify-content: flex-start; + width: 100%; +} + +.lists-panel .panel-actions button { + padding: 6px 10px; + font-size: 0.8rem; +} + +.panel-actions.secondary { + margin-top: 0; + gap: 6px; +} + +.list-hint { + font-size: 0.8rem; + opacity: 0.7; +} + +.lists { + display: flex; + flex-direction: column; + gap: 8px; + overflow-y: auto; + padding-right: 4px; +} + +.list-item { + background: #1f1813; + border: 1px solid transparent; + border-radius: 12px; + padding: 10px 12px; + display: grid; + grid-template-columns: auto 1fr auto; + gap: 10px; + align-items: center; + cursor: pointer; +} + +.list-item.active { + border-color: var(--accent); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); +} + +.list-item.drag-over { + border-color: var(--accent-hover); +} + +.list-item input[type="checkbox"] { + width: 16px; + height: 16px; +} + +.list-meta { + display: flex; + flex-direction: column; + gap: 4px; +} + +.list-name { + font-weight: 600; +} + +.list-stats { + font-size: 0.75rem; + opacity: 0.7; +} + +.list-badge { + font-size: 0.75rem; + padding: 4px 8px; + border-radius: 999px; + border: 1px solid var(--input-border); + opacity: 0.8; +} + +.details-panel { + display: flex; + flex-direction: column; + gap: 12px; +} + +.list-settings { + display: grid; + gap: 12px; + grid-template-columns: repeat(2, minmax(0, 1fr)); + align-items: end; +} + +.list-settings label { + display: flex; + flex-direction: column; + gap: 6px; + font-size: 0.85rem; +} + +.list-settings input[type="text"] { + width: 100%; +} + +.colors { + display: flex; + gap: 12px; + grid-column: span 2; + align-items: end; +} + +.colors label { + flex: 1; +} + + +.word-controls { + display: flex; + flex-direction: column; + gap: 8px; +} + +.add-words { + display: flex; + gap: 10px; + align-items: stretch; +} + +.add-words textarea { + flex: 1; + min-height: 64px; + resize: vertical; + background: var(--input-bg); + color: var(--text-color); + border: 1px solid var(--input-border); + border-radius: 10px; + padding: 8px 10px; +} + +.add-words button { + min-width: 120px; +} + +.word-controls .row { + display: flex; + gap: 8px; + flex-wrap: wrap; +} + +.word-controls input[type="text"], +.word-controls select { + flex: 1; + min-width: 160px; +} + +.word-list { + overflow-y: auto; + border: 1px solid var(--input-border); + border-radius: 12px; + padding: 8px; + background: #1a1511; + display: flex; + flex-direction: column; + gap: 6px; +} + +.empty { + padding: 12px; + text-align: center; + opacity: 0.7; + font-size: 0.9rem; +} + +.word-item { + display: grid; + grid-template-columns: auto 1fr auto auto auto; + gap: 8px; + align-items: center; + padding: 6px 8px; + border-radius: 10px; + background: #201915; +} + +.word-item.disabled { + opacity: 0.5; +} + +.word-item input[type="text"] { + width: 100%; +} + +button { + border: none; + border-radius: 10px; + padding: 8px 10px; + background: var(--button-bg); + color: var(--button-text); + cursor: pointer; + transition: background 0.2s ease; + font-size: 0.85rem; +} + +button:hover { + background: var(--button-hover); +} + +button.primary { + background: var(--accent); + color: var(--accent-text); +} + +button.primary:hover { + background: var(--accent-hover); +} + +button.danger { + background: rgba(248, 113, 113, 0.15); + color: var(--danger); + border: 1px solid rgba(248, 113, 113, 0.4); +} + +button.ghost { + background: transparent; + border: 1px solid var(--input-border); +} + +input[type="text"], +select, +input[type="color"] { + background: var(--input-bg); + color: var(--text-color); + border: 1px solid var(--input-border); + border-radius: 10px; + padding: 6px 8px; +} + +input[type="color"] { + padding: 0; + height: 36px; + border-radius: 10px; + border: 1px solid var(--input-border); + background: #1f1813; + cursor: pointer; +} + +input[type="color"]::-webkit-color-swatch-wrapper { + padding: 6px; +} + +input[type="color"]::-webkit-color-swatch { + border: none; + border-radius: 8px; + box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); +} + +.colors input[type="color"] { + width: 100%; +} + +.word-item input[type="color"] { + width: 38px; + height: 28px; + border-radius: 8px; +} + +.word-item input[type="color"]::-webkit-color-swatch-wrapper { + padding: 4px; +} + +.word-item input[type="color"]::-webkit-color-swatch { + border-radius: 6px; +} + +.stats { + font-size: 0.85rem; + opacity: 0.7; +} + +@media (max-width: 920px) { + body { + min-width: 100%; + } + + .layout { + grid-template-columns: 1fr; + height: auto; + } +} diff --git a/list-manager/list-manager.html b/list-manager/list-manager.html new file mode 100644 index 0000000..99ef70a --- /dev/null +++ b/list-manager/list-manager.html @@ -0,0 +1,98 @@ + + + +
+ + +
+