.qdup {
	--qdup-accent: #1d6f42;
	--qdup-accent-2: #155a35;
	--qdup-border: #d5dbe1;
	--qdup-muted: #5f6b76;
	--qdup-bg: #fff;
	--qdup-soft: #f4f7f5;
	--qdup-error: #b3261e;
	--qdup-dup: #9a5b00;
	max-width: 820px;
	margin: 1.5em auto;
	font-size: 16px;
	line-height: 1.5;
	box-sizing: border-box;
}
.qdup *, .qdup *::before, .qdup *::after { box-sizing: border-box; }
.qdup [hidden] { display: none !important; }
.qdup-title { margin: 0 0 .6em; }

.qdup-drop {
	border: 2px dashed var(--qdup-border); border-radius: 14px; background: var(--qdup-soft);
	padding: 2.4em 1em; text-align: center; cursor: pointer; transition: border-color .15s, background .15s;
}
.qdup-drop:hover, .qdup-drop:focus-visible, .qdup-drop.is-over { border-color: var(--qdup-accent); background: #e9f3ed; outline: none; }
.qdup-drop-icon { width: 44px; height: 44px; color: var(--qdup-accent); }
.qdup-drop-main { margin: .4em 0 .1em; font-weight: 600; font-size: 1.1em; }
.qdup-drop-sub { margin: 0; color: var(--qdup-muted); font-size: .9em; }
.qdup-cloud { display: flex; gap: .5em; justify-content: center; flex-wrap: wrap; margin-top: .8em; }

.qdup-file {
	display: flex; align-items: center; gap: .8em; padding: .7em .9em;
	border: 1px solid var(--qdup-border); border-radius: 12px; background: var(--qdup-bg);
}
.qdup-ext { font-size: .72em; font-weight: 700; letter-spacing: .04em; background: var(--qdup-accent); color: #fff; border-radius: 5px; padding: .3em .5em; min-width: 3.4em; text-align: center; }
.qdup-file-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.qdup-file-name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qdup-file-meta { font-size: .82em; color: var(--qdup-muted); }

.qdup-box { margin: 1em 0 0; padding: 1em 1.1em; border: 1px solid var(--qdup-border); border-radius: 12px; min-width: 0; }
.qdup-box legend { font-weight: 700; padding: 0 .3em; }
.qdup-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8em; align-items: end; margin-top: .6em; }
.qdup-grid > label { display: flex; flex-direction: column; gap: .25em; font-size: .9em; font-weight: 600; }
.qdup-grid > label.qdup-check-inline { flex-direction: row; align-items: center; gap: .45em; font-weight: 400; padding-bottom: .45em; }
.qdup select { width: 100%; padding: .42em .5em; border: 1px solid var(--qdup-border); border-radius: 8px; background: var(--qdup-bg); color: inherit; font: inherit; font-weight: 400; }

.qdup-cols-wrap { margin-top: 1em; }
.qdup-cols-head { display: flex; justify-content: space-between; gap: 1em; font-size: .92em; }
.qdup-link { background: none; border: 0; padding: 0; color: var(--qdup-accent); cursor: pointer; font: inherit; text-decoration: underline; }
.qdup-hint { font-size: .85em; color: var(--qdup-muted); margin: .25em 0 .5em; }
.qdup-cols { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .4em; max-height: 240px; overflow: auto; }
.qdup-col {
	display: flex; align-items: center; gap: .45em; padding: .35em .5em;
	border: 1px solid var(--qdup-border); border-radius: 8px; cursor: pointer; font-size: .9em; min-width: 0;
}
.qdup-col:has(input:checked) { border-color: var(--qdup-accent); background: var(--qdup-soft); }
.qdup-col-letter { font-weight: 700; color: var(--qdup-muted); font-size: .8em; min-width: 1.4em; }
.qdup-col-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.qdup-checks { display: grid; grid-template-columns: 1fr 1fr; gap: .35em 1em; font-size: .93em; }
.qdup-checks label, .qdup-hl-opts label { cursor: pointer; }

.qdup-modes { display: grid; grid-template-columns: 1fr 1fr; gap: .6em; }
.qdup-mode { display: flex; gap: .55em; align-items: flex-start; padding: .7em; border: 1px solid var(--qdup-border); border-radius: 10px; cursor: pointer; }
.qdup-mode:has(input:checked) { border-color: var(--qdup-accent); background: var(--qdup-soft); }
.qdup-mode input { margin-top: .3em; }
.qdup-mode small { display: block; color: var(--qdup-muted); font-size: .82em; line-height: 1.4; }
.qdup-hl-opts { display: flex; flex-wrap: wrap; gap: 1.2em; align-items: center; margin-top: .7em; font-size: .93em; }
.qdup-color-label { display: inline-flex; align-items: center; gap: .45em; }
.qdup-color { width: 2.4em; height: 1.8em; padding: 0; border: 1px solid var(--qdup-border); border-radius: 6px; background: none; cursor: pointer; }
.qdup-note { font-size: .85em; color: var(--qdup-dup); margin: .6em 0 0; }

.qdup-actions { display: flex; gap: .6em; flex-wrap: wrap; margin-top: 1.1em; }
.qdup-btn {
	appearance: none; border: 1px solid var(--qdup-accent); background: var(--qdup-accent); color: #fff;
	padding: .65em 1.4em; border-radius: 10px; font: inherit; font-weight: 600; cursor: pointer;
}
.qdup-btn:hover:not(:disabled) { background: var(--qdup-accent-2); border-color: var(--qdup-accent-2); }
.qdup-btn:disabled { opacity: .45; cursor: not-allowed; }
.qdup-btn-ghost { background: transparent; color: var(--qdup-accent); padding: .45em 1em; }
.qdup-btn-ghost:hover:not(:disabled) { background: var(--qdup-soft); color: var(--qdup-accent-2); }

.qdup-progress { margin-top: 1em; }
.qdup-bar { height: 8px; border-radius: 99px; background: #e3e8e5; overflow: hidden; }
.qdup-bar span { display: block; height: 100%; width: 0; background: var(--qdup-accent); transition: width .25s; }
.qdup-status { margin: .4em 0 0; font-size: .92em; }
.qdup-msg { margin-top: 1em; padding: .7em .9em; border-radius: 8px; background: var(--qdup-soft); font-size: .92em; }
.qdup-msg.is-error { background: #fdecea; color: var(--qdup-error); }

.qdup-result { margin-top: 1.4em; padding-top: 1.2em; border-top: 1px solid var(--qdup-border); }
.qdup-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: .6em; }
.qdup-stat { display: flex; flex-direction: column; padding: .8em 1em; border-radius: 12px; background: var(--qdup-soft); }
.qdup-stat-num { font-size: 1.6em; font-weight: 700; line-height: 1.2; font-variant-numeric: tabular-nums; }
.qdup-stat-label { font-size: .85em; color: var(--qdup-muted); }
.qdup-stat.is-dup { background: #fff4de; }
.qdup-stat.is-dup .qdup-stat-num { color: var(--qdup-dup); }
.qdup-ok { margin: 1em 0 0; padding: .8em 1em; border-radius: 10px; background: #e9f3ed; color: var(--qdup-accent-2); font-weight: 600; }

.qdup-preview-title { font-size: 1em; margin: 1.2em 0 .5em; }
.qdup-table-wrap { overflow: auto; max-height: 360px; border: 1px solid var(--qdup-border); border-radius: 10px; }
.qdup-table { width: 100%; border-collapse: collapse; font-size: .88em; margin: 0; }
.qdup-table th, .qdup-table td { padding: .4em .6em; border-bottom: 1px solid var(--qdup-border); text-align: left; white-space: nowrap; max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.qdup-table th { position: sticky; top: 0; background: var(--qdup-soft); font-weight: 600; }
.qdup-table td.qdup-num { font-variant-numeric: tabular-nums; color: var(--qdup-muted); }
.qdup-table tbody tr:last-child td { border-bottom: 0; }
.qdup-done { font-size: .92em; margin: .7em 0 0; }
.qdup-again { color: var(--qdup-accent); }

.qdup-privacy, .qdup-credit { margin: 1.2em 0 0; font-size: .82em; color: var(--qdup-muted); text-align: center; }
.qdup-credit { margin-top: .2em; }

@media (max-width: 600px) {
	.qdup-grid, .qdup-checks, .qdup-modes { grid-template-columns: 1fr; }
	.qdup-file { flex-wrap: wrap; }
}
