/* Daily Cryptogram game styles */
.game-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:18px}
.game-meta{display:flex;gap:10px;flex-wrap:wrap}
.pill{font-family:var(--mono);font-size:.85rem;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:.35rem .85rem;color:var(--muted)}
.pill strong{color:var(--text);font-weight:700}
.board{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px 18px;display:flex;flex-wrap:wrap;justify-content:center;gap:18px 22px;min-height:180px}
.word{display:inline-flex;gap:4px;flex-wrap:nowrap}
.tile{display:flex;flex-direction:column;align-items:center;width:30px;padding:0;background:none;border:0;color:inherit;font:inherit;cursor:pointer;border-radius:6px}
.tile .g{display:block;width:30px;height:36px;line-height:36px;text-align:center;font-family:var(--mono);font-size:1.35rem;font-weight:700;color:var(--text);border-bottom:2px solid #59606f;text-transform:uppercase}
.tile .c{display:block;font-family:var(--mono);font-size:.82rem;color:var(--gold);margin-top:4px;letter-spacing:.05em}
.tile:hover .g{border-bottom-color:var(--gold)}
.tile.same .g{background:rgba(201,165,74,.10)}
.tile.sel .g{background:rgba(201,165,74,.28);border-bottom-color:var(--gold2)}
.tile.revealed .g{color:var(--gold2)}
.tile.revealed .c{color:var(--dim)}
.tile.wrong .g{color:var(--bad);border-bottom-color:var(--bad)}
.tile.dup .g{text-decoration:underline wavy var(--bad)}
.punct{font-family:var(--mono);font-size:1.35rem;height:36px;line-height:36px;align-self:flex-start;color:var(--muted);padding:0 1px}
.solved .tile .g{color:var(--ok);border-bottom-color:var(--ok)}
.attribution{text-align:center;color:var(--muted);margin:14px 0 0;font-size:.95rem;min-height:1.5em}
.controls{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:18px 0}
.toggle{display:inline-flex;align-items:center;gap:.5rem;font-size:.92rem;color:var(--muted);cursor:pointer;user-select:none}
.toggle input{width:20px;height:20px;min-height:0;accent-color:var(--gold)}
.kbd{max-width:620px;margin:6px auto 0;display:flex;flex-direction:column;gap:7px;user-select:none}
.kbd-row{display:flex;gap:6px;justify-content:center}
.key{flex:1;max-width:48px;height:52px;border-radius:8px;border:1px solid #343a48;background:#1c212c;color:var(--text);font:700 1rem var(--mono);cursor:pointer;touch-action:manipulation}
.key:hover{border-color:var(--gold)}
.key.used{background:#12151c;color:var(--dim)}
.key.wide{max-width:84px;flex:1.6;font-size:.8rem;font-family:var(--sans)}
.how{margin-top:28px}
.how summary{cursor:pointer;color:var(--gold2)}
.how ol{color:var(--muted);padding-left:1.2rem}
.status{text-align:center;min-height:1.6em;color:var(--muted);font-size:.95rem;margin-top:8px}
/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.72);display:none;align-items:center;justify-content:center;z-index:200;padding:16px}
.modal-bg.open{display:flex}
.modal{background:var(--bg2);border:1px solid var(--line);border-radius:18px;max-width:520px;width:100%;max-height:92vh;overflow:auto;padding:30px 26px;position:relative;box-shadow:0 30px 80px rgba(0,0,0,.7)}
.modal .close{position:absolute;top:10px;right:12px;background:none;border:0;color:var(--muted);font-size:1.6rem;cursor:pointer;line-height:1;padding:6px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 4px;text-align:center}
.stat b{display:block;font-family:var(--serif);font-size:1.55rem;font-weight:400;color:var(--gold2)}
.stat span{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.share-box{font-family:var(--mono);font-size:.9rem;white-space:pre-wrap;background:#0b0e14;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:12px 0;color:var(--text)}
.win-quote{font-family:var(--serif);font-style:italic;font-size:1.08rem;border-left:3px solid var(--gold);padding-left:14px;margin:14px 0;color:var(--text)}
.cta-books{display:flex;gap:8px;margin:12px 0 4px;flex-wrap:wrap}
.cta-books a{flex:1;min-width:90px}
.cta-books img{border-radius:4px;box-shadow:0 6px 16px rgba(0,0,0,.5)}
.archive{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.archive a{display:inline-block;padding:.4rem .75rem;border:1px solid var(--line);border-radius:8px;text-decoration:none;color:var(--muted);font-family:var(--mono);font-size:.85rem}
.archive a:hover,.archive a[aria-current="true"]{border-color:var(--gold);color:var(--gold2)}
@media (max-width:560px){
  .board{padding:18px 8px;gap:14px 14px}
  .tile,.tile .g{width:23px}
  .tile .g{height:32px;line-height:32px;font-size:1.1rem}
  .punct{font-size:1.1rem;height:32px;line-height:32px}
  .tile .c{font-size:.72rem}
  .key{height:48px;font-size:.92rem}
  .kbd-row{gap:4px}
  .stats{grid-template-columns:repeat(2,1fr)}
}
.key,.tile{-webkit-tap-highlight-color:transparent}
.key:focus:not(:focus-visible){outline:none}
.daily-head{padding:44px 0 8px}
.daily-head h1{font-size:clamp(1.8rem,4vw,2.6rem)}
@media (max-width:560px){.daily-head{padding:26px 0 0}.daily-head .lead{font-size:1rem}}
/* special-day dressing (only active when cryptogram.js adds body.special-day) */
.pill-special{color:#f0b46a;border-color:rgba(224,122,42,.55);background:rgba(197,66,13,.12)}
.special-halloween .daily-head .eyebrow{color:#e8893a}
.special-halloween .daily-head h1{text-shadow:0 0 28px rgba(224,122,42,.22)}
.special-halloween .board{border-color:rgba(224,122,42,.45);box-shadow:0 0 0 1px rgba(224,122,42,.08),0 18px 50px -20px rgba(197,66,13,.45);background:radial-gradient(120% 140% at 50% 0%,#1b1712 0%,var(--panel) 60%)}
.special-plug{margin-top:30px;border-color:rgba(224,122,42,.35)}
.special-plug h2{font-size:1.45rem;margin:.2rem 0 .4rem}
.special-plug .eyebrow{color:#e8893a}
.special-books{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.special-books a{flex:1;min-width:80px;max-width:120px}
.special-books img{border-radius:4px;box-shadow:0 6px 16px rgba(0,0,0,.5);display:block;width:100%}
/* Thanksgiving week special (23-29 Nov 2026): warm harvest amber instead of Halloween orange */
.special-thanksgiving .pill-special{color:#e9c27a;border-color:rgba(201,138,52,.55);background:rgba(150,90,30,.14)}
.special-thanksgiving .daily-head .eyebrow{color:#d9a54e}
.special-thanksgiving .daily-head h1{text-shadow:0 0 28px rgba(217,165,78,.22)}
.special-thanksgiving .board{border-color:rgba(201,138,52,.45);box-shadow:0 0 0 1px rgba(201,138,52,.08),0 18px 50px -20px rgba(150,90,30,.45)}
.special-thanksgiving .special-plug{border-color:rgba(201,138,52,.35)}
.special-thanksgiving .special-plug .eyebrow{color:#d9a54e}
