/* Spielansicht: oben Ziele, in der Mitte das Brett, unten Figuren – passt hochkant auf ein Handy. */ #app { height: 100%; max-width: 34rem; margin: 0 auto; padding: 0.5rem 0.6rem; display: flex; flex-direction: column; gap: 0.4rem; } .top { display: flex; align-items: center; gap: 0.5rem; } .top .title { font-size: 1.2rem; color: var(--px-gold); } .top .spacer { flex: 1; } .goals { display: flex; gap: 0.4rem; justify-content: space-between; font-size: 0.95rem; } .goal { flex: 1; display: flex; align-items: center; justify-content: center; gap: 0.15rem; padding: 0.2rem 0.3rem; background: var(--px-wood-dark); border: 2px solid var(--px-ink); white-space: nowrap; } .goal-star { color: var(--px-ink); } .goal .of { color: var(--px-parchment-dim); } /* Erreichtes Ziel: golden wie im Hauptspiel */ .goal.done { color: var(--px-ink); background: var(--px-gold); box-shadow: inset 0 -3px 0 var(--px-gold-dark); } .goal.done .of, .goal.done .goal-star { color: var(--px-gold); font-family: var(--font-pixel); margin-right: 0.2rem; } .law { font-family: var(--font-text); font-size: 0.8rem; text-align: left; background: var(--px-wood-dark); color: var(--px-parchment-dim); border-width: 2px; box-shadow: none; padding: 0.25rem 0.5rem; } .law b { color: var(--px-parchment); } .practice { margin: 0; font-size: 0.8rem; text-align: center; color: var(--px-gold); } /* Brett und Hinweis gemeinsam mittig im freien Raum; das Brett so groß wie möglich, aber quadratisch */ .board-area { flex: 1 1 auto; min-height: 0; container-type: size; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.3rem; } #app .board-host { /* 3.2em = Platz für die Hinweiszeile darunter */ width: min(100cqw, 100cqh - 3.2em); height: auto; flex: none; } .hint { margin: 0; min-height: 2.6em; font-size: 0.85rem; text-align: center; width: 100%; } .hint.bad { color: #ff9a8f; } .hint.good { color: var(--px-green); } .hint.warn { color: var(--px-gold); } .toolbar { display: flex; gap: 0.35rem; align-items: stretch; } .tools { flex: 1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.35rem; } .tool { display: grid; justify-items: center; gap: 0.05rem; padding: 0.25rem 0.1rem; font-size: 0.75rem; background: var(--px-parchment-dim); } .tool.active { background: var(--px-gold); outline: 2px solid var(--px-parchment); } .tool-sprite { width: 32px; height: 32px; image-rendering: pixelated; } .tool-cost { font-size: 0.7rem; opacity: 0.8; } .actions { display: grid; gap: 0.35rem; grid-template-rows: 1fr auto; } .actions button.icon { font-size: 1.4rem; } button.end { font-size: 0.65rem; padding: 0.2rem 0.3rem; background: var(--px-parchment-dim); white-space: nowrap; } button.end.suggest { background: var(--px-gold); animation: pulse 1.2s steps(2) infinite; } @keyframes pulse { 50% { outline: 2px solid var(--px-parchment); } } @media (prefers-reduced-motion: reduce) { button.end.suggest { animation: none; } } button.end.armed { background: var(--px-red); color: var(--px-parchment); } /* Ergebnis */ .result { text-align: center; } .result .stars.big { font-size: 2.6rem; margin: 0; line-height: 1; } .result-nums { font-size: 1.15rem; } .rank { font-size: 1.1rem; color: var(--px-parchment); } .small { font-size: 0.8rem; } .rules ul { margin: 0; padding-left: 1.2rem; font-size: 0.9rem; }