:root { --bg: #0b1020; --surface: #121a2b; --surface-2: #1b2740; --text: #e6edf3; --muted: #9fb3c8; --border: #243453; --primary: #4f46e5; /* Indigo-600 */ --primary-700: #4338ca; --secondary: #0ea5e9; /* Sky-500 */ --shadow: 0 8px 30px rgba(0,0,0,0.25); } * { box-sizing: border-box; } html, body { height: 100%; } body { margin: 0; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji"; background: radial-gradient(1200px 600px at 20% -10%, rgba(79,70,229,0.18), transparent 60%), radial-gradient(1000px 800px at 120% 10%, rgba(14,165,233,0.18), transparent 55%), var(--bg); color: var(--text); line-height: 1.45; } .header { text-align: center; padding: 48px 16px 12px; } .header h1 { margin: 0; font-size: 2.1rem; letter-spacing: 0.3px; } .subtitle { margin: 8px 0 0; color: var(--muted); } .container { width: min(1100px, 92vw); margin: 0 auto; padding: 20px 0 56px; display: grid; gap: 16px; } .panel { background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.01)); border: 1px solid var(--border); border-radius: 14px; padding: 16px; box-shadow: var(--shadow); backdrop-filter: blur(6px); } .panel-header { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; } .panel-header h2 { margin: 0; font-size: 1.05rem; } .count { color: var(--muted); font-size: 0.9rem; } .drop-zone { border: 2px dashed var(--border); border-radius: 14px; padding: 28px; text-align: center; background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01)); transition: border-color .2s, background-color .2s, transform .1s; cursor: pointer; outline: none; } .drop-zone:focus-visible { border-color: var(--secondary); box-shadow: 0 0 0 3px rgba(14,165,233,0.35); } .drop-zone.is-dragover { border-color: var(--primary); background: rgba(79,70,229,0.08); transform: scale(1.01); } .drop-zone__content .icon { font-size: 42px; margin-bottom: 6px; } .drop-zone__content .primary { font-size: 1.05rem; font-weight: 600; } .drop-zone__content .secondary { color: var(--muted); margin: 6px 0; } .drop-zone__content .hint { margin-top: 6px; color: var(--muted); font-size: 0.9rem; } .controls { margin-top: 14px; display: flex; gap: 10px; flex-wrap: wrap; } .input { flex: 1 1 280px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--border); background: var(--surface); color: var(--text); outline: none; } .input::placeholder { color: #7d94ad; } .btn { appearance: none; border: 1px solid transparent; border-radius: 10px; padding: 10px 14px; cursor: pointer; font-weight: 600; transition: background-color .15s, transform .04s, border-color .15s, opacity .15s; background: var(--surface); color: var(--text); } .btn:active { transform: translateY(1px); } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn-primary { background: var(--primary); border-color: var(--primary-700); } .btn-primary:hover { background: var(--primary-700); } .btn-secondary { border-color: var(--border); background: var(--surface-2); } .btn-secondary:hover { border-color: var(--secondary); } .status { margin-bottom: 8px; color: var(--muted); } .meta { display: flex; gap: 12px; color: var(--muted); font-size: 0.92rem; margin-top: 6px; } .progress { width: 100%; height: 10px; border-radius: 999px; background: #0e1629; border: 1px solid var(--border); overflow: hidden; display: none; } .progress__bar { height: 100%; width: 0%; background: linear-gradient(90deg, var(--primary), var(--secondary)); transition: width .2s ease-out; } .file-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); } .file { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; padding: 12px 8px; border-bottom: 1px solid var(--border); } .file__name { display: flex; align-items: center; gap: 10px; min-width: 0; } .file__name .badge { font-size: 0.78rem; color: var(--muted); border: 1px solid var(--border); border-radius: 999px; padding: 2px 8px; } .file__name .path { color: #93a6bd; font-size: 0.9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .file__size { color: var(--muted); font-variant-numeric: tabular-nums; padding: 0 10px; } .file__actions { display: flex; gap: 8px; } .preview { margin-top: 6px; } .preview__content { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 12px; overflow: auto; max-height: 55vh; } .preview__content pre { margin: 0; white-space: pre-wrap; word-break: break-word; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.92rem; } .preview__content img, .preview__content embed, .preview__content iframe { width: 100%; height: auto; border: none; border-radius: 8px; background: #0c1326; } .footer { text-align: center; color: var(--muted); padding: 24px 16px 48px; }