/* Soundboard 1.3 - minimalistyczny wygląd, font Montserrat. Kolor akcentu: [soundboard accent="#hex"] */

.sb-board {
	--sb-cols: 4;
	--sb-accent: #6366f1;
	--sb-line: rgba(127, 127, 127, .22);
	--sb-line-strong: rgba(127, 127, 127, .42);
	--sb-surface: rgba(127, 127, 127, .05);
	--sb-hover: rgba(127, 127, 127, .14);
	--sb-track: rgba(127, 127, 127, .25);
	--sb-font: 'Montserrat', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
	position: relative;
	margin: 1.5em 0;
	font-family: var(--sb-font);
	font-size: 16px;
	line-height: 1.4;
}
.sb-board input,
.sb-board output,
.sb-board select,
.sb-board textarea {
	font-family: var(--sb-font);
}
.sb-board *,
.sb-board *::before,
.sb-board *::after {
	box-sizing: border-box;
}
.sb-board [hidden] {
	display: none !important;
}
.sb-board svg {
	display: block;
	flex: none;
	width: 1em;
	height: 1em;
}

/* ---------- reset przycisków (motywy lubią je stylować) ---------- */
.sb-board .sb-b,
.sb-board .sb-b:hover,
.sb-board .sb-b:focus,
.sb-board .sb-b:active {
	-webkit-appearance: none;
	appearance: none;
	background: var(--b-bg, transparent);
	color: var(--b-fg, inherit);
	border: 1px solid var(--b-bd, transparent);
	border-radius: var(--b-r, 8px);
	box-shadow: none;
	text-shadow: none;
	text-transform: none;
	text-decoration: none;
	letter-spacing: normal;
	cursor: pointer;
}
.sb-board .sb-b {
	font: inherit;
	line-height: 1.2;
	margin: 0;
	padding: 0;
	min-width: 0;
	min-height: 0;
}
.sb-board .sb-b:focus-visible {
	outline: 2px solid var(--sb-accent);
	outline-offset: 2px;
}
.sb-board .sb-b:disabled {
	opacity: .4;
	cursor: default;
}

/* ---------- pasek narzędzi ---------- */
.sb-board .sb-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem .7rem;
	margin-bottom: 1.1rem;
}
.sb-board .sb-btn {
	--b-bd: var(--sb-line);
	--b-r: 999px;
	display: inline-flex;
	align-items: center;
	gap: .45em;
	padding: .45em .95em;
	font-size: .85rem;
}
.sb-board .sb-btn:hover:not(:disabled) {
	--b-bg: var(--sb-hover);
}
.sb-board .sb-btn svg {
	width: 1.05em;
	height: 1.05em;
}
.sb-board .sb-pause-all .sb-ico-play {
	display: none;
}
.sb-board .sb-pause-all.is-resume .sb-ico-play {
	display: block;
}
.sb-board .sb-pause-all.is-resume .sb-ico-pause {
	display: none;
}
.sb-board .sb-toggle-groups svg {
	transition: transform .2s;
}
.sb-board .sb-toggle-groups.is-collapsed svg {
	transform: rotate(-90deg);
}

.sb-board .sb-master {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	margin: 0;
}
.sb-board .sb-master svg {
	opacity: .6;
	font-size: 1.1rem;
}
.sb-board .sb-master .sb-range {
	width: 110px;
}

.sb-board input.sb-search,
.sb-board input.sb-search:focus {
	flex: 1 1 180px;
	min-width: 150px;
	max-width: 260px;
	margin: 0 0 0 auto;
	padding: .5em .95em;
	border: 1px solid var(--sb-line);
	border-radius: 999px;
	background: transparent;
	color: inherit;
	font: inherit;
	font-size: .85rem;
	line-height: 1.2;
	box-shadow: none;
	outline: none;
	height: auto;
}
.sb-board input.sb-search:focus {
	border-color: var(--sb-accent);
}

/* ---------- chipy tagów ---------- */
.sb-board .sb-chips {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
	margin-bottom: 1.2rem;
}
.sb-board .sb-chip {
	--b-bd: var(--sb-line);
	--b-r: 999px;
	padding: .25em .8em;
	font-size: .8rem;
	opacity: .8;
}
.sb-board .sb-chip:hover {
	--b-bg: var(--sb-hover);
	opacity: 1;
}
.sb-board .sb-chip.is-on,
.sb-board .sb-chip.is-on:hover {
	--b-bg: var(--sb-accent);
	--b-bd: var(--sb-accent);
	--b-fg: #fff;
	opacity: 1;
}

/* ---------- akordeon kategorii ---------- */
.sb-board .sb-group {
	margin: 0 0 .6rem;
	padding-bottom: .7rem;
	border-bottom: 1px solid var(--sb-line);
}
.sb-board .sb-group-plain {
	border-bottom: 0;
}
.sb-board .sb-group-head {
	display: flex;
	align-items: center;
	gap: .6rem;
	padding: .4rem 0;
	list-style: none;
	cursor: pointer;
	user-select: none;
}
.sb-board .sb-group-head::-webkit-details-marker {
	display: none;
}
.sb-board .sb-group-head:focus-visible {
	outline: 2px solid var(--sb-accent);
	outline-offset: 2px;
	border-radius: 6px;
}
.sb-board .sb-group-title {
	font-size: 1rem;
	font-weight: 600;
	letter-spacing: .01em;
}
.sb-board .sb-group-count {
	font-size: .75rem;
	font-variant-numeric: tabular-nums;
	opacity: .5;
}
.sb-board .sb-live {
	width: .45rem;
	height: .45rem;
	border-radius: 50%;
	background: var(--sb-accent);
	opacity: 0;
	transform: scale(.5);
	transition: opacity .2s, transform .2s;
}
.sb-board .sb-group.is-live .sb-live {
	opacity: 1;
	transform: none;
	animation: sb-pulse 1.6s ease-in-out infinite;
}
.sb-board .sb-chev {
	margin-left: auto;
	font-size: 1.15rem;
	opacity: .5;
	transition: transform .2s;
}
.sb-board details.sb-group:not([open]) .sb-chev {
	transform: rotate(-90deg);
}
.sb-board details.sb-group[open] > .sb-grid {
	margin-top: .7rem;
	animation: sb-in .22s ease;
}
@keyframes sb-in {
	from { opacity: 0; transform: translateY(-4px); }
}

/* ---------- siatka ---------- */
.sb-board .sb-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(max(13rem, calc(100% / var(--sb-cols) - 1rem)), 1fr));
	gap: .8rem;
}

/* ---------- kafelek ---------- */
.sb-board .sb-tile {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: .6rem;
	padding: .8rem .85rem .7rem;
	border: 1px solid var(--sb-line);
	border-radius: 14px;
	background: var(--sb-surface);
	transition: border-color .2s, background .2s;
}
.sb-board .sb-tile:hover {
	border-color: var(--sb-line-strong);
}
.sb-board .sb-tile.is-active {
	border-color: var(--sb-accent);
	background: rgba(99, 102, 241, .07);
	background: color-mix(in srgb, var(--sb-accent) 7%, transparent);
}
.sb-board .sb-tile.is-error {
	opacity: .5;
	border-color: #d63638;
}

.sb-board .sb-head {
	display: flex;
	align-items: center;
	gap: .2rem;
}
.sb-board .sb-main {
	--b-r: 10px;
	flex: 1 1 auto;
	display: flex;
	align-items: center;
	gap: .7rem;
	min-width: 0;
	padding: .1rem;
	text-align: left;
	font-size: .9rem;
	font-weight: 500;
}
.sb-board .sb-icon {
	display: grid;
	flex: none;
	place-items: center;
	width: 2.4rem;
	height: 2.4rem;
	border-radius: 50%;
	background: var(--sb-hover);
	font-size: 1rem;
	transition: background .2s, color .2s, transform .15s;
}
.sb-board .sb-main:hover .sb-icon {
	transform: scale(1.07);
}
.sb-board .sb-icon .sb-ico-pause {
	display: none;
}
.sb-board .sb-tile.is-playing .sb-icon {
	background: var(--sb-accent);
	color: #fff;
}
.sb-board .sb-tile.is-playing .sb-ico-play {
	display: none;
}
.sb-board .sb-tile.is-playing .sb-ico-pause {
	display: block;
}
.sb-board .sb-tile.is-fading .sb-icon {
	animation: sb-pulse 1s ease-in-out infinite;
}
@keyframes sb-pulse {
	50% { opacity: .4; }
}
.sb-board .sb-title {
	display: -webkit-box;
	min-width: 0;
	overflow: hidden;
	overflow-wrap: anywhere;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.sb-board .sb-ib {
	--b-r: 8px;
	display: grid;
	flex: none;
	place-items: center;
	width: 1.9rem;
	height: 1.9rem;
	font-size: 1rem;
	opacity: .45;
	transition: opacity .15s, color .15s;
}
.sb-board .sb-ib:hover {
	--b-bg: var(--sb-hover);
	opacity: 1;
}
.sb-board .sb-loop.is-on,
.sb-board .sb-loop.is-on:hover {
	--b-fg: var(--sb-accent);
	opacity: 1;
}

.sb-board .sb-tile-tags {
	display: flex;
	flex-wrap: wrap;
	gap: .1rem .6rem;
	margin-top: -.35rem;
	padding-left: 3.2rem;
	font-size: .72rem;
	opacity: .55;
}

.sb-board .sb-volrow {
	display: flex;
	align-items: center;
	gap: .5rem;
}
.sb-board .sb-volrow svg {
	font-size: 1rem;
	opacity: .45;
}
.sb-board .sb-volrow .sb-range {
	flex: 1 1 0;
	width: auto;
	min-width: 0;
}
.sb-board .sb-volrow .sb-ib {
	margin-left: -.1rem;
}
.sb-board .sb-volrow .sb-ib svg {
	opacity: 1;
}
.sb-board .sb-del-btn:hover {
	--b-fg: #d63638;
}

.sb-board .sb-progress {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: .5rem;
}
.sb-board .sb-time {
	min-width: 2.3em;
	font-size: .7rem;
	font-variant-numeric: tabular-nums;
	opacity: .6;
}
.sb-board .sb-dur {
	text-align: right;
}

/* ---------- suwaki ---------- */
.sb-board .sb-range {
	--p: 0%;
	--sb-fill: var(--sb-accent);
	-webkit-appearance: none;
	appearance: none;
	display: block;
	width: 100%;
	height: 1.1rem;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
	outline: none;
	cursor: pointer;
}
.sb-board .sb-vol,
.sb-board .sb-f-vol,
.sb-board .sb-master-vol {
	--sb-fill: rgba(127, 127, 127, .8);
}
.sb-board .sb-range::-webkit-slider-runnable-track {
	height: 4px;
	border-radius: 99px;
	background: linear-gradient(to right, var(--sb-fill) var(--p), var(--sb-track) var(--p));
}
.sb-board .sb-range::-moz-range-track {
	height: 4px;
	border-radius: 99px;
	background: var(--sb-track);
}
.sb-board .sb-range::-moz-range-progress {
	height: 4px;
	border-radius: 99px;
	background: var(--sb-fill);
}
.sb-board .sb-range::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 12px;
	height: 12px;
	margin-top: -4px;
	border: 0;
	border-radius: 50%;
	background: var(--sb-fill);
	transform: scale(0);
	transition: transform .15s;
}
.sb-board .sb-range::-moz-range-thumb {
	width: 12px;
	height: 12px;
	border: 0;
	border-radius: 50%;
	background: var(--sb-fill);
	transform: scale(0);
	transition: transform .15s;
}
.sb-board .sb-tile:hover .sb-range::-webkit-slider-thumb,
.sb-board .sb-range:focus-visible::-webkit-slider-thumb,
.sb-board .sb-range:active::-webkit-slider-thumb,
.sb-board .sb-f-vol::-webkit-slider-thumb,
.sb-board .sb-master .sb-range::-webkit-slider-thumb {
	transform: scale(1);
}
.sb-board .sb-tile:hover .sb-range::-moz-range-thumb,
.sb-board .sb-range:focus-visible::-moz-range-thumb,
.sb-board .sb-range:active::-moz-range-thumb,
.sb-board .sb-f-vol::-moz-range-thumb,
.sb-board .sb-master .sb-range::-moz-range-thumb {
	transform: scale(1);
}
@media (hover: none) {
	.sb-board .sb-range::-webkit-slider-thumb {
		transform: scale(1);
	}
	.sb-board .sb-range::-moz-range-thumb {
		transform: scale(1);
	}
}
.sb-board .sb-range:disabled {
	opacity: .35;
	cursor: default;
}
.sb-board .sb-tile .sb-range:disabled::-webkit-slider-thumb {
	transform: scale(0);
}
.sb-board .sb-tile .sb-range:disabled::-moz-range-thumb {
	transform: scale(0);
}

/* ======================================================================
 * Dodawanie dźwięków (panel w tablicy)
 * ==================================================================== */
.sb-board .sb-btn-primary,
.sb-board .sb-btn-primary:hover,
.sb-board .sb-btn-primary:focus {
	--b-bg: var(--sb-accent);
	--b-bd: var(--sb-accent);
	--b-fg: #fff;
	font-weight: 600;
}
.sb-board .sb-btn.sb-btn-primary:hover:not(:disabled) {
	--b-bg: var(--sb-accent);
	filter: brightness(1.1);
}
.sb-board .sb-add-toggle svg {
	transition: transform .2s;
}
.sb-board .sb-add-toggle.is-open svg {
	transform: rotate(45deg);
}

.sb-board form.sb-add {
	margin: 0 0 1.4rem;
	padding: 1.15rem 1.25rem 1.2rem;
	border: 1px solid var(--sb-line);
	border-radius: 18px;
	background: var(--sb-surface);
}
.sb-board form.sb-add:not([hidden]) {
	animation: sb-in .22s ease;
}
.sb-board .sb-add-head {
	display: flex;
	align-items: center;
	gap: .8rem;
	margin-bottom: 1.1rem;
}
.sb-board .sb-add-title {
	margin: 0;
	padding: 0;
	border: 0;
	color: inherit;
	font: inherit;
	font-size: 1.05rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: none;
}
.sb-board .sb-add-close,
.sb-board .sb-dlg-close {
	margin-left: auto;
}

.sb-board .sb-add-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.2rem 1.8rem;
}
@media (max-width: 720px) {
	.sb-board .sb-add-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}
.sb-board .sb-add-col {
	display: flex;
	flex-direction: column;
	gap: 1.05rem;
	min-width: 0;
}
.sb-board .sb-field {
	display: flex;
	flex-direction: column;
	gap: .45rem;
	min-width: 0;
	margin: 0;
}
.sb-board .sb-label {
	font-size: .68rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	opacity: .6;
}

/* pola tekstowe */
.sb-board input.sb-input,
.sb-board input.sb-input:focus {
	-webkit-appearance: none;
	appearance: none;
	display: block;
	width: 100%;
	height: auto;
	margin: 0;
	padding: .62em .9em;
	border: 1px solid var(--sb-line);
	border-radius: 10px;
	background: transparent;
	color: inherit;
	font: inherit;
	font-size: .85rem;
	line-height: 1.3;
	box-shadow: none;
	outline: none;
	transition: border-color .15s, box-shadow .15s;
}
.sb-board input.sb-input::placeholder {
	color: inherit;
	opacity: .4;
}
.sb-board input.sb-input:focus {
	border-color: var(--sb-accent);
	box-shadow: 0 0 0 3px rgba(99, 102, 241, .18);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--sb-accent) 20%, transparent);
}

/* przełącznik źródła */
.sb-board .sb-seg {
	display: inline-flex;
	gap: 2px;
	align-self: flex-start;
	padding: 3px;
	border: 1px solid var(--sb-line);
	border-radius: 999px;
}
.sb-board .sb-seg-btn {
	--b-r: 999px;
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: .42em 1em;
	font-size: .8rem;
	font-weight: 500;
	opacity: .7;
}
.sb-board .sb-seg-btn svg {
	width: 1.1em;
	height: 1.1em;
}
.sb-board .sb-seg-btn:hover {
	--b-bg: var(--sb-hover);
	opacity: 1;
}
.sb-board .sb-seg-btn.is-on,
.sb-board .sb-seg-btn.is-on:hover {
	--b-bg: var(--sb-accent);
	--b-fg: #fff;
	opacity: 1;
}

/* strefa upuszczania pliku */
.sb-board .sb-drop {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	min-height: 9.5rem;
	margin: 0;
	padding: 1.2rem 1rem;
	border: 2px dashed var(--sb-line-strong);
	border-radius: 14px;
	font-size: .82rem;
	text-align: center;
	cursor: pointer;
	transition: border-color .2s, background .2s;
}
.sb-board .sb-drop > svg {
	width: 1.9rem;
	height: 1.9rem;
	opacity: .55;
	transition: transform .2s, opacity .2s;
}
.sb-board .sb-drop-hint {
	display: flex;
	flex-direction: column;
	gap: .2rem;
}
.sb-board .sb-drop-hint small {
	font-size: .72rem;
	opacity: .55;
}
.sb-board .sb-drop:hover,
.sb-board .sb-drop:focus-visible {
	border-color: var(--sb-accent);
	outline: none;
}
.sb-board .sb-drop.is-over {
	border-color: var(--sb-accent);
	background: rgba(99, 102, 241, .08);
	background: color-mix(in srgb, var(--sb-accent) 9%, transparent);
}
.sb-board .sb-drop.is-over > svg {
	transform: translateY(-3px);
	opacity: 1;
}
.sb-board .sb-drop.has-file {
	border-style: solid;
	border-color: var(--sb-accent);
}
.sb-board .sb-drop.has-file > svg {
	color: var(--sb-accent);
	opacity: 1;
}
.sb-board .sb-drop.has-file .sb-drop-hint {
	display: none;
}
.sb-board .sb-drop-name {
	max-width: 100%;
	font-weight: 600;
	overflow-wrap: anywhere;
}

/* podgląd YouTube */
.sb-board .sb-src-yt {
	display: flex;
	flex-direction: column;
	gap: .8rem;
}
.sb-board .sb-src-yt[hidden] {
	display: none;
}
.sb-board .sb-yt-prev {
	display: flex;
	align-items: center;
	gap: .8rem;
	font-size: .78rem;
	opacity: .85;
}
.sb-board .sb-yt-prev img {
	display: block;
	width: 120px;
	height: 68px;
	border-radius: 8px;
	background: var(--sb-hover);
	object-fit: cover;
}
.sb-board .sb-add-dur {
	min-height: 1.1em;
	margin-top: -.45rem;
	font-size: .75rem;
	font-variant-numeric: tabular-nums;
	opacity: .65;
}
.sb-board .sb-add-dur:empty {
	display: none;
}

/* wybór kategorii / tagów */
.sb-board .sb-picker {
	display: flex;
	flex-direction: column;
	gap: .55rem;
}
.sb-board .sb-picker-chips {
	display: flex;
	flex-wrap: wrap;
	gap: .35rem;
}
.sb-board .sb-picker-chips:empty {
	display: none;
}
.sb-board .sb-pchip {
	--b-bd: var(--sb-line);
	--b-r: 999px;
	padding: .3em .85em;
	font-size: .78rem;
	opacity: .8;
}
.sb-board .sb-pchip:hover {
	--b-bg: var(--sb-hover);
	opacity: 1;
}
.sb-board .sb-pchip.is-on,
.sb-board .sb-pchip.is-on:hover {
	--b-bg: var(--sb-accent);
	--b-bd: var(--sb-accent);
	--b-fg: #fff;
	opacity: 1;
}
.sb-board .sb-pchip.is-new {
	animation: sb-in .2s ease;
}

/* głośność w formularzu */
.sb-board .sb-f-volrow {
	display: flex;
	align-items: center;
	gap: .7rem;
}
.sb-board .sb-f-volrow svg {
	font-size: 1.05rem;
	opacity: .5;
}
.sb-board .sb-f-vol-out {
	min-width: 3.2em;
	font-size: .75rem;
	font-variant-numeric: tabular-nums;
	text-align: right;
	opacity: .65;
}

/* przełącznik (pętla) */
.sb-board .sb-switch {
	position: relative;
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	gap: .65rem;
	margin: 0;
	font-size: .85rem;
	cursor: pointer;
	user-select: none;
}
.sb-board .sb-switch input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: 0;
	opacity: 0;
	pointer-events: none;
}
.sb-board .sb-switch-ui {
	position: relative;
	flex: none;
	width: 2.3rem;
	height: 1.3rem;
	border-radius: 999px;
	background: var(--sb-track);
	transition: background .2s;
}
.sb-board .sb-switch-ui::after {
	content: "";
	position: absolute;
	top: .15rem;
	left: .15rem;
	width: 1rem;
	height: 1rem;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .3);
	transition: transform .2s;
}
.sb-board .sb-switch input:checked + .sb-switch-ui {
	background: var(--sb-accent);
}
.sb-board .sb-switch input:checked + .sb-switch-ui::after {
	transform: translateX(1rem);
}
.sb-board .sb-switch input:focus-visible + .sb-switch-ui {
	outline: 2px solid var(--sb-accent);
	outline-offset: 2px;
}

/* stopka formularza */
.sb-board .sb-add-foot {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .6rem;
	margin-top: 1.2rem;
	padding-top: 1rem;
	border-top: 1px solid var(--sb-line);
}
.sb-board .sb-add-msg {
	flex: 1 1 12rem;
	font-size: .8rem;
	line-height: 1.4;
}
.sb-board .sb-add-msg.is-err {
	color: #d63638;
}
.sb-board .sb-add-msg.is-ok {
	color: #2f9e63;
}
.sb-board .sb-submit {
	position: relative;
	overflow: hidden;
	padding: .55em 1.25em;
}
.sb-board .sb-submit::after {
	content: "";
	position: absolute;
	inset: 0 auto 0 0;
	width: var(--prog, 0%);
	background: rgba(255, 255, 255, .28);
	pointer-events: none;
	transition: width .2s;
}
.sb-board .sb-submit > * {
	position: relative;
	z-index: 1;
}
.sb-board .sb-submit:disabled {
	cursor: progress;
}

.sb-board .sb-empty {
	margin: 1.5rem 0;
	font-size: .9rem;
	text-align: center;
	opacity: .55;
}

/* świeżo dodany kafelek */
.sb-board .sb-tile.is-new {
	animation: sb-flash 1.5s ease 2;
}
@keyframes sb-flash {
	0%, 100% { box-shadow: 0 0 0 0 transparent; }
	40% { box-shadow: 0 0 0 4px rgba(99, 102, 241, .35); box-shadow: 0 0 0 4px color-mix(in srgb, var(--sb-accent) 38%, transparent); }
}

/* ---------- ekrany dotykowe (iPhone) ---------- */
/* iOS powiększa stronę po kliknięciu w pole z czcionką < 16px */
@media (hover: none) and (pointer: coarse) {
	.sb-board input.sb-input,
	.sb-board input.sb-input:focus,
	.sb-board input.sb-search,
	.sb-board input.sb-search:focus {
		font-size: 16px;
	}
	.sb-board .sb-ib {
		width: 2.4rem;
		height: 2.4rem;
	}
	.sb-board .sb-drop {
		min-height: 7.5rem;
	}
}

/* pole pliku: ukryte wizualnie, ale nie display:none (starsze iOS gubią wtedy kliknięcie w label) */
.sb-board .sb-drop {
	position: relative;
}
.sb-board .sb-file {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	overflow: hidden;
	pointer-events: none;
}

/* ======================================================================
 * 1.3: opis, zaznaczanie, filtry stanu, okna dialogowe
 * ==================================================================== */

/* opis kafelka (klik rozwija dłuższy tekst) */
.sb-board .sb-desc {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 4;
	overflow: hidden;
	overflow-wrap: anywhere;
	white-space: pre-line;
	font-size: .75rem;
	line-height: 1.45;
	opacity: .7;
	cursor: pointer;
}
.sb-board .sb-desc.is-open {
	display: block;
	-webkit-line-clamp: unset;
	overflow: visible;
}

/* zaznaczanie kafelków: kółko w rogu, widoczne po najechaniu albo gdy cokolwiek jest zaznaczone */
.sb-board .sb-sel {
	position: absolute;
	top: -.45rem;
	left: -.45rem;
	z-index: 2;
	width: 1.3rem;
	height: 1.3rem;
	margin: 0;
	cursor: pointer;
}
.sb-board .sb-sel input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}
.sb-board .sb-sel-ui {
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	border: 1.5px solid var(--sb-line-strong);
	border-radius: 50%;
	background: Canvas;
	opacity: 0;
	transition: opacity .15s, background .15s, border-color .15s;
	pointer-events: none;
}
.sb-board .sb-sel-ui::after {
	content: "";
	width: .3rem;
	height: .55rem;
	margin-top: -.12rem;
	border: solid #fff;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg) scale(0);
	transition: transform .15s;
}
.sb-board .sb-tile:hover .sb-sel-ui,
.sb-board .sb-sel input:focus-visible + .sb-sel-ui,
.sb-board.has-selection .sb-sel-ui,
.sb-board .sb-tile.is-selected .sb-sel-ui {
	opacity: 1;
}
.sb-board .sb-sel input:checked + .sb-sel-ui {
	border-color: var(--sb-accent);
	background: var(--sb-accent);
}
.sb-board .sb-sel input:checked + .sb-sel-ui::after {
	transform: rotate(45deg) scale(1);
}
.sb-board .sb-sel input:focus-visible + .sb-sel-ui {
	outline: 2px solid var(--sb-accent);
	outline-offset: 2px;
}
.sb-board .sb-tile.is-selected {
	box-shadow: 0 0 0 2px var(--sb-accent);
}
@media (hover: none) {
	.sb-board .sb-sel-ui {
		opacity: 1;
	}
	.sb-board .sb-sel {
		width: 1.5rem;
		height: 1.5rem;
	}
}

/* wiersz filtrów: stan (aktywne / zapauzowane) + tagi, ten sam wygląd chipów */
.sb-board .sb-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: .5rem 1.1rem;
	margin-bottom: 1.2rem;
}
.sb-board .sb-filters .sb-chips,
.sb-board .sb-filters .sb-state-chips {
	margin: 0;
}
.sb-board .sb-state-chips {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
}

/* ---------- okna dialogowe (edycja, potwierdzenie usunięcia) ---------- */
.sb-board dialog.sb-dlg {
	width: min(32rem, calc(100vw - 2rem));
	max-height: calc(100vh - 2rem);
	margin: auto;
	padding: 1.15rem 1.25rem 1.2rem;
	overflow: auto;
	border: 1px solid var(--sb-line-strong);
	border-radius: 18px;
	background: Canvas;
	color: CanvasText;
	font: inherit;
	box-shadow: 0 18px 50px rgba(0, 0, 0, .35);
}
.sb-board dialog.sb-dlg[open] {
	animation: sb-in .18s ease;
}
.sb-board dialog.sb-dlg::backdrop {
	background: rgba(0, 0, 0, .5);
}
.sb-board .sb-dlg-fields {
	display: flex;
	flex-direction: column;
	gap: 1.05rem;
}
.sb-board .sb-del-text {
	margin: 0;
	font-size: .88rem;
	line-height: 1.5;
	overflow-wrap: anywhere;
}
.sb-board .sb-dlg-del .sb-add-foot {
	border-top: 0;
	padding-top: 0;
}
.sb-board textarea.sb-input,
.sb-board textarea.sb-input:focus {
	-webkit-appearance: none;
	appearance: none;
	display: block;
	width: 100%;
	min-height: 4.6rem;
	margin: 0;
	padding: .62em .9em;
	border: 1px solid var(--sb-line);
	border-radius: 10px;
	background: transparent;
	color: inherit;
	font: inherit;
	font-size: .85rem;
	line-height: 1.4;
	resize: vertical;
	box-shadow: none;
	outline: none;
	transition: border-color .15s, box-shadow .15s;
}
.sb-board textarea.sb-input::placeholder {
	color: inherit;
	opacity: .4;
}
.sb-board textarea.sb-input:focus {
	border-color: var(--sb-accent);
	box-shadow: 0 0 0 3px rgba(99, 102, 241, .18);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--sb-accent) 20%, transparent);
}
.sb-board .sb-btn-danger,
.sb-board .sb-btn-danger:hover,
.sb-board .sb-btn-danger:focus {
	--b-bg: #d63638;
	--b-bd: #d63638;
	--b-fg: #fff;
	font-weight: 600;
}
.sb-board .sb-btn.sb-btn-danger:hover:not(:disabled) {
	--b-bg: #d63638;
	filter: brightness(1.1);
}
@media (hover: none) and (pointer: coarse) {
	.sb-board textarea.sb-input,
	.sb-board textarea.sb-input:focus {
		font-size: 16px;
	}
}

/* ---------- ukryty odtwarzacz YouTube ---------- */
.sb-board .sb-yt-host {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	opacity: 0;
	pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
	.sb-board *,
	.sb-board *::before,
	.sb-board *::after {
		animation: none !important;
		transition: none !important;
	}
}
