@import "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700;900&family=Inter:wght@300;400;500;600&display=swap";.crossword-grid-wrapper{flex-shrink:0;position:relative}.grid-hidden-input{opacity:0;pointer-events:none;z-index:-1;border:none;width:1px;height:1px;padding:0;position:absolute;top:0;left:0}.crossword-grid{border:3px solid var(--charcoal);-webkit-user-select:none;user-select:none;box-shadow:4px 4px 0 var(--gold-light);outline:none;gap:0;display:grid}.crossword-grid:focus{box-shadow:4px 4px 0 var(--gold)}.grid-cell{cursor:pointer;background:var(--cream);border:1px solid #c4b99a;justify-content:center;align-items:center;transition:background .12s;display:flex;position:relative}.grid-cell.black{background:var(--charcoal);cursor:default}.grid-cell.active{background:var(--active-cell)}.grid-cell.in-word{background:var(--active-word)}.grid-cell.correct{background:#5a8a5a33}.grid-cell.wrong .cell-letter{color:var(--wrong)}.grid-cell.revealed .cell-letter{color:var(--warm-gray)}.cell-number{font-family:Playfair Display,Georgia,serif;font-size:var(--cell-number-size,9px);color:var(--gold-dark);font-weight:700;line-height:1;position:absolute;top:1px;left:2px}.cell-letter{font-family:Playfair Display,Georgia,serif;font-size:var(--cell-letter-size,24px);text-transform:uppercase;color:var(--charcoal);font-weight:600;line-height:1}*{box-sizing:border-box;margin:0;padding:0}:root{--gold:#c9a84c;--gold-light:#e8d5a0;--gold-dark:#a07e2e;--cream:#faf6ee;--ivory:#f0ebe0;--charcoal:#1c1c1c;--ink:#2a2520;--warm-gray:#8a7e72;--accent:#c9a84c;--active-cell:#e8d5a0;--active-word:#c9a84c2e;--correct:#5a8a5a;--wrong:#a04040}body{background:var(--cream);color:var(--ink);min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif}.generate-page{background:linear-gradient(135deg, var(--cream) 0%, var(--ivory) 100%);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.footer-note{text-align:center;color:var(--gold-light);letter-spacing:.08em;font-size:.72rem;font-style:italic;position:absolute;bottom:1.5rem;left:0;right:0}.generate-card{text-align:center;width:100%;max-width:460px}.generate-card h1{letter-spacing:.02em;color:var(--charcoal);margin-bottom:.2rem;font-family:Playfair Display,Georgia,serif;font-size:2.6rem;font-weight:900}.tagline{color:var(--warm-gray);letter-spacing:.15em;text-transform:uppercase;margin-bottom:2.5rem;font-size:1rem;font-weight:300}.picker-label{text-transform:uppercase;letter-spacing:.15em;color:var(--gold-dark);margin-bottom:.5rem;font-family:Playfair Display,Georgia,serif;font-size:.75rem}.size-picker{justify-content:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.size-btn{border:1.5px solid var(--gold-light);cursor:pointer;text-align:center;background:0 0;border-radius:0;min-width:70px;padding:.5rem 1rem;font-family:Inter,sans-serif;transition:all .2s}.size-btn .size-label{color:var(--charcoal);letter-spacing:.02em;font-size:.9rem;font-weight:600;display:block}.size-btn .size-desc{color:var(--warm-gray);letter-spacing:.05em;text-transform:uppercase;margin-top:.15rem;font-size:.7rem;display:block}.size-btn:hover{border-color:var(--gold)}.size-btn.selected{border-color:var(--gold);background:var(--gold)}.size-btn.selected .size-label,.size-btn.selected .size-desc{color:var(--charcoal)}.difficulty-picker{justify-content:center;gap:.5rem;margin-bottom:2rem;display:flex}.diff-btn{border:1.5px solid var(--gold-light);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;color:var(--warm-gray);background:0 0;border-radius:0;padding:.5rem 1.5rem;font-family:Inter,sans-serif;font-size:.85rem;font-weight:500;transition:all .2s}.diff-btn:hover{border-color:var(--gold);color:var(--charcoal)}.diff-btn.selected{border-color:var(--gold);background:var(--gold);color:var(--charcoal)}.generate-btn{border:2px solid var(--gold);background:var(--gold);color:var(--charcoal);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border-radius:0;padding:.85rem 3rem;font-family:Inter,sans-serif;font-size:.9rem;font-weight:600;transition:all .2s}.generate-btn:hover{background:var(--gold-dark);border-color:var(--gold-dark);color:#fff}.progress-section{margin-top:1.5rem}.progress-bar{background:var(--ivory);border-radius:0;height:3px;margin-bottom:1rem;overflow:hidden}.progress-fill{background:var(--gold);height:100%;transition:width .4s}.progress-message{color:var(--warm-gray);letter-spacing:.05em;font-size:.85rem}.error-message{color:var(--wrong);margin-top:1rem;font-size:.9rem}.play-page{max-width:900px;margin:0 auto;padding:2rem 1.5rem}.play-header{text-align:center;margin-bottom:1.5rem}.play-header h1{letter-spacing:.02em;color:var(--charcoal);font-family:Playfair Display,Georgia,serif;font-size:1.6rem;font-weight:700}.play-header .subtitle{color:var(--warm-gray);letter-spacing:.15em;text-transform:uppercase;font-size:.8rem;font-weight:300}.toolbar{border-bottom:1px solid var(--gold-light);justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding-bottom:.75rem;display:flex}.timer{font-variant-numeric:tabular-nums;color:var(--charcoal);font-family:Playfair Display,Georgia,serif;font-size:1.2rem;font-weight:600}.toolbar-buttons{gap:.4rem;display:flex}.toolbar-buttons button{border:1px solid var(--gold-light);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;color:var(--warm-gray);background:0 0;border-radius:0;padding:.35rem .75rem;font-family:Inter,sans-serif;font-size:.75rem;font-weight:500;transition:all .15s}.toolbar-buttons button:hover{border-color:var(--gold);color:var(--charcoal);background:var(--active-word)}.play-layout{align-items:flex-start;gap:2rem;display:flex}@media (width<=600px){.play-layout{flex-direction:column}}.clue-panel{flex-direction:column;flex:1;gap:1rem;min-width:0;display:flex}.reclue-done{color:var(--gold-dark);letter-spacing:.03em;font-size:.78rem;font-style:italic}.clue-list{min-width:0}.clue-section h3{text-transform:uppercase;letter-spacing:.15em;color:var(--gold-dark);border-bottom:1px solid var(--gold-light);margin-top:1.25rem;margin-bottom:.5rem;padding-bottom:.3rem;font-family:Playfair Display,Georgia,serif;font-size:.8rem}.clue-section:first-child h3{margin-top:0}.clue-item{cursor:pointer;border-left:2px solid #0000;border-radius:0;padding:.3rem .5rem;font-size:.88rem;line-height:1.5;transition:all .1s}.clue-item:hover{background:var(--active-word)}.clue-item.active{background:var(--active-word);border-left-color:var(--gold)}.clue-number{min-width:1.2rem;color:var(--gold-dark);margin-right:.4rem;font-family:Playfair Display,Georgia,serif;font-weight:700;display:inline-block}.finish-section{text-align:center;border-top:1px solid var(--gold-light);margin-top:2.5rem;padding-top:2rem}.finish-section h2{color:var(--charcoal);margin-bottom:.5rem;font-family:Playfair Display,Georgia,serif;font-size:1.8rem;font-weight:700}.finish-time{color:var(--warm-gray);margin-bottom:.75rem;font-size:1.1rem}.cost-info{color:var(--warm-gray);margin-bottom:2rem;font-size:.82rem;font-style:italic;line-height:1.6}.reclue-btn{border:1.5px solid var(--gold-light);color:var(--warm-gray);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:0;padding:.5rem 1.5rem;font-family:Inter,sans-serif;font-size:.8rem;font-weight:500;transition:all .2s}.reclue-btn:hover:not(:disabled){border-color:var(--gold);color:var(--charcoal);background:var(--active-word)}.reclue-btn:disabled{opacity:.6;cursor:default}.modal-spacer{height:1rem}.new-puzzle-btn{border:2px solid var(--gold);background:var(--gold);color:var(--charcoal);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;border-radius:0;padding:.7rem 2rem;font-family:Inter,sans-serif;font-size:.85rem;font-weight:600;transition:all .2s}.new-puzzle-btn:hover{background:var(--gold-dark);border-color:var(--gold-dark);color:#fff}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#1c1c1c8c;justify-content:center;align-items:center;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.modal-card{background:var(--cream);border:2px solid var(--gold);text-align:center;box-shadow:0 0 0 1px var(--gold-light), 0 25px 60px #00000040;padding:3rem 3.5rem;animation:.5s cubic-bezier(.16,1,.3,1) cardIn;position:relative}.modal-diamond{background:var(--gold);width:18px;height:18px;margin:0 auto 1.5rem;animation:.6s cubic-bezier(.16,1,.3,1) diamondSpin;transform:rotate(45deg)}.modal-card h2{letter-spacing:.03em;color:var(--charcoal);margin-bottom:.4rem;font-family:Playfair Display,Georgia,serif;font-size:2.2rem;font-weight:900;animation:.5s cubic-bezier(.16,1,.3,1) .15s both textUp}.modal-time{color:var(--gold-dark);margin-bottom:1rem;font-family:Playfair Display,Georgia,serif;font-size:1.3rem;animation:.5s cubic-bezier(.16,1,.3,1) .25s both textUp}.modal-card .cost-info{animation:.5s cubic-bezier(.16,1,.3,1) .35s both textUp}.modal-card .new-puzzle-btn{animation:.5s cubic-bezier(.16,1,.3,1) .45s both textUp}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes cardIn{0%{opacity:0;transform:scale(.9)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes diamondSpin{0%{opacity:0;transform:rotate(45deg)scale(0)}50%{transform:rotate(225deg)scale(1.2)}to{opacity:1;transform:rotate(405deg)scale(1)}}@keyframes textUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
