/* Cipher Vault — sidegames (Word Search + Word Bubbles) TEST overlay */
#cvSgRoot{
  position:fixed; inset:0; z-index:12000; display:none;
  width:100dvw; max-width:100dvw;
  background:rgba(6,8,10,.88); color:#e8f5e4;
  font-family:"Segoe UI",system-ui,sans-serif;
  overflow:auto; -webkit-overflow-scrolling:touch;
}
#cvSgRoot.open{display:flex; flex-direction:column; align-items:center; overflow-x:hidden;}
#cvSgRoot .sg-shell{
  width:min(480px,100dvw); max-width:100dvw; min-width:0; min-height:100%;
  padding:calc(18px + env(safe-area-inset-top,0px)) 14px calc(24px + env(safe-area-inset-bottom,0px));
  box-sizing:border-box;
}
#cvSgRoot .sg-top{display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:10px;}
#cvSgRoot .sg-title{font-size:1.15rem; font-weight:700; letter-spacing:.02em; margin:0;}
#cvSgRoot .sg-sub{margin:4px 0 0; color:#9bb89a; font-size:.86rem; line-height:1.35;}
#cvSgRoot .sg-tag{
  display:inline-block; margin-top:6px; padding:2px 8px; border-radius:999px;
  background:rgba(125,255,138,.12); color:#7dff8a; font-size:.72rem; font-weight:600;
}
#cvSgRoot .sg-skip{
  border:1px solid #3a4a36; background:rgba(18,22,18,.85); color:#cfe8cb;
  border-radius:8px; padding:8px 12px; font:inherit; cursor:pointer;
}
#cvSgRoot .sg-skip:active{transform:scale(.98);}
#cvSgToast{
  position:fixed; left:50%; bottom:calc(28px + env(safe-area-inset-bottom,0px));
  transform:translateX(-50%) translateY(12px); z-index:12050;
  background:#1b1630; color:#f7c21c; border:1px solid #f7c21c66;
  padding:10px 14px; border-radius:10px; font-weight:600; font-size:.92rem;
  opacity:0; pointer-events:none; transition:opacity .18s, transform .18s;
  max-width:min(92vw,360px); text-align:center;
}
#cvSgToast.show{opacity:1; transform:translateX(-50%) translateY(0);}

/* Word Search */
#cvSgWsList{
  display:flex; flex-wrap:wrap; gap:6px; margin:10px 0 8px; justify-content:center;
  width:100%; max-width:100%;
}
#cvSgWsList span{
  font-size:.72rem; letter-spacing:.04em; padding:4px 7px; border-radius:6px;
  background:rgba(22,32,24,.92); border:1px solid #3a4a36; color:#cfe8cb;
}
#cvSgWsList span.got{opacity:.45; text-decoration:line-through; color:#7dff8a; border-color:#7dff8a55;}
#cvSgWsCur{min-height:1.2em; text-align:center; font-family:ui-monospace,monospace; color:#f7c21c; letter-spacing:.12em; margin-bottom:8px;}
#cvSgWsGrid{
  --ws-n:12;
  display:grid; grid-template-columns:repeat(var(--ws-n),minmax(0,1fr));
  gap:2px; width:min(100%,420px); margin:0 auto;
  touch-action:none; user-select:none;
  background:rgba(12,16,14,.55); padding:4px; border-radius:10px; border:1px solid #3a4a36;
}
#cvSgWsGrid .c{
  aspect-ratio:1; display:flex; align-items:center; justify-content:center;
  font-family:ui-monospace,monospace; font-weight:700;
  font-size:clamp(10px,2.8vw,15px);
  background:rgba(18,26,20,.92); color:#d7f3d2; border-radius:4px;
}
#cvSgWsGrid .c.on{background:#f7c21c; color:#1b1630;}
#cvSgWsGrid .c.hit{background:rgba(125,255,138,.28); color:#7dff8a;}

/* Word Bubbles */
#cvSgBb{
  text-align:center;
}
#cvSgBb .slots{
  display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin:8px 0 6px;
}
#cvSgBb .slots span{
  min-width:64px; padding:6px 8px; border-radius:8px;
  background:#1b1630;
  border:1px solid #f7c21c55; font-family:ui-monospace,monospace; letter-spacing:.14em;
  font-size:.85rem; color:#f7c21c;
}
#cvSgBb .slots span.got{background-color:#243018; color:#7dff8a; border-color:#7dff8a66; letter-spacing:.08em;}
#cvSgBb .cur{
  min-height:1.3em; font-size:1.15rem; letter-spacing:.18em; color:#f7c21c;
  font-family:ui-monospace,monospace; margin:4px 0 2px;
}
#cvSgBb .wheel{
  position:relative; width:min(300px,86vw); height:min(300px,86vw);
  margin:8px auto 10px; touch-action:none; user-select:none;
  background:#1b1630; border-radius:50%;
}
#cvSgBb .wheel svg{position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:2;}
#cvSgBb .bb{
  position:absolute; width:62px; height:62px; margin-left:-31px; margin-top:-31px;
  border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-weight:800; font-size:1.25rem; color:#fff;
  background:#4a6cf7;
  box-shadow:0 4px 12px rgba(0,0,0,.35); z-index:3; cursor:pointer;
}
#cvSgBb .bb.on{
  background:#f7c21c; color:#1b1630;
  transform:scale(1.06);
}
#cvSgBb .bonwrap{
  margin:6px auto 8px; padding:8px 12px; border-radius:10px; width:fit-content;
  background:rgba(27,22,48,.85); border:1px solid #f7c21c55; color:#f7c21c;
  /* coin-sparkle.svg never existed; removed */
  padding-left:34px; font-weight:600;
}
#cvSgBb .bonwrap.flash{animation:cvSgBon .7s ease;}
@keyframes cvSgBon{0%{box-shadow:0 0 0 0 #f7c21c00}40%{box-shadow:0 0 0 6px #f7c21c55}100%{box-shadow:0 0 0 0 #f7c21c00}}
#cvSgBb .bon-list{font-size:.78rem; color:#cbb87a; margin-top:4px; min-height:1em;}
#cvSgBb .btns{display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin-top:8px;}
#cvSgBb .btns button{
  border:1px solid #3a4a36; background:rgba(18,22,18,.9); color:#e8f5e4;
  border-radius:8px; padding:10px 14px; font:inherit; cursor:pointer;
}
#cvSgBb .btns button.gold{border-color:#f7c21c88; color:#f7c21c;}
#cvSgRoot .sg-done{
  margin-top:14px; text-align:center; padding:14px; border-radius:12px;
  background:rgba(27,22,48,.9); border:1px solid #f7c21c55;
  overflow-wrap:anywhere;
}
#cvSgRoot .sg-done button{
  margin-top:10px; border:1px solid #f7c21c88; background:#f7c21c; color:#1b1630;
  border-radius:8px; padding:10px 16px; font-weight:700; cursor:pointer;
  max-width:100%; white-space:normal; min-height:44px;
}

/* cv-sg-nov-20261029: fall / Thanksgiving skin */
#cvSgRoot{background:radial-gradient(ellipse at top,rgba(92,44,14,.94),rgba(24,12,6,.96) 70%);color:#fbead2}
#cvSgRoot .sg-title{color:#ffb54a;text-shadow:0 1px 0 #3a1a06}
#cvSgRoot .sg-sub{color:#e0b98a}
#cvSgRoot .sg-tag{background:rgba(255,150,40,.16);color:#ffb54a}
#cvSgRoot .sg-skip{border-color:#7a4a22;background:rgba(40,20,8,.85);color:#f3d3a8}
#cvSgRoot .sg-done{border-color:#c46a1e !important}
#cvSgRoot button#cvSgCont{background:#c46a1e;border-color:#ffb54a;color:#fff7ea}
#cvSgToast{background:#3a1a06;color:#ffb54a;border-color:#ffb54a66}
#cvSgRoot .sg-holiday{margin:6px 0 2px;font-size:.84rem;color:#f3d3a8}
#cvSgRoot .sg-holiday summary{cursor:pointer;color:#ffb54a}
#cvSgRoot .sg-holiday p{margin:4px 0 0;line-height:1.35}

/* cv-wscat-20261029 */
.sg-cat{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 8px;font-size:.9rem}
.sg-cat label{font-weight:700;opacity:.85}
.sg-cat select{background:#1b1630;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:8px;padding:6px 8px;font-size:.95rem;max-width:100%}
.sg-cat-now{opacity:.75;font-size:.85rem}
/* cv-sgcats-20261029 */
.sg-cat-locked{opacity:.95}
.sg-guess{margin:4px 0 10px;padding:8px 10px;border:1px dashed rgba(255,215,120,.6);border-radius:10px;background:rgba(255,215,120,.08);font-size:.9rem;line-height:1.4}
.sg-guess-row{display:flex;gap:6px;margin:6px 0 4px}
.sg-guess input{flex:1;min-width:0;padding:6px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.35);background:#1b1630;color:#fff;font-size:.95rem}
.sg-guess button{padding:6px 12px;border-radius:8px;border:0;background:#f0b43c;color:#2a1405;font-weight:700;cursor:pointer}
.sg-guess-msg{display:block;font-size:.82rem;opacity:.85}

/* cv-sgart-20261029: Vault skin — midnight vault, brass + gold chrome, holiday-warm accents */
#cvSgRoot{background:
  radial-gradient(circle at 50% -10%,rgba(247,194,28,.22),transparent 45%),
  radial-gradient(circle at 50% 120%,rgba(196,106,30,.25),transparent 50%),
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64'%3E%3Cg fill='none' stroke='%23f7c21c' stroke-opacity='.05'%3E%3Ccircle cx='32' cy='32' r='22'/%3E%3Ccircle cx='32' cy='32' r='14'/%3E%3Cpath d='M32 6v8M32 50v8M6 32h8M50 32h8'/%3E%3C/g%3E%3C/svg%3E"),
  linear-gradient(180deg,#140d22,#0d0a14 60%,#160c06);color:#f6ead0}
#cvSgRoot .sg-shell{position:relative}
#cvSgRoot .sg-top{padding:12px 14px;border-radius:16px;background:linear-gradient(180deg,rgba(40,28,60,.85),rgba(20,14,30,.85));border:1px solid rgba(247,194,28,.45);box-shadow:inset 0 1px 0 rgba(255,230,160,.25),0 8px 24px rgba(0,0,0,.45)}
#cvSgRoot .sg-title{font-size:1.3rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase;background:linear-gradient(180deg,#ffe9a3,#f7c21c 55%,#b8860b);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 2px 0 rgba(0,0,0,.6))}
#cvSgRoot .sg-sub{color:#d9c79e}
#cvSgRoot .sg-tag{background:linear-gradient(90deg,rgba(247,194,28,.22),rgba(196,106,30,.22));color:#ffd970;border:1px solid rgba(247,194,28,.45)}
#cvSgRoot .sg-skip{border:1px solid rgba(247,194,28,.5);background:rgba(13,10,20,.8);color:#f7c21c;font-weight:700;border-radius:999px}
#cvSgToast{background:linear-gradient(180deg,#2a1d40,#140d22);color:#ffd970;border:1px solid #f7c21c99;box-shadow:0 8px 24px rgba(0,0,0,.5)}
/* Word Search */
#cvSgWsList span{background:linear-gradient(180deg,#2a1d40,#1a1228);border:1px solid rgba(247,194,28,.35);color:#f3e2b8;font-weight:700;border-radius:999px;padding:4px 9px}
#cvSgWsList span.got{opacity:.7;background:linear-gradient(180deg,#f7c21c,#c99510);color:#2a1405;border-color:#ffe9a3;text-decoration:line-through}
#cvSgWsCur{font-weight:800;font-size:1.05rem;text-shadow:0 0 12px rgba(247,194,28,.5)}
#cvSgWsGrid{gap:3px;padding:8px;border-radius:16px;background:linear-gradient(180deg,#1d1430,#100b1a);border:2px solid #b8860b;box-shadow:inset 0 0 0 2px rgba(0,0,0,.6),inset 0 0 24px rgba(0,0,0,.6),0 0 0 4px rgba(247,194,28,.12),0 10px 30px rgba(0,0,0,.5)}
#cvSgWsGrid .c{background:linear-gradient(180deg,#2c2142,#211833);color:#f3e2b8;border-radius:6px;box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 1px 0 rgba(0,0,0,.5);transition:background .12s,transform .12s}
#cvSgWsGrid .c.on{background:linear-gradient(180deg,#ffe9a3,#f7c21c);color:#1b1630;transform:scale(1.08);box-shadow:0 0 10px rgba(247,194,28,.7)}
#cvSgWsGrid .c.hit{background:linear-gradient(180deg,rgba(247,194,28,.45),rgba(196,106,30,.45));color:#fff6d8}
/* Word Bubbles */
#cvSgBb .slots span{background:linear-gradient(180deg,#2a1d40,#1a1228);border:1px solid rgba(247,194,28,.5);border-radius:10px;box-shadow:inset 0 2px 4px rgba(0,0,0,.5);color:#f7c21c;font-weight:700}
#cvSgBb .slots span.got{background:linear-gradient(180deg,#ffe9a3,#f7c21c);color:#2a1405;border-color:#fff1c2;box-shadow:0 0 10px rgba(247,194,28,.45)}
#cvSgBb .cur{font-weight:900;font-size:1.35rem;text-shadow:0 0 14px rgba(247,194,28,.55)}
#cvSgBb .wheel{background:
  radial-gradient(circle,#2a1d40 0 30%,transparent 31%),
  repeating-conic-gradient(from 0deg,rgba(247,194,28,.16) 0 2deg,transparent 2deg 15deg),
  radial-gradient(circle,#1d1430 0 66%,#120c1c 67%);
  border:6px solid #b8860b;box-shadow:inset 0 0 0 3px #f7c21c55,inset 0 0 30px rgba(0,0,0,.7),0 0 0 3px #3a2a0a,0 14px 34px rgba(0,0,0,.55)}
#cvSgBb .bb{background:radial-gradient(circle at 35% 30%,#ffffff55,transparent 40%),linear-gradient(180deg,#4d3a7a,#2a1d4a);border:2px solid #f7c21c;color:#ffe9a3;text-shadow:0 1px 2px #000;box-shadow:0 5px 12px rgba(0,0,0,.5),inset 0 -3px 6px rgba(0,0,0,.35);transition:transform .12s}
#cvSgBb .bb.on{background:radial-gradient(circle at 35% 30%,#fff8,transparent 40%),linear-gradient(180deg,#ffe9a3,#f7c21c);color:#1b1630;border-color:#fff1c2;box-shadow:0 0 18px rgba(247,194,28,.8);transform:scale(1.1)}
#cvSgBb .bonwrap{background:linear-gradient(180deg,#2a1d40,#1a1228);border:1px solid #f7c21c88;border-radius:999px;padding-left:12px}
#cvSgBb .bonwrap::before{content:"🪙 "}
#cvSgBb .btns button{border:1px solid rgba(247,194,28,.5);background:linear-gradient(180deg,#2a1d40,#1a1228);color:#f3e2b8;border-radius:999px;font-weight:700}
#cvSgBb .btns button.gold{background:linear-gradient(180deg,#ffe9a3,#f7c21c);color:#1b1630;border-color:#fff1c2}
#cvSgRoot .sg-done{background:linear-gradient(180deg,#2a1d40,#140d22);border:2px solid #f7c21c !important;border-radius:16px;box-shadow:0 0 0 4px rgba(247,194,28,.12),0 0 30px rgba(247,194,28,.25)}
#cvSgRoot .sg-done::before{content:"🔓";display:block;font-size:2rem;margin-bottom:4px}
#cvSgRoot button#cvSgCont,#cvSgRoot .sg-done button{background:linear-gradient(180deg,#ffe9a3,#f7c21c 60%,#c99510);border:1px solid #fff1c2;color:#1b1630;border-radius:999px;font-weight:800}
#cvSgRoot .sg-holiday summary{color:#ffd970}
.sg-cat select,.sg-guess input{background:#140d22;border-color:rgba(247,194,28,.45)}
.sg-guess{border-color:rgba(247,194,28,.55)}
.sg-guess button{background:linear-gradient(180deg,#ffe9a3,#f7c21c)}

/* cv-sghelp-20261101: player-picked hints / reveal / solve */
.sg-help{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:10px 0 4px}
.sg-help-pick{flex-basis:100%;text-align:center;font-size:.8rem;color:#9bb89a}
.sg-help button{display:flex;flex-direction:column;align-items:center;padding:6px 10px;border-radius:10px;border:1px solid #f0c14a66;background:#122018;color:#f5e6b8;font:inherit;font-size:.85rem;cursor:pointer}
.sg-help button small{font-size:.68rem;opacity:.75}
#cvSgWsList span[data-w]:not(.got),#cvSgSlots span[data-w]:not(.got){cursor:pointer}
#cvSgWsList span.pick,#cvSgSlots span.pick{outline:2px solid #f7c21c;border-radius:6px}
#cvSgWsGrid .c.hint{background:#f7c21c55;box-shadow:0 0 0 2px #f7c21c inset;animation:sgHintPulse 1s ease-in-out infinite alternate}
@keyframes sgHintPulse{to{box-shadow:0 0 0 3px #fff3 inset}}
