:root{--snf-red:#BC0C1C;--snf-gold:#E1A581;--snf-text:#333;--snf-soft:#f7f7f7}
.snfws-wrap{max-width:980px;margin:0 auto;padding:0 12px 28px;box-sizing:border-box;color:var(--snf-text)}
.snfws-wrap *{box-sizing:border-box}
.snfws-hero{background:#fff;border:1px solid rgba(188,12,28,.12);border-radius:34px;padding:34px 40px;margin:28px auto 24px;box-shadow:0 12px 36px rgba(0,0,0,.08)}
.snfws-kicker{display:inline-flex;align-items:center;background:var(--snf-red);color:#fff;border-radius:999px;padding:13px 36px;font-weight:900;letter-spacing:.05em;font-size:18px;text-transform:uppercase;margin-bottom:26px}
.snfws-hero h1{margin:0 0 16px;color:var(--snf-red);font-size:62px;line-height:.98;font-weight:900;letter-spacing:-.035em}
.snfws-hero p{margin:0;color:#5b5b5b;font-size:34px;line-height:1.2;font-weight:400}
.snfws-card,.snfws-empty{background:#fff;border:1px solid #ddd;border-radius:18px;padding:22px;text-align:center;box-shadow:0 4px 14px rgba(0,0,0,.05);font-weight:800;color:#555}
.snfws-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 auto 18px;max-width:760px}
.snfws-stats>div{background:#fff;border:1px solid #ddd;border-radius:14px;text-align:center;padding:11px 8px;box-shadow:0 4px 10px rgba(0,0,0,.06)}
.snfws-stats span{display:block;text-transform:uppercase;font-weight:900;color:#555;font-size:13px;letter-spacing:.04em;line-height:1.1;white-space:nowrap}
.snfws-stats strong{display:block;color:var(--snf-red);font-size:32px;line-height:1;margin-top:5px;font-weight:900}
.snfws-game-shell{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:18px;align-items:start;max-width:100%;overflow:visible}
.snfws-grid{display:grid;gap:3px;touch-action:none;user-select:none;-webkit-user-select:none;margin:0 auto;width:min(100%,620px);max-width:100%;aspect-ratio:1/1;min-width:0}
.snfws-cell{appearance:none;-webkit-appearance:none;border:1px solid #d5d5d5;background:#fff;color:#222;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:clamp(12px,2.65vw,23px);line-height:1;border-radius:4px;cursor:pointer;min-width:0;min-height:0;width:100%;height:100%;padding:0;margin:0;text-align:center;touch-action:none}
.snfws-cell.is-selecting{background:var(--snf-gold);color:#fff;border-color:var(--snf-gold)}
.snfws-cell.is-found{background:var(--snf-red);color:#fff;border-color:var(--snf-red)}
.snfws-bank-wrap{background:#fff;border:1px solid #ddd;border-radius:14px;padding:16px;box-shadow:0 4px 12px rgba(0,0,0,.04)}
.snfws-bank-wrap h3{margin:0 0 10px;color:var(--snf-red);font-size:18px}.snfws-word-bank{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.snfws-word{border:1px solid #ddd;background:#f5f5f5;border-radius:999px;padding:7px 10px;font-size:13px;font-weight:800;color:#444}.snfws-word.is-found{background:var(--snf-red);border-color:var(--snf-red);color:#fff;text-decoration:line-through}
.snfws-btn{display:inline-flex;align-items:center;justify-content:center;background:var(--snf-red);color:#fff!important;text-decoration:none;border:none;border-radius:9px;padding:11px 16px;font-weight:900;cursor:pointer;line-height:1.1}.snfws-btn:hover,.snfws-btn:focus{filter:brightness(.95);color:#fff!important}.snfws-btn-light{background:#fff;color:var(--snf-red)!important;border:1px solid var(--snf-red)}.snfws-submit{width:100%;margin-top:2px}.snfws-help{margin:10px 0 0;color:#666;font-size:13px;line-height:1.35}
.snfws-locked{position:relative;min-height:360px;background:#fff;border:1px solid #ddd;border-radius:18px;overflow:hidden;display:flex;align-items:center;justify-content:center}.snfws-blur-demo{position:absolute;inset:0;background:linear-gradient(135deg,#fff,#eee);filter:blur(3px);opacity:.8}.snfws-login-box{position:relative;background:#fff;border:1px solid #ddd;border-radius:18px;padding:24px;text-align:center;box-shadow:0 10px 28px rgba(0,0,0,.14)}.snfws-login-box h2{color:var(--snf-red);margin:0 0 8px}
.snfws-modal{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:18px}.snfws-modal[hidden]{display:none}.snfws-modal-card{background:#fff;border:3px solid var(--snf-gold);border-radius:22px;padding:26px 22px;max-width:420px;width:100%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative}.snfws-modal-x{position:absolute;top:10px;right:12px;border:none;background:transparent;font-size:28px;line-height:1;cursor:pointer;color:#555}.snfws-modal-icon{font-size:44px}.snfws-modal h2{color:var(--snf-red);font-size:30px;margin:6px 0}.snfws-modal p{font-size:17px;color:#444;margin:0 0 18px}.snfws-confetti{position:fixed;width:8px;height:14px;z-index:100000;top:-20px;animation:snfws-fall 900ms linear forwards}@keyframes snfws-fall{to{transform:translateY(105vh) rotate(540deg);opacity:.2}}
@media(max-width:720px){
  .snfws-wrap{padding:0 10px 24px;overflow:hidden}
  .snfws-hero{border-radius:22px;padding:22px 22px;margin:14px auto 14px}
  .snfws-kicker{font-size:13px;padding:9px 18px;margin-bottom:18px}
  .snfws-hero h1{font-size:42px;line-height:1.02;margin-bottom:10px}
  .snfws-hero p{font-size:24px;line-height:1.22}
  .snfws-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:16px;max-width:100%}
  .snfws-stats>div{padding:8px 4px;border-radius:11px}
  .snfws-stats span{font-size:10px}
  .snfws-stats strong{font-size:25px;margin-top:4px}
  .snfws-game-shell{display:block;width:100%;max-width:100%;overflow:hidden}
  .snfws-grid{width:100%;max-width:calc(100vw - 20px);gap:2px;margin:0 auto}
  .snfws-cell{font-size:clamp(13px,4vw,18px);border-radius:3px;border-width:1px}
  .snfws-bank-wrap{margin-top:14px;padding:14px}
}


/* v1.0.3 mobile interaction fixes */
.snfws-grid{touch-action:none;-webkit-user-select:none;user-select:none;overscroll-behavior:contain;}
.snfws-cell{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
.snfws-word-bank{display:flex;flex-wrap:wrap;gap:8px 10px;margin:10px 0 14px;}
.snfws-word{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;border:1px solid #ddd;border-radius:999px;background:#fff;font-weight:800;color:#444;letter-spacing:.03em;}
.snfws-word.is-found{background:#BC0C1C;color:#fff;border-color:#BC0C1C;text-decoration:line-through;}
.snfws-cell.is-selecting{background:#E1A581!important;color:#fff!important;border-color:#E1A581!important;}
.snfws-cell.is-found{background:#BC0C1C!important;color:#fff!important;border-color:#BC0C1C!important;}
@media(max-width:720px){.snfws-bank-wrap h3{margin-top:0}.snfws-word-bank{gap:7px}.snfws-word{font-size:13px;padding:6px 9px}.snfws-grid{max-width:100%;}}
.snfws-cell.is-tap-start{outline:2px solid #BC0C1C;outline-offset:-2px;}


/* v1.0.8 compact hero: remove redundant title spacing */
.snfws-hero{padding:28px 40px;margin:22px auto 18px;}
.snfws-kicker{margin-bottom:18px;}
.snfws-hero p{font-size:30px;line-height:1.22;}
@media(max-width:720px){
  .snfws-hero{padding:20px 22px;margin:12px auto 12px;}
  .snfws-kicker{margin-bottom:14px;}
  .snfws-hero p{font-size:22px;line-height:1.22;}
}


/* v1.0.9 printed puzzle look */
.snfws-grid{
  gap:2px!important;
  background:transparent!important;
}
.snfws-cell{
  border:none!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:0!important;
}
.snfws-cell:hover{background:rgba(225,165,129,.12)!important;}


/* v1.1.0 definitive printed word-search look */
.snfws-grid{gap:2px!important;background:transparent!important;border:none!important;box-shadow:none!important;}
.snfws-grid .snfws-cell{border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;outline:none;}
.snfws-grid .snfws-cell:not(.is-selecting):not(.is-found){background:transparent!important;color:#222!important;}
.snfws-grid .snfws-cell.is-selecting{background:#E1A581!important;color:#fff!important;border-radius:4px!important;}
.snfws-grid .snfws-cell.is-found{background:#BC0C1C!important;color:#fff!important;border-radius:4px!important;}

/* v1.1.1 live selection preview for mobile visibility */
.snfws-selection-preview{
  max-width:620px;
  margin:0 auto 10px;
  background:#fff;
  border:2px solid rgba(188,12,28,.16);
  border-radius:14px;
  padding:10px 14px;
  text-align:center;
  box-shadow:0 4px 12px rgba(0,0,0,.05);
  transition:background .12s ease,border-color .12s ease,transform .12s ease;
}
.snfws-preview-label{
  display:block;
  color:#777;
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.08em;
  line-height:1;
  margin-bottom:5px;
}
.snfws-selection-preview strong{
  display:block;
  min-height:26px;
  color:#BC0C1C;
  font-size:24px;
  line-height:1.05;
  font-weight:900;
  letter-spacing:.12em;
  word-break:break-all;
}
.snfws-selection-preview em{
  display:block;
  margin-top:4px;
  color:#666;
  font-style:normal;
  font-size:12px;
  font-weight:800;
}
.snfws-selection-preview.is-empty strong{color:#999;letter-spacing:.01em;font-size:18px;}
.snfws-selection-preview.is-match{background:rgba(225,165,129,.18);border-color:#E1A581;transform:translateY(-1px);}
.snfws-selection-preview.is-match strong{color:#BC0C1C;}
.snfws-selection-preview.is-found-preview{background:#BC0C1C;border-color:#BC0C1C;}
.snfws-selection-preview.is-found-preview .snfws-preview-label,.snfws-selection-preview.is-found-preview strong,.snfws-selection-preview.is-found-preview em{color:#fff;}
@media(min-width:721px){.snfws-selection-preview{display:none;}}
@media(max-width:720px){.snfws-selection-preview{margin:2px auto 10px;padding:9px 12px;border-radius:12px}.snfws-selection-preview strong{font-size:22px;min-height:24px}.snfws-selection-preview.is-empty strong{font-size:16px}}


/* v1.1.3 fixed grid geometry: found/selected cells never change layout */
.snfws-grid{
  display:grid!important;
  align-items:stretch!important;
  justify-items:stretch!important;
  grid-auto-rows:1fr!important;
  line-height:1!important;
}
.snfws-grid .snfws-cell{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  box-sizing:border-box!important;
  position:relative!important;
  transform:none!important;
  line-height:1!important;
  vertical-align:middle!important;
  font-family:inherit!important;
  font-weight:900!important;
}
.snfws-grid .snfws-cell.is-selecting,
.snfws-grid .snfws-cell.is-found{
  width:100%!important;
  height:100%!important;
  padding:0!important;
  margin:0!important;
  transform:none!important;
  position:relative!important;
}
