/* Word search + nonogram pages (wordsearch.html, nonograms.html). Uses the site variables from style.css. */
.pkseg{display:flex;gap:0;border:1px solid var(--line);border-radius:var(--rb);overflow:hidden;background:var(--card)}
.pkseg button{flex:1 1 0;min-width:0;min-height:44px;padding:6px 8px;border:0;border-left:1px solid var(--line);background:transparent;font:inherit;font-weight:700;font-size:.92rem;color:var(--ink);cursor:pointer;line-height:1.15}
.pkseg button:first-child{border-left:0}
.pkseg button small{display:block;font-weight:600;font-size:.72rem;color:var(--mut)}
.pkseg button[aria-pressed=true]{background:var(--navy);color:#fff}
.pkseg button[aria-pressed=true] small{color:#ffffffb3}
.pkbtn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:8px 14px;border:1px solid var(--line);border-radius:var(--rb);background:var(--card);color:var(--ink);font:inherit;font-weight:700;font-size:.92rem;text-decoration:none;cursor:pointer}
.pkbtn:active{background:var(--plate)}
.pkbtn.pri{background:var(--acc);border-color:var(--acc);color:var(--ink)}
.pzmodes{margin-bottom:22px}
/* ---------- word search ---------- */
.ws{position:relative;max-width:560px;margin:0 auto}
.ws,.ng{min-width:0}
.wsgrid,.nggrid,.pkseg button,.pkbtn,.wslist button{-webkit-tap-highlight-color:transparent}
.ngtop .crumb{color:var(--mut);text-decoration:none;font-weight:600}
.wsbar{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-bottom:10px}
.wspick{display:flex;align-items:center;gap:8px;min-width:0}
.wspick span{font-weight:700;font-size:.85rem;color:var(--mut)}
.wspick select{flex:1;min-width:0;width:100%;text-overflow:ellipsis;min-height:44px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--rb);background:var(--card);font:inherit;font-weight:600;color:var(--ink)}
.wsstat{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px}
.wsstat span{font-weight:700;color:var(--mut)}
.wsboard{position:relative;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.wsgrid{display:grid;grid-template-columns:repeat(var(--n),1fr);background:var(--card);border:2px solid var(--navy);border-radius:8px;touch-action:none;cursor:pointer}
.wc{display:flex;align-items:center;justify-content:center;aspect-ratio:1;font-family:var(--hd);font-weight:700;font-size:clamp(.9rem,4.2vw,1.35rem);color:var(--ink);position:relative;z-index:2;pointer-events:none}
.wsgrid[style*="--n:12"] .wc{font-size:clamp(.8rem,3.6vw,1.2rem)}
.wc.anc{background:#fdf0d3;box-shadow:inset 0 0 0 2px var(--acc);border-radius:50%}
.wsink{position:absolute;inset:2px;width:calc(100% - 4px);height:calc(100% - 4px);pointer-events:none;z-index:1}
.wsink line{stroke-linecap:round;stroke-width:.74}
.wsink .wsfound{opacity:.38}
.wsink .wssel{opacity:.18}
.ws.solved .wsgrid{box-shadow:0 0 0 4px #e3f4e1}
.wshint{min-height:1.4em;margin:10px 0 6px;font-size:.92rem;color:var(--mut)}
.wshint b{color:var(--ink);margin-right:6px}
.wslist{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.wslist button{padding:6px 10px;border:1px solid var(--line);border-radius:99px;background:var(--card);font:inherit;font-weight:700;font-size:.85rem;letter-spacing:.03em;color:var(--ink);cursor:pointer}
.wslist li.done button{color:var(--mut);text-decoration:line-through;text-decoration-thickness:2px;background:var(--plate)}
.wslist li.done button::before{content:"\2713 ";color:var(--ok);text-decoration:none;display:inline-block;margin-right:3px}
.wslist li.pop button{animation:pkpop .6s ease}
@keyframes pkpop{40%{transform:scale(1.12);background:#fdf0d3}}
.wsdone{margin:14px 0 0;padding:14px;border-radius:var(--r);background:#e3f4e1;text-align:center;animation:pkfade .8s ease}
.wsyay{margin:0 0 10px;font-family:var(--hd);font-weight:700;font-size:1.2rem;color:#1d5e2a}
.wsacts,.ngacts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
@keyframes pkfade{from{opacity:0;transform:translateY(6px)}}
.pkconf{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3}
.pkconf i{position:absolute;top:-12px;width:8px;height:12px;border-radius:2px;opacity:.85;animation:pkfall 3s ease-in forwards}
@keyframes pkfall{to{transform:translateY(520px) rotate(320deg);opacity:0}}
/* ---------- nonograms (blueprint style) ---------- */
.ng{--bp:#1d4f8f;--bp2:#163f74;--ln:rgba(255,255,255,.28);--ln5:rgba(255,255,255,.75);max-width:600px;margin:0 auto}
.ngsum{margin:0 0 10px;font-weight:700;color:var(--mut)}
.ngtiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.ngtile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border-radius:var(--r);background:var(--bp);background-image:linear-gradient(var(--ln) 1px,transparent 1px),linear-gradient(90deg,var(--ln) 1px,transparent 1px);background-size:12px 12px;color:#fff;text-decoration:none;border:1px solid var(--bp2)}
.ngtile .ngq{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border:2px dashed rgba(255,255,255,.6);border-radius:4px;font-family:var(--hd);font-weight:700;font-size:1.6rem}
.ngthumb{width:56px;height:56px;fill:#fff}
.ngtn{font-weight:700;font-size:.9rem;text-align:center;line-height:1.2}
.ngts{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#ffffffb3}
.ngtile.solved .ngts{color:var(--acc)}
.ngtop{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.ngtop .crumb{margin:0}
.ngtitle{font-family:var(--hd);font-weight:700;font-size:1.05rem}
.ngtools{display:flex;gap:8px;align-items:stretch;margin-bottom:10px}
.ngtools .pkseg{flex:1}
.ngsw{display:inline-block;width:14px;height:14px;margin-right:6px;vertical-align:-2px;border-radius:2px}
.ngsw.f{background:var(--bp);box-shadow:inset 0 0 0 3px #fff,0 0 0 1px var(--bp)}
.ngsw.x{width:auto;height:auto;margin-right:4px}
.pkseg button[aria-pressed=true] .ngsw.f{box-shadow:inset 0 0 0 3px var(--navy),0 0 0 1px #fff;background:#fff}
.ngboard{display:grid;grid-template-columns:var(--cw) calc(var(--cs)*var(--n));grid-template-rows:auto calc(var(--cs)*var(--n));justify-content:center;background:var(--bp);padding:8px 8px 8px 4px;border-radius:8px;color:#fff;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;
 background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:10px 10px}
.ngcols{display:grid;grid-template-columns:repeat(var(--n),var(--cs));align-items:end}
.ngc{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:1px;padding-bottom:4px;font-size:clamp(10px,calc(var(--cs)*.55),17px);min-height:18px}
.ngrows{display:grid;grid-template-rows:repeat(var(--n),var(--cs))}
.ngr{display:flex;align-items:center;justify-content:flex-end;gap:3px;padding-right:5px;font-size:clamp(10px,calc(var(--cs)*.55),17px);white-space:nowrap}
.ngc,.ngr{font-family:var(--hd);font-weight:700;line-height:1;transition:opacity .2s}
.ngc b,.ngr b{font-weight:700;min-width:.6em;text-align:center}
.ngc.ok,.ngr.ok{opacity:.42}
.ngc.hl,.ngr.hl{color:var(--acc);opacity:1}
.ngc.hl{box-shadow:inset 0 -3px 0 var(--acc)}
.ngr.hl{box-shadow:inset -3px 0 0 var(--acc)}
.nggrid{display:grid;grid-template-columns:repeat(var(--n),var(--cs));grid-template-rows:repeat(var(--n),var(--cs));border:2px solid var(--ln5);touch-action:none;cursor:pointer}
.ngx{border-right:1px solid var(--ln);border-bottom:1px solid var(--ln);position:relative;transition:background .12s}
.ngx.bx{border-right:2px solid var(--ln5)}
.ngx.by{border-bottom:2px solid var(--ln5)}
.ngx.on{background:#f4f8ff;box-shadow:inset 0 0 0 1px var(--bp)}
.ngx.xx::after{content:"\00d7";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:calc(var(--cs)*.8);line-height:1;color:rgba(255,255,255,.6)}
.ngx.bad{box-shadow:inset 0 0 0 3px var(--redon)}
.ngboard.solved .ngx{border-color:transparent;transition:background .5s,border-color .8s}
.ngboard.solved .ngx.on{background:#fff;box-shadow:none}
.ngboard.solved .nggrid{border-color:transparent;transition:border-color .8s}
.ngboard.solved .ngc,.ngboard.solved .ngr{opacity:.25}
.ngmsg{margin:10px 0;padding:10px 12px;border-radius:var(--r);font-weight:700;background:var(--plate)}
.ngmsg.ok{background:#e3f4e1;color:#1d5e2a}
.ngmsg.no{background:#fbe5e1;color:#8a2b1d}
.ngacts{margin-top:10px}
.ngreveal{margin-top:16px;padding:16px;border-radius:var(--r);background:var(--card);border:1px solid var(--line);text-align:center;animation:pkfade .8s ease}
.ngpic{display:inline-block;padding:10px;border-radius:8px;background:var(--bp)}
.ngbig{display:block;width:96px;height:96px;fill:#fff}
.ngpic.fresh{animation:pkpop .9s ease}
.ngname{margin:10px 0 4px;font-family:var(--hd);font-size:1.25rem}
.ngname b{color:var(--ink);box-shadow:inset 0 -.35em 0 #fbe3b0}
.ngreveal .note{margin:0 0 10px}
.ngboard.n15{padding:6px 4px 6px 2px}
@media (max-width:479px){.ng .ngboard{margin:0 -12px;border-radius:0}}
@media (min-width:720px){.ngtiles{grid-template-columns:repeat(4,minmax(0,1fr))}.wsbar{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}}
@media (prefers-reduced-motion:reduce){.wsdone,.ngreveal,.ngpic.fresh,.wslist li.pop button{animation:none}}
