.vd-game-love-letter { --game-color:#2f4ea2; }
.ll-game,.ll-board { --ll-ink:#263b58; --ll-cobalt:#2f4ea2; --ll-gold:#c8963e; --ll-terra:#c4511f; --ll-ivory:#fbf4e2; color:var(--ll-ink); width:100%; min-width:0; }
.ll-game { max-width:760px; margin:0 auto; }
.ll-board { display:grid; gap:1rem; margin-top:1rem; }
.ll-turn { display:flex; align-items:center; gap:.85rem; padding:.85rem 1rem .85rem .85rem; border-radius:16px; background:var(--vd-panel,#fffefa); box-shadow:inset 0 0 0 2px #dfe5f2; }
.ll-turn.is-act { box-shadow:inset 0 0 0 2px var(--ll-cobalt); }
.ll-turn.is-done { box-shadow:inset 0 0 0 2px #2b7650; }
.ll-turn-avatar { width:3.25rem; height:3.25rem; flex:none; }
.ll-turn-avatar .pr-character { width:100%; height:100%; display:block; }
.ll-turn-text { display:grid; gap:.1rem; min-width:0; flex:1; }
.ll-turn-text small { font-size:.72rem; font-weight:650; color:#536582; }
.ll-turn-text strong { font-size:clamp(1.1rem,2.4vw,1.5rem); line-height:1.2; font-weight:750; letter-spacing:-.02em; overflow-wrap:anywhere; text-wrap:balance; }
.ll-chip { flex:none; padding:.3rem .65rem; border-radius:999px; font-size:.72rem; font-weight:750; background:#e8edf9; color:var(--ll-cobalt); }
.ll-turn.is-done .ll-chip { background:#e0f1e8; color:#2b7650; }
.ll-turn.is-wait .ll-chip { background:#eeeae0; color:#68707a; }
.ll-table { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; }
.ll-pile { display:grid; justify-items:center; gap:.3rem; }
.ll-pile small { font-size:.68rem; font-weight:700; color:#536582; }
.ll-back { position:relative; display:grid; place-items:center; width:2.8rem; height:3.8rem; border-radius:.55rem; background:repeating-linear-gradient(45deg,var(--ll-cobalt),var(--ll-cobalt) 4px,#264188 4px,#264188 8px); border:2px solid var(--ll-ivory); box-shadow:0 2px 0 #0002; color:#fff; font-size:.9rem; }
.ll-back.is-small { width:1.5rem; height:2.1rem; border-width:1px; border-radius:.3rem; }
.ll-minis { display:flex; gap:.25rem; }
.ll-action { flex:1 1 12rem; margin:0; padding:.6rem .8rem; border-radius:12px; background:#f4eddd; font-size:.9rem; font-weight:650; }
.ll-mini { position:relative; display:inline-grid; place-items:center; width:1.7rem; height:2.3rem; border-radius:.3rem; background:var(--ll-ivory); border:1px solid #d9cfae; box-shadow:0 1px 0 #0002; }
.ll-mini b { position:absolute; top:.05rem; left:.15rem; font-size:.5rem; line-height:1; color:var(--ll-cobalt); }
.ll-mini-art { width:1.1rem; height:1.1rem; margin-top:.35rem; }
.ll-mini.is-final { width:2.4rem; height:3.3rem; outline:2px solid var(--ll-gold); }
.ll-mini.is-final .ll-mini-art { width:1.5rem; height:1.5rem; margin-top:.6rem; }
.ll-players { display:grid; grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr)); gap:.6rem; }
.ll-player { display:grid; gap:.5rem; align-content:start; width:100%; padding:.7rem; border:0; border-radius:14px; background:var(--vd-panel,#fffefa); box-shadow:var(--lc-shadow,0 4px 14px #263b5810); text-align:left; font:inherit; color:inherit; min-width:0; }
.ll-player.is-current { box-shadow:inset 0 0 0 2px var(--ll-cobalt), var(--lc-shadow,0 4px 14px #263b5810); }
.ll-player.is-out { opacity:.55; }
.ll-player.is-winner { box-shadow:inset 0 0 0 2px #2b7650; }
button.ll-player { cursor:default; }
button.ll-player.is-pickable { cursor:pointer; box-shadow:inset 0 0 0 2px var(--ll-gold), 0 0 0 3px #c8963e40; animation:ll-nudge 1.6s ease-in-out infinite; }
button.ll-player.is-selected { box-shadow:inset 0 0 0 3px var(--ll-terra); animation:none; }
button.ll-player:disabled { opacity:1; }
button.ll-player.is-out:disabled { opacity:.55; }
.ll-player-head { display:flex; align-items:center; gap:.5rem; min-width:0; }
.ll-avatar { width:2.2rem; height:2.2rem; flex:none; }
.ll-avatar .pr-character { width:100%; height:100%; display:block; }
.ll-player-head strong { flex:1; min-width:0; font-size:.85rem; overflow-wrap:anywhere; }
.ll-favors { display:inline-flex; align-items:center; gap:.25rem; font-size:.78rem; font-weight:800; white-space:nowrap; }
.ll-seal { width:.9rem; height:.9rem; border-radius:50%; background:var(--ll-terra); box-shadow:inset 0 -2px 0 #0003; }
.ll-status { display:flex; flex-wrap:wrap; gap:.3rem; min-height:1.2rem; }
.ll-tag { font-style:normal; font-size:.66rem; font-weight:800; padding:.1rem .45rem; border-radius:999px; background:#eeeae0; color:#536582; }
.ll-tag.is-out { background:#fbe6e1; color:#b3412b; }
.ll-tag.is-safe { background:#e0f1e8; color:#2b7650; }
.ll-tag.is-known { background:#e8edf9; color:var(--ll-cobalt); }
.ll-piles { display:flex; flex-wrap:wrap; gap:.25rem; align-items:center; }
.ll-hand { display:grid; gap:.8rem; }
.ll-form { display:grid; gap:.8rem; margin:0; }
.ll-cards { display:flex; justify-content:center; gap:.8rem; }
.ll-card { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:.15rem; width:8.4rem; min-height:11.6rem; padding:.6rem .5rem .7rem; border:1px solid #d9cfae; border-radius:.9rem; background:var(--ll-ivory); color:var(--ll-ink); font:inherit; text-align:center; box-shadow:0 3px 0 #d9cfae, 0 8px 14px #263b5818; }
.ll-card::before { content:""; position:absolute; inset:.35rem; border:1.5px solid #2f4ea255; border-radius:.6rem; pointer-events:none; }
.ll-corner { position:absolute; top:.6rem; left:.75rem; font:800 1.1rem Georgia,serif; color:var(--ll-cobalt); }
.ll-art { width:4.4rem; height:4.4rem; margin-bottom:.35rem; }
.ll-name { font:800 1.02rem Georgia,serif; color:var(--ll-cobalt); }
.ll-text { font-size:.68rem; line-height:1.25; color:#68707a; min-height:1.7rem; }
.ll-card.is-big { width:10.5rem; min-height:14.5rem; }
.ll-card.is-big .ll-art { width:5.6rem; height:5.6rem; }
button.ll-card { cursor:pointer; -webkit-tap-highlight-color:transparent; transition:transform .12s ease; }
button.ll-card.is-tappable:active { transform:scale(.97); }
.ll-card.is-selected { transform:translateY(-.5rem); box-shadow:0 0 0 3px var(--ll-terra), 0 12px 18px #263b5826; }
.ll-card.is-locked { opacity:.45; box-shadow:none; }
.ll-look { display:grid; justify-items:center; gap:.6rem; }
.ll-look-who { font-weight:750; }
.ll-guesses { display:flex; flex-wrap:wrap; justify-content:center; gap:.4rem; }
.ll-guess { padding:.45rem .8rem; border:0; border-radius:999px; background:#e8edf9; color:var(--ll-cobalt); font:inherit; font-size:.85rem; font-weight:750; cursor:pointer; }
.ll-guess.is-selected { background:var(--ll-cobalt); color:#fff; }
.ll-confirm { width:100%; min-height:52px; border-radius:12px; justify-content:center; font-size:1rem; }
.ll-next { margin:0; }
@keyframes ll-nudge { 50% { transform:translateY(-2px); } }
@media(max-width:520px){ .ll-card { width:7.2rem; min-height:10.4rem; } .ll-art { width:3.6rem; height:3.6rem; } .ll-cards { gap:.5rem; } .ll-card.is-big { width:9rem; min-height:12.5rem; } }
@media(prefers-reduced-motion:reduce){ button.ll-player.is-pickable { animation:none; } }
@media(min-width:900px){ .ll-board-tv .ll-players { grid-template-columns:repeat(auto-fit,minmax(14rem,1fr)); } }

.ll-cover { position: relative; }
.ll-card.is-back { background: repeating-linear-gradient(45deg, #2f4ea2, #2f4ea2 6px, #264188 6px, #264188 12px); border-color: #fbf4e2; box-shadow: 0 3px 0 #1f3470, 0 8px 14px #263b5826; }
.ll-card.is-back::before { border-color: #fbf4e266; }
.ll-cover .ll-reveal { position: absolute; left: 50%; top: 50%; width: min(18rem, 86%); transform: translate(-50%, -50%); box-shadow: 0 6px 16px #263b5840; }

/* Polish: clearer focus, targets under the cards, favor pips, tidy table strip. */
.ll-table.is-empty { display: none; }
.ll-table { align-items: stretch; padding: .75rem; border-radius: 16px; background: #f4eddd; }
.ll-action { background: none; padding: 0; align-self: center; font-size: 1rem; }
.ll-favors { gap: .15rem; }
.ll-seal { width: .72rem; height: .72rem; box-shadow: inset 0 -2px 0 #0003; }
.ll-seal.is-empty { background: #e6dfcf; box-shadow: none; }
.ll-gain { margin-left: .3rem; padding: .05rem .4rem; border-radius: 999px; background: #2b7650; color: #fff; font-size: .72rem; animation: ll-pop .45s cubic-bezier(.3, 1.7, .5, 1) both; }
@keyframes ll-pop { from { transform: scale(0); } }
.ll-board.has-card .ll-card.is-tappable:not(.is-selected) { opacity: .6; transform: scale(.97); }
button.ll-card.is-tappable { animation: ll-nudge 1.8s ease-in-out infinite; }
.ll-board.has-card button.ll-card.is-tappable, button.ll-card.is-selected { animation: none; }
.ll-who { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; }
.ll-chipbtn { display: inline-flex; align-items: center; gap: .45rem; padding: .35rem .85rem .35rem .35rem; border: 0; border-radius: 999px; background: #fffefa; box-shadow: inset 0 0 0 2px #c8963e, 0 2px 6px #263b5814; color: var(--ll-ink); font: inherit; font-size: .9rem; font-weight: 700; cursor: pointer; }
.ll-chipbtn[hidden] { display: none; }
.ll-chipbtn.is-selected { background: #c4511f; box-shadow: none; color: #fff; }
.ll-chipbtn-avatar { width: 1.9rem; height: 1.9rem; display: block; }
.ll-chipbtn-avatar .pr-character { width: 100%; height: 100%; display: block; }
.ll-guess { min-height: 2.5rem; padding: .5rem .95rem; }
.ll-text { font-size: .74rem; }
.ll-confirm:disabled { background: #d9d4c8; color: #75797f; box-shadow: none; }
@media (prefers-reduced-motion: reduce) { button.ll-card.is-tappable, .ll-gain { animation: none; } }
