/* Word Search: list papira sa slovima na filcu, marker za nađene reči, lista reči na kartici. Raspored računa
   client/word-search/game.ts (--cell, .side ili .stack). Ostalo je iz base.css. */
.is-game .felt.wsearch{touch-action:pinch-zoom;-webkit-user-select:none;user-select:none}
.wsboard{position:absolute;--wsink:#2a1d12}
.wspaper{position:absolute;left:0;top:0;border-radius:calc(var(--cell)*.18);background:#fbf6e8;
  box-shadow:0 14px 26px rgba(0,0,0,.45),inset 0 0 0 1px rgba(120,90,50,.22)}
.wsmarks{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.wsmarks line{stroke-linecap:round;opacity:.62;mix-blend-mode:multiply}
/* nova reč: marker se prevuče od prvog do poslednjeg slova */
.wsmarks line.fresh{stroke-dasharray:1;animation:wsdraw .34s ease-out}
@keyframes wsdraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.wsmarks line.live{opacity:.5}
.wsmarks line.nope{opacity:.5;animation:wsnope .6s ease-out forwards}
@keyframes wsnope{0%{opacity:.55}100%{opacity:0}}
.wsmarks .ring{fill:none;stroke:#2f8a4f;stroke-width:3;stroke-dasharray:5 4}
.wsmarks .ring.pulse{animation:wspulse 1s ease-in-out 3}
@keyframes wspulse{50%{stroke-width:6;stroke:#3fae5a}}
.wsboard.won .wsmarks line{animation:wswin .5s ease-in-out calc(var(--i)*70ms) 1}
@keyframes wswin{50%{opacity:.95}}
/* mreža slova: prava dugmad, veličina iz --cell */
.wsgrid{position:absolute;left:calc(var(--cell)*.3);top:calc(var(--cell)*.3);display:grid;
  grid-template-columns:repeat(var(--n),var(--cell));grid-auto-rows:var(--cell);cursor:pointer}
.wsc{appearance:none;margin:0;padding:0;border:0;background:transparent;color:var(--wsink);border-radius:50%;
  font:700 calc(var(--cell)*.6)/1 var(--sans);display:grid;place-items:center;cursor:pointer;touch-action:pinch-zoom}
.wsc:focus-visible{outline:3px solid var(--brass);outline-offset:-3px}
.wsc.anchor{background:#f2c964;box-shadow:0 0 0 3px rgba(242,201,100,.5)}
.wsc.in{color:#1a120b}
.wsboard.reveal .wsc{animation:wsin .3s ease-out both}
.wsboard.reveal .wsc{animation-delay:calc(var(--r,0)*30ms)}
@keyframes wsin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
/* lista reči: kartica pored (široko) ili ispod mreže (usko) */
.wslist{position:absolute;box-sizing:border-box;padding:12px 14px 14px;border-radius:12px;color:var(--ink);
  background:linear-gradient(180deg,#fffaf0,#f1e5c9);box-shadow:0 10px 22px rgba(0,0,0,.4);overflow:hidden}
.wsboard.side .wslist{right:0;top:0}
.wsboard.stack .wslist{left:50%;transform:translateX(-50%);bottom:0;padding:8px 10px 10px}
.wstheme{appearance:none;border:0;background:none;padding:0 0 6px;margin:0 0 6px;width:100%;text-align:left;cursor:pointer;
  font:italic 800 21px/1.2 var(--serif);color:#7a1e2a;border-bottom:2px solid rgba(122,30,42,.25)}
.wsboard.stack .wstheme{font-size:18px;padding-bottom:4px;margin-bottom:4px;text-align:center}
.wswords{list-style:none;margin:0;padding:0}
.wsboard.side .wswords{columns:2;column-gap:10px}
.wsboard.side.tall .wswords{columns:1}
.wsboard.stack .wswords{display:flex;flex-wrap:wrap;justify-content:center;gap:0 4px}
.wsw{appearance:none;border:0;background:none;padding:3px 6px;margin:0;border-radius:6px;cursor:pointer;text-align:left;
  font:600 17px/1.35 var(--sans);color:var(--ink);white-space:nowrap;min-height:30px}
.wsboard.stack .wsw{font-size:var(--wsf,16px);line-height:1.25;padding:2px 5px;min-height:0}
.wsboard.tight .wsw{padding:1px 4px}
.wsboard.tight .wstheme{font-size:16px;padding-bottom:2px;margin-bottom:2px}
.wsboard.tight.stack .wslist{padding:6px 6px 6px}
.wsw.found{color:#8a7a62;text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:#b81f2a}
.wsw.fresh{animation:wsfound .5s ease-out}
@keyframes wsfound{0%{background:rgba(242,201,100,.7)}100%{background:transparent}}
.wsw:focus-visible,.wstheme:focus-visible{outline:3px solid var(--brass);outline-offset:1px}
@media (prefers-reduced-motion:reduce){
  .wsmarks line.fresh,.wsmarks .ring.pulse,.wsboard.won .wsmarks line,.wsboard.reveal .wsc,.wsw.fresh{animation:none}
}
/* Word Search za štampu (/word-search/printable): krupna slova u kvadratima, rešenje na drugoj strani */
.wsprint{border-collapse:collapse;margin:6px auto 10px;font:700 22px/1 var(--sans);color:#1a1a1a}
.wsprint td{width:1.6em;height:1.6em;text-align:center;vertical-align:middle;padding:0}
.wsprint.n10{font-size:28px}
.wsprint.n14{font-size:19px}
.wsanswersvg{display:block;width:min(100%,520px);margin:6px auto 10px}
.wsanswersvg line{stroke:#9a9a9a;stroke-opacity:.35;stroke-width:24;stroke-linecap:round}
.wsanswersvg text{font:500 15px var(--sans);fill:#b5aea0;text-anchor:middle;dominant-baseline:central}
.wsanswersvg text.w{font-weight:800;fill:#1a1a1a}
.wsprintlist ul{columns:3;margin:0 0 6px;padding:0 0 0 18px;font-size:18px;line-height:1.5}
.wsanswers{break-before:page}
@media (max-width:640px){.wsprint{font-size:15px}.wsprint.n10{font-size:19px}.wsprint.n14{font-size:12px}.wsprintlist ul{columns:2;font-size:16px}}
@media print{.wsanswers{margin-top:0}}
