/* Schnick Schnack Schnuck – flacher Plakatstil, harte Konturen
   Alle Regeln sind auf .ssn gescoped, damit kein Theme-CSS kollidiert. */

.ssn {
	--ssn-bg:      #e2d6b2;  /* Ocker, Plakatgrund */
	--ssn-bg-2:    #d8cba3;  /* abgesetzte Flächen */
	--ssn-ink:     #17150f;  /* Kontur und Schrift */
	--ssn-stein:   #6c7a86;  /* Schiefer */
	--ssn-papier:  #f4efe2;  /* Blattweiß */
	--ssn-schere:  #d1483a;  /* Signalrot */
	--ssn-win:     #2f7d5a;
	--ssn-lose:    #b03a2b;
	--ssn-draw:    #a49c85;

	--ssn-sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--ssn-mono: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

	font-family: var(--ssn-sans);
	color: var(--ssn-ink);
	background: var(--ssn-bg);
	border: 2px solid var(--ssn-ink);
	border-radius: 10px;
	box-shadow: 6px 6px 0 var(--ssn-ink);
	padding: clamp(16px, 3vw, 26px);
	max-width: 560px;
	margin: 0 auto 8px;
	box-sizing: border-box;
}

.ssn *,
.ssn *::before,
.ssn *::after { box-sizing: border-box; }

/* ---------- Kopf ---------- */

.ssn__head { margin-bottom: 16px; }

.ssn__eyebrow {
	font-family: var(--ssn-mono);
	font-size: 10px;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	margin: 0 0 3px;
	opacity: 0.65;
}

.ssn__title {
	font-size: clamp(21px, 4vw, 30px);
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 1;
	margin: 0;
	text-transform: uppercase;
	color: var(--ssn-ink);
}

/* ---------- Bühne ---------- */

.ssn__stage {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 10px;
	background: var(--ssn-bg-2);
	border: 2px solid var(--ssn-ink);
	border-radius: 8px;
	padding: 16px 12px;
}

.ssn__side {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
}

.ssn__sideLabel {
	font-family: var(--ssn-mono);
	font-size: 10px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	opacity: 0.7;
}

.ssn__score {
	font-size: clamp(26px, 6vw, 38px);
	font-weight: 800;
	line-height: 1;
	font-variant-numeric: tabular-nums;
}

.ssn__middle {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	min-width: 104px;
}

.ssn__call {
	font-family: var(--ssn-mono);
	font-size: 12px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	min-height: 1.2em;
	opacity: 0.8;
}

.ssn__verdict {
	font-size: 13px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	min-height: 1.3em;
	text-align: center;
}

.ssn__verdict.is-win  { color: var(--ssn-win); }
.ssn__verdict.is-lose { color: var(--ssn-lose); }
.ssn__verdict.is-draw { color: var(--ssn-ink); opacity: 0.6; }

.ssn__ties {
	font-family: var(--ssn-mono);
	font-size: 10px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	opacity: 0.6;
}

/* ---------- Zeichen ----------
   Stein, Papier und Schere sind reine CSS-Formen: keine Bilder, keine Emoji,
   damit sie auf jedem Gerät gleich aussehen. */

.ssn__hand,
.ssn__icon {
	position: relative;
	display: block;
	width: 54px;
	height: 54px;
	flex: 0 0 auto;
}

.ssn__hand { width: 62px; height: 62px; }

.ssn__hand i,
.ssn__icon i { display: none; position: absolute; }

/* leer: gestrichelter Platzhalter */
.ssn__hand.is-empty {
	border: 2px dashed var(--ssn-ink);
	border-radius: 50%;
	opacity: 0.3;
}

/* Stein: unregelmäßiger Klumpen */
.ssn__hand.is-stein,
.ssn__icon.is-stein {
	background: var(--ssn-stein);
	border: 2px solid var(--ssn-ink);
	border-radius: 48% 56% 46% 54% / 54% 44% 58% 46%;
}

/* Papier: Blatt mit umgeknickter Ecke */
.ssn__hand.is-papier,
.ssn__icon.is-papier {
	background: var(--ssn-papier);
	border: 2px solid var(--ssn-ink);
	border-radius: 3px;
	clip-path: polygon(0 0, 68% 0, 100% 32%, 100% 100%, 0 100%);
}

.ssn__hand.is-papier i:first-child,
.ssn__icon.is-papier i:first-child {
	display: block;
	right: 0;
	top: 0;
	width: 34%;
	height: 34%;
	background: var(--ssn-ink);
	opacity: 0.22;
	clip-path: polygon(0 0, 100% 100%, 0 100%);
}

/* Schere: zwei gekreuzte Klingen mit Griffen */
.ssn__hand.is-schere i,
.ssn__icon.is-schere i {
	display: block;
	left: 50%;
	top: 8%;
	width: 9px;
	height: 66%;
	margin-left: -4.5px;
	background: var(--ssn-schere);
	border: 2px solid var(--ssn-ink);
	border-radius: 5px;
	transform-origin: 50% 92%;
}

.ssn__hand.is-schere i:first-child,
.ssn__icon.is-schere i:first-child { transform: rotate(20deg); }

.ssn__hand.is-schere i:last-child,
.ssn__icon.is-schere i:last-child { transform: rotate(-20deg); }

.ssn__hand.is-schere i::after,
.ssn__icon.is-schere i::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -34%;
	width: 17px;
	height: 17px;
	margin-left: -8.5px;
	border: 2px solid var(--ssn-ink);
	border-radius: 50%;
	background: transparent;
}

/* ---------- Zugtasten ---------- */

.ssn__moves {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 8px;
	margin-top: 14px;
}

.ssn__move {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 14px 8px 12px;
	background: var(--ssn-bg-2);
	border: 2px solid var(--ssn-ink);
	border-radius: 8px;
	box-shadow: 3px 3px 0 var(--ssn-ink);
	cursor: pointer;
	font-family: inherit;
	color: inherit;
	appearance: none;
	transition: transform 90ms ease, box-shadow 90ms ease;
}

.ssn__move:hover:not([disabled]) {
	transform: translate(-1px, -1px);
	box-shadow: 5px 5px 0 var(--ssn-ink);
}

.ssn__move:active:not([disabled]) {
	transform: translate(3px, 3px);
	box-shadow: 0 0 0 var(--ssn-ink);
}

.ssn__move[disabled] { opacity: 0.5; cursor: not-allowed; }

.ssn__moveName {
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.ssn__moveKey {
	position: absolute;
	top: 5px;
	right: 7px;
	font-family: var(--ssn-mono);
	font-size: 10px;
	opacity: 0.45;
}

.ssn__move:focus-visible,
.ssn__btn:focus-visible {
	outline: 3px solid var(--ssn-schere);
	outline-offset: 2px;
}

/* ---------- Status ---------- */

.ssn__status {
	font-family: var(--ssn-mono);
	font-size: 12px;
	line-height: 1.5;
	margin: 12px 0 0;
	min-height: 1.5em;
	opacity: 0.78;
}

.ssn__status--win  { color: var(--ssn-win); font-weight: 700; opacity: 1; }
.ssn__status--lose { color: var(--ssn-lose); font-weight: 700; opacity: 1; }

/* ---------- Verlauf und Verteilung ---------- */

.ssn__panels {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
	margin-top: 14px;
	padding-top: 14px;
	border-top: 2px solid var(--ssn-ink);
}

.ssn__panelTitle {
	font-family: var(--ssn-mono);
	font-size: 10px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	font-weight: 400;
	opacity: 0.6;
	margin: 0 0 8px;
}

.ssn__strip {
	display: flex;
	flex-wrap: wrap;
	gap: 3px;
	min-height: 12px;
}

.ssn__tile {
	width: 11px;
	height: 11px;
	border: 1px solid var(--ssn-ink);
	border-radius: 2px;
	display: block;
}

.ssn__tile.is-win  { background: var(--ssn-win); }
.ssn__tile.is-lose { background: var(--ssn-lose); }
.ssn__tile.is-draw { background: var(--ssn-draw); }

.ssn__bar {
	display: grid;
	grid-template-columns: 48px 1fr 34px;
	align-items: center;
	gap: 7px;
	margin-bottom: 5px;
}

.ssn__barLabel,
.ssn__barNum {
	font-family: var(--ssn-mono);
	font-size: 10px;
	opacity: 0.7;
}

.ssn__barNum { text-align: right; font-variant-numeric: tabular-nums; }

.ssn__barTrack {
	display: block;
	height: 9px;
	background: var(--ssn-bg-2);
	border: 1px solid var(--ssn-ink);
	border-radius: 3px;
	overflow: hidden;
}

.ssn__barFill {
	display: block;
	height: 100%;
	width: 0;
	transition: width 250ms ease;
}

.ssn__barFill.is-stein  { background: var(--ssn-stein); }
.ssn__barFill.is-papier { background: var(--ssn-papier); }
.ssn__barFill.is-schere { background: var(--ssn-schere); }

/* ---------- Aktionen ---------- */

.ssn__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 16px;
}

.ssn__btn {
	font-family: var(--ssn-mono);
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 700;
	padding: 10px 15px;
	border-radius: 6px;
	background: var(--ssn-ink);
	color: var(--ssn-bg);
	border: 2px solid var(--ssn-ink);
	cursor: pointer;
}

.ssn__btn--ghost {
	background: transparent;
	color: var(--ssn-ink);
	font-weight: 400;
}

.ssn__btn--ghost.is-on {
	background: var(--ssn-schere);
	color: var(--ssn-papier);
	font-weight: 700;
}

.ssn__hint {
	font-size: 12px;
	line-height: 1.65;
	margin: 12px 0 0;
	opacity: 0.72;
}

.ssn__hint kbd {
	font-family: var(--ssn-mono);
	font-size: 11px;
	border: 1px solid var(--ssn-ink);
	border-radius: 3px;
	padding: 1px 4px;
}

/* ---------- Responsiv ---------- */

@media (max-width: 420px) {
	.ssn { box-shadow: 4px 4px 0 var(--ssn-ink); }
	.ssn__hand { width: 48px; height: 48px; }
	.ssn__icon { width: 40px; height: 40px; }
	.ssn__panels { grid-template-columns: 1fr; }
	.ssn__moveName { font-size: 11px; }
}

@media (prefers-reduced-motion: reduce) {
	.ssn *, .ssn *::before, .ssn *::after { transition: none !important; }
	.ssn__move:hover:not([disabled]) { transform: none; }
}


/* ===== Gemeinsame Gestaltung der Spiele =====================================
   Dieser Block ist in allen Spiele-Plugins identisch:
   schiffe-versenken, sudoku, vier-gewinnt, superhirn, schnick-schnack,
   mahjong, solitaer. Wird hier etwas geaendert, muss es dort mitgeaendert
   werden. Einzige Ausnahme ist --sp-accent: der ist je Spiel eigen und
   entspricht der Kachelfarbe in der Spiele-Icon-Navigation.

   Bewusst am Dateiende: so gewinnt er gegen die Regeln darueber, ohne dass
   der gewachsene Spielfeld-Code angefasst werden muss.
   ========================================================================== */

.ssn {
	--sp-paper:  #eef1f3;
	--sp-ink:    #14293b;
	--sp-muted:  #5b6f7f;
	--sp-line:   #c2ccd3;
	--sp-win:    #1f7a4d;
	--sp-lose:   #b3382c;
	--sp-radius: 12px;
	--sp-sans:   system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--sp-mono:   ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
	--sp-accent: #6f519b;

	container-type: inline-size;

	background: var(--sp-paper);
	color: var(--sp-ink);
	font-family: var(--sp-sans);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-radius);
}

.ssn__head {
	padding-bottom: 12px;
	margin-bottom: 16px;
	border-bottom: 1px solid var(--sp-line);
}

.ssn__eyebrow {
	font-family: var(--sp-mono);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--sp-accent);
	opacity: 1;
	margin: 0 0 4px;
}

.ssn__title {
	font-family: var(--sp-sans);
	font-size: clamp(21px, 6cqi, 30px);
	font-weight: 800;
	letter-spacing: 0.01em;
	line-height: 1.05;
	text-transform: none;
	margin: 0;
	color: var(--sp-ink);
}

.ssn__status {
	font-family: var(--sp-mono);
	font-size: 12.5px;
	line-height: 1.5;
	color: var(--sp-muted);
	opacity: 1;
	margin: 12px 0 0;
	min-height: 1.5em;
}

.ssn__status--win  { color: var(--sp-win);  font-weight: 700; opacity: 1; }
.ssn__status--lose { color: var(--sp-lose); font-weight: 700; opacity: 1; }

.ssn__btn {
	font-family: var(--sp-mono);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	padding: 10px 16px;
	border-radius: 6px;
	background: var(--sp-accent);
	color: #fff;
	border: 1px solid var(--sp-accent);
	cursor: pointer;
}

.ssn__btn--ghost,
.ssn__btn--chip {
	background: transparent;
	color: var(--sp-ink);
	border-color: var(--sp-line);
	font-weight: 400;
}

.ssn__btn--chip.is-on,
.ssn__btn[aria-pressed="true"] {
	background: var(--sp-accent);
	color: #fff;
	border-color: var(--sp-accent);
	font-weight: 700;
}

.ssn__btn:hover:not([disabled]) { filter: brightness(1.08); background-color: var(--sp-accent); color: #fff; }
.ssn__btn[disabled] { opacity: 0.38; cursor: not-allowed; }
.ssn__btn:focus-visible { outline: 2px solid var(--sp-accent); outline-offset: 2px; }

.ssn__hint {
	font-family: var(--sp-sans);
	font-size: 12px;
	line-height: 1.6;
	color: var(--sp-muted);
	margin: 12px 0 0;
}

.ssn__hint kbd {
	font-family: var(--sp-mono);
	font-size: 11px;
	background: rgba(0, 0, 0, 0.06);
	border: 1px solid var(--sp-line);
	border-radius: 3px;
	padding: 1px 5px;
	color: var(--sp-ink);
}

/* ---------- Mehrspieler-Umschaltung ---------- */
.ssn__modes { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.ssn__mp { display: none; }
.ssn--online .ssn__mp { display: block; }
.ssn--online .ssn__panels,
.ssn--online .ssn__actions,
.ssn--online .ssn__hint { display: none; }
