/* TSH Assessment Engine: hub, player and result. Mobile-first. GPL-2.0-or-later. */
.tsh{--tsh-ink:#1d2327;--tsh-muted:#50575e;--tsh-line:#dcdcde;--tsh-bg:#fff;--tsh-soft:#f6f7f7;--tsh-brand:#1e5aa8;--tsh-ok:#0a7d3b;--tsh-bad:#b32d2e;--tsh-warn:#8a5a00;color:var(--tsh-ink);font-size:1rem;line-height:1.55;max-width:960px;margin:0 auto;padding:12px 0 32px}
.tsh *,.tsh *::before,.tsh *::after{box-sizing:border-box}
.tsh-h1{font-size:1.5rem;line-height:1.25;margin:.25em 0 .6em}
.tsh-h2{font-size:1.15rem;margin:1em 0 .5em}
.tsh-lead,.tsh-small{color:var(--tsh-muted)}
.tsh-small{font-size:.875rem}
.tsh-back{margin:0 0 .5em;font-size:.9rem}
.tsh a:focus-visible,.tsh button:focus-visible,.tsh input:focus-visible+.tsh-letter,.tsh-q:focus-visible{outline:3px solid var(--tsh-brand);outline-offset:2px}
.tsh-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.tsh-chip{display:inline-block;padding:8px 14px;border:1px solid var(--tsh-line);border-radius:999px;text-decoration:none;color:var(--tsh-ink);background:var(--tsh-bg);min-height:44px;line-height:26px}
.tsh-chip.is-on{background:var(--tsh-brand);border-color:var(--tsh-brand);color:#fff;font-weight:600}
.tsh-cards{list-style:none;margin:16px 0;padding:0;display:grid;gap:12px}
.tsh-card-link{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid var(--tsh-line);border-radius:10px;text-decoration:none;color:var(--tsh-ink);background:var(--tsh-bg)}
.tsh-card-link:hover{border-color:var(--tsh-brand)}
.tsh-card-meta,.tsh-card-info{font-size:.875rem;color:var(--tsh-muted)}
.tsh-card-title{font-weight:600;font-size:1.05rem}
.tsh-facts,.tsh-rules,.tsh-stats{padding-left:1.2em}
.tsh-notice{padding:10px 14px;border-left:4px solid var(--tsh-warn);background:#fcf9e8}
.tsh-note{padding:10px 14px;background:var(--tsh-soft);border-radius:8px}
.tsh-consent{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border:1px solid var(--tsh-line);border-radius:8px}
.tsh-consent input{width:22px;height:22px;margin-top:2px;flex:0 0 auto}
.tsh-msg{color:var(--tsh-bad);min-height:1.5em}
.tsh-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 14px;border:1px solid var(--tsh-line);border-radius:8px;background:var(--tsh-bg);color:var(--tsh-ink);font:inherit;cursor:pointer;text-decoration:none}
.tsh-btn:disabled{opacity:.5;cursor:not-allowed}
.tsh-btn-primary,.tsh-btn-submit{background:var(--tsh-brand);border-color:var(--tsh-brand);color:#fff;font-weight:600}
.tsh-btn-submit{width:100%;margin-top:12px}
.tsh-bar{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;background:var(--tsh-ink);color:#fff;border-radius:8px}
.tsh-bar-title{font-size:1rem;line-height:1.3;margin:0;color:inherit;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsh-timer{font-variant-numeric:tabular-nums;font-weight:700;font-size:1.15rem;padding:2px 10px;border-radius:6px;background:rgba(255,255,255,.15)}
.tsh-timer.is-low{background:var(--tsh-bad)}
.tsh-layout{display:grid;gap:16px;margin-top:12px}
.tsh-q{outline:none;-webkit-user-select:none;user-select:none}
.tsh-qnum{color:var(--tsh-muted);font-size:.9rem;margin:0}
.tsh-stem{font-size:1.1rem;margin:.4em 0 .8em}
.tsh-opts{display:grid;gap:8px}
.tsh-opt{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--tsh-line);border-radius:8px;cursor:pointer;min-height:48px}
.tsh-opt:has(input:checked){border-color:var(--tsh-brand);background:#eef4fb}
.tsh-opt input{position:absolute;opacity:0;width:1px;height:1px}
.tsh-letter{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:2px solid var(--tsh-line);border-radius:50%;font-weight:700;font-size:.85rem}
.tsh-opt input:checked+.tsh-letter{background:var(--tsh-brand);border-color:var(--tsh-brand);color:#fff}
.tsh-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.tsh-nav .tsh-btn{flex:1 1 45%}
.tsh-status{min-height:1.5em;font-size:.875rem;color:var(--tsh-muted)}
.tsh-palette{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px}
.tsh-pbtn{position:relative;min-height:44px;border:1px solid var(--tsh-line);border-radius:6px;background:var(--tsh-bg);font:inherit;font-weight:600;cursor:pointer}
.tsh-pbtn.is-visited{background:#fcf0f1;border-color:var(--tsh-bad)}
.tsh-pbtn.is-answered{background:var(--tsh-ok);border-color:var(--tsh-ok);color:#fff}
.tsh-pbtn.is-marked{box-shadow:inset 0 0 0 2px #7b3fb0}
.tsh-pbtn.is-current{outline:2px solid var(--tsh-ink);outline-offset:1px}
.tsh-flag{position:absolute;top:0;right:2px;font-size:.7rem}
.tsh-legend{font-size:.8rem;color:var(--tsh-muted);margin-top:8px}
.tsh-dot{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid var(--tsh-line);border-radius:4px;font-size:.7rem;vertical-align:middle}
.tsh-dot.is-answered{background:var(--tsh-ok);color:#fff;border-color:var(--tsh-ok)}
.tsh-dot.is-visited{background:#fcf0f1;border-color:var(--tsh-bad)}
.tsh-dot.is-marked{box-shadow:inset 0 0 0 2px #7b3fb0}
.tsh-dialog{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.5)}
.tsh-dialog-box{background:var(--tsh-bg);border-radius:12px;padding:20px;max-width:420px;width:100%}
.tsh-summary{font-weight:600}
.tsh-score{padding:16px;border:1px solid var(--tsh-line);border-radius:12px;background:var(--tsh-soft)}
.tsh-score-main{font-size:1.25rem;margin:0}
.tsh-score-num{font-size:2.25rem;font-weight:700}
.tsh-cta{margin:16px 0;padding:12px 16px;border-radius:10px;background:#eef4fb}
.tsh-cta ul{margin:.3em 0 0;padding-left:1.2em}
.tsh-review{padding-left:1.4em}
.tsh-rq{margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid var(--tsh-line)}
.tsh-rq-head{display:flex;justify-content:space-between;gap:8px;margin:0}
.tsh-badge{font-weight:700;font-size:.875rem}
.tsh-badge.is-correct{color:var(--tsh-ok)}
.tsh-badge.is-wrong{color:var(--tsh-bad)}
.tsh-badge.is-skipped{color:var(--tsh-muted)}
.tsh-ropts{list-style:none;padding:0;display:grid;gap:6px}
.tsh-ropts li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--tsh-line);border-radius:8px}
.tsh-ropts li.is-key{border-color:var(--tsh-ok);background:#edfaef}
.tsh-ropts li.is-chosen:not(.is-key){border-color:var(--tsh-bad);background:#fcf0f1}
.tsh-tag{font-size:.8rem;font-weight:600}
.tsh-expl{padding:10px 12px;background:var(--tsh-soft);border-radius:8px}
@media (min-width:782px){
	.tsh-h1{font-size:1.9rem}
	.tsh-cards{grid-template-columns:repeat(2,1fr)}
	.tsh-layout{grid-template-columns:1fr 260px}
	.tsh-nav .tsh-btn{flex:0 1 auto}
}
