*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --bg: #111111; --surface: #1a1a1a; --surface2: #222222; --border: #2a2a2a; --accent: #e8722a; --accent-dim: #c45e20; --text: #ffffff; --text-muted: #888888; --radius: 8px; } body { background: var(--bg); color: var(--text); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 14px; min-height: 100vh; } #app { max-width: 1400px; margin: 0 auto; } #topbar { display: flex; align-items: center; gap: 1rem; padding: 1rem 1.5rem; background: var(--surface); border-bottom: 1px solid var(--border); flex-wrap: wrap; } #search-form { display: flex; align-items: center; gap: 8px; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 0 12px; height: 40px; flex: 1; max-width: 600px; } #search-form i { color: var(--accent); font-size: 18px; } #search-form input { background: none; border: none; outline: none; color: var(--text); font-size: 14px; flex: 1; } #search-form input::placeholder { color: var(--text-muted); } #search-form button { background: var(--accent); color: var(--text); border: none; border-radius: 6px; padding: 5px 14px; font-size: 13px; cursor: pointer; } #search-form button:hover { background: var(--accent-dim); } .btn-ghost { background: none; border: 1px solid var(--border); border-radius: var(--radius); color: var(--text-muted); padding: 6px 12px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 6px; white-space: nowrap; } .btn-ghost:hover { border-color: var(--accent); color: var(--accent); } #category-nav { display: flex; align-items: center; gap: 4px; padding: 0.75rem 1.5rem; background: var(--surface); border-bottom: 1px solid var(--border); overflow-x: auto; } .cat-tab { background: none; border: none; border-radius: var(--radius); color: var(--text-muted); padding: 6px 14px; font-size: 13px; cursor: pointer; display: flex; align-items: center; gap: 6px; white-space: nowrap; transition: color 0.15s, background 0.15s; } .cat-tab:hover { background: var(--surface2); color: var(--text); } .cat-tab.active { background: var(--surface2); color: var(--accent); border-bottom: 2px solid var(--accent); } .cat-tab i { font-size: 16px; } #subcategory-bar { display: flex; align-items: center; gap: 4px; padding: 0.5rem 1.5rem; background: var(--bg); border-bottom: 1px solid var(--border); overflow-x: auto; } .sub-tab { background: none; border: 1px solid transparent; border-radius: var(--radius); color: var(--text-muted); padding: 4px 12px; font-size: 13px; cursor: pointer; white-space: nowrap; transition: color 0.15s, border-color 0.15s; } .sub-tab:hover { color: var(--text); border-color: var(--border); } .sub-tab.active { color: var(--accent); border-color: var(--accent); } .btn-add-sub { background: none; border: 1px dashed var(--border); border-radius: var(--radius); color: var(--text-muted); padding: 4px 10px; font-size: 12px; cursor: pointer; white-space: nowrap; } .btn-add-sub:hover { border-color: var(--accent); color: var(--accent); } #link-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; padding: 1.5rem; align-content: start; } .link-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 14px; display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--text); position: relative; transition: border-color 0.15s, background 0.15s; } .link-card:hover { border-color: var(--accent); background: var(--surface2); } .link-favicon { width: 20px; height: 20px; flex-shrink: 0; } .link-label { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; } .link-actions { display: none; align-items: center; gap: 4px; position: absolute; right: 8px; top: 50%; transform: translateY(-50%); } .link-card:hover .link-actions { display: flex; } .link-action-btn { background: var(--surface2); border: 1px solid var(--border); border-radius: 4px; color: var(--text-muted); width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 13px; } .link-action-btn:hover { color: var(--accent); border-color: var(--accent); } .add-link-card { background: none; border: 1px dashed var(--border); border-radius: var(--radius); padding: 10px 14px; display: flex; align-items: center; gap: 8px; color: var(--text-muted); cursor: pointer; font-size: 13px; transition: border-color 0.15s, color 0.15s; } .add-link-card:hover { border-color: var(--accent); color: var(--accent); } #modal-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 100; } #modal-overlay.hidden { display: none; } #modal { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); width: 420px; max-width: 90vw; } #modal-header { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; border-bottom: 1px solid var(--border); } #modal-title { font-size: 14px; font-weight: 500; color: var(--text); } #modal-close { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 18px; display: flex; align-items: center; } #modal-close:hover { color: var(--text); } #modal-body { padding: 1.25rem; display: flex; flex-direction: column; gap: 0.75rem; } .field { display: flex; flex-direction: column; gap: 4px; } .field label { font-size: 12px; color: var(--text-muted); } .field input { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); color: var(--text); font-size: 13px; padding: 8px 10px; outline: none; } .field input:focus { border-color: var(--accent); } .modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 0.5rem; } .btn-primary { background: var(--accent); border: none; border-radius: var(--radius); color: var(--text); padding: 7px 18px; font-size: 13px; cursor: pointer; } .btn-primary:hover { background: var(--accent-dim); } .btn-secondary { background: none; border: 1px solid var(--border); border-radius: var(--radius); color: var(--text-muted); padding: 7px 18px; font-size: 13px; cursor: pointer; } .btn-secondary:hover { border-color: var(--text-muted); color: var(--text); } .globe-icon { width: 20px; height: 20px; flex-shrink: 0; } /* Sortable drag states */ .sortable-ghost { opacity: 0.3; } .sortable-chosen { cursor: grabbing; } .cat-tab, .sub-tab, .link-card { cursor: grab; } .link-card.sortable-chosen { cursor: grabbing; }