Tul xxx Tul
User / IP
:
216.73.216.159
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
progressgym
/
modules
/
nexus
/
Viewing: index.php
<style> /* ========================================================= NEXUS - Intelligent Notes Workspace Palette preserved: magenta / violet / deep dark ========================================================= */ .nexus-shell { --nx-primary: #d946ef; --nx-secondary: #8b5cf6; --nx-accent: #a855f7; --nx-text: #f3f6ff; --nx-soft: #d9e2ff; --nx-muted: #8d97b5; --nx-dim: #62708b; --nx-bg: rgba(12, 10, 22, 0.95); --nx-panel: rgba(15, 12, 25, 0.98); --nx-panel-2: rgba(8, 6, 18, 0.99); --nx-border: rgba(217, 70, 239, 0.15); --nx-border-strong: rgba(217, 70, 239, 0.36); --nx-danger: #ef4444; --nx-warning: #f59e0b; --nx-success: #22c55e; font-family: 'Space Grotesk', sans-serif !important; position: relative; } .nexus-shell * { border-radius: 0 !important; box-sizing: border-box; } .nexus-shell button, .nexus-shell input, .nexus-shell select { font-family: 'Space Grotesk', sans-serif !important; } .nx-hidden { display: none !important; } .nx-fade-in { animation: nxFadeIn 0.28s ease; } @keyframes nxFadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .nx-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding-bottom: 1.2rem; flex-wrap: wrap; } .nx-title { margin: 0; font-weight: 800; font-size: 1.6rem; letter-spacing: 2px; text-transform: uppercase; line-height: 1.2; background: linear-gradient(135deg, #d946ef 0%, #a855f7 50%, #8b5cf6 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; display: flex; align-items: center; gap: 12px; } .nx-badge { background: rgba(217, 70, 239, 0.1); color: #d946ef; border: 1px solid rgba(217, 70, 239, 0.3); letter-spacing: 2px; font-size: 11px; padding: 6px 14px; font-weight: 800; text-transform: uppercase; display: inline-flex; align-items: center; gap: 8px; } .nx-subtitle { color: var(--nx-muted); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 3px; margin-bottom: 0; } .nx-btn-ghost, .nx-btn-solid, .nx-icon-btn { border: 1px solid rgba(217, 70, 239, 0.34); color: #d946ef !important; font-weight: 800; cursor: pointer; transition: all 0.18s ease; display: inline-flex; align-items: center; justify-content: center; gap: 8px; text-transform: uppercase; letter-spacing: 1.2px; background: rgba(217, 70, 239, 0.05); } .nx-btn-ghost { padding: 10px 18px; font-size: 0.74rem; box-shadow: 3px 3px 0 rgba(217, 70, 239, 0.26); } .nx-btn-solid { padding: 10px 18px; font-size: 0.74rem; color: #fff !important; border-color: transparent; background: linear-gradient(135deg, #d946ef, #8b5cf6, #a855f7); box-shadow: 0 10px 28px rgba(217, 70, 239, 0.22); } .nx-icon-btn { width: 34px; height: 34px; padding: 0; font-size: 0.9rem; } .nx-btn-ghost:hover, .nx-icon-btn:hover { background: rgba(217, 70, 239, 0.1); border-color: #d946ef; transform: translate(-1px, -1px); } .nx-btn-solid:hover { transform: translateY(-1px); box-shadow: 0 14px 36px rgba(217, 70, 239, 0.28); } .nx-list-tools { display: grid; grid-template-columns: minmax(220px, 1fr) 190px; gap: 0.7rem; margin-bottom: 0.95rem; } @media (max-width: 720px) { .nx-list-tools { grid-template-columns: 1fr; } } .nx-search, .nx-filter { min-height: 42px; background: rgba(10, 8, 20, 0.78); border: 1px solid rgba(217, 70, 239, 0.14); color: var(--nx-text); padding: 0 0.9rem; outline: none; font-size: 0.82rem; } .nx-search:focus, .nx-filter:focus { border-color: rgba(217, 70, 239, 0.42); box-shadow: 0 0 0 3px rgba(217, 70, 239, 0.08); } .nx-filter option { background: #0a0818; color: #e2e8f0; } .nx-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 0.8rem; } .nx-card { background: linear-gradient(145deg, rgba(20, 15, 35, 0.9), rgba(10, 8, 20, 0.95)); border: 1px solid var(--nx-border); padding: 1rem 1.15rem; cursor: pointer; transition: all 0.2s; position: relative; overflow: hidden; min-height: 148px; } .nx-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, #d946ef, #8b5cf6); opacity: 0.55; transition: opacity 0.2s; } .nx-card:hover { border-color: rgba(217, 70, 239, 0.42); transform: translateY(-2px); } .nx-card:hover::before { opacity: 1; } .nx-card-top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin-bottom: 0.5rem; } .nx-card-type { font-size: 0.58rem; font-weight: 800; letter-spacing: 0.15em; text-transform: uppercase; color: #d946ef; } .nx-card-pin { color: var(--nx-warning); font-size: 0.75rem; } .nx-card-title { font-size: 0.94rem; font-weight: 800; color: var(--nx-text); margin-bottom: 0.35rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .nx-card-preview { font-size: 0.76rem; color: var(--nx-dim); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 0.75rem; line-height: 1.55; } .nx-card-footer { display: flex; justify-content: space-between; align-items: center; font-size: 0.65rem; color: var(--nx-dim); gap: 0.5rem; } .nx-card-status { padding: 2px 8px; border: 1px solid rgba(217, 70, 239, 0.2); font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; } .nx-card-actions { display: flex; gap: 4px; align-items: center; } .nx-card-actions button { background: none; border: none; color: var(--nx-dim); cursor: pointer; padding: 2px 4px; font-size: 0.8rem; transition: color 0.2s; } .nx-card-actions button:hover { color: var(--nx-danger); } .nx-editor-view { display: none; } .nx-editor-topbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 0.8rem; flex-wrap: wrap; } .nx-editor-layout { display: grid; grid-template-columns: minmax(0, 1fr) 390px; gap: 0.8rem; min-height: 72vh; } @media (max-width: 1120px) { .nx-editor-layout { grid-template-columns: 1fr; } } .nx-editor-main, .nx-ai-panel { background: linear-gradient(180deg, var(--nx-panel), var(--nx-panel-2)); border: 1px solid var(--nx-border); } .nx-editor-main { display: flex; flex-direction: column; min-height: 72vh; overflow: visible; } .nx-editor-title-input { background: transparent; border: none; border-bottom: 1px solid rgba(217, 70, 239, 0.08); color: var(--nx-text); font-size: 1.9rem; font-weight: 800; padding: 1.05rem 1.2rem 0.95rem; outline: none; width: 100%; letter-spacing: 0; } @media (max-width: 720px) { .nx-editor-title-input { font-size: 1.45rem; } } .nx-editor-title-input::placeholder { color: #475569; } .nx-editor-title-input:focus { border-bottom-color: rgba(217, 70, 239, 0.32); } .nx-editor-meta { display: flex; justify-content: space-between; gap: 0.65rem; padding: 0.58rem 1.2rem; border-bottom: 1px solid rgba(217, 70, 239, 0.07); flex-wrap: wrap; } .nx-meta-left, .nx-meta-right { display: flex; align-items: center; gap: 0.45rem; flex-wrap: wrap; } .nx-meta-select { background: rgba(217, 70, 239, 0.06); border: 1px solid rgba(217, 70, 239, 0.15); color: #d946ef; font-size: 0.64rem; font-weight: 800; padding: 5px 10px; text-transform: uppercase; letter-spacing: 0.1em; cursor: pointer; } .nx-meta-select option { background: #0a0818; color: #e2e8f0; } .nx-block-toolbar { display: flex; align-items: center; gap: 0.35rem; padding: 0.55rem 1.2rem; border-bottom: 1px solid rgba(217, 70, 239, 0.06); overflow-x: auto; } .nx-tool-btn { min-width: 34px; height: 31px; padding: 0 0.58rem; border: 1px solid rgba(217, 70, 239, 0.14); background: rgba(217, 70, 239, 0.04); color: var(--nx-muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; transition: all 0.16s ease; font-size: 0.76rem; flex: 0 0 auto; } .nx-tool-btn:hover { color: #f3f6ff; border-color: rgba(217, 70, 239, 0.38); background: rgba(217, 70, 239, 0.09); } .nx-editor-canvas { flex: 1; padding: 0.85rem 0.9rem 1rem; min-height: 420px; } .nx-blocks { max-width: 980px; margin: 0 auto; padding-bottom: 4rem; } .nx-block-row { position: relative; display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 0.35rem; align-items: start; min-height: 30px; margin: 2px 0; transition: background 0.14s ease; } .nx-block-row:hover { background: rgba(217, 70, 239, 0.025); } .nx-block-row[data-indent="1"] { margin-left: 30px; } .nx-block-row[data-indent="2"] { margin-left: 60px; } .nx-block-row[data-indent="3"] { margin-left: 90px; } .nx-block-handle { width: 26px; height: 26px; margin-top: 3px; border: none; color: var(--nx-dim); background: transparent; cursor: grab; opacity: 0; transition: opacity 0.14s ease, background 0.14s ease; font-size: 0.86rem; } .nx-block-row:hover .nx-block-handle { opacity: 1; } .nx-block-handle:hover { background: rgba(217, 70, 239, 0.08); color: var(--nx-text); } .nx-block-content { width: 100%; min-height: 30px; outline: none; color: var(--nx-soft); line-height: 1.66; padding: 3px 5px; font-size: 0.92rem; word-break: break-word; white-space: pre-wrap; } .nx-block-content:empty::before { content: attr(data-placeholder); color: #46506a; pointer-events: none; } .nx-block-content[data-type="heading1"] { font-size: 1.62rem; font-weight: 800; color: #fff; margin-top: 1rem; line-height: 1.25; } .nx-block-content[data-type="heading2"] { font-size: 1.22rem; font-weight: 800; color: #f5d0fe; margin-top: 0.75rem; line-height: 1.35; } .nx-block-content[data-type="heading3"] { font-size: 1.02rem; font-weight: 800; color: #e9d5ff; margin-top: 0.5rem; } .nx-block-content[data-type="bulleted_list"]::before { content: '•'; color: var(--nx-primary); margin-right: 0.55rem; font-weight: 800; } .nx-block-content[data-type="numbered_list"]::before { content: attr(data-number) '.'; color: var(--nx-primary); margin-right: 0.55rem; font-weight: 800; } .nx-block-content[data-type="quote"] { border-left: 3px solid rgba(217, 70, 239, 0.5); padding-left: 0.8rem; color: #cbd5e1; font-style: italic; } .nx-block-content[data-type="code"] { background: rgba(3, 2, 8, 0.72); border: 1px solid rgba(139, 92, 246, 0.22); color: #e9d5ff; padding: 0.8rem 0.95rem; font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace !important; font-size: 0.82rem; } .nx-code-editor { width: 100%; margin: 0.65rem 0 0.75rem; overflow: hidden; background: #050914; border: 1px solid rgba(139, 92, 246, 0.28); box-shadow: inset 0 1px 0 rgba(255,255,255,0.03), 0 16px 42px rgba(0,0,0,0.24); } .nx-code-bar { min-height: 38px; display: flex; align-items: center; gap: 0.65rem; padding: 0 0.9rem; background: linear-gradient(180deg, rgba(14, 22, 36, 0.98), rgba(8, 14, 24, 0.98)); border-bottom: 1px solid rgba(217, 70, 239, 0.14); } .nx-code-dots { display: inline-flex; align-items: center; gap: 0.42rem; } .nx-code-dot { width: 10px; height: 10px; display: inline-block; } .nx-code-dot.red { background: #ff5f57; } .nx-code-dot.yellow { background: #ffbd2e; } .nx-code-dot.green { background: #28c840; } .nx-code-label { margin-left: auto; color: #62708b; font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace !important; font-size: 0.64rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; } .nx-code-body { display: grid; grid-template-columns: 48px minmax(0, 1fr); min-height: 128px; background: linear-gradient(180deg, rgba(5, 11, 18, 0.98), rgba(3, 7, 12, 0.99)), radial-gradient(circle at top right, rgba(217,70,239,0.08), transparent 38%); } .nx-code-gutter { padding: 0.9rem 0; border-right: 1px solid rgba(139, 92, 246, 0.14); background: rgba(2, 5, 11, 0.58); color: #33415f; user-select: none; text-align: center; font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace !important; font-size: 0.76rem; line-height: 1.75; } .nx-code-gutter span { display: block; height: 1.75em; } .nx-code-content { min-height: 128px; outline: none; padding: 0.9rem 1.05rem; color: #f3e8ff; font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace !important; font-size: 0.84rem; line-height: 1.75; white-space: pre-wrap; tab-size: 4; caret-color: var(--nx-primary); } .nx-code-content:empty::before { content: attr(data-placeholder); color: rgba(74, 120, 76, 0.78); pointer-events: none; } .nx-code-editor:focus-within { border-color: rgba(217, 70, 239, 0.45); box-shadow: 0 0 0 2px rgba(217, 70, 239, 0.08), 0 16px 42px rgba(0,0,0,0.24); } .nx-block-content[data-type="callout"] { background: rgba(217, 70, 239, 0.06); border: 1px solid rgba(217, 70, 239, 0.18); padding: 0.75rem 0.9rem; color: #f3e8ff; } .nx-divider-block { height: 1px; background: rgba(217, 70, 239, 0.2); margin: 0.9rem 0; } .nx-todo-block { display: flex; align-items: flex-start; gap: 0.55rem; padding: 4px 5px; min-height: 30px; } .nx-todo-check { appearance: none; width: 18px; height: 18px; margin-top: 4px; border: 2px solid rgba(217, 70, 239, 0.26); background: transparent; cursor: pointer; position: relative; flex: 0 0 auto; } .nx-todo-check:checked { background: var(--nx-primary); border-color: var(--nx-primary); } .nx-todo-check:checked::after { content: '✓'; position: absolute; inset: -2px 0 0 0; color: #fff; font-size: 0.8rem; font-weight: 900; text-align: center; } .nx-todo-text { flex: 1; min-height: 26px; outline: none; color: var(--nx-soft); line-height: 1.6; white-space: pre-wrap; } .nx-todo-text:empty::before { content: attr(data-placeholder); color: #46506a; pointer-events: none; } .nx-todo-text.checked { color: var(--nx-dim); text-decoration: line-through; } .nx-image-block { position: relative; display: inline-block; max-width: 100%; margin: 0.55rem 0; border: 1px solid rgba(217, 70, 239, 0.14); background: rgba(5, 4, 12, 0.6); vertical-align: top; cursor: grab; } .nx-image-block:active { cursor: grabbing; } .nx-image-block img { display: block; max-width: 100%; height: auto; user-select: none; -webkit-user-drag: none; pointer-events: none; } .nx-image-block.selected, .nx-image-block:hover { box-shadow: 0 0 0 2px rgba(217, 70, 239, 0.34); } .nx-image-controls { position: absolute; top: 8px; left: 8px; z-index: 7; display: flex; gap: 6px; opacity: 0; transform: translateY(-3px); transition: opacity 0.16s ease, transform 0.16s ease; } .nx-image-block:hover .nx-image-controls, .nx-image-block.selected .nx-image-controls { opacity: 1; transform: translateY(0); } .nx-image-move { width: 32px; height: 30px; border: 1px solid rgba(217, 70, 239, 0.35); background: rgba(7, 5, 16, 0.86); color: #f0abfc; cursor: grab; display: inline-flex; align-items: center; justify-content: center; font-size: 0.86rem; box-shadow: 0 8px 20px rgba(0,0,0,0.28); } .nx-image-move:active { cursor: grabbing; } .nx-image-resize { position: absolute; z-index: 8; border: 2px solid #070510; background: var(--nx-primary); opacity: 0; transition: opacity 0.16s ease, transform 0.16s ease; } .nx-image-block:hover .nx-image-resize, .nx-image-block.selected .nx-image-resize { opacity: 1; } .nx-image-resize.e { right: -6px; top: 50%; transform: translateY(-50%); width: 10px; height: 46px; cursor: ew-resize; } .nx-image-resize.se { right: -7px; bottom: -7px; width: 16px; height: 16px; cursor: nwse-resize; } .nx-image-resize.se::after { content: ''; position: absolute; right: 2px; bottom: 2px; width: 6px; height: 6px; border-right: 1px solid rgba(255,255,255,0.75); border-bottom: 1px solid rgba(255,255,255,0.75); } .nx-image-block.resizing { box-shadow: 0 0 0 2px rgba(217, 70, 239, 0.64), 0 20px 45px rgba(0,0,0,0.28); } .nx-block-row.image-resizing { user-select: none; } .nx-image-size { position: absolute; right: 8px; bottom: 8px; background: rgba(3, 2, 8, 0.84); color: #fff; font-size: 0.66rem; padding: 2px 7px; opacity: 0; pointer-events: none; } .nx-image-block:hover .nx-image-size, .nx-image-block.resizing .nx-image-size { opacity: 1; } .nx-block-row.dragging { opacity: 0.42; } .nx-block-row.drag-over-top { box-shadow: 0 -2px 0 #d946ef; } .nx-block-row.drag-over-bottom { box-shadow: 0 2px 0 #d946ef; } .nx-editor-footer { padding: 0.55rem 1.2rem; border-top: 1px solid rgba(217, 70, 239, 0.06); display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; } .nx-save-status, .nx-word-count { font-size: 0.6rem; color: var(--nx-dim); letter-spacing: 0.1em; text-transform: uppercase; } .nx-dot { display:inline-block; width: 7px; height: 7px; background: var(--nx-success); margin-right: 6px; vertical-align: middle; } .nx-dot.saving { background: var(--nx-warning); animation: nxPulse 1s infinite; } .nx-dot.error { background: var(--nx-danger); } @keyframes nxPulse { 50% { opacity: 0.35; } } .nx-floating-menu { position: fixed; z-index: 2000; width: 285px; max-height: 330px; overflow-y: auto; background: rgba(11, 8, 22, 0.98); border: 1px solid rgba(217, 70, 239, 0.24); box-shadow: 0 18px 50px rgba(0,0,0,0.45); padding: 0.4rem; } .nx-menu-title { color: var(--nx-dim); font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.12em; padding: 0.35rem 0.45rem; font-weight: 800; } .nx-menu-item, .nx-context-menu button { width: 100%; display: flex; align-items: center; gap: 0.65rem; border: none; background: transparent; color: var(--nx-muted); padding: 0.55rem 0.6rem; text-align: left; cursor: pointer; transition: all 0.14s ease; font-size: 0.78rem; } .nx-menu-item:hover, .nx-menu-item.active, .nx-context-menu button:hover { background: rgba(217, 70, 239, 0.08); color: #fff; } .nx-menu-icon { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; background: rgba(217, 70, 239, 0.08); color: #d946ef; flex: 0 0 auto; } .nx-menu-copy { display: flex; flex-direction: column; gap: 1px; min-width: 0; } .nx-menu-name { color: var(--nx-text); font-weight: 800; } .nx-menu-desc { color: var(--nx-dim); font-size: 0.67rem; } .nx-context-menu { position: fixed; z-index: 2001; min-width: 190px; background: rgba(11, 8, 22, 0.98); border: 1px solid rgba(217, 70, 239, 0.24); box-shadow: 0 18px 50px rgba(0,0,0,0.45); padding: 0.28rem; } .nx-context-sep { height: 1px; background: rgba(217, 70, 239, 0.12); margin: 0.25rem 0.45rem; } .nx-ai-panel { display: flex; flex-direction: column; overflow: hidden; position: sticky; top: 0.6rem; max-height: calc(100vh - 130px); } @media (max-width: 1120px) { .nx-ai-panel { position: relative; top: auto; max-height: none; } } .nx-ai-tabs { display: flex; border-bottom: 1px solid rgba(217, 70, 239, 0.1); overflow-x: auto; } .nx-ai-tab { flex: 1; padding: 0.72rem 0.5rem; text-align: center; font-size: 0.58rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--nx-dim); cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.2s; white-space: nowrap; background: none; border-top: none; border-left: none; border-right: none; } .nx-ai-tab:hover { color: var(--nx-text); background: rgba(217, 70, 239, 0.04); } .nx-ai-tab.active { color: #d946ef; border-bottom-color: #d946ef; } .nx-ai-body { flex: 1; overflow-y: auto; padding: 1rem; } .nx-ai-empty { text-align: center; padding: 2rem 1rem; color: var(--nx-dim); font-size: 0.78rem; line-height: 1.6; } .nx-ai-empty i { font-size: 2rem; display: block; margin-bottom: 0.5rem; color: rgba(217, 70, 239, 0.3); } .nx-ai-action-btn { width: 100%; padding: 0.82rem; background: rgba(217, 70, 239, 0.06); border: 1px solid rgba(217, 70, 239, 0.2); color: #d946ef; font-weight: 800; font-size: 0.72rem; letter-spacing: 0.1em; text-transform: uppercase; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; justify-content: center; gap: 0.5rem; margin-bottom: 0.5rem; } .nx-ai-action-btn:hover { background: rgba(217, 70, 239, 0.12); border-color: #d946ef; } .nx-ai-result { border: 1px solid rgba(217, 70, 239, 0.12); background: rgba(217, 70, 239, 0.03); padding: 0; margin-bottom: 0.45rem; overflow: hidden; } .nx-ai-result-header { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; padding: 0.58rem 0.8rem; cursor: pointer; transition: background 0.15s; } .nx-ai-result-header:hover { background: rgba(217, 70, 239, 0.06); } .nx-ai-result-type { font-size: 0.58rem; font-weight: 800; letter-spacing: 0.13em; text-transform: uppercase; color: #d946ef; display: flex; align-items: center; gap: 0.4rem; min-width: 0; } .nx-ai-chevron { font-size: 0.55rem; transition: transform 0.2s; } .nx-ai-result-body-wrap { display: none; padding: 0.82rem; border-top: 1px solid rgba(217, 70, 239, 0.08); font-size: 0.82rem; color: var(--nx-text); line-height: 1.6; max-height: 50vh; overflow-y: auto; } .nx-ai-result-body-wrap.nx-ai-result-open { display: block; } .nx-ai-result-header.open .nx-ai-chevron { transform: rotate(90deg); } .nx-ai-result-delete { background: none; border: none; color: var(--nx-danger); cursor: pointer; font-size: 0.72rem; padding: 2px 6px; opacity: 0.58; transition: opacity 0.2s; } .nx-ai-result-delete:hover { opacity: 1; } .nx-convert-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.42rem; margin-bottom: 0.55rem; } .nx-convert-opt { padding: 0.62rem; background: rgba(139, 92, 246, 0.06); border: 1px solid rgba(139, 92, 246, 0.15); color: var(--nx-muted); font-size: 0.64rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; cursor: pointer; text-align: center; transition: all 0.2s; } .nx-convert-opt:hover { border-color: #8b5cf6; color: #e9d5ff; background: rgba(139, 92, 246, 0.1); } .nx-loader { text-align: center; padding: 1.5rem; } .nx-loader-text { font-size: 0.68rem; color: rgba(217, 70, 239, 0.65); letter-spacing: 0.1em; text-transform: uppercase; margin-top: 0.5rem; } .nx-ai-result-body-wrap .rm-md-content { font-size: 0.82rem; } .nx-ai-result-body-wrap .rm-md-content p { margin-bottom: 0.5rem; } .nx-ai-result-body-wrap .rm-md-h1, .nx-ai-result-body-wrap .rm-md-h2 { color: #d946ef; font-size: 0.9rem; margin: 1rem 0 0.4rem; padding-bottom: 0.3rem; border-bottom: 1px solid rgba(217, 70, 239, 0.12); } .nx-ai-result-body-wrap .rm-md-h3 { color: #e879f9; font-size: 0.85rem; margin: 0.8rem 0 0.3rem; } .nx-ai-result-body-wrap .rm-md-inline-code { background: rgba(217, 70, 239, 0.1); color: #e879f9; padding: 1px 5px; font-size: 0.78em; } .nx-ai-result-body-wrap strong { color: #e879f9; } .nx-ai-result-body-wrap .rm-md-ul { margin: 0.3rem 0 0.5rem; padding-left: 1.1rem; } .nx-ai-result-body-wrap .rm-md-ul li { margin-bottom: 0.2rem; color: #cbd5e1; } .nx-ai-result-body-wrap .rm-md-hr { border-color: rgba(217, 70, 239, 0.1); margin: 0.8rem 0; } .nx-ai-result-body-wrap .rm-md-code-editor { margin: 0.5rem 0; } .nx-ai-result-body-wrap .rm-md-code-pre code { color: #e879f9; font-size: 0.78rem; } .nx-ai-result-body-wrap .rm-md-bq { border-left-color: rgba(217, 70, 239, 0.4); background: rgba(217, 70, 239, 0.06); padding: 0.4rem 0.7rem; margin: 0.4rem 0; font-size: 0.8rem; } .nx-modal .modal-content { background: linear-gradient(180deg, rgba(12, 8, 24, 0.99), rgba(8, 6, 18, 0.99)) !important; border: 1px solid rgba(217, 70, 239, 0.15) !important; font-family: 'Space Grotesk', sans-serif !important; border-radius: 0 !important; } .nx-modal .modal-content * { border-radius: 0 !important; } .nx-modal .btn-close { filter: brightness(0) invert(1); opacity: 0.4; } .nx-modal-hero { text-align: center; padding: 2rem 1.5rem 0; } .nx-modal-hero-icon { color: #d946ef; font-size: 1.6rem; margin-bottom: 0.4rem; display: inline-flex; } .nx-modal-hero-title { font-size: 1.4rem; font-weight: 800; letter-spacing: 3px; text-transform: uppercase; background: linear-gradient(135deg, #d946ef 0%, #a855f7 50%, #8b5cf6 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin: 0.3rem 0 0.4rem; } .nx-modal-hero-sub { color: #8d97b5; font-size: 0.82rem; } .nx-modal-input { background: rgba(12, 10, 22, 0.95) !important; border: 1px solid rgba(217, 70, 239, 0.12) !important; color: #f3f6ff !important; padding: 0.85rem 1rem !important; font-size: 0.95rem !important; width: 100%; border-radius: 0 !important; } .nx-modal-input:focus { border-color: #d946ef !important; box-shadow: 0 0 0 3px rgba(217, 70, 239, 0.15) !important; outline: none; } .nx-modal-input::placeholder { color: #4a5478 !important; } .nx-modal-label { font-weight: 800; font-size: 0.72rem; color: #8d97b5; margin-bottom: 0.6rem; display: block; text-transform: uppercase; letter-spacing: 2px; } .nx-modal-cta { background: linear-gradient(135deg, #d946ef, #8b5cf6, #a855f7, #d946ef); background-size: 300% 300%; animation: galaxyGradient 4s ease infinite; color: #fff !important; font-weight: 800; border: none; padding: 0.9rem 1.15rem; text-transform: uppercase; font-size: 0.85rem; letter-spacing: 0.15em; display: inline-flex; align-items: center; gap: 0.6rem; justify-content: center; width: 100%; cursor: pointer; box-shadow: 0 4px 20px rgba(217, 70, 239, 0.3); } </style> <div class="nexus-shell" id="nexus-shell"> <div id="nx-list-view" class="nx-fade-in"> <div class="nx-header"> <div> <span class="nx-badge mb-2"><i class="bi bi-stars"></i> Nexus Workspace</span> <h1 class="nx-title mt-2"><i class="bi bi-layers-half"></i> Nexus</h1> <p class="nx-subtitle">Notas vivas · Investigacion · Grounding · Capturas</p> </div> <button class="nx-btn-solid" onclick="nxOpenCreateModal()"><i class="bi bi-plus-lg"></i> Nueva nota</button> </div> <div class="nx-list-tools"> <input type="search" class="nx-search" id="nx-search" placeholder="Buscar por titulo, contenido o tipo..." autocomplete="off"> <select class="nx-filter" id="nx-filter-type"> <option value="">Todos los tipos</option> <option value="quick">Quick</option> <option value="research">Research</option> <option value="study">Study</option> <option value="project">Project</option> <option value="meeting">Meeting</option> <option value="idea">Idea</option> <option value="decision">Decision</option> <option value="journal">Journal</option> <option value="reference">Reference</option> </select> </div> <div class="nx-grid" id="nx-cards-container"></div> </div> <div id="nx-editor-view" class="nx-editor-view"> <div class="nx-editor-topbar"> <button class="nx-btn-ghost" onclick="nxShowList()"><i class="bi bi-arrow-left"></i> Volver</button> <div class="d-flex gap-2 align-items-center flex-wrap"> <span class="nx-badge d-none d-sm-inline-flex"><i class="bi bi-layers-half"></i> Nexus</span> <span style="font-size:0.66rem; color:var(--nx-dim); letter-spacing:0.1em; text-transform:uppercase; font-weight:800;"> <img src="assets/svg/gemma-color.svg" alt="Gemma" width="14" height="14"> Gemma 4 31B · Grounding + Thinking </span> </div> </div> <div class="nx-editor-layout"> <div class="nx-editor-main"> <input type="text" class="nx-editor-title-input" id="nx-title" placeholder="Titulo de la nota..." oninput="nxAutoSave()"> <div class="nx-editor-meta"> <div class="nx-meta-left"> <select class="nx-meta-select" id="nx-note-type" onchange="nxUpdateMeta('note_type', this.value)"> <option value="quick">Quick</option><option value="research">Research</option><option value="study">Study</option> <option value="project">Project</option><option value="meeting">Meeting</option><option value="idea">Idea</option> <option value="decision">Decision</option><option value="journal">Journal</option><option value="reference">Reference</option> </select> <select class="nx-meta-select" id="nx-status" onchange="nxUpdateMeta('status', this.value)"> <option value="draft">Draft</option><option value="active">Active</option><option value="needs_review">Needs Review</option> <option value="grounded">Grounded</option><option value="converted">Converted</option><option value="archived">Archived</option> </select> </div> <div class="nx-meta-right"> <button class="nx-icon-btn" onclick="nxToggleCurrentPin()" title="Fijar nota"><i class="bi bi-pin-angle"></i></button> <button class="nx-icon-btn" onclick="nxDeleteCurrentNote()" title="Eliminar nota" style="color:#ef4444!important;border-color:rgba(239,68,68,0.24);"><i class="bi bi-trash3"></i></button> </div> </div> <div class="nx-block-toolbar"> <button class="nx-tool-btn" onclick="nxInsertBlockAfterFocused('paragraph')" title="Texto"><i class="bi bi-text-paragraph"></i></button> <button class="nx-tool-btn" onclick="nxInsertBlockAfterFocused('heading2')" title="Encabezado"><i class="bi bi-type-h2"></i></button> <button class="nx-tool-btn" onclick="nxInsertBlockAfterFocused('todo')" title="Tarea"><i class="bi bi-check2-square"></i></button> <button class="nx-tool-btn" onclick="nxInsertBlockAfterFocused('bulleted_list')" title="Lista"><i class="bi bi-list-ul"></i></button> <button class="nx-tool-btn" onclick="nxInsertBlockAfterFocused('callout')" title="Callout"><i class="bi bi-lightbulb"></i></button> <button class="nx-tool-btn" onclick="nxInsertBlockAfterFocused('code')" title="Codigo"><i class="bi bi-code-slash"></i></button> <button class="nx-tool-btn" onclick="nxInsertImageAfterFocused()" title="Subir imagen"><i class="bi bi-image"></i></button> <button class="nx-tool-btn" onclick="nxInsertBlockAfterFocused('divider')" title="Divisor"><i class="bi bi-dash-lg"></i></button> </div> <div class="nx-editor-canvas"> <div id="nx-blocks" class="nx-blocks"></div> </div> <div class="nx-editor-footer"> <span class="nx-save-status" id="nx-save-status"><span class="nx-dot"></span>Guardado</span> <span class="nx-word-count" id="nx-word-count">0 palabras</span> </div> </div> <div class="nx-ai-panel"> <div class="nx-ai-tabs"> <button class="nx-ai-tab active" data-tab="pensar" onclick="nxSwitchTab('pensar')"><i class="bi bi-lightbulb"></i> Pensar</button> <button class="nx-ai-tab" data-tab="verificar" onclick="nxSwitchTab('verificar')"><i class="bi bi-shield-check"></i> Verificar</button> <button class="nx-ai-tab" data-tab="convertir" onclick="nxSwitchTab('convertir')"><i class="bi bi-arrow-repeat"></i> Convertir</button> <button class="nx-ai-tab" data-tab="expandir" onclick="nxSwitchTab('expandir')"><i class="bi bi-arrows-angle-expand"></i> Expandir</button> <button class="nx-ai-tab" data-tab="historial" onclick="nxSwitchTab('historial')"><i class="bi bi-clock-history"></i> Historial</button> </div> <div class="nx-ai-body" id="nx-ai-body"></div> </div> </div> </div> <div id="nx-slash-menu" class="nx-floating-menu nx-hidden"> <div class="nx-menu-title">Bloques</div> <div id="nx-slash-items"></div> </div> <div id="nx-context-menu" class="nx-context-menu nx-hidden"> <button data-action="duplicate"><i class="bi bi-copy"></i> Duplicar</button> <button data-action="delete"><i class="bi bi-trash3"></i> Eliminar</button> <div class="nx-context-sep"></div> <button data-action="move-up"><i class="bi bi-arrow-up"></i> Mover arriba</button> <button data-action="move-down"><i class="bi bi-arrow-down"></i> Mover abajo</button> </div> </div> <!-- Modal: Crear Nota --> <div class="modal fade nx-modal" id="nxCreateModal" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar" style="position:absolute;top:18px;right:18px;z-index:10;"></button> <div class="nx-modal-hero"> <div class="nx-modal-hero-icon"><i class="bi bi-layers-half"></i></div> <h2 class="nx-modal-hero-title">Nueva Nota</h2> <p class="nx-modal-hero-sub">Captura una idea, investigacion, screenshot o plan</p> </div> <div class="modal-body" style="padding: 1.5rem 2rem 2rem;"> <div class="mb-3"> <label class="nx-modal-label">Titulo</label> <input type="text" class="nx-modal-input" id="nx-create-title" placeholder="Ej. Ideas para el proyecto, notas de reunion..."> </div> <div class="mb-4"> <label class="nx-modal-label">Tipo de Nota</label> <select class="nx-modal-input" id="nx-create-type" style="font-size:0.85rem;"> <option value="quick">Quick Note</option><option value="idea">Idea</option><option value="research">Research</option> <option value="study">Study</option><option value="project">Project</option><option value="meeting">Meeting</option> <option value="decision">Decision</option><option value="journal">Journal</option><option value="reference">Reference</option> </select> </div> <button class="nx-modal-cta" onclick="nxCreateNote()"><i class="bi bi-plus-lg"></i> Crear Nota</button> </div> </div> </div> </div> <!-- Modal: Confirmar Eliminar --> <div class="modal fade nx-modal" id="nxConfirmModal" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-sm"> <div class="modal-content" style="border: 1px solid rgba(239, 68, 68, 0.3) !important;"> <div class="modal-body text-center" style="padding: 2rem !important;"> <i class="bi bi-exclamation-triangle" style="font-size: 2.5rem; color: #ef4444; opacity: 0.8;"></i> <h6 class="text-white mt-3 mb-2" style="font-family:'Space Grotesk',sans-serif; text-transform:uppercase; letter-spacing:1px; font-size:0.85rem; font-weight:800;" id="nx-confirm-title">Eliminar nota?</h6> <p style="font-size:0.75rem; color:#94a3b8; font-family:'Space Grotesk',sans-serif;" id="nx-confirm-text">Esta accion no se puede deshacer.</p> <div class="d-flex gap-2 mt-4 justify-content-center"> <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal" style="font-size:0.7rem; letter-spacing:1px; text-transform:uppercase;">Cancelar</button> <button type="button" class="btn btn-danger" id="nx-confirm-btn" style="font-size:0.7rem; letter-spacing:1px; text-transform:uppercase; background:#ef4444; border:none;">Eliminar</button> </div> </div> </div> </div> </div> <!-- Modal: Toast --> <div class="modal fade nx-modal" id="nxToastModal" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-sm"> <div class="modal-content" style="border: 1px solid rgba(217, 70, 239, 0.2) !important;"> <div class="modal-body text-center" style="padding: 1.5rem !important;"> <i class="bi bi-exclamation-circle" style="font-size:2rem; color:#d946ef; opacity:0.8;" id="nx-toast-icon"></i> <p class="text-white mt-2 mb-0" style="font-size:0.82rem; font-family:'Space Grotesk',sans-serif;" id="nx-toast-msg"></p> </div> </div> </div> </div> <script src="assets/js/nexus.js?v=<?= time() ?>"></script>
Coded With 💗 by
0x6ick